Merge branch 'develop' into feature/SUPPORT-8749_fix_config

# Conflicts:
#	config/micord.env
This commit is contained in:
gulnaz 2025-03-04 10:28:26 +03:00
commit 7feb5149a8
97 changed files with 2995 additions and 746 deletions

View file

@ -0,0 +1,88 @@
package ru.micord.ervu.audit.config;
import java.util.HashMap;
import java.util.Map;
import org.apache.kafka.clients.CommonClientConfigs;
import org.apache.kafka.clients.admin.AdminClientConfig;
import org.apache.kafka.clients.admin.NewTopic;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.common.config.SaslConfigs;
import org.apache.kafka.common.serialization.StringSerializer;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.kafka.config.TopicBuilder;
import org.springframework.kafka.core.DefaultKafkaProducerFactory;
import org.springframework.kafka.core.KafkaAdmin;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.kafka.core.ProducerFactory;
/**
* @author Adel Kalimullin
*/
@Configuration
public class AuditKafkaConfig {
@Value("${audit.kafka.bootstrap.servers}")
private String bootstrapServers;
@Value("${audit.kafka.security.protocol}")
private String securityProtocol;
@Value("${audit.kafka.login.module:org.apache.kafka.common.security.scram.ScramLoginModule}")
private String loginModule;
@Value("${audit.kafka.username}")
private String username;
@Value("${audit.kafka.password}")
private String password;
@Value("${audit.kafka.sasl.mechanism}")
private String saslMechanism;
@Value("${audit.kafka.authorization.topic}")
private String authorizationTopic;
@Value("${audit.kafka.action.topic}")
private String actionTopic;
@Value("${audit.kafka.file.download.topic}")
private String fileDownloadTopic;
@Bean("auditProducerFactory")
public ProducerFactory<String, String> producerFactory() {
Map<String, Object> configProps = new HashMap<>();
configProps.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
configProps.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
configProps.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
configProps.put(CommonClientConfigs.SECURITY_PROTOCOL_CONFIG, securityProtocol);
configProps.put(SaslConfigs.SASL_JAAS_CONFIG, loginModule + " required username=\""
+ username + "\" password=\"" + password + "\";");
configProps.put(SaslConfigs.SASL_MECHANISM, saslMechanism);
return new DefaultKafkaProducerFactory<>(configProps);
}
@Bean("auditTemplate")
public KafkaTemplate<String, String> kafkaTemplate() {
return new KafkaTemplate<>(producerFactory());
}
@Bean
public KafkaAdmin auditKafkaAdmin() {
Map<String, Object> configs = new HashMap<>();
configs.put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
configs.put(AdminClientConfig.SECURITY_PROTOCOL_CONFIG, securityProtocol);
configs.put(SaslConfigs.SASL_JAAS_CONFIG, loginModule + " required username=\""
+ username + "\" password=\"" + password + "\";");
configs.put(SaslConfigs.SASL_MECHANISM, saslMechanism);
return new KafkaAdmin(configs);
}
@Bean
public NewTopic auditAuthTopic() {
return TopicBuilder.name(authorizationTopic).build();
}
@Bean
public NewTopic auditActionTopic() {
return TopicBuilder.name(actionTopic).build();
}
@Bean
public NewTopic auditDownloadTopic() {
return TopicBuilder.name(fileDownloadTopic).build();
}
}

View file

@ -0,0 +1,43 @@
package ru.micord.ervu.audit.constants;
import java.util.Map;
import java.util.Optional;
/**
* @author Adel Kalimullin
*/
public final class AuditConstants {
public static final String SUBSYSTEM_TYPE = "FL";
public static final String LOGOUT_EVENT_TYPE = "logout";
public static final String LOGIN_EVENT_TYPE = "login";
public static final String SUCCESS_STATUS = "success";
public static final String FAILURE_STATUS = "failure";
private static final Map<String, String> routeDescriptions = Map.of(
"/", "Главная",
"/mydata", "Мои данные",
"/subpoena", "Повестки",
"/restriction", "Временные меры"
);
private static final Map<String, String> downloadTypes = Map.of(
"1", "Выписка из реестра воинского учета ФЛ",
"2", "Выписка из реестра повесток ФЛ"
);
public static String getRouteDescription(String route) {
return Optional.ofNullable(routeDescriptions.get(route))
.orElseThrow(() -> new IllegalArgumentException("Invalid route :" + route));
}
public static String getDownloadType(String formatRegistry) {
return Optional.ofNullable(downloadTypes.get(formatRegistry))
.orElseThrow(
() -> new IllegalArgumentException("Invalid formatRegistry :" + formatRegistry));
}
private AuditConstants() {
}
}

View file

@ -0,0 +1,31 @@
package ru.micord.ervu.audit.controller;
import javax.servlet.http.HttpServletRequest;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import ru.micord.ervu.audit.model.AuditActionRequest;
import ru.micord.ervu.audit.service.AuditService;
/**
* @author Adel Kalimullin
*/
@RestController
@RequestMapping("/audit")
public class AuditController {
private final AuditService auditService;
public AuditController(AuditService auditService) {
this.auditService = auditService;
}
@PostMapping("/action")
public ResponseEntity<Void> auditAction(HttpServletRequest request,
@RequestBody AuditActionRequest actionEvent) {
auditService.processActionEvent(request, actionEvent);
return ResponseEntity.ok().build();
}
}

View file

@ -0,0 +1,53 @@
package ru.micord.ervu.audit.model;
/**
* @author Adel Kalimullin
*/
public class AuditActionEvent extends AuditEvent {
private String eventType;
private String description;
private String sourceUrl;
private String fileName;
public AuditActionEvent(
String esiaPersonId, String eventTime, String eventType,
String description, String sourceUrl, String fileName) {
super(esiaPersonId, eventTime);
this.eventType = eventType;
this.description = description;
this.sourceUrl = sourceUrl;
this.fileName = fileName;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public String getEventType() {
return eventType;
}
public void setEventType(String eventType) {
this.eventType = eventType;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getSourceUrl() {
return sourceUrl;
}
public void setSourceUrl(String sourceUrl) {
this.sourceUrl = sourceUrl;
}
}

View file

@ -0,0 +1,43 @@
package ru.micord.ervu.audit.model;
/**
* @author Adel Kalimullin
*/
public class AuditActionRequest {
private String route;
private String sourceUrl;
private String eventType;
private String fileName;
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public String getRoute() {
return route;
}
public void setRoute(String route) {
this.route = route;
}
public String getSourceUrl() {
return sourceUrl;
}
public void setSourceUrl(String sourceUrl) {
this.sourceUrl = sourceUrl;
}
public String getEventType() {
return eventType;
}
public void setEventType(String eventType) {
this.eventType = eventType;
}
}

View file

@ -0,0 +1,113 @@
package ru.micord.ervu.audit.model;
public class AuditAuthorizationEvent extends AuditEvent {
private String status;
private String eventType;
private String firstName;
private String lastName;
private String middleName;
private String snils;
private String serverIp;
private String serverHostName;
private String clientIp;
private String clientHostName;
public AuditAuthorizationEvent(
String esiaPersonId, String eventTime, String firstName,
String lastName, String middleName, String snils,
String status, String eventType, String serverIp,
String serverHostName, String clientIp, String clientHostName) {
super(esiaPersonId, eventTime);
this.status = status;
this.firstName = firstName;
this.lastName = lastName;
this.middleName = middleName;
this.snils = snils;
this.eventType = eventType;
this.serverIp = serverIp;
this.serverHostName = serverHostName;
this.clientIp = clientIp;
this.clientHostName = clientHostName;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getMiddleName() {
return middleName;
}
public void setMiddleName(String middleName) {
this.middleName = middleName;
}
public String getSnils() {
return snils;
}
public void setSnils(String snils) {
this.snils = snils;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getEventType() {
return eventType;
}
public void setEventType(String eventType) {
this.eventType = eventType;
}
public String getServerIp() {
return serverIp;
}
public void setServerIp(String serverIp) {
this.serverIp = serverIp;
}
public String getServerHostName() {
return serverHostName;
}
public void setServerHostName(String serverHostName) {
this.serverHostName = serverHostName;
}
public String getClientIp() {
return clientIp;
}
public void setClientIp(String clientIp) {
this.clientIp = clientIp;
}
public String getClientHostName() {
return clientHostName;
}
public void setClientHostName(String clientHostName) {
this.clientHostName = clientHostName;
}
}

View file

@ -0,0 +1,65 @@
package ru.micord.ervu.audit.model;
/**
* @author Adel Kalimullin
*/
public class AuditDownloadEvent extends AuditEvent {
private String downloadType;
private String fileName;
private String s3FileUrl;
private String fileSize;
private String status;
public AuditDownloadEvent(
String esiaPersonId, String eventTime, String downloadType,
String fileName, String s3FileUrl, String fileSize,
String status) {
super(esiaPersonId, eventTime);
this.downloadType = downloadType;
this.fileName = fileName;
this.s3FileUrl = s3FileUrl;
this.fileSize = fileSize;
this.status = status;
}
public String getS3FileUrl() {
return s3FileUrl;
}
public void setS3FileUrl(String s3FileUrl) {
this.s3FileUrl = s3FileUrl;
}
public String getDownloadType() {
return downloadType;
}
public void setDownloadType(String downloadType) {
this.downloadType = downloadType;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public String getFileSize() {
return fileSize;
}
public void setFileSize(String fileSize) {
this.fileSize = fileSize;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
}

View file

@ -0,0 +1,38 @@
package ru.micord.ervu.audit.model;
import ru.micord.ervu.audit.constants.AuditConstants;
/**
* @author Adel Kalimullin
*/
public abstract class AuditEvent {
protected final String subsystem = AuditConstants.SUBSYSTEM_TYPE;
protected String esiaPersonId;
protected String eventTime;
protected AuditEvent(String esiaPersonId, String eventTime) {
this.esiaPersonId = esiaPersonId;
this.eventTime = eventTime;
}
public String getEsiaPersonId() {
return esiaPersonId;
}
public void setEsiaPersonId(String esiaPersonId) {
this.esiaPersonId = esiaPersonId;
}
public String getSubsystem() {
return subsystem;
}
public String getEventTime() {
return eventTime;
}
public void setEventTime(String eventTime) {
this.eventTime = eventTime;
}
}

View file

@ -0,0 +1,8 @@
package ru.micord.ervu.audit.service;
/**
* @author Adel Kalimullin
*/
public interface AuditKafkaPublisher {
void publishEvent(String topicName, String message);
}

View file

@ -0,0 +1,19 @@
package ru.micord.ervu.audit.service;
import javax.servlet.http.HttpServletRequest;
import ru.micord.ervu.audit.model.AuditActionRequest;
import ru.micord.ervu.security.esia.model.PersonModel;
/**
* @author Adel Kalimullin
*/
public interface AuditService {
void processActionEvent(HttpServletRequest request, AuditActionRequest auditActionRequest);
void processAuthEvent(HttpServletRequest request, PersonModel personModel, String status,
String eventType);
void processDownloadEvent(HttpServletRequest request, int fileSize, String fileName,
String formatRegistry, String status);
}

View file

@ -0,0 +1,42 @@
package ru.micord.ervu.audit.service.impl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.stereotype.Service;
import ru.micord.ervu.audit.service.AuditKafkaPublisher;
/**
* @author Adel Kalimullin
*/
@Service
public class BaseAuditKafkaPublisher implements AuditKafkaPublisher {
private static final Logger LOGGER = LoggerFactory.getLogger(BaseAuditKafkaPublisher.class);
private final KafkaTemplate<String, String> kafkaTemplate;
@Value("${audit.kafka.enabled}")
private boolean auditEnabled;
public BaseAuditKafkaPublisher(
@Qualifier("auditTemplate") KafkaTemplate<String, String> kafkaTemplate) {
this.kafkaTemplate = kafkaTemplate;
}
@Override
public void publishEvent(String topic, String message) {
if (auditEnabled) {
kafkaTemplate.send(topic, message)
.addCallback(
result -> {
},
ex -> LOGGER.error("Failed to send message to topic {}: {}", topic, ex.getMessage(),
ex
)
);
}
else {
LOGGER.info("Audit is disabled. Event not published.");
}
}
}

View file

@ -0,0 +1,114 @@
package ru.micord.ervu.audit.service.impl;
import javax.servlet.http.HttpServletRequest;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import ru.micord.ervu.audit.constants.AuditConstants;
import ru.micord.ervu.audit.model.AuditActionEvent;
import ru.micord.ervu.audit.model.AuditActionRequest;
import ru.micord.ervu.audit.model.AuditAuthorizationEvent;
import ru.micord.ervu.audit.model.AuditDownloadEvent;
import ru.micord.ervu.audit.service.AuditKafkaPublisher;
import ru.micord.ervu.audit.service.AuditService;
import ru.micord.ervu.security.esia.model.PersonModel;
import ru.micord.ervu.security.webbpm.jwt.service.JwtTokenService;
import ru.micord.ervu.util.DateUtils;
import ru.micord.ervu.util.NetworkUtils;
/**
* @author Adel Kalimullin
*/
@Service
public class BaseAuditService implements AuditService {
private final AuditKafkaPublisher auditPublisher;
private final JwtTokenService jwtTokenService;
private final ObjectMapper objectMapper;
@Value("${audit.kafka.authorization.topic}")
private String authorizationTopic;
@Value("${audit.kafka.action.topic}")
private String actionTopic;
@Value("${audit.kafka.file.download.topic}")
private String fileDownloadTopic;
public BaseAuditService(AuditKafkaPublisher auditPublisher, JwtTokenService jwtTokenService,
ObjectMapper objectMapper) {
this.auditPublisher = auditPublisher;
this.jwtTokenService = jwtTokenService;
this.objectMapper = objectMapper;
}
@Override
public void processActionEvent(
HttpServletRequest request, AuditActionRequest auditActionRequest) {
String userAccountId = jwtTokenService.getUserAccountId(request);
String description = AuditConstants.getRouteDescription(auditActionRequest.getRoute());
AuditActionEvent event = new AuditActionEvent(
userAccountId,
DateUtils.getClientTimeFromRequest(request),
auditActionRequest.getEventType(),
description,
auditActionRequest.getSourceUrl(),
auditActionRequest.getFileName()
);
String message = convertToMessage(event);
auditPublisher.publishEvent(actionTopic, message);
}
@Override
public void processAuthEvent(HttpServletRequest request, PersonModel personModel, String status,
String eventType) {
String serverIp = NetworkUtils.getServerIp();
String clientIp = NetworkUtils.getClientIp(request);
String serverHostName = NetworkUtils.getHostName(serverIp);
String clientHostName = NetworkUtils.getHostName(clientIp);
AuditAuthorizationEvent event = new AuditAuthorizationEvent(
personModel.getPrnsId(),
DateUtils.getClientTimeFromRequest(request),
personModel.getFirstName(),
personModel.getLastName(),
personModel.getMiddleName(),
personModel.getSnils(),
status,
eventType,
serverIp,
serverHostName,
clientIp,
clientHostName
);
String message = convertToMessage(event);
auditPublisher.publishEvent(authorizationTopic, message);
}
@Override
public void processDownloadEvent(
HttpServletRequest request, int fileSize, String fileName, String formatRegistry,
String status) {
String userAccountId = jwtTokenService.getUserAccountId(request);
AuditDownloadEvent event = new AuditDownloadEvent(
userAccountId,
DateUtils.getClientTimeFromRequest(request),
AuditConstants.getDownloadType(formatRegistry),
fileName,
null,
String.valueOf(fileSize),
status
);
String message = convertToMessage(event);
auditPublisher.publishEvent(fileDownloadTopic, message);
}
private String convertToMessage(Object event) {
try {
return objectMapper.writeValueAsString(event);
}
catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
}
}

View file

@ -2,8 +2,11 @@ package ru.micord.ervu.controller;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import com.google.protobuf.ByteString;
import com.google.protobuf.InvalidProtocolBufferException;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.apache.kafka.common.utils.Bytes;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.InputStreamResource;
@ -14,53 +17,104 @@ import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import rtl.pgs.ervu.proto.ExtractRegistry;
import rtl.pgs.ervu.proto.ResponseData;
import ru.micord.ervu.audit.constants.AuditConstants;
import ru.micord.ervu.audit.service.AuditService;
import ru.micord.ervu.dto.ExtractEmptyRequestDto;
import ru.micord.ervu.dto.ExtractRequestDto;
import ru.micord.ervu.exception.ProtobufParsingException;
import ru.micord.ervu.kafka.dto.EmptyExtract;
import ru.micord.ervu.kafka.dto.Extract;
import ru.micord.ervu.kafka.dto.FullExtract;
import ru.micord.ervu.kafka.service.ReplyingKafkaService;
import ru.micord.ervu.security.esia.model.PersonModel;
import ru.micord.ervu.security.esia.service.PersonalDataService;
import ru.micord.ervu.security.esia.EsiaAuthInfoStore;
import ru.micord.ervu.security.webbpm.jwt.UserIdsPair;
import ru.micord.ervu.security.webbpm.jwt.util.SecurityUtil;
import javax.servlet.http.HttpServletRequest;
/**
* @author gulnaz
*/
@RestController
public class ExtractController {
private final PersonalDataService personalDataService;
private final ReplyingKafkaService<Object, Bytes> replyingKafkaService;
private final AuditService auditService;
@Value("${ervu.kafka.registry.extract.empty.request.topic}")
private String registryExtractEmptyRequestTopic;
@Value("${ervu.kafka.registry.extract.request.topic}")
private String registryExtractRequestTopic;
@Value("${ervu.kafka.registry.extract.reply.topic}")
private String registryExtractReplyTopic;
@Value("${ervu.kafka.registry.extract.type.header:empty}")
private String registryExtractTypeHeader;
public ExtractController(ReplyingKafkaService<Object, Bytes> replyingKafkaService) {
public ExtractController(
PersonalDataService personalDataService,
ReplyingKafkaService<Object, Bytes> replyingKafkaService,
AuditService auditService
) {
this.personalDataService = personalDataService;
this.replyingKafkaService = replyingKafkaService;
this.auditService = auditService;
}
@GetMapping(value = "/extract/{formatRegistry}")
public ResponseEntity<Resource> getExtract(@PathVariable String formatRegistry) {
String ervuId = SecurityUtil.getErvuId();
public ResponseEntity<Resource> getExtract(HttpServletRequest servletRequest, @PathVariable String formatRegistry) {
UserIdsPair userIdsPair = SecurityUtil.getUserIdsPair();
String ervuId = userIdsPair.getErvuId();
ConsumerRecord<String, Bytes> record;
boolean isEmpty = true;
if (ervuId == null) {
return ResponseEntity.noContent().build();
if (ervuId != null) {
ExtractRequestDto request = new ExtractRequestDto(ervuId, formatRegistry);
record = replyingKafkaService.sendMessageAndGetReply(
registryExtractRequestTopic, registryExtractReplyTopic, request);
isEmpty = Arrays.stream(record.headers().toArray())
.filter(header -> header.key().equals(registryExtractTypeHeader))
.findFirst()
.map(header -> Boolean.parseBoolean(new String(header.value(), StandardCharsets.UTF_8)))
.orElseThrow();
}
ExtractRequestDto request = new ExtractRequestDto(ervuId, formatRegistry);
byte[] reply = replyingKafkaService.sendMessageAndGetReply(registryExtractRequestTopic,
registryExtractReplyTopic, request).get();
else {
String esiaUserId = userIdsPair.getEsiaUserId(); // esiaUserId is not null here
String esiaAccessToken = EsiaAuthInfoStore.getAccessToken(esiaUserId);
PersonModel personModel = personalDataService.getPersonModel(esiaAccessToken);
ExtractEmptyRequestDto emptyRequest = new ExtractEmptyRequestDto(
personModel.getLastName(),
personModel.getFirstName(), personModel.getMiddleName(), personModel.getBirthDate(),
personModel.getSnils(), formatRegistry
);
record = replyingKafkaService.sendMessageAndGetReply(registryExtractEmptyRequestTopic,
registryExtractReplyTopic, emptyRequest);
}
byte[] bytes = record.value().get();
String fileName = null;
int size = 0;
try {
ResponseData responseData = ResponseData.parseFrom(reply);
ExtractRegistry extractRegistry = responseData.getDataRegistryInformation()
.getExtractRegistry();
String encodedFilename = URLEncoder.encode(extractRegistry.getFileName(), StandardCharsets.UTF_8);
InputStreamResource resource = new InputStreamResource(extractRegistry.getFile().newInput());
Extract extract = ervuId == null || isEmpty ? new EmptyExtract(bytes) : new FullExtract(bytes);
fileName = extract.getFileName();
String encodedFilename = URLEncoder.encode(fileName, StandardCharsets.UTF_8);
ByteString file = extract.getFile();
InputStreamResource resource = new InputStreamResource(file.newInput());
size = file.size();
auditService.processDownloadEvent(servletRequest, size, fileName, formatRegistry,
AuditConstants.SUCCESS_STATUS
);
return ResponseEntity.ok()
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename*=UTF-8''" + encodedFilename)
.contentType(MediaType.APPLICATION_OCTET_STREAM)
.body(resource);
}
catch (InvalidProtocolBufferException e) {
auditService.processDownloadEvent(servletRequest, size, fileName, formatRegistry,
AuditConstants.FAILURE_STATUS
);
throw new ProtobufParsingException("Failed to parse data", e);
}
}

View file

@ -5,18 +5,19 @@ import java.util.Comparator;
import java.util.List;
import java.util.Optional;
import org.springframework.util.StringUtils;
import proto.ervu.rp.summons.RecruitmentInfo;
import ru.micord.ervu.dto.Restriction;
import ru.micord.ervu.dto.SubpoenaResponseDto;
import org.springframework.stereotype.Component;
import proto.ervu.rp.summons.MeasuresTemporary;
import proto.ervu.rp.summons.ResponseDataAddress;
import proto.ervu.rp.summons.SummonsInfo;
import proto.ervu.rp.summons.SummonsResponseData;
import static ru.micord.ervu.util.DateUtil.convertToLocalDate;
import static ru.micord.ervu.util.DateUtils.convertToLocalDate;
import static java.util.Objects.requireNonNull;
import static ru.micord.ervu.util.DateUtil.convertToString;
import static ru.micord.ervu.util.DateUtil.getDaysTill;
import static ru.micord.ervu.util.DateUtils.convertToString;
import static ru.micord.ervu.util.DateUtils.getDaysTill;
/**
* @author gulnaz
@ -29,6 +30,7 @@ public class SummonsResponseDataConverter {
private static final String ACTUAL_ADDRESS_CODE = "_3";
public SubpoenaResponseDto convert(SummonsResponseData responseData) {
RecruitmentInfo recruitmentInfo = responseData.getRecruitmentInfo();
SubpoenaResponseDto.Builder builder = new SubpoenaResponseDto.Builder()
.personName(responseData.getFirstName(), responseData.getMiddleName(),
responseData.getLastName()
@ -40,10 +42,11 @@ public class SummonsResponseDataConverter {
.issueOrg(responseData.getIssueOrg())
.issueIdCode(responseData.getIssueIdCode())
.militaryCommissariatName(responseData.getRecruitmentInfo().getMilitaryCommissariatName())
.recruitmentStatusCode(
Integer.parseInt(responseData.getRecruitmentInfo().getRecruitmentStatusCode()))
.recruitmentStartDate(responseData.getRecruitmentInfo().getRecruitmentStart())
.militaryCommissariatName(recruitmentInfo.getMilitaryCommissariatName())
.recruitmentStatusCode(StringUtils.hasText(recruitmentInfo.getRecruitmentStatusCode())
? Integer.parseInt(recruitmentInfo.getRecruitmentStatusCode())
: 0)
.recruitmentStartDate(recruitmentInfo.getRecruitmentStart())
.residenceAddress(getAddressByCode(responseData.getAddressesList(), RESIDENCE_ADDRESS_CODE))
.stayAddress(getAddressByCode(responseData.getAddressesList(), STAY_ADDRESS_CODE))

View file

@ -0,0 +1,8 @@
package ru.micord.ervu.dto;
/**
* @author r.latypov
*/
public record ExtractEmptyRequestDto(String lastName, String firstName, String middleName,
String birthDate, String snils, String formatExtractRegistry) {
}

View file

@ -4,8 +4,8 @@ import java.util.ArrayList;
import java.util.List;
import static org.springframework.util.StringUtils.hasText;
import static ru.micord.ervu.util.DateUtil.convertToLocalDate;
import static ru.micord.ervu.util.DateUtil.convertToString;
import static ru.micord.ervu.util.DateUtils.convertToLocalDate;
import static ru.micord.ervu.util.DateUtils.convertToString;
/**
* @author gulnaz

View file

@ -101,6 +101,7 @@ public class ReplyingKafkaConfig {
+ username + "\" password=\"" + password + "\";");
configProps.put(SaslConfigs.SASL_MECHANISM, saslMechanism);
configProps.put(ConsumerConfig.GROUP_ID_CONFIG, groupId + "-" + UUID.randomUUID());
configProps.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "latest");
configProps.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
return configProps;
}

View file

@ -0,0 +1,19 @@
package ru.micord.ervu.kafka.dto;
import com.google.protobuf.InvalidProtocolBufferException;
import rtl.pgs.ervu.proto.emptyrequest.ExtractRegistry;
import rtl.pgs.ervu.proto.emptyrequest.ResponseData;
/**
* @author gulnaz
*/
public class EmptyExtract extends Extract {
public EmptyExtract(byte[] bytes) throws InvalidProtocolBufferException {
ResponseData responseData = ResponseData.parseFrom(bytes);
ExtractRegistry extractRegistry = responseData.getDataRegistryInformation()
.getExtractRegistry();
fileName = extractRegistry.getFileName();
file = extractRegistry.getFile();
}
}

View file

@ -0,0 +1,20 @@
package ru.micord.ervu.kafka.dto;
import com.google.protobuf.ByteString;
/**
* @author gulnaz
*/
public abstract class Extract {
protected String fileName;
protected ByteString file;
public String getFileName() {
return fileName;
}
public ByteString getFile() {
return file;
}
}

View file

@ -0,0 +1,19 @@
package ru.micord.ervu.kafka.dto;
import com.google.protobuf.InvalidProtocolBufferException;
import rtl.pgs.ervu.proto.ExtractRegistry;
import rtl.pgs.ervu.proto.ResponseData;
/**
* @author gulnaz
*/
public class FullExtract extends Extract {
public FullExtract(byte[] bytes) throws InvalidProtocolBufferException {
ResponseData responseData = ResponseData.parseFrom(bytes);
ExtractRegistry extractRegistry = responseData.getDataRegistryInformation()
.getExtractRegistry();
fileName = extractRegistry.getFileName();
file = extractRegistry.getFile();
}
}

View file

@ -0,0 +1,18 @@
package ru.micord.ervu.kafka.exception;
import org.springframework.context.support.MessageSourceAccessor;
import ru.cg.webbpm.modules.core.runtime.api.LocalizedException;
import ru.cg.webbpm.modules.core.runtime.api.MessageBundleUtils;
/**
* @author Emir Suleimanov
*/
public class KafkaMessageReplyTimeoutException extends LocalizedException {
private static final MessageSourceAccessor MESSAGE_SOURCE = MessageBundleUtils.createAccessor("messages/common_errors_messages");
private static final String KAFKA_REPLY_TIMEOUT = "kafka_reply_timeout";
public KafkaMessageReplyTimeoutException(Throwable cause) {
super(KAFKA_REPLY_TIMEOUT, MESSAGE_SOURCE, cause);
}
}

View file

@ -1,8 +1,10 @@
package ru.micord.ervu.kafka.service;
import org.apache.kafka.clients.consumer.ConsumerRecord;
public interface ReplyingKafkaService<T, V> {
V sendMessageAndGetReply(String requestTopic,
String replyTopic,
T requestMessage);
ConsumerRecord<String, V> sendMessageAndGetReply(String requestTopic,
String replyTopic,
T requestMessage);
}

View file

@ -1,32 +1,42 @@
package ru.micord.ervu.kafka.service.impl;
import java.lang.invoke.MethodHandles;
import java.util.Optional;
import java.util.concurrent.ExecutionException;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.kafka.requestreply.ReplyingKafkaTemplate;
import org.springframework.kafka.requestreply.RequestReplyFuture;
import ru.micord.ervu.kafka.exception.KafkaMessageException;
import ru.micord.ervu.kafka.exception.KafkaMessageReplyTimeoutException;
import ru.micord.ervu.kafka.service.ReplyingKafkaService;
/**
* @author gulnaz
*/
public abstract class BaseReplyingKafkaService<T, V> implements ReplyingKafkaService<T, V> {
private static final Logger LOGGER = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
@Override
public V sendMessageAndGetReply(String requestTopic, String replyTopic, T requestMessage) {
public ConsumerRecord<String, V> sendMessageAndGetReply(String requestTopic, String replyTopic, T requestMessage) {
long startTime = System.currentTimeMillis();
RequestReplyFuture<String, T, V> replyFuture = getTemplate().sendAndReceive(
getProducerRecord(requestTopic, replyTopic, requestMessage));
try {
return Optional.ofNullable(replyFuture.get())
.map(ConsumerRecord::value)
ConsumerRecord<String, V> result = Optional.ofNullable(replyFuture.get())
.orElseThrow(() -> new KafkaMessageException("Kafka return result is null"));
LOGGER.info("Thread {} - KafkaSendMessageAndGetReply: {} ms",
Thread.currentThread().getId(), System.currentTimeMillis() - startTime);
return result;
}
catch (InterruptedException | ExecutionException e) {
throw new KafkaMessageException("Failed to get kafka response", e);
LOGGER.error("Thread {} - KafkaSendMessageAndGetReply: {} ms",
Thread.currentThread().getId(), System.currentTimeMillis() - startTime);
throw new KafkaMessageReplyTimeoutException(e);
}
}
protected abstract ReplyingKafkaTemplate<String, T, V> getTemplate();

View file

@ -1,4 +1,4 @@
package ru.micord.ervu.security.esia.token;
package ru.micord.ervu.security.esia;
import java.lang.invoke.MethodHandles;
import java.util.Map;
@ -6,14 +6,17 @@ import java.util.concurrent.ConcurrentHashMap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ru.micord.ervu.security.esia.model.ExpiringState;
import ru.micord.ervu.security.esia.model.ExpiringToken;
/**
* @author Eduard Tihomirov
*/
public class EsiaTokensStore {
public class EsiaAuthInfoStore {
private static final Logger LOGGER = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
private static final Map<String, ExpiringToken> ACCESS_TOKENS_MAP = new ConcurrentHashMap<>();
private static final Map<String, ExpiringToken> REFRESH_TOKENS_MAP = new ConcurrentHashMap<>();
private static final Map<String, ExpiringState> PRNS_UUID_STATE_MAP = new ConcurrentHashMap<>();
public static void addAccessToken(String prnOid, String token, long expiresIn) {
if (token != null) {
@ -75,4 +78,26 @@ public class EsiaTokensStore {
public static void removeRefreshToken(String prnOid) {
REFRESH_TOKENS_MAP.remove(prnOid);
}
public static void addState(String prnsUUID, String state, long expiresIn) {
long expiryTime = System.currentTimeMillis() + expiresIn * 1000L;
PRNS_UUID_STATE_MAP.put(prnsUUID, new ExpiringState(state, expiryTime));
}
public static String getState(String prnsUUID) {
return PRNS_UUID_STATE_MAP.get(prnsUUID).getState();
}
public static void removeState(String prnsUUID) {
PRNS_UUID_STATE_MAP.remove(prnsUUID);
}
public static void removeExpiredState() {
for (String key : PRNS_UUID_STATE_MAP.keySet()) {
ExpiringState state = PRNS_UUID_STATE_MAP.get(key);
if (state != null && state.isExpired()) {
PRNS_UUID_STATE_MAP.remove(key);
}
}
}
}

View file

@ -32,10 +32,10 @@ public class EsiaConfig {
@Value("${esia.client.cert.hash}")
private String clientCertHash;
@Value("${esia.request.timeout:60}")
@Value("${request.timeout:20}")
private long requestTimeout;
@Value("${esia.connection.timeout:30}")
@Value("${connection.timeout:10}")
private long connectionTimeout;
@Value("${esia.logout.url:idp/ext/Logout}")
@ -53,6 +53,13 @@ public class EsiaConfig {
@Value("${esia.issuer.url}")
private String esiaIssuerUrl;
@Value("${esia.marker.ver}")
private String esiaMarkerVer;
@Value("${esia.state.cookie.life.time:300}")
private long esiaStateCookieLifeTime;
public String getEsiaScopes() {
String[] scopeItems = esiaScopes.split(",");
return String.join(" ", Arrays.stream(scopeItems).map(String::trim).toArray(String[]::new));
@ -107,4 +114,13 @@ public class EsiaConfig {
public String getEsiaIssuerUrl() {
return esiaIssuerUrl;
}
public String getEsiaMarkerVer() {
return esiaMarkerVer;
}
public long getEsiaStateCookieLifeTime() {
return esiaStateCookieLifeTime;
}
}

View file

@ -5,10 +5,8 @@ import java.text.SimpleDateFormat;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import ru.micord.ervu.security.esia.model.PersonDataModel;
@ -34,15 +32,15 @@ public class EsiaController {
private JwtTokenService jwtTokenService;
@RequestMapping(value = "/esia/url")
public String getEsiaUrl() {
return esiaAuthService.generateAuthCodeUrl();
public String getEsiaUrl(HttpServletResponse response) {
return esiaAuthService.generateAuthCodeUrl(response);
}
@GetMapping(value = "/esia/auth")
public ResponseEntity<?> esiaAuth(@RequestParam(value = "code", required = false) String code,
@RequestParam(value = "error", required = false) String error, HttpServletRequest request,
HttpServletResponse response) {
return esiaAuthService.getEsiaTokensByCode(code, error, request, response);
public void esiaAuth(@RequestParam String code,
@RequestParam String state,
HttpServletResponse response, HttpServletRequest request) {
esiaAuthService.authEsiaTokensByCode(code, state, response, request);
}
@RequestMapping(value = "/esia/refresh")

View file

@ -0,0 +1,34 @@
package ru.micord.ervu.security.esia.model;
/**
* @author Eduard Tihomirov
*/
public class ExpiringState {
private String state;
private long expiryTime;
public ExpiringState(String state, long expiryTime) {
this.state = state;
this.expiryTime = expiryTime;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public long getExpiryTime() {
return expiryTime;
}
public void setExpiryTime(long expiryTime) {
this.expiryTime = expiryTime;
}
public boolean isExpired() {
return System.currentTimeMillis() > expiryTime;
}
}

View file

@ -1,4 +1,4 @@
package ru.micord.ervu.security.esia.token;
package ru.micord.ervu.security.esia.model;
/**
* @author Eduard Tihomirov
@ -28,7 +28,7 @@ public class ExpiringToken {
this.expiryTime = expiryTime;
}
boolean isExpired() {
public boolean isExpired() {
return System.currentTimeMillis() > expiryTime;
}
}

View file

@ -0,0 +1,22 @@
package ru.micord.ervu.security.esia.service;
import net.javacrumbs.shedlock.core.SchedulerLock;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import ru.micord.ervu.security.esia.EsiaAuthInfoStore;
/**
* @author Eduard Tihomirov
*/
@Service
public class EsiaAuthInfoClearShedulerService {
@Scheduled(cron = "${esia.auth.info.clear.cron:0 0 */1 * * *}")
@SchedulerLock(name = "clearAuthInfo")
@Transactional
public void run() {
EsiaAuthInfoStore.removeExpiredRefreshToken();
EsiaAuthInfoStore.removeExpiredAccessToken();
EsiaAuthInfoStore.removeExpiredState();
}
}

View file

@ -9,22 +9,30 @@ import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
import java.time.Duration;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Objects;
import java.util.UUID;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.context.support.MessageSourceAccessor;
import org.springframework.http.ResponseCookie;
import org.springframework.security.core.context.SecurityContext;
import org.springframework.web.util.WebUtils;
import ru.micord.ervu.audit.constants.AuditConstants;
import ru.micord.ervu.audit.service.AuditService;
import ru.micord.ervu.kafka.model.Document;
import ru.micord.ervu.kafka.model.Person;
import ru.micord.ervu.kafka.model.Response;
@ -35,8 +43,7 @@ import ru.micord.ervu.security.esia.model.EsiaHeader;
import ru.micord.ervu.security.esia.model.EsiaTokenResponse;
import ru.micord.ervu.security.esia.model.FormUrlencoded;
import ru.micord.ervu.security.esia.model.PersonModel;
import ru.micord.ervu.security.esia.model.SignResponse;
import ru.micord.ervu.security.esia.token.EsiaTokensStore;
import ru.micord.ervu.security.esia.EsiaAuthInfoStore;
import ru.micord.ervu.security.esia.config.EsiaConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
@ -48,7 +55,10 @@ import ru.micord.ervu.security.webbpm.jwt.helper.SecurityHelper;
import ru.micord.ervu.security.webbpm.jwt.service.JwtTokenService;
import ru.micord.ervu.security.webbpm.jwt.model.Token;
import static ru.micord.ervu.security.webbpm.jwt.util.SecurityUtil.getCurrentUsername;
import ru.cg.webbpm.modules.core.runtime.api.MessageBundleUtils;
import static ru.micord.ervu.security.webbpm.jwt.util.SecurityUtil.getCurrentUserEsiaId;
import ru.cg.webbpm.modules.core.runtime.api.MessageBundleUtils;
/**
* @author Eduard Tihomirov
@ -56,7 +66,9 @@ import static ru.micord.ervu.security.webbpm.jwt.util.SecurityUtil.getCurrentUse
@Service
public class EsiaAuthService {
private static final Logger LOGGER = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
private static final MessageSourceAccessor MESSAGE_SOURCE = MessageBundleUtils.createAccessor(
"messages/common_errors_messages");
private static final String PRNS_UUID = "prns_uuid";
@Autowired
private ObjectMapper objectMapper;
@ -73,6 +85,9 @@ public class EsiaAuthService {
@Autowired
private PersonalDataService personalDataService;
@Autowired
private AuditService auditService;
@Autowired
private SecurityHelper securityHelper;
@ -82,12 +97,14 @@ public class EsiaAuthService {
@Value("${ervu.kafka.request.topic}")
private String requestTopic;
public String generateAuthCodeUrl() {
public String generateAuthCodeUrl(HttpServletResponse response) {
try {
String clientId = esiaConfig.getClientId();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy.MM.dd HH:mm:ss xx");
ZonedDateTime dt = ZonedDateTime.now();
String timestamp = dt.format(formatter);
String state = UUID.randomUUID().toString();
String prnsUUID = UUID.randomUUID().toString();
String redirectUrl = esiaConfig.getRedirectUrl();
String redirectUrlEncoded = redirectUrl.replaceAll(":", "%3A")
.replaceAll("/", "%2F");
@ -97,12 +114,15 @@ public class EsiaAuthService {
parameters.put("client_id", clientId);
parameters.put("scope", scope);
parameters.put("timestamp", timestamp);
parameters.put("state", "%s");
parameters.put("state", state);
parameters.put("redirect_uri", esiaConfig.getRedirectUrl());
SignResponse signResponse = signMap(parameters);
String state = signResponse.getState();
String clientSecret = signResponse.getSignature();
String clientSecret = signMap(parameters);
EsiaAuthInfoStore.addState(prnsUUID, state, esiaConfig.getEsiaStateCookieLifeTime());
ResponseCookie prnsCookie = securityHelper.createCookie(PRNS_UUID, prnsUUID, "/")
.maxAge(esiaConfig.getEsiaStateCookieLifeTime())
.build();
securityHelper.addResponseCookie(response, prnsCookie);
String responseType = "code";
@ -151,22 +171,21 @@ public class EsiaAuthService {
return uriBuilder.toString();
}
public ResponseEntity<?> getEsiaTokensByCode(String esiaAuthCode, String error,
HttpServletRequest request, HttpServletResponse response) {
if (error != null && !error.equals("null")) {
return new ResponseEntity<>(
"Произошла неизвестная ошибка. Обратитесь к системному администратору",
HttpStatus.FORBIDDEN
);
}
public void authEsiaTokensByCode(String esiaAuthCode, String state, HttpServletResponse response, HttpServletRequest request) {
String esiaAccessTokenStr = null;
String prnOid = null;
Long expiresIn = null;
long signSecret = 0, requestAccessToken = 0, verifySecret = 0;
String verifyStateResult = verifyStateFromCookie(request, state, response);
if (verifyStateResult != null) {
throw new EsiaException(verifyStateResult);
}
try {
String clientId = esiaConfig.getClientId();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy.MM.dd HH:mm:ss xx");
ZonedDateTime dt = ZonedDateTime.now();
String timestamp = dt.format(formatter);
String newState = UUID.randomUUID().toString();
String redirectUrl = esiaConfig.getRedirectUrl();
String scope = esiaConfig.getEsiaScopes();
@ -174,26 +193,27 @@ public class EsiaAuthService {
parameters.put("client_id", clientId);
parameters.put("scope", scope);
parameters.put("timestamp", timestamp);
parameters.put("state", "%s");
parameters.put("state", newState);
parameters.put("redirect_uri", redirectUrl);
parameters.put("code", esiaAuthCode);
SignResponse signResponse = signMap(parameters);
String state = signResponse.getState();
String clientSecret = signResponse.getSignature();
long startTime = System.currentTimeMillis();
String clientSecret = signMap(parameters);
signSecret = System.currentTimeMillis() - startTime;
String authUrl = esiaConfig.getEsiaBaseUri() + esiaConfig.getEsiaTokenUrl();
String postBody = new FormUrlencoded()
.setParameter("client_id", clientId)
.setParameter("code", esiaAuthCode)
.setParameter("grant_type", "authorization_code")
.setParameter("client_secret", clientSecret)
.setParameter("state", state)
.setParameter("state", newState)
.setParameter("redirect_uri", redirectUrl)
.setParameter("scope", scope)
.setParameter("timestamp", timestamp)
.setParameter("token_type", "Bearer")
.setParameter("client_certificate_hash", esiaConfig.getClientCertHash())
.toFormUrlencodedString();
startTime = System.currentTimeMillis();
HttpRequest postReq = HttpRequest.newBuilder(URI.create(authUrl))
.header(HttpHeaders.CONTENT_TYPE, "application/x-www-form-urlencoded")
.POST(HttpRequest.BodyPublishers.ofString(postBody))
@ -203,6 +223,7 @@ public class EsiaAuthService {
.connectTimeout(Duration.ofSeconds(esiaConfig.getConnectionTimeout()))
.build()
.send(postReq, HttpResponse.BodyHandlers.ofString());
requestAccessToken = System.currentTimeMillis() - startTime;
String responseString = postResp.body();
EsiaTokenResponse tokenResponse = objectMapper.readValue(responseString,
EsiaTokenResponse.class
@ -213,8 +234,13 @@ public class EsiaAuthService {
tokenResponse != null ? tokenResponse.getErrorDescription() : "response is empty";
throw new IllegalStateException("Esia response error. " + errMsg);
}
if (!tokenResponse.getState().equals(newState)) {
throw new EsiaException("Token invalid. State from request not equals with state from response.");
}
esiaAccessTokenStr = tokenResponse.getAccessToken();
startTime = System.currentTimeMillis();
String verifyResult = verifyToken(esiaAccessTokenStr);
verifySecret = System.currentTimeMillis() - startTime;
if (verifyResult != null) {
throw new EsiaException(verifyResult);
}
@ -222,26 +248,37 @@ public class EsiaAuthService {
EsiaAccessToken esiaAccessToken = personalDataService.readToken(esiaAccessTokenStr);
prnOid = esiaAccessToken.getSbjId();
expiresIn = tokenResponse.getExpiresIn();
EsiaTokensStore.addAccessToken(prnOid, esiaAccessTokenStr, expiresIn);
EsiaTokensStore.addRefreshToken(prnOid, esiaRefreshTokenStr, expiresIn);
EsiaAuthInfoStore.addAccessToken(prnOid, esiaAccessTokenStr, expiresIn);
EsiaAuthInfoStore.addRefreshToken(prnOid, esiaRefreshTokenStr, expiresIn);
}
catch (Exception e) {
throw new EsiaException(e);
}
finally {
LOGGER.info("Thread {} - SignSecret: {} ms RequestAccessToken: {} ms VerifySecret: {} ms",
Thread.currentThread().getId(), signSecret, requestAccessToken, verifySecret);
}
PersonModel personModel = null;
String ervuId = null, status = null;
try {
Response ervuIdResponse = getErvuIdResponse(esiaAccessTokenStr);
createTokenAndAddCookie(response, prnOid, ervuIdResponse.getErvuId(), expiresIn);
return ResponseEntity.ok("Authentication successful");
personModel = personalDataService.getPersonModel(esiaAccessTokenStr);
Response ervuIdResponse = getErvuIdResponse(personModel);
ervuId = ervuIdResponse.getErvuId();
status = AuditConstants.SUCCESS_STATUS;
}
catch (Exception e) {
createTokenAndAddCookie(response, prnOid, null, expiresIn);
String messageId = getMessageId(e);
String messageWithId = String.format("[%s] %s", messageId, e.getMessage());
LOGGER.error(messageWithId, e);
return new ResponseEntity<>(
"Произошла ошибка " + messageId + ". Обратитесь к системному администратору",
HttpStatus.FORBIDDEN
);
status = AuditConstants.FAILURE_STATUS;
if (e instanceof EsiaException || e instanceof JsonProcessingException) {
throw new EsiaException(e);
}
}
finally {
if (personModel != null) {
auditService.processAuthEvent(
request, personModel, status, AuditConstants.LOGIN_EVENT_TYPE
);
}
createTokenAndAddCookie(response, prnOid, ervuId, expiresIn);
}
}
@ -252,19 +289,18 @@ public class EsiaAuthService {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy.MM.dd HH:mm:ss xx");
ZonedDateTime dt = ZonedDateTime.now();
String timestamp = dt.format(formatter);
String state = UUID.randomUUID().toString();
String redirectUrl = esiaConfig.getRedirectUrl();
Map<String, String> parameters = new LinkedHashMap<String, String>();
parameters.put("client_id", clientId);
parameters.put("scope", esiaConfig.getEsiaScopes());
parameters.put("timestamp", timestamp);
parameters.put("state", "%s");
parameters.put("state", state);
parameters.put("redirect_uri", esiaConfig.getRedirectUrl());
parameters.put("refresh_token", refreshToken);
SignResponse signResponse = signMap(parameters);
String state = signResponse.getState();
String clientSecret = signResponse.getSignature();
String clientSecret = signMap(parameters);
String authUrl = esiaConfig.getEsiaBaseUri() + esiaConfig.getEsiaTokenUrl();
String postBody = new FormUrlencoded()
.setParameter("client_id", clientId)
@ -303,9 +339,10 @@ public class EsiaAuthService {
EsiaAccessToken esiaAccessToken = personalDataService.readToken(esiaAccessTokenStr);
String prnOid = esiaAccessToken.getSbjId();
Long expiresIn = tokenResponse.getExpiresIn();
EsiaTokensStore.addAccessToken(prnOid, esiaAccessTokenStr, expiresIn);
EsiaTokensStore.addRefreshToken(prnOid, esiaNewRefreshTokenStr, expiresIn);
Response ervuIdResponse = getErvuIdResponse(esiaAccessTokenStr);
EsiaAuthInfoStore.addAccessToken(prnOid, esiaAccessTokenStr, expiresIn);
EsiaAuthInfoStore.addRefreshToken(prnOid, esiaNewRefreshTokenStr, expiresIn);
PersonModel personModel = personalDataService.getPersonModel(esiaAccessTokenStr);
Response ervuIdResponse = getErvuIdResponse(personModel);
createTokenAndAddCookie(response, esiaAccessToken.getSbjId(), ervuIdResponse.getErvuId(), expiresIn);
}
catch (Exception e) {
@ -313,7 +350,7 @@ public class EsiaAuthService {
}
}
private SignResponse signMap(Map<String, String> paramsToSign) {
private String signMap(Map<String, String> paramsToSign) {
try {
StringBuilder toSign = new StringBuilder();
for (String s : paramsToSign.values()) {
@ -325,13 +362,14 @@ public class EsiaAuthService {
.uri(URI.create(esiaConfig.getSignUrl()))
.header("Content-Type", "text/plain")
.POST(HttpRequest.BodyPublishers.ofString(requestBody, StandardCharsets.UTF_8))
.timeout(Duration.ofSeconds(esiaConfig.getRequestTimeout()))
.build();
HttpResponse<String> response = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(esiaConfig.getConnectionTimeout()))
.build()
.send(request, HttpResponse.BodyHandlers.ofString());
errorHandler(response);
return objectMapper.readValue(response.body(), SignResponse.class);
return response.body();
}
catch (Exception e) {
@ -346,36 +384,42 @@ public class EsiaAuthService {
}
public String logout(HttpServletRequest request, HttpServletResponse response) {
PersonModel personModel = null;
try {
securityHelper.clearAccessCookies(response);
String userId = jwtTokenService.getUserAccountId(request);
EsiaTokensStore.removeAccessToken(userId);
EsiaTokensStore.removeRefreshToken(userId);
String accessToken = EsiaAuthInfoStore.getAccessToken(userId);
personModel = personalDataService.getPersonModel(accessToken);
securityHelper.clearAccessCookies(response);
EsiaAuthInfoStore.removeAccessToken(userId);
EsiaAuthInfoStore.removeRefreshToken(userId);
String logoutUrl = esiaConfig.getEsiaBaseUri() + esiaConfig.getEsiaLogoutUrl();
String redirectUrl = esiaConfig.getLogoutRedirectUrl();
URL url = new URL(logoutUrl);
Map<String, String> params = mapOf(
"client_id", esiaConfig.getClientId(),
"redirect_url", redirectUrl);
"redirect_url", redirectUrl
);
auditService.processAuthEvent(
request, personModel, AuditConstants.SUCCESS_STATUS, AuditConstants.LOGOUT_EVENT_TYPE
);
return buildUrl(url, params);
}
catch (Exception e) {
if (personModel != null){
auditService.processAuthEvent(
request, personModel, AuditConstants.FAILURE_STATUS, AuditConstants.LOGOUT_EVENT_TYPE
);
}
throw new EsiaException(e);
}
}
public Response getErvuIdResponse(String accessToken) {
try {
PersonModel personModel = personalDataService.getPersonModel(accessToken);
Person person = copyToPerson(personModel);
String kafkaResponse = replyingKafkaService.sendMessageAndGetReply(requestTopic,
requestReplyTopic, objectMapper.writeValueAsString(person)
);
return objectMapper.readValue(kafkaResponse, Response.class);
}
catch (Exception e) {
throw new EsiaException(e);
}
public Response getErvuIdResponse(PersonModel personModel) throws JsonProcessingException {
Person person = copyToPerson(personModel);
String kafkaResponse = replyingKafkaService.sendMessageAndGetReply(requestTopic,
requestReplyTopic, objectMapper.writeValueAsString(person)
).value();
return objectMapper.readValue(kafkaResponse, Response.class);
}
private Person copyToPerson(PersonModel personModel) {
@ -393,13 +437,6 @@ public class EsiaAuthService {
return person;
}
private String getMessageId(Exception exception) {
return Integer.toUnsignedString(Objects
.hashCode(getCurrentUsername()), 36)
+ "-"
+ Integer.toUnsignedString(exception.hashCode(), 36);
}
private void createTokenAndAddCookie(HttpServletResponse response, String userId, String ervuId,
Long expiresIn) {
Token token = jwtTokenService.createAccessToken(userId, expiresIn, ervuId);
@ -419,6 +456,9 @@ public class EsiaAuthService {
if (!esiaHeader.getSbt().equals("access")) {
return "Token invalid. Token sbt: " + esiaHeader.getSbt() + " invalid";
}
if (!esiaHeader.getVer().equals(esiaConfig.getEsiaMarkerVer())) {
return "Token invalid. Token ver: " + esiaHeader.getVer() + " invalid";
}
if (!esiaHeader.getTyp().equals("JWT")) {
return "Token invalid. Token type: " + esiaHeader.getTyp() + " invalid";
}
@ -428,17 +468,16 @@ public class EsiaAuthService {
if (!esiaAccessToken.getIss().equals(esiaConfig.getEsiaIssuerUrl())) {
return "Token invalid. Token issuer:" + esiaAccessToken.getIss() + " invalid";
}
//TODO SUPPORT-8750
// LocalDateTime iatTime = LocalDateTime.ofInstant(Instant.ofEpochSecond(esiaAccessToken.getIat()),
// ZoneId.systemDefault()
// );
// LocalDateTime expTime = LocalDateTime.ofInstant(Instant.ofEpochSecond(esiaAccessToken.getExp()),
// ZoneId.systemDefault()
// );
// LocalDateTime currentTime = LocalDateTime.now();
// if (!currentTime.isAfter(iatTime) || !expTime.isAfter(iatTime)) {
// return "Token invalid. Token expired";
// }
LocalDateTime iatTime = LocalDateTime.ofInstant(Instant.ofEpochSecond(esiaAccessToken.getIat()),
ZoneId.systemDefault()
);
LocalDateTime expTime = LocalDateTime.ofInstant(Instant.ofEpochSecond(esiaAccessToken.getExp()),
ZoneId.systemDefault()
);
LocalDateTime currentTime = LocalDateTime.now();
if (!currentTime.isAfter(iatTime) || !expTime.isAfter(iatTime)) {
return "Token invalid. Token expired";
}
HttpResponse<String> response = signVerify(accessToken);
if (response.statusCode() != 200) {
if (response.statusCode() == 401) {
@ -455,6 +494,7 @@ public class EsiaAuthService {
.uri(URI.create(esiaConfig.getSignVerifyUrl()))
.header("Content-Type", "text/plain")
.POST(HttpRequest.BodyPublishers.ofString(accessToken, StandardCharsets.UTF_8))
.timeout(Duration.ofSeconds(esiaConfig.getRequestTimeout()))
.build();
return HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(esiaConfig.getConnectionTimeout()))
@ -465,4 +505,19 @@ public class EsiaAuthService {
throw new EsiaException(e);
}
}
private String verifyStateFromCookie(HttpServletRequest request, String state, HttpServletResponse response) {
Cookie cookie = WebUtils.getCookie(request, PRNS_UUID);
if (cookie == null) {
return "State invalid. Cookie not found";
}
String prnsUUID = cookie.getValue();
String oldState = EsiaAuthInfoStore.getState(prnsUUID);
if (oldState == null || !oldState.equals(state)) {
return "State invalid. State from ESIA not equals with state before";
}
EsiaAuthInfoStore.removeState(prnsUUID);
securityHelper.clearCookie(response, PRNS_UUID, "/");
return null;
}
}

View file

@ -1,5 +1,6 @@
package ru.micord.ervu.security.esia.service;
import java.lang.invoke.MethodHandles;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
@ -8,6 +9,8 @@ import java.time.Duration;
import java.util.Base64;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ru.micord.ervu.security.esia.exception.EsiaException;
import ru.micord.ervu.security.esia.config.EsiaConfig;
import ru.micord.ervu.security.esia.model.EsiaAccessToken;
@ -23,6 +26,7 @@ import org.springframework.stereotype.Service;
*/
@Service
public class EsiaPersonalDataService implements PersonalDataService {
private static final Logger LOGGER = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
@Autowired
private EsiaConfig esiaConfig;
@ -32,6 +36,7 @@ public class EsiaPersonalDataService implements PersonalDataService {
@Override
public PersonModel getPersonModel(String accessToken) {
long startTime = System.currentTimeMillis();
try {
EsiaAccessToken esiaAccessToken = readToken(accessToken);
String prnsId = esiaAccessToken.getSbjId();
@ -39,9 +44,11 @@ public class EsiaPersonalDataService implements PersonalDataService {
personModel.setPassportModel(
getPassportModel(prnsId, accessToken, personModel.getrIdDoc()));
personModel.setPrnsId(prnsId);
LOGGER.info("Thread {} - RequestPersonData: {} ms", Thread.currentThread().getId(), System.currentTimeMillis() - startTime);
return personModel;
}
catch (Exception e) {
LOGGER.error("Thread {} - RequestPersonData: {} ms", Thread.currentThread().getId(), System.currentTimeMillis() - startTime);
throw new EsiaException(e);
}
}

View file

@ -1,20 +0,0 @@
package ru.micord.ervu.security.esia.token;
import net.javacrumbs.shedlock.core.SchedulerLock;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* @author Eduard Tihomirov
*/
@Service
public class TokensClearShedulerService {
@Scheduled(cron = "${esia.token.clear.cron:0 0 */1 * * *}")
@SchedulerLock(name = "clearToken")
@Transactional
public void load() {
EsiaTokensStore.removeExpiredRefreshToken();
EsiaTokensStore.removeExpiredAccessToken();
}
}

View file

@ -17,8 +17,11 @@ public class JwtAuthentication implements Authentication {
private final Authentication authentication;
private final String token;
private final UserIdsPair userIdsPair;
public JwtAuthentication(Authentication authentication, String userAccountId, String token) {
this.userAccountId = userAccountId;
this.userIdsPair = new UserIdsPair(userAccountId);
this.authentication = authentication;
this.token = token;
}
@ -31,6 +34,10 @@ public class JwtAuthentication implements Authentication {
return userAccountId;
}
public UserIdsPair getUserIdsPair() {
return userIdsPair;
}
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
return authentication.getAuthorities();

View file

@ -0,0 +1,36 @@
package ru.micord.ervu.security.webbpm.jwt;
public class UserIdsPair {
private final String esiaUserId;
private final String ervuId;
public UserIdsPair(String idsConcatenated) {
if (idsConcatenated == null) {
this.esiaUserId = null;
this.ervuId = null;
}
else {
String[] ids = idsConcatenated.split(":");
this.esiaUserId = ids[0];
this.ervuId = ids.length == 2 ? ids[1] : null;
}
}
public UserIdsPair(String esiaUserId, String ervuId) {
this.esiaUserId = esiaUserId;
this.ervuId = ervuId;
}
public String getEsiaUserId() {
return esiaUserId;
}
public String getErvuId() {
return ervuId;
}
public String getIdsConcatenated() {
return esiaUserId + (ervuId == null ? "" : ":" + ervuId);
}
}

View file

@ -48,7 +48,13 @@ public final class SecurityHelper {
addResponseCookie(response, emptyAuthMarker);
}
private void addResponseCookie(HttpServletResponse response, ResponseCookie cookie) {
public void clearCookie(HttpServletResponse response, String name, String path) {
ResponseCookie emptyCookie = createCookie(name, null, path)
.maxAge(0).build();
addResponseCookie(response, emptyCookie);
}
public void addResponseCookie(HttpServletResponse response, ResponseCookie cookie) {
response.addHeader(HttpHeaders.SET_COOKIE, cookie.toString());
}

View file

@ -14,8 +14,9 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import ru.micord.ervu.security.esia.token.EsiaTokensStore;
import ru.micord.ervu.security.esia.EsiaAuthInfoStore;
import ru.micord.ervu.security.exception.UnauthorizedException;
import ru.micord.ervu.security.webbpm.jwt.UserIdsPair;
import ru.micord.ervu.security.webbpm.jwt.model.Token;
import ru.cg.webbpm.modules.resources.api.ResourceMetadataUtils;
@ -43,16 +44,17 @@ public class JwtTokenService {
}
public Token createAccessToken(String userAccountId, Long expiresIn, String ervuId) {
String idsConcatenated = new UserIdsPair(userAccountId, ervuId).getIdsConcatenated();
Date expirationDate = new Date(System.currentTimeMillis() + 1000L * expiresIn);
String value = Jwts.builder()
.setSubject(userAccountId + ":" + ervuId)
.setSubject(idsConcatenated)
.setIssuer(tokenIssuerName)
.setIssuedAt(new Date(System.currentTimeMillis()))
.setExpiration(expirationDate)
.signWith(signingKey)
.compact();
return new Token(userAccountId + ":" + ervuId, tokenIssuerName, expirationDate, value);
return new Token(idsConcatenated, tokenIssuerName, expirationDate, value);
}
public boolean isValid(Token token) {
@ -65,8 +67,8 @@ public class JwtTokenService {
LOGGER.info("Token {} is expired ", token.getValue());
return false;
}
String[] ids = token.getUserAccountId().split(":");
return EsiaTokensStore.validateAccessToken(ids[0]);
String esiaUserId = new UserIdsPair(token.getUserAccountId()).getEsiaUserId();
return EsiaAuthInfoStore.validateAccessToken(esiaUserId);
}
public Token getToken(String token) {
@ -79,19 +81,19 @@ public class JwtTokenService {
}
public String getAccessToken(HttpServletRequest request) {
return EsiaTokensStore.getAccessToken(getUserAccountId(request));
return EsiaAuthInfoStore.getAccessToken(getUserAccountId(request));
}
public String getRefreshToken(HttpServletRequest request) {
return EsiaTokensStore.getRefreshToken(getUserAccountId(request));
return EsiaAuthInfoStore.getRefreshToken(getUserAccountId(request));
}
public String getUserAccountId(HttpServletRequest request) {
String authToken = extractAuthToken(request);
if (authToken != null) {
String[] ids = getToken(authToken).getUserAccountId().split(":");
return ids[0];
String esiaUserId = new UserIdsPair(getToken(authToken).getUserAccountId()).getEsiaUserId();
return esiaUserId;
}
else {
throw new UnauthorizedException("Failed to get auth data. User unauthorized.");

View file

@ -8,6 +8,7 @@ import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.web.util.WebUtils;
import ru.micord.ervu.security.webbpm.jwt.JwtAuthentication;
import ru.micord.ervu.security.webbpm.jwt.UserIdsPair;
public final class SecurityUtil {
public static final String AUTH_TOKEN = "auth_token";
@ -23,17 +24,13 @@ public final class SecurityUtil {
return cookie != null ? cookie.getValue() : null;
}
public static String getErvuId() {
public static UserIdsPair getUserIdsPair() {
return Optional.ofNullable(SecurityContextHolder.getContext().getAuthentication())
.map(a -> ((JwtAuthentication) a).getUserAccountId())
.map(userAccountId -> {
String ervuId = userAccountId.split(":")[1];
return "null".equals(ervuId) ? null : ervuId;
})
.map(a -> ((JwtAuthentication) a).getUserIdsPair())
.orElse(null);
}
public static String getCurrentUsername() {
public static String getCurrentUserEsiaId() {
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
if (auth != null && auth.isAuthenticated()) {
return auth.getName();

View file

@ -31,14 +31,16 @@ public class SubpoenaService {
}
public SubpoenaResponseDto getSubpoenaData() {
String ervuId = SecurityUtil.getErvuId();
String ervuId = SecurityUtil.getUserIdsPair() == null
? null
: SecurityUtil.getUserIdsPair().getErvuId();
if (ervuId == null) {
return new SubpoenaResponseDto.Builder().build();
}
SubpoenaRequestDto subpoenaRequestDto = new SubpoenaRequestDto(ervuId);
byte[] reply = replyingKafkaService.sendMessageAndGetReply(recruitRequestTopic,
recruitReplyTopic, subpoenaRequestDto).get();
recruitReplyTopic, subpoenaRequestDto).value().get();
try {
SummonsResponseData responseData = SummonsResponseData.parseFrom(reply);

View file

@ -1,19 +1,39 @@
package ru.micord.ervu.util;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import org.springframework.util.StringUtils;
import javax.servlet.http.HttpServletRequest;
/**
* @author gulnaz
*/
public final class DateUtil {
public final class DateUtils {
public static final DateTimeFormatter DEFAULT_FORMATTER = DateTimeFormatter.ofPattern("dd.MM.yyyy");
private DateUtil() {}
private static final DateTimeFormatter DATE_TIME_WITH_TIMEZONE_FORMATTER =
DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSX");
private DateUtils() {
}
public static String getClientTimeFromRequest(HttpServletRequest request) {
String clientTimeZone = request.getHeader("Client-Time-Zone");
ZoneId zoneId;
try {
zoneId = ZoneId.of(clientTimeZone);
}
catch (Exception e) {
zoneId = ZoneId.systemDefault();
}
return ZonedDateTime.now(zoneId).format(DATE_TIME_WITH_TIMEZONE_FORMATTER);
}
public static LocalDate convertToLocalDate(String date) {
return StringUtils.hasText(date)

View file

@ -0,0 +1,53 @@
package ru.micord.ervu.util;
import java.net.InetAddress;
import java.net.UnknownHostException;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils;
/**
* @author Adel Kalimullin
*/
public final class NetworkUtils {
private static final Logger LOGGER = LoggerFactory.getLogger(NetworkUtils.class);
private static final String IP_HEADER = "X-Forwarded-For";
private static final String UNKNOWN = "unknown";
private NetworkUtils() {
}
public static String getServerIp() {
try {
InetAddress inetAddress = InetAddress.getLocalHost();
return inetAddress.getHostAddress();
}
catch (UnknownHostException e) {
LOGGER.error("Failed to get local IP address", e);
return UNKNOWN;
}
}
public static String getClientIp(HttpServletRequest request) {
String ip = request.getHeader(IP_HEADER);
if (StringUtils.hasText(ip) && !ip.equalsIgnoreCase(UNKNOWN)) {
return ip.split(",")[0].trim();
}
else {
return request.getRemoteAddr();
}
}
public static String getHostName(String ip) {
try {
InetAddress inetAddress = InetAddress.getByName(ip);
return inetAddress.getHostName();
}
catch (UnknownHostException e) {
LOGGER.error("Unknown host for IP {}", ip, e);
return UNKNOWN;
}
}
}

View file

@ -0,0 +1,27 @@
syntax = "proto3";
package rtl.pgs.ervu.proto.emptyrequest;
import "google/protobuf/timestamp.proto";
option java_multiple_files = true;
option java_outer_classname = "LkrpUnknownRecruitResponse";
option java_package = "rtl.pgs.ervu.proto.emptyrequest";
message ExtractRegistry {
string fileName = 1;
string fileType = 2;
string fileDatetime = 3;
bytes file = 4;
};
message DataRegistryInformation {
ExtractRegistry extractRegistry = 1;
};
message ResponseData {
string lastName = 1;
string firstName = 2;
string middleName = 3;
string birthDate = 4;
DataRegistryInformation dataRegistryInformation = 5;
};

View file

@ -0,0 +1 @@
error.unknown=Система временно недоступна. Пожалуйста, повторите попытку позже.

View file

@ -0,0 +1 @@
error.unknown=The system is temporarily unavailable. Please try again later.

View file

@ -0,0 +1,2 @@
kafka_reply_timeout=Превышено время ожидания ответа от сервера. Попробуйте повторить запрос позже или обратитесь к системному администратору
access_denied=Доступ запрещен. Пользователь должен быть включен в группу "Сотрудник, ответственный за военно-учетную работу" в ЕСИА

View file

@ -0,0 +1,2 @@
kafka_reply_timeout=Превышено время ожидания ответа от сервера. Попробуйте повторить запрос позже или обратитесь к системному администратору
access_denied=Доступ запрещен. Пользователь должен быть включен в группу "Сотрудник, ответственный за военно-учетную работу" в ЕСИА

View file

@ -784,9 +784,20 @@ JBPM использует 3 корневых категории логирова
- `ERVU_KAFKA_RECRUIT_HEADER_CLASS` - класс для идентификации в заголовке запроса на получение данных о повестке, временных мерах и воинском учете
- `ERVU_KAFKA_SUBPOENA_EXTRACT_REQUEST_TOPIC` - топик для отправки запроса на получение выписки из Реестра повесток
- `ERVU_KAFKA_SUBPOENA_EXTRACT_REPLY_TOPIC` - топик для получения выписки из Реестра повесток
- `ERVU_KAFKA_REGISTRY_EXTRACT_REQUEST_TOPIC` - топик для отправки запроса на получение выписки из Реестра воинского учета
- `ERVU_KAFKA_REGISTRY_EXTRACT_EMPTY_REQUEST_TOPIC` - топик для отправки запроса на получение выписки из Реестра воинского учета при отсутствии ErvuId
- `ERVU_KAFKA_REGISTRY_EXTRACT_REQUEST_TOPIC` - топик для отправки запроса на получение выписки из Реестра воинского учета при наличии ErvuId
- `ERVU_KAFKA_REGISTRY_EXTRACT_REPLY_TOPIC` - топик для получения выписки из Реестра воинского учета
- `ERVU_KAFKA_EXTRACT_HEADER_CLASS` - класс для идентификации в заголовке запроса на получение выписки из Реестра повесток/Реестра воинского учета
- `AUDIT_KAFKA_AUTHORIZATION_TOPIC` - топик для отправки аудита в журнал авторизации
- `AUDIT_KAFKA_ACTION_TOPIC` - топик для отправки аудита в журнал действий пользователя
- `AUDIT_KAFKA_FILE_DOWNLOAD_TOPIC` - топик для отправки аудита в журнал загрузки ЮЛ и ФЛ
- `AUDIT_KAFKA_BOOTSTRAP_SERVERS` - список пар хост:порт, использующихся для установки первоначального соединения с кластером Kafka
- `AUDIT_KAFKA_SECURITY_PROTOCOL` - протокол, используемый для взаимодействия с брокерами
- `AUDIT_KAFKA_DOC_LOGIN_MODULE` - имя класса для входа в систему для SASL-соединений в формате, используемом конфигурационными файлами JAAS
- `AUDIT_KAFKA_USERNAME` - пользователь для подключения к Kafka
- `AUDIT_KAFKA_PASSWORD` - пароль для подключения к Kafka
- `AUDIT_KAFKA_SASL_MECHANISM` - механизм SASL, используемый для клиентских подключений
- `AUDIT_KAFKA_ENABLED` - флажок для включения записи аудита в кафку
# Прочее

View file

@ -1,6 +1,6 @@
ARG BUILDER_IMAGE=registry.altlinux.org/basealt/altsp:c10f1
ARG BACKEND_IMAGE=repo.micord.ru/alt/alt-tomcat:c10f1-9.0.59-20240903
ARG FRONTEND_IMAGE=nginx:1.24-alpine-slim
ARG FRONTEND_IMAGE=nginx:1.26.2-alpine-slim
FROM $BUILDER_IMAGE AS builder

View file

@ -1,5 +1,5 @@
ARG BUILDER_IMAGE=registry.altlinux.org/basealt/altsp:c10f1
ARG RUNTIME_IMAGE=nginx:1.24-alpine-slim
ARG RUNTIME_IMAGE=nginx:1.26.2-alpine-slim
FROM $BUILDER_IMAGE AS builder

View file

@ -30,9 +30,10 @@ ERVU_KAFKA_REPLY_TIMEOUT=5
ERVU_KAFKA_RECRUIT_REQUEST_TOPIC=ervu.recruit.info.request
ERVU_KAFKA_RECRUIT_REPLY_TOPIC=ervu.recruit.info.response
ERVU_KAFKA_RECRUIT_HEADER_CLASS=Request@urn://rostelekom.ru/RP-SummonsTR/1.0.5
ERVU_KAFKA_REGISTRY_EXTRACT_EMPTY_REQUEST_TOPIC=ervu.extract.empty.request
ERVU_KAFKA_REGISTRY_EXTRACT_REQUEST_TOPIC=ervu.extract.info.request
ERVU_KAFKA_REGISTRY_EXTRACT_REPLY_TOPIC=ervu.extract.info.response
ERVU_KAFKA_EXTRACT_HEADER_CLASS=request@urn://rostelekom.ru/ERVU-extractFromRegistryTR/1.0.3
ESIA_TOKEN_CLEAR_CRON=0 0 */1 * * *
ESIA_AUTH_INFO_CLEAR_CRON=0 0 */1 * * *
COOKIE_PATH=/fl

View file

@ -30,10 +30,21 @@ ERVU_KAFKA_REPLY_TIMEOUT=30
ERVU_KAFKA_RECRUIT_REQUEST_TOPIC=ervu.recruit.info.request
ERVU_KAFKA_RECRUIT_REPLY_TOPIC=ervu.recruit.info.response
ERVU_KAFKA_RECRUIT_HEADER_CLASS=Request@urn://rostelekom.ru/RP-SummonsTR/1.0.5
ERVU_KAFKA_REGISTRY_EXTRACT_EMPTY_REQUEST_TOPIC=ervu.extract.empty.request
ERVU_KAFKA_REGISTRY_EXTRACT_REQUEST_TOPIC=ervu.extract.info.request
ERVU_KAFKA_REGISTRY_EXTRACT_REPLY_TOPIC=ervu.extract.info.response
ERVU_KAFKA_EXTRACT_HEADER_CLASS=request@urn://rostelekom.ru/ERVU-extractFromRegistryTR/1.0.3
KAFKA_AUTH_SASL_MODULE=org.apache.kafka.common.security.scram.ScramLoginModule
AUDIT_KAFKA_AUTHORIZATION_TOPIC=ervu.lkrp.auth.events
AUDIT_KAFKA_ACTION_TOPIC=ervu.lkrp.action.events
AUDIT_KAFKA_FILE_DOWNLOAD_TOPIC=ervu.lkrp.import.file
AUDIT_KAFKA_BOOTSTRAP_SERVERS=
AUDIT_KAFKA_SECURITY_PROTOCOL=
AUDIT_KAFKA_DOC_LOGIN_MODULE=
AUDIT_KAFKA_USERNAME=
AUDIT_KAFKA_PASSWORD=
AUDIT_KAFKA_SASL_MECHANISM=
AUDIT_KAFKA_ENABLED=false
ESIA_TOKEN_CLEAR_CRON=0 0 */1 * * *
ESIA_AUTH_INFO_CLEAR_CRON=0 0 */1 * * *
COOKIE_PATH=/fl

View file

@ -81,7 +81,7 @@ http {
index index.html;
try_files $uri @index;
add_header Content-Security-Policy "frame-ancestors 'none'; default-src 'self'; script-src 'self'; style-src 'unsafe-inline' 'self' data:; font-src 'self' data:; img-src 'self' data:;";
add_header Content-Security-Policy "frame-ancestors 'none'; default-src 'self'; connect-src 'self' https://www.sberbank.ru; script-src 'self'; style-src 'unsafe-inline' 'self' data:; font-src 'self' data:; img-src 'self' data:;";
#Application config
location = /src/resources/app-config.json {
@ -106,7 +106,7 @@ http {
location @index {
root /frontend;
add_header Cache-Control "no-cache";
add_header Content-Security-Policy "frame-ancestors 'none'; default-src 'self'; script-src 'self'; style-src 'unsafe-inline' 'self' data:; font-src 'self' data:; img-src 'self' data:;";
add_header Content-Security-Policy "frame-ancestors 'none'; default-src 'self'; connect-src 'self' https://www.sberbank.ru; script-src 'self'; style-src 'unsafe-inline' 'self' data:; font-src 'self' data:; img-src 'self' data:;";
expires 0;
try_files /index.html =404;
}

View file

@ -76,11 +76,22 @@
<property name="ervu.kafka.recruit.request.topic" value="ervu.recruit.info.request"/>
<property name="ervu.kafka.recruit.reply.topic" value="ervu.recruit.info.response"/>
<property name="ervu.kafka.recruit.header.class" value="Request@urn://rostelekom.ru/RP-SummonsTR/1.0.5"/>
<property name="ervu.kafka.registry.extract.empty.request.topic" value="ervu.extract.empty.request"/>
<property name="ervu.kafka.registry.extract.request.topic" value="ervu.extract.info.request"/>
<property name="ervu.kafka.registry.extract.reply.topic" value="ervu.extract.info.response"/>
<property name="ervu.kafka.extract.header.class" value="request@urn://rostelekom.ru/ERVU-extractFromRegistryTR/1.0.3"/>
<property name="esia.token.clear.cron" value="0 0 */1 * * *"/>
<property name="esia.auth.info.clear.cron" value="0 0 */1 * * *"/>
<property name="sign.verify.url" value="https://ervu-sign-dev.k8s.micord.ru/verify"/>
<property name="audit.kafka.bootstrap.servers" value="localhost:9092"/>
<property name="audit.kafka.authorization.topic" value="ervu.lkrp.auth.events"/>
<property name="audit.kafka.file.download.topic" value="ervu.lkrp.import.file"/>
<property name="audit.kafka.action.topic" value="ervu.lkrp.action.events"/>
<property name="audit.kafka.security.protocol" value="SASL_PLAINTEXT"/>
<property name="audit.kafka.doc.login.module" value="org.apache.kafka.common.security.scram.ScramLoginModule"/>
<property name="audit.kafka.sasl.mechanism" value="SCRAM-SHA-256"/>
<property name="audit.kafka.username" value="user1"/>
<property name="audit.kafka.password" value="Blfi9d2OFG"/>
<property name="audit.kafka.enabled" value="false"/>
</system-properties>
<management>
<audit-log>

View file

@ -162,8 +162,8 @@
Documentation at: /docs/config/valve.html
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t &quot;%r&quot; %s %b" />
prefix="localhost_access_log" suffix=".log"
pattern="%h %l %u %t &quot;%r&quot; %s %b %D" />
</Host>
</Engine>

View file

@ -1,3 +0,0 @@
document.addEventListener("DOMContentLoaded", function(event) {
document.getElementById("browser-check-info").hidden = navigator.userAgent.indexOf("Chromium GOST") > -1 || navigator.userAgent.indexOf("YaBrowser") > -1;
});

View file

@ -1,139 +0,0 @@
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="src/resources/landing/home.css">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Security-Policy"
content="default-src 'self'; script-src 'self'; style-src 'unsafe-inline' 'self' data:; font-src 'self' data:; img-src 'self' data:"/>
<meta name="referrer" content="strict-origin-when-cross-origin"/>
<script src="browser_check.js"></script>
</head>
<body class="fl">
<div class="header">
<div class="header-logo"></div>
<div class="header-title">Реестр повесток физических лиц</div>
</div>
<div class="container">
<div id="browser-check-info">
<div class="browser-check-content">
<div class="browser-check-text">
<div class="plain-text">Для обеспечения защищённого соединения с сайтом реестра повесток необходимо установить браузер Яндекс или Chromium GOST.</div>
</div>
</div>
</div>
<div class="container-inside">
<div class="list-group lk-what">
<div>
<div class="title">Реестр повесток</div>
<div class="short-text">Реестр повесток содержит сведения обо всех направленных повестках военкомата</div>
<div class="subtitle">Зачем смотреть реестр повесток?</div>
<div class="paragraph">
<div class="paragraph-third">
<div class="icon-checklist short-text">Узнать, что в Реестре есть повестка на Ваше имя.</div>
</div>
<div class="paragraph-third">
<div class="icon-clock short-text">Уточнить дату, время 
и место явки.</div>
</div>
<div class="paragraph-third">
<div class="icon-text short-text">Получить выписку из Реестра повесток или Реестра воинского учёта.</div>
</div>
</div>
</div>
</div>
<div class="list-group lk-access">
<div class="paragraph">
<div class="paragraph-left">
<div class="subtitle short-text">Как посмотреть повестку?</div>
</div>
<div class="paragraph-right">
<div class="list">
<div class="esia short-text">Войти в Реестр с помощью своей учётной записи на Госуслугах через ЕСИА</div>
<div class="case short-text">Она должна быть подтверждённой</div>
<div class="user short-text">Если учётной записи нет, зарегистрируйтесь</div>
</div>
<div class="btn-group">
<a href="." class="btn">Войти в Личный кабинет</a>
<!--<a href="#" class="btn btn-secondary">Зарегистрироваться</a>-->
</div>
</div>
</div>
</div>
<div class="list-group lk-info">
<div class="subtitle">Для чего направляется повестка?</div>
<div class="paragraph">
<div class="paragraph-half">
<div class="section-group">
<div class="icon-user">Прохождение медосвидетельствования</div>
<div class="icon-building">Прохождение призывной комиссии</div>
</div>
</div>
<div class="paragraph-half">
<div class="section-group">
<div class="icon-case">Уточнение документов воинского учёта</div>
<div class="icon-shield">Отправка к месту прохождения военной службы.</div>
</div>
</div>
</div>
</div>
<div class="list-group lk-pass">
<div class="subtitle">Как вручается повестка?</div>
<div><a href="https://www.consultant.ru/document/cons_doc_LAW_18260/0b6fba2b4841a88fc0274d43870ea1d54a32b91d/?ysclid=lypo4aufut593686350">Закон о воинской обязанности и военной службе, ст. 31.</a></div>
<div class="pass-list">
<div>Лично под расписку по месту жительства, работы или учёбы</div>
<div>Размещение в Реестре повесток</div>
<div>Заказным письмом по Почте России</div>
</div>
</div>
<div class="list-group lk-when">
<div class="paragraph">
<div class="paragraph-left">
<div class="subtitle short-text">Когда повестка считается вручённой?</div>
</div>
<div class="paragraph-right">
<div class="list">
<div class="romb short-text">После подписи, удостоверяющей получение лично</div>
<div class="romb short-text">Через 7 дней с даты размещения в Реестре повесток</div>
<div class="romb short-text">В день вручения заказного письма</div>
<div class="romb short-text">В день отказа от получения лично или по почте — в случае такого отказа</div>
</div>
</div>
</div>
</div>
<div class="list-group lk-msg">
<div class="msg-list">
<span class="info"></span>Явиться в военкомат необходимо в срок, указанный в повестке!
</div>
</div>
<div class="list-group lk-limits">
<div class="subtitle">Временные ограничения</div>
<div>В случае неявки по повестке к Вам будут применены временные меры. <a href="https://www.consultant.ru/document/cons_doc_LAW_18260/dc940acbd42ce7edc1bdb8be8fcb13e3bd02820d/?ysclid=lypo6bitf0605727213">Подробнее о временных мерах</a></div>
<div class="scheme"></div>
</div>
<div class="list-group lk-alert">
<div class="short-text">Если не прийти в военкомат в течение 20 календарных дней от даты явки, указанной в повестке, начнут действовать другие ограничения, запрещающие:</div>
<div class="paragraph">
<div class="paragraph-left">
<div class="list">
<div class="romb short-text">управлять транспортом</div>
<div class="romb short-text">регистрировать транспорт и недвижимость</div>
<div class="romb short-text">получать кредиты и займы</div>
<div class="romb short-text">регистрироваться в качестве ИП или самозанятого</div>
</div>
</div>
<div class="paragraph-right">
<div class="alert-block">
<div>С даты, когда повестка размещена в Реестре повесток, гражданам, подлежащим призыву на воинскую службу, запрещается выезд из России</div>
<div>Все ограничения, включая запрет на выезд из России, временные. Их снимут в течение суток после явки в военкомат</div>
</div>
</div>
</div>
</div>
<div class="list-group lk-footer"></div>
</div>
</div>
</body>
</html>

View file

@ -5,7 +5,7 @@
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Security-Policy"
content="default-src 'self'; script-src 'self'; style-src 'unsafe-inline' 'self' data:; font-src 'self' data:; img-src 'self' data:"/>
content="default-src 'self'; connect-src 'self' https://www.sberbank.ru; script-src 'self'; style-src 'unsafe-inline' 'self' data:; font-src 'self' data:; img-src 'self' data:"/>
<meta name="referrer" content="strict-origin-when-cross-origin"/>
<link rel="icon" type="image/png" href="src/resources/img/logo.png"/>
</head>

View file

@ -16,5 +16,6 @@
"password_pattern": "^((?=(.*\\d){1,})(?=.*[a-zа-яё])(?=.*[A-ZА-ЯЁ]).{8,})$",
"password_pattern_error": "Пароль должен содержать заглавные или прописные буквы и как минимум 1 цифру",
"show.client.errors": false,
"available_task.single_fetch": true
"available_task.single_fetch": true,
"cert_check_url": "https://lkrp-dev2.micord.ru"
}

View file

@ -861,3 +861,494 @@
.webbpm.ervu_lkrp_fl .dialog-link {
cursor: pointer;
}
/*---------------- HOME ----------------*/
.webbpm .header-landing {
background-color: var(--color-text-primary) !important;
z-index: 1;
}
.webbpm .header-landing > div {
display: flex;
flex-direction: row;
align-items: center;
font-family: 'InterSB';
}
.webbpm .header-landing .header-logo {
width: 62px;
height: 40px;
background: url(../img/svg/mil-logo.svg) no-repeat 0 50%;
}
.webbpm .header-landing .header-title {
color: var(--white);
font-size: var(--size-text-secondary);
margin-left: var(--indent-mini);
}
.webbpm .container-inside .short-text {
max-width: 60%;
}
.webbpm .container-inside .paragraph-left .short-text {
max-width: 70%;
}
.webbpm .container-inside .list-group {
position: relative;
font-size: var(--size-text-secondary);
line-height: normal;
padding: 0 var(--w-screen);
}
.webbpm .container-inside .list-group .btn {
width: max-content;
}
.webbpm .container-inside .list-group .title {
font-size: var(--l-size-text-maintitle);
font-family: 'GolosB';
margin-bottom: var(--l-indent-huge);
}
.webbpm .container-inside .list-group .subtitle {
font-size: var(--l-size-text-title);
font-family: 'GolosDB';
margin-bottom: var(--l-indent-big);
}
.webbpm .container-inside .list-group .muted {
color: var(--color-light);
}
.webbpm .container-inside .list-group .paragraph {
display: flex;
flex-direction: row;
}
.webbpm .container-inside .list-group .paragraph .paragraph-left {
width: 40%;
}
.webbpm .container-inside .list-group .paragraph .paragraph-right {
width: 60%;
}
.webbpm .container-inside .list-group .paragraph .paragraph-half {
width: 50%;
}
.webbpm .container-inside .list-group .paragraph .paragraph-third {
width: 33.33%;
}
.webbpm .container-inside .list-group .paragraph [class*="paragraph-"] + [class*="paragraph-"] {
margin-left: 40px;
}
.webbpm .container-inside .list-group .paragraph .text {
font-family: 'InterSB';
font-size: var(--l-size-text-primary);
margin-bottom: var(--indent-mini);
}
.webbpm .container-inside .list-group .paragraph .icon-checklist,
.webbpm .container-inside .list-group .paragraph .icon-clock,
.webbpm .container-inside .list-group .paragraph .icon-text {
padding-top: 44px;
}
.webbpm .container-inside .list-group .paragraph .icon-checklist {
background: url(../img/svg/checklist-32x32.svg) no-repeat 0 0;
}
.webbpm .container-inside .list-group .paragraph .icon-clock {
background: url(../img/svg/clock-32x32.svg) no-repeat 0 0;
}
.webbpm .container-inside .list-group .paragraph .icon-text {
background: url(../img/svg/text-32x32.svg) no-repeat 0 0;
}
.webbpm .container-inside .list-group .list > div {
position: relative;
padding-left: 36px;
}
.webbpm .container-inside .list-group .list > div + div {
margin-top: var(--indent-mini);
}
.webbpm .container-inside .list-group .list > div::after {
content: "";
position: absolute;
width: 24px;
height: 24px;
top: 0;
left: 0;
}
.webbpm .container-inside .list-group .list > div.esia::after {
background: url(../img/svg/esia-24x24.svg) no-repeat 0 0;
}
.webbpm .container-inside .list-group .list > div.case::after {
background: url(../img/svg/case-24x24.svg) no-repeat 0 0;
}
.webbpm .container-inside .list-group .list > div.user::after {
background: url(../img/svg/user-24x24.svg) no-repeat 0 0;
}
.webbpm .container-inside .list-group .list > div.romb::after {
background: url(../img/svg/romb-24x24.svg) no-repeat 0 0;
}
.webbpm .container-inside .list-group .list ~ .btn-group {
margin-top: var(--indent-medium);
}
.webbpm .container-inside .list-group .section-group > div {
display: flex;
flex-direction: column;
min-height: 80px;
position: relative;
padding: 16px 16px 16px 76px;
margin-bottom: 16px;
border-radius: 4px;
background-color: var(--bg-form);
}
.webbpm .container-inside .list-group .section-group > div:last-child {
margin-bottom: 0;
}
.webbpm .container-inside .list-group .section-group > div::before {
content: "";
position: absolute;
left: 16px;
width: 48px;
height: 48px;
border-radius: 50px;
background-color: var(--color-bg-main);
background-repeat: no-repeat;
background-position: 50% 50%;
}
.webbpm .container-inside .list-group .section-group > div.icon-user::before {
background-image: url(../img/svg/pers-wt.svg);
}
.webbpm .container-inside .list-group .section-group > div.icon-case::before {
background-image: url(../img/svg/case-wt.svg);
}
.webbpm .container-inside .list-group .section-group > div.icon-shield::before {
background-image: url(../img/svg/shield-wt.svg);
}
.webbpm .container-inside .list-group .section-group > div.icon-clip::before {
background-image: url(../img/svg/clip-wt.svg);
}
.webbpm .container-inside .list-group .section-group > div.icon-pers::before {
background-image: url(../img/svg/pers-wt.svg);
}
.webbpm .container-inside .list-group .section-group > div.icon-building::before {
background-image: url(../img/svg/building-wt.svg);
}
.webbpm .container-inside .list-group .section-group > div .muted {
margin-top: 12px;
}
.webbpm .container-inside .list-group .section-group > div .muted .detailed {
color: var(--color-text-primary);
font-family: 'InterB';
}
.webbpm .container-inside .list-group .pass-list {
position: relative;
display: flex;
flex-direction: row;
padding-top: 60px;
}
.webbpm .container-inside .list-group .pass-list::before {
content: "";
position: absolute;
width: calc(80% + 40px);
height: 4px;
top: 18px;
left: 0;
background-color: var(--color-link-hover);
}
.webbpm .container-inside .list-group .pass-list > div {
position: relative;
width: 20%;
}
.webbpm .container-inside .list-group .pass-list > div::before {
content: "";
position: absolute;
width: 40px;
height: 40px;
top: -60px;
left: 0;
border-radius: 2px;
border: 4px solid var(--color-link-hover);
background-color: var(--bg-light);
transform: rotate(45deg);
}
.webbpm .container-inside .list-group .pass-list > div::after {
content: "";
position: absolute;
font-family: 'InterB';
top: -50px;
left: 15px;
}
.webbpm .container-inside .list-group .pass-list > div:nth-child(1)::after {
content: "1";
}
.webbpm .container-inside .list-group .pass-list > div:nth-child(2)::after {
content: "2";
}
.webbpm .container-inside .list-group .pass-list > div:nth-child(3)::after {
content: "3";
}
.webbpm .container-inside .list-group .pass-list > div:nth-child(4)::after {
content: "4";
}
.webbpm .container-inside .list-group .pass-list > div:nth-child(5)::after {
content: "5";
}
.webbpm .container-inside .list-group .pass-list > div + div {
margin-left: 40px;
}
.webbpm .container-inside .list-group .msg-list {
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
padding: 8px;
}
.webbpm .container-inside .list-group .msg-list span {
width: 32px;
height: 32px;
margin: 0 16px 0 0;
background: url(../img/svg/info-gr.svg) no-repeat 0 0;
}
.webbpm .container-inside .list-group .docs-list {
position: relative;
display: flex;
flex-direction: row;
}
.webbpm .container-inside .list-group .docs-list > div {
position: relative;
display: flex;
flex-direction: row;
align-items: center;
width: 20%;
}
.webbpm .container-inside .list-group .docs-list > div a {
width: 24px;
height: 24px;
padding-right: 8px;
background: url(../img/svg/download-24x24.svg) no-repeat 0 0;
}
.webbpm .container-inside .list-group .docs-list > div + div {
margin-left: 40px;
}
.webbpm .container-inside .list-group.lk-what {
padding-top: var(--l-indent-huge);
padding-bottom: var(--l-indent-huge);
}
.webbpm .container-inside .list-group.lk-what::after {
content: "";
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
opacity: 0.12;
background: url(../img/bg-star.png) no-repeat calc(100% + 200px) 0px transparent;
z-index: 0;
}
.webbpm .container-inside .list-group.lk-what > div {
position: relative;
z-index: 1;
}
.webbpm .container-inside .list-group.lk-access {
color: var(--white);
padding-top: var(--l-indent-big);
padding-bottom: var(--l-indent-big);
background-color: var(--color-bg-main);
}
.webbpm .container-inside .list-group.lk-info {
padding-top: var(--l-indent-big);
padding-bottom: var(--l-indent-big);
}
.webbpm .container-inside .list-group.lk-pass {
padding-top: var(--l-indent-big);
padding-bottom: var(--l-indent-big);
background-color: var(--bg-light);
}
.webbpm .container-inside .list-group.lk-when {
color: var(--white);
padding-top: var(--l-indent-big);
padding-bottom: var(--l-indent-big);
background-color: var(--color-bg-main);
}
.webbpm .container-inside .list-group.lk-msg {
background-color: var(--border-light);
}
.webbpm .container-inside .list-group.lk-limits {
padding-top: var(--l-indent-big);
padding-bottom: var(--l-indent-big);
}
.webbpm .container-inside .list-group.lk-docs {
flex: 1;
color: var(--white);
padding-top: var(--l-indent-huge);
padding-bottom: var(--l-indent-huge);
background-color: var(--color-text-primary);
}
.webbpm .container-inside .list-group.lk-alert {
padding-top: var(--l-indent-big);
padding-bottom: var(--l-indent-big);
background-color: var(--bg-light);
}
.webbpm .container-inside .list-group.lk-footer {
padding-top: var(--indent-small);
padding-bottom: var(--indent-small);
background-color: var(--color-text-primary);
}
.webbpm.ervu_lkrp_fl .container-inside .list-group.lk-what .title {
color: var(--color-link);
padding: 0;
margin-bottom: var(--indent-small);
}
.webbpm.ervu_lkrp_fl .container-inside .list-group.lk-what .title::after {
content: url(../img/svg/star.svg);
top: 18px;
position: relative;
margin-left: var(--l-indent-big);
}
.webbpm.ervu_lkrp_fl .container-inside .list-group.lk-what .title + .short-text {
max-width: 25%;
}
.webbpm.ervu_lkrp_fl .container-inside .list-group.lk-what .title ~ .subtitle {
margin-top: var(--l-indent-big);
}
.webbpm.ervu_lkrp_fl .container-inside .list-group.lk-info .section-group > div {
justify-content: center;
}
.webbpm.ervu_lkrp_fl .container-inside .list-group.lk-pass .subtitle {
margin-bottom: 0;
}
.webbpm.ervu_lkrp_fl .container-inside .list-group.lk-pass .subtitle + div {
margin-top: var(--indent-small);
margin-bottom: var(--l-indent-big);
}
.webbpm.ervu_lkrp_fl .container-inside .list-group.lk-pass .pass-list::before {
display: none;
}
.webbpm.ervu_lkrp_fl .container-inside .list-group.lk-pass .pass-list > div {
position: relative;
width: 33.33%;
}
.webbpm.ervu_lkrp_fl .container-inside .list-group.lk-msg {
color: var(--color-link);
font-family: 'InterSB';
background-color: var(--bg-form);
}
.webbpm.ervu_lkrp_fl .container-inside .list-group.lk-msg span {
background: url(../img/svg/info.svg) no-repeat 0 4px;
}
.webbpm.ervu_lkrp_fl .container-inside .list-group.lk-limits .subtitle {
margin-bottom: 0;
}
.webbpm.ervu_lkrp_fl .container-inside .list-group.lk-limits .subtitle + div {
margin-top: var(--indent-small);
margin-bottom: var(--l-indent-big);
}
.webbpm.ervu_lkrp_fl .container-inside .list-group.lk-limits .scheme {
width: 100%;
height: 204px;
background: url(../img/svg/scheme.svg) no-repeat 0 0;
}
.webbpm.ervu_lkrp_fl .container-inside .list-group.lk-alert > .short-text {
margin-bottom: var(--l-indent-big);
}
.webbpm.ervu_lkrp_fl .container-inside .list-group.lk-alert .alert-block {
position: relative;
padding: var(--indent-small) 64px var(--indent-small) var(--indent-small);
border-radius: 4px;
border: 2px solid var(--border-light);
}
.webbpm.ervu_lkrp_fl .container-inside .list-group.lk-alert .alert-block::after {
content: url(../img/svg/info.svg);
position: absolute;
top: var(--indent-small);
right: var(--indent-small);
}
.webbpm.ervu_lkrp_fl .container-inside .list-group.lk-alert .alert-block > div + div {
margin-top: var(--indent-small);
}
.webbpm.ervu_lkrp_fl .container-inside .list-group.lk-alert .alert-block > div:last-child {
color: var(--color-link);
}
/*@media ((max-width: 780px) or ((orientation: landscape) and (max-device-width : 1024px))) {*/
@media (max-width: 1024px) {
.container-inside .short-text {
max-width: 100% !important;
}
.webbpm .container-inside .list-group .paragraph {
flex-direction: column;
}
.webbpm .container-inside .list-group .paragraph [class*="paragraph-"] {
width: auto;
margin-left: 0;
}
.webbpm .container-inside .list-group .paragraph [class*="paragraph-"] + [class*="paragraph-"] {
margin-top: var(--indent-mini);
margin-left: 0;
}
.webbpm .container-inside .list-group .pass-list {
flex-direction: column;
padding-top: 0;
}
.webbpm .container-inside .list-group .pass-list::before {
display: none;
}
.webbpm .container-inside .list-group .pass-list > div {
display: flex;
align-items: center;
width: auto !important;
padding-left: 60px;
min-height: 40px;
}
.webbpm .container-inside .list-group .pass-list > div::before {
top: 0;
}
.webbpm .container-inside .list-group .pass-list > div::after {
top: 10px;
}
.webbpm .container-inside .list-group .pass-list > div + div {
margin-left: 0;
margin-top: var(--indent-mini);
}
}
@media (max-width: 480px) {
.webbpm .container-inside .list-group .docs-list {
flex-direction: column;
}
.webbpm .container-inside .list-group .docs-list > div {
width: 100%;
}
.webbpm .container-inside .list-group .docs-list > div + div {
margin-left: 0;
margin-top: var(--indent-mini);
}
}
/*------------- end - HOME -------------*/
.cert-check-content {
font-family: 'Golos';
font-size: var(--size-text-secondary);
padding: var(--indent-mini) var(--w-screen) var(--indent-mini) calc(var(--w-screen) + 38px);
background-color: var(--bg-warn);
}
.cert-check-text {
position: relative;
padding-left: 40px;
}
.cert-check-text::before {
position: absolute;
content: url(../img/svg/info.svg);
left: 0;
top: calc((100% - 24px) / 2);
}
.text-header {
color: var(--color-link);
font-family: 'GolosB';
font-size: var(--size-text-primary);
margin-bottom: 4px;
}
.plain-text {
margin-bottom: 0;
}

View file

@ -29,6 +29,25 @@
font-style: normal;
}
@font-face {
font-family: 'GolosM';
src: url('../fonts/GolosText-Medium.ttf');
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: 'GolosDB';
src: url('../fonts/GolosText-DemiBold.ttf');
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: 'GolosB';
src: url('../fonts/GolosText-Bold.ttf');
font-weight: 400;
font-style: normal;
}
body.webbpm.ervu_lkrp_fl {
-ms-text-size-adjust: 100%;
-moz-text-size-adjust: 100%;
@ -64,6 +83,15 @@ body.webbpm.ervu_lkrp_fl {
--indent-small: 24px;
--indent-mini: 16px;
--indent-extra-mini: 10px;
--l-size-text-maintitle: 54px;
--l-size-text-title: 40px;
--l-size-text-subtitle: 32px;
--l-size-text-primary: 20px;
--l-indent-huge: 72px;
--l-indent-big: 52px;
}
.webbpm.ervu_lkrp_fl a {
@ -210,6 +238,13 @@ body.webbpm.ervu_lkrp_fl {
--indent-big: 24px;
--indent-medium: 24px;
--indent-small: 16px;
--l-size-text-maintitle: 32px;
--l-size-text-title: 28px;
--l-size-text-subtitle: 24px;
--l-indent-huge: 32px;
--l-indent-big: 24px;
}
}
@ -223,6 +258,13 @@ body.webbpm.ervu_lkrp_fl {
--indent-big: 24px;
--indent-medium: 16px;
--indent-small: 16px;
--l-size-text-maintitle: 28px;
--l-size-text-title: 24px;
--l-size-text-subtitle: 20px;
--l-indent-huge: 24px;
--l-indent-big: 24px;
}
.webbpm.ervu_lkrp_fl .header .header-logo .main-page {

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 238 KiB

View file

@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.7158 3C9.35852 3 8.20421 3.9903 7.99782 5.33184L7.89503 6H4C2.89543 6 2 6.89543 2 8V18C2 19.6569 3.34315 21 5 21H19C20.6569 21 22 19.6569 22 18V8C22 6.89543 21.1046 6 20 6H16.105L16.0022 5.33184C15.7958 3.99031 14.6415 3 13.2842 3H10.7158ZM14.5873 6L14.5196 5.55993C14.4258 4.95014 13.9011 4.5 13.2842 4.5H10.7158C10.0989 4.5 9.57419 4.95014 9.48038 5.55993L9.41268 6H14.5873ZM4 7.5H20C20.2761 7.5 20.5 7.72386 20.5 8V10.9297C18.8456 11.9818 16.9613 12.684 15 13.0362V13C15 11.8954 14.1046 11 13 11H11C9.89543 11 9 11.8954 9 13V13.0362C7.03871 12.684 5.1544 11.9818 3.5 10.9297V8C3.5 7.72386 3.72386 7.5 4 7.5ZM9 14.5582C7.06675 14.2404 5.19401 13.6122 3.5 12.6736V18C3.5 18.8284 4.17157 19.5 5 19.5H19C19.8284 19.5 20.5 18.8284 20.5 18V12.6736C18.806 13.6122 16.9332 14.2404 15 14.5582V15C15 16.1046 14.1046 17 13 17H11C9.89543 17 9 16.1046 9 15V14.5582ZM11 12.5H13C13.2761 12.5 13.5 12.7239 13.5 13V15C13.5 15.2761 13.2761 15.5 13 15.5H11C10.7239 15.5 10.5 15.2761 10.5 15V13C10.5 12.7239 10.7239 12.5 11 12.5Z" fill="#FA773F"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View file

@ -0,0 +1,4 @@
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4 8C4 5.79086 5.79086 4 8 4H24C26.2091 4 28 5.79086 28 8V24C28 26.2091 26.2091 28 24 28H8C5.79086 28 4 26.2091 4 24V8Z" fill="#C64E1B"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M16.0103 17.6088L10.57 12.1602L9.50989 13.2213L15.4802 19.2008C15.6207 19.3416 15.8114 19.4207 16.0102 19.4207C16.209 19.4207 16.3996 19.3417 16.5402 19.2009L30.4835 5.24004L29.4235 4.17871L16.0103 17.6088Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 522 B

View file

@ -0,0 +1,4 @@
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="15.9993" cy="15.9993" r="13.3333" fill="#C64E1B"/>
<path d="M16 9.375V15.8319C16 16.3666 16.2141 16.879 16.5945 17.2548L19.3333 19.9601" stroke="white" stroke-width="1.5"/>
</svg>

After

Width:  |  Height:  |  Size: 288 B

View file

@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M7 5.5H11V4H7C5.34315 4 4 5.34315 4 7V17C4 18.6569 5.34315 20 7 20H17C18.6569 20 20 18.6569 20 17V13H18.5V17C18.5 17.8284 17.8284 18.5 17 18.5H7C6.17157 18.5 5.5 17.8284 5.5 17V7C5.5 6.17157 6.17157 5.5 7 5.5ZM15 5.5L17.4394 5.5L8.96967 13.9697L10.0303 15.0303L18.5001 6.56066V9.00001H20.0001V4.75C20.0001 4.33579 19.6643 4.00001 19.2501 4L15 4L15 5.5Z" fill="#FA773F"/>
</svg>

After

Width:  |  Height:  |  Size: 523 B

View file

@ -0,0 +1,4 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M3.44531 9.5C3.0311 9.5 2.69531 9.83579 2.69531 10.25C2.69531 10.6642 3.0311 11 3.44531 11H9.83731C10.2515 11 10.5873 10.6642 10.5873 10.25C10.5873 9.83579 10.2515 9.5 9.83731 9.5H3.44531ZM3.44531 13C3.0311 13 2.69531 13.3358 2.69531 13.75C2.69531 14.1642 3.0311 14.5 3.44531 14.5H15.4853C15.8995 14.5 16.2353 14.1642 16.2353 13.75C16.2353 13.3358 15.8995 13 15.4853 13H3.44531Z" fill="#FA773F"/>
<path d="M3.72852 16.9899C4.03952 17.3879 4.42752 17.7289 4.87852 17.9889L9.99952 20.9489C11.2375 21.6639 12.7615 21.6639 13.9995 20.9489L18.7495 18.2069C19.9875 17.4919 20.7495 16.1719 20.7495 14.7429V9.25788C20.7495 7.82888 19.9875 6.50788 18.7495 5.79388L13.9995 3.05188C12.7615 2.33688 11.2375 2.33688 9.99952 3.05188L4.87852 6.01188C4.42752 6.27288 4.03952 6.61387 3.72852 7.01088" stroke="#FA773F" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 1,021 B

View file

@ -0,0 +1,21 @@
<svg width="100" height="100" viewBox="0 0 100 100" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2058_3434)">
<mask id="mask0_2058_3434" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="-62" y="-16" width="176" height="196">
<path d="M102 -16H-50C-56.6274 -16 -62 -10.6274 -62 -4V168C-62 174.627 -56.6274 180 -50 180H102C108.627 180 114 174.627 114 168V-4C114 -10.6274 108.627 -16 102 -16Z" fill="white"/>
</mask>
<g mask="url(#mask0_2058_3434)">
<path d="M39.642 25.6301C39.636 24.5319 39.554 24.4496 38.456 24.4419C34.1663 24.4123 18.8188 24.3519 14.9182 24.4265C10.3379 24.5144 7.92969 27.2158 7.92969 31.4436V65.6527C7.92969 66.7607 8.01638 66.8463 9.12338 66.8463H32.8277C37.6727 66.8463 39.61 63.6168 39.61 59.7403C39.61 56.3581 39.665 30.7836 39.639 25.629L39.642 25.6301Z" fill="white" stroke="black" stroke-width="0.7" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M61.823 17.1852C61.815 15.6236 61.699 15.5061 60.136 15.4952C54.034 15.4523 32.2018 15.3667 26.6552 15.4732C20.1399 15.5984 16.7148 19.4408 16.7148 25.4552V74.1169C16.7148 75.6927 16.8378 75.8157 18.4137 75.8157H52.133C59.025 75.8157 61.781 71.2211 61.781 65.7085C61.781 60.8975 61.859 24.5185 61.823 17.1863V17.1852Z" fill="white" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M92.056 9.4726C92.045 7.2379 91.878 7.0699 89.643 7.0545C80.913 6.993 49.676 6.87 41.739 7.0227C32.417 7.2017 27.5171 12.7 27.5171 21.305V81.5015C27.5171 83.7559 27.6928 83.9316 29.9473 83.9316H78.192C88.052 83.9316 91.996 77.3582 91.996 69.4703C91.996 62.5872 92.108 19.9642 92.056 9.4726Z" fill="white" stroke="black" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M40.3589 23.4949L74.2089 23.373" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M40.3589 32.6758L58.8439 32.9097" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M73.4661 51.593L70.3491 42L67.2322 51.593L66.2536 54.6049H63.0867H53L57.5067 57.8792H68.6357L68.64 57.8659L70.3491 52.6057L72.0583 57.8659L72.0626 57.8792H83.1916L87.6982 54.6049H77.6116H74.4447L73.4661 51.593ZM78.7361 61.1163H73.1603L73.137 61.1332L73.1231 61.1433L73.1284 61.1596L74.8376 66.4198L70.363 63.1688L70.3491 63.1587L70.3353 63.1688L65.8607 66.4198L67.5698 61.1596L67.5751 61.1433L67.5612 61.1332L67.5379 61.1163H61.9622L63.7223 62.3951L62.7437 65.407L59.6268 75L67.7871 69.0712L70.3491 67.2098L72.9112 69.0712L81.0715 75L77.9545 65.407L76.9759 62.3951L78.7361 61.1163Z" fill="#131513"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M73.4661 51.593L70.3491 42L67.2322 51.593L66.2536 54.6049H63.0867H53L57.5067 57.8792H68.6357L68.64 57.8659L70.3491 52.6057L72.0583 57.8659L72.0626 57.8792H83.1916L87.6982 54.6049H77.6116H74.4447L73.4661 51.593ZM78.7361 61.1163H73.1603L73.137 61.1332L73.1231 61.1433L73.1284 61.1596L74.8376 66.4198L70.363 63.1688L70.3491 63.1587L70.3353 63.1688L65.8607 66.4198L67.5698 61.1596L67.5751 61.1433L67.5612 61.1332L67.5379 61.1163H61.9622L63.7223 62.3951L62.7437 65.407L59.6268 75L67.7871 69.0712L70.3491 67.2098L72.9112 69.0712L81.0715 75L77.9545 65.407L76.9759 62.3951L78.7361 61.1163Z" fill="#C64E1B" fill-opacity="0.59"/>
</g>
</g>
<defs>
<clipPath id="clip0_2058_3434">
<rect width="100" height="100" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

View file

@ -0,0 +1,4 @@
<svg width="33" height="33" viewBox="0 0 33 33" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle opacity="0.1" cx="16.5" cy="16.9495" r="12.8333" fill="black" stroke="black" stroke-linejoin="round"/>
<path d="M15.212 13.0138H17.788V10.5498H15.212V13.0138ZM15.324 14.9498V23.6165H17.676V14.9498H15.324Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 332 B

View file

@ -0,0 +1,11 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_1909_3132)">
<rect x="4" y="12" width="12" height="12" rx="1" transform="rotate(-45 4 12)" fill="#C64E1B"/>
<circle cx="12.4853" cy="12" r="6" transform="rotate(135 12.4853 12)" fill="#C64E1B"/>
</g>
<defs>
<clipPath id="clip0_1909_3132">
<rect x="4" y="12" width="12" height="12" rx="1" transform="rotate(-45 4 12)" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 480 B

View file

@ -0,0 +1,221 @@
<svg width="1150" height="204" viewBox="0 0 1150 204" fill="none" xmlns="http://www.w3.org/2000/svg">
<line x1="80" y1="62" x2="504" y2="62" stroke="#FFCE50" stroke-opacity="0.55" stroke-width="12"/>
<line x1="722" y1="170" x2="1135" y2="170" stroke="#C64E1B" stroke-width="12"/>
<line x1="504" y1="62" x2="1135" y2="61.9999" stroke="#36554D" stroke-width="12"/>
<line x1="499.243" y1="57.7574" x2="613.243" y2="171.757" stroke="#FFCE50" stroke-opacity="0.55" stroke-width="12"/>
<path d="M609 170L722 170" stroke="#FFCE50" stroke-opacity="0.55" stroke-width="12"/>
<rect x="66" y="62.1421" width="20" height="20" transform="rotate(-45 66 62.1421)" fill="#FCFDF8"/>
<rect x="70.2426" y="62.1421" width="14" height="14" transform="rotate(-45 70.2426 62.1421)" stroke="#FFCE50" stroke-opacity="0.55" stroke-width="6"/>
<rect x="490" y="62.1421" width="20" height="20" transform="rotate(-45 490 62.1421)" fill="#36554D"/>
<rect x="494.243" y="62.1421" width="14" height="14" transform="rotate(-45 494.243 62.1421)" stroke="#FFCE50" stroke-opacity="0.55" stroke-width="6"/>
<rect x="1125.24" y="62.1421" width="14" height="14" transform="rotate(-45 1125.24 62.1421)" fill="#FCFDF8" stroke="#36554D" stroke-width="6"/>
<rect x="708" y="170.142" width="20" height="20" transform="rotate(-45 708 170.142)" fill="#C64E1B"/>
<rect x="712.243" y="170.142" width="14" height="14" transform="rotate(-45 712.243 170.142)" stroke="#FFCE50" stroke-opacity="0.55" stroke-width="6"/>
<rect x="1125.24" y="170.142" width="14" height="14" transform="rotate(-45 1125.24 170.142)" fill="#FCFDF8" stroke="#C64E1B" stroke-width="6"/>
<path d="M17.255 17.2372V13.3196H17.8416C18.0107 13.2135 18.1465 13.0445 18.2493 12.8125C18.3554 12.5804 18.4415 12.307 18.5078 11.9921C18.5774 11.6773 18.6304 11.3376 18.6669 10.973C18.7067 10.6051 18.7415 10.2339 18.7713 9.85933L18.9702 7.36359H24.8267V13.3196H26.0099V17.2372H23.9915V15H19.3232V17.2372H17.255ZM19.9496 13.3196H22.8281V8.99427H20.7699L20.6903 9.85933C20.634 10.6747 20.5528 11.3674 20.4467 11.9375C20.3407 12.5042 20.175 12.9649 19.9496 13.3196Z" fill="#3F434B"/>
<path d="M29.4217 15.1441C28.9345 15.1441 28.5003 15.0596 28.1191 14.8906C27.738 14.7182 27.4364 14.4647 27.2143 14.1299C26.9956 13.7919 26.8862 13.3709 26.8862 12.8671C26.8862 12.4429 26.9641 12.0866 27.1199 11.7983C27.2756 11.5099 27.4877 11.2779 27.7562 11.1022C28.0247 10.9266 28.3296 10.794 28.671 10.7045C29.0157 10.615 29.377 10.552 29.7548 10.5156C30.1989 10.4692 30.5569 10.4261 30.8287 10.3863C31.1004 10.3432 31.2976 10.2803 31.4203 10.1974C31.5429 10.1145 31.6042 9.99191 31.6042 9.8295V9.79967C31.6042 9.4848 31.5048 9.2412 31.3059 9.06885C31.1104 8.8965 30.832 8.81033 30.4707 8.81033C30.0895 8.81033 29.7863 8.89484 29.5609 9.06388C29.3355 9.2296 29.1864 9.4384 29.1135 9.6903L27.1547 9.53121C27.2541 9.06719 27.4496 8.66615 27.7413 8.32808C28.033 7.9867 28.4091 7.72486 28.8699 7.54257C29.3339 7.35696 29.8708 7.26416 30.4806 7.26416C30.9049 7.26416 31.3109 7.31388 31.6987 7.41331C32.0898 7.51274 32.4361 7.66686 32.7378 7.87567C33.0427 8.08447 33.283 8.35294 33.4586 8.68106C33.6343 9.00587 33.7221 9.39532 33.7221 9.84939V15H31.7136V13.941H31.6539C31.5313 14.1796 31.3672 14.3901 31.1618 14.5724C30.9563 14.7514 30.7093 14.8922 30.421 14.995C30.1326 15.0944 29.7995 15.1441 29.4217 15.1441ZM30.0282 13.6825C30.3398 13.6825 30.6149 13.6212 30.8535 13.4985C31.0922 13.3726 31.2794 13.2036 31.4153 12.9914C31.5512 12.7793 31.6191 12.539 31.6191 12.2706V11.4602C31.5529 11.5033 31.4617 11.543 31.3457 11.5795C31.233 11.6126 31.1054 11.6441 30.9629 11.674C30.8204 11.7005 30.6779 11.7253 30.5353 11.7485C30.3928 11.7684 30.2636 11.7867 30.1475 11.8032C29.899 11.8397 29.6819 11.8977 29.4963 11.9772C29.3107 12.0568 29.1665 12.1645 29.0637 12.3004C28.961 12.433 28.9096 12.5987 28.9096 12.7975C28.9096 13.0859 29.014 13.3063 29.2228 13.4588C29.435 13.6079 29.7034 13.6825 30.0282 13.6825Z" fill="#3F434B"/>
<path d="M34.5984 9.02908V7.36359H41.5188V9.02908H39.0579V15H37.0394V9.02908H34.5984Z" fill="#3F434B"/>
<path d="M44.7069 15.1441C44.2196 15.1441 43.7855 15.0596 43.4043 14.8906C43.0231 14.7182 42.7215 14.4647 42.4995 14.1299C42.2807 13.7919 42.1713 13.3709 42.1713 12.8671C42.1713 12.4429 42.2492 12.0866 42.405 11.7983C42.5608 11.5099 42.7729 11.2779 43.0414 11.1022C43.3098 10.9266 43.6148 10.794 43.9561 10.7045C44.3008 10.615 44.6621 10.552 45.04 10.5156C45.4841 10.4692 45.842 10.4261 46.1138 10.3863C46.3856 10.3432 46.5828 10.2803 46.7054 10.1974C46.8281 10.1145 46.8894 9.99191 46.8894 9.8295V9.79967C46.8894 9.4848 46.79 9.2412 46.5911 9.06885C46.3955 8.8965 46.1171 8.81033 45.7559 8.81033C45.3747 8.81033 45.0714 8.89484 44.8461 9.06388C44.6207 9.2296 44.4715 9.4384 44.3986 9.6903L42.4398 9.53121C42.5392 9.06719 42.7348 8.66615 43.0265 8.32808C43.3181 7.9867 43.6943 7.72486 44.155 7.54257C44.619 7.35696 45.156 7.26416 45.7658 7.26416C46.19 7.26416 46.5961 7.31388 46.9838 7.41331C47.3749 7.51274 47.7213 7.66686 48.0229 7.87567C48.3278 8.08447 48.5681 8.35294 48.7438 8.68106C48.9194 9.00587 49.0073 9.39532 49.0073 9.84939V15H46.9988V13.941H46.9391C46.8165 14.1796 46.6524 14.3901 46.4469 14.5724C46.2414 14.7514 45.9945 14.8922 45.7061 14.995C45.4178 15.0944 45.0847 15.1441 44.7069 15.1441ZM45.3134 13.6825C45.6249 13.6825 45.9 13.6212 46.1387 13.4985C46.3773 13.3726 46.5646 13.2036 46.7005 12.9914C46.8364 12.7793 46.9043 12.539 46.9043 12.2706V11.4602C46.838 11.5033 46.7469 11.543 46.6309 11.5795C46.5182 11.6126 46.3906 11.6441 46.248 11.674C46.1055 11.7005 45.963 11.7253 45.8205 11.7485C45.678 11.7684 45.5487 11.7867 45.4327 11.8032C45.1841 11.8397 44.967 11.8977 44.7814 11.9772C44.5958 12.0568 44.4516 12.1645 44.3489 12.3004C44.2462 12.433 44.1948 12.5987 44.1948 12.7975C44.1948 13.0859 44.2992 13.3063 44.508 13.4588C44.7201 13.6079 44.9886 13.6825 45.3134 13.6825Z" fill="#3F434B"/>
<path d="M53.8906 17.8636V7.36359H55.9787V8.64626H56.0732C56.166 8.44077 56.3002 8.23196 56.4759 8.01984C56.6548 7.80441 56.8868 7.62543 57.1719 7.48291C57.4602 7.33708 57.8182 7.26416 58.2457 7.26416C58.8026 7.26416 59.3163 7.40999 59.7869 7.70166C60.2576 7.99001 60.6338 8.42585 60.9155 9.00919C61.1972 9.58921 61.3381 10.3167 61.3381 11.1917C61.3381 12.0435 61.2005 12.7627 60.9254 13.3494C60.6536 13.9327 60.2824 14.3752 59.8118 14.6768C59.3445 14.9751 58.8208 15.1242 58.2408 15.1242C57.8298 15.1242 57.4801 15.0563 57.1918 14.9204C56.9067 14.7845 56.6731 14.6138 56.4908 14.4083C56.3085 14.1995 56.1693 13.9891 56.0732 13.7769H56.0085V17.8636H53.8906ZM55.9638 11.1818C55.9638 11.6358 56.0268 12.0319 56.1527 12.37C56.2786 12.7081 56.4609 12.9715 56.6996 13.1605C56.9382 13.3461 57.2282 13.4389 57.5696 13.4389C57.9143 13.4389 58.206 13.3444 58.4446 13.1555C58.6832 12.9633 58.8639 12.6981 58.9865 12.36C59.1125 12.0187 59.1754 11.6259 59.1754 11.1818C59.1754 10.741 59.1141 10.3532 58.9915 10.0184C58.8688 9.68367 58.6882 9.42183 58.4496 9.23291C58.2109 9.04399 57.9176 8.94953 57.5696 8.94953C57.2249 8.94953 56.9332 9.04068 56.6946 9.22297C56.4593 9.40526 56.2786 9.66378 56.1527 9.99853C56.0268 10.3333 55.9638 10.7277 55.9638 11.1818Z" fill="#3F434B"/>
<path d="M64.9276 15.1441C64.4403 15.1441 64.0062 15.0596 63.625 14.8906C63.2438 14.7182 62.9422 14.4647 62.7202 14.1299C62.5014 13.7919 62.392 13.3709 62.392 12.8671C62.392 12.4429 62.4699 12.0866 62.6257 11.7983C62.7815 11.5099 62.9936 11.2779 63.2621 11.1022C63.5305 10.9266 63.8355 10.794 64.1768 10.7045C64.5215 10.615 64.8828 10.552 65.2607 10.5156C65.7048 10.4692 66.0627 10.4261 66.3345 10.3863C66.6063 10.3432 66.8035 10.2803 66.9261 10.1974C67.0488 10.1145 67.1101 9.99191 67.1101 9.8295V9.79967C67.1101 9.4848 67.0107 9.2412 66.8118 9.06885C66.6162 8.8965 66.3378 8.81033 65.9766 8.81033C65.5954 8.81033 65.2921 8.89484 65.0668 9.06388C64.8414 9.2296 64.6922 9.4384 64.6193 9.6903L62.6605 9.53121C62.7599 9.06719 62.9555 8.66615 63.2472 8.32808C63.5388 7.9867 63.915 7.72486 64.3757 7.54257C64.8397 7.35696 65.3767 7.26416 65.9865 7.26416C66.4107 7.26416 66.8168 7.31388 67.2045 7.41331C67.5956 7.51274 67.942 7.66686 68.2436 7.87567C68.5485 8.08447 68.7888 8.35294 68.9645 8.68106C69.1402 9.00587 69.228 9.39532 69.228 9.84939V15H67.2195V13.941H67.1598C67.0372 14.1796 66.8731 14.3901 66.6676 14.5724C66.4621 14.7514 66.2152 14.8922 65.9268 14.995C65.6385 15.0944 65.3054 15.1441 64.9276 15.1441ZM65.5341 13.6825C65.8456 13.6825 66.1207 13.6212 66.3594 13.4985C66.598 13.3726 66.7853 13.2036 66.9212 12.9914C67.0571 12.7793 67.125 12.539 67.125 12.2706V11.4602C67.0587 11.5033 66.9676 11.543 66.8516 11.5795C66.7389 11.6126 66.6113 11.6441 66.4688 11.674C66.3262 11.7005 66.1837 11.7253 66.0412 11.7485C65.8987 11.7684 65.7694 11.7867 65.6534 11.8032C65.4048 11.8397 65.1877 11.8977 65.0021 11.9772C64.8165 12.0568 64.6723 12.1645 64.5696 12.3004C64.4669 12.433 64.4155 12.5987 64.4155 12.7975C64.4155 13.0859 64.5199 13.3063 64.7287 13.4588C64.9408 13.6079 65.2093 13.6825 65.5341 13.6825Z" fill="#3F434B"/>
<path d="M70.4783 12.8373H72.5316C72.5416 13.0892 72.6542 13.2881 72.8697 13.4339C73.0851 13.5797 73.3635 13.6527 73.7049 13.6527C74.0496 13.6527 74.3396 13.5731 74.5749 13.414C74.8102 13.2516 74.9279 13.0196 74.9279 12.718C74.9279 12.5324 74.8815 12.3716 74.7887 12.2358C74.6959 12.0965 74.5666 11.9872 74.4009 11.9076C74.2352 11.8281 74.043 11.7883 73.8242 11.7883H72.7255V10.4012H73.8242C74.1523 10.4012 74.4042 10.325 74.5799 10.1725C74.7589 10.0201 74.8484 9.8295 74.8484 9.60081C74.8484 9.34228 74.7556 9.13514 74.57 8.97936C74.3877 8.82027 74.1407 8.74072 73.8292 8.74072C73.5143 8.74072 73.2525 8.81198 73.0437 8.9545C72.8382 9.09371 72.7321 9.276 72.7255 9.50138H70.6822C70.6888 9.04399 70.8264 8.64792 71.0948 8.31317C71.3666 7.97841 71.7312 7.71989 72.1886 7.5376C72.6493 7.35531 73.1647 7.26416 73.7347 7.26416C74.3578 7.26416 74.8948 7.35199 75.3455 7.52765C75.7996 7.7 76.1476 7.94693 76.3896 8.26842C76.6348 8.58992 76.7575 8.97273 76.7575 9.41686C76.7575 9.82122 76.6249 10.1593 76.3597 10.4311C76.0946 10.7028 75.7234 10.8967 75.2461 11.0127V11.0923C75.561 11.1122 75.846 11.1967 76.1012 11.3458C76.3564 11.495 76.5602 11.7005 76.7127 11.9623C76.8652 12.2208 76.9414 12.5274 76.9414 12.8821C76.9414 13.356 76.8022 13.762 76.5238 14.1001C76.2487 14.4382 75.8675 14.6983 75.3803 14.8806C74.8964 15.0596 74.3413 15.1491 73.7148 15.1491C73.105 15.1491 72.5581 15.0613 72.0742 14.8856C71.5936 14.7066 71.2108 14.4448 70.9258 14.1001C70.6441 13.7554 70.4949 13.3345 70.4783 12.8373Z" fill="#3F434B"/>
<path d="M82.7544 12.6583L84.8226 7.36359H86.4334L83.4554 15H82.0485L79.1401 7.36359H80.7459L82.7544 12.6583ZM80.2637 7.36359V15H78.2402V7.36359H80.2637ZM85.3496 15V7.36359H87.3482V15H85.3496Z" fill="#3F434B"/>
<path d="M92.4664 15.1491C91.6809 15.1491 91.0048 14.99 90.438 14.6718C89.8746 14.3503 89.4404 13.8963 89.1355 13.3096C88.8306 12.7197 88.6781 12.022 88.6781 11.2166C88.6781 10.4311 88.8306 9.74167 89.1355 9.14839C89.4404 8.55512 89.8696 8.09276 90.4231 7.76132C90.9799 7.42988 91.6329 7.26416 92.3819 7.26416C92.8857 7.26416 93.3547 7.34536 93.7889 7.50777C94.2264 7.66686 94.6075 7.90715 94.9324 8.22865C95.2605 8.55014 95.5157 8.9545 95.698 9.44172C95.8803 9.92562 95.9714 10.4924 95.9714 11.142V11.7237H89.5233V10.4112H93.9778C93.9778 10.1063 93.9115 9.83613 93.7789 9.60081C93.6464 9.36549 93.4624 9.18154 93.2271 9.04896C92.9951 8.91307 92.725 8.84513 92.4167 8.84513C92.0952 8.84513 91.8102 8.9197 91.5616 9.06885C91.3164 9.21468 91.1241 9.41189 90.9849 9.66047C90.8457 9.90573 90.7744 10.1792 90.7711 10.4808V11.7286C90.7711 12.1065 90.8407 12.433 90.9799 12.7081C91.1225 12.9831 91.323 13.1953 91.5815 13.3444C91.84 13.4936 92.1466 13.5681 92.5012 13.5681C92.7366 13.5681 92.952 13.535 93.1476 13.4687C93.3431 13.4024 93.5105 13.303 93.6497 13.1704C93.7889 13.0378 93.895 12.8754 93.9679 12.6832L95.9267 12.8125C95.8272 13.2831 95.6234 13.6941 95.3152 14.0454C95.0102 14.3934 94.6158 14.6652 94.1319 14.8608C93.6513 15.053 93.0962 15.1491 92.4664 15.1491Z" fill="#3F434B"/>
<path d="M109.35 13.3345L109.201 17.1875H107.257V15H106.407V13.3345H109.35ZM97.3535 7.36359H99.377V13.3196H101.53V7.36359H103.553V13.3196H105.706V7.36359H107.729V15H97.3535V7.36359Z" fill="#3F434B"/>
<path d="M114.013 15.1491C113.228 15.1491 112.552 14.99 111.985 14.6718C111.421 14.3503 110.987 13.8963 110.682 13.3096C110.377 12.7197 110.225 12.022 110.225 11.2166C110.225 10.4311 110.377 9.74167 110.682 9.14839C110.987 8.55512 111.416 8.09276 111.97 7.76132C112.527 7.42988 113.18 7.26416 113.929 7.26416C114.433 7.26416 114.902 7.34536 115.336 7.50777C115.773 7.66686 116.154 7.90715 116.479 8.22865C116.807 8.55014 117.063 8.9545 117.245 9.44172C117.427 9.92562 117.518 10.4924 117.518 11.142V11.7237H111.07V10.4112H115.525C115.525 10.1063 115.458 9.83613 115.326 9.60081C115.193 9.36549 115.009 9.18154 114.774 9.04896C114.542 8.91307 114.272 8.84513 113.964 8.84513C113.642 8.84513 113.357 8.9197 113.108 9.06885C112.863 9.21468 112.671 9.41189 112.532 9.66047C112.393 9.90573 112.321 10.1792 112.318 10.4808V11.7286C112.318 12.1065 112.388 12.433 112.527 12.7081C112.669 12.9831 112.87 13.1953 113.128 13.3444C113.387 13.4936 113.693 13.5681 114.048 13.5681C114.283 13.5681 114.499 13.535 114.694 13.4687C114.89 13.4024 115.057 13.303 115.197 13.1704C115.336 13.0378 115.442 12.8754 115.515 12.6832L117.474 12.8125C117.374 13.2831 117.17 13.6941 116.862 14.0454C116.557 14.3934 116.163 14.6652 115.679 14.8608C115.198 15.053 114.643 15.1491 114.013 15.1491Z" fill="#3F434B"/>
<path d="M124.215 10.3366V12.0021H120.228V10.3366H124.215ZM120.924 7.36359V15H118.9V7.36359H120.924ZM125.542 7.36359V15H123.534V7.36359H125.542Z" fill="#3F434B"/>
<path d="M129.209 12.2059L131.958 7.36359H134.046V15H132.028V10.1427L129.289 15H127.186V7.36359H129.209V12.2059Z" fill="#3F434B"/>
<path d="M140.219 15V9.0241H138.787C138.399 9.0241 138.104 9.11359 137.902 9.29257C137.7 9.47155 137.6 9.68367 137.604 9.92893C137.6 10.1775 137.696 10.388 137.892 10.5603C138.091 10.7294 138.382 10.8139 138.767 10.8139H140.925V12.2457H138.767C138.114 12.2457 137.549 12.1463 137.072 11.9474C136.594 11.7485 136.226 11.4718 135.968 11.1171C135.709 10.7592 135.582 10.3432 135.585 9.86927C135.582 9.37211 135.709 8.93627 135.968 8.56175C136.226 8.1839 136.596 7.89058 137.077 7.68177C137.56 7.46965 138.131 7.36359 138.787 7.36359H142.192V15H140.219ZM135.366 15L137.489 11.0227H139.513L137.395 15H135.366Z" fill="#3F434B"/>
<path d="M11.1865 35V27.3636H17.8634V35H15.8399V29.0291H13.1851V35H11.1865Z" fill="#3F434B"/>
<path d="M23.004 35.1491C22.2317 35.1491 21.5639 34.985 21.0004 34.6569C20.4403 34.3255 20.0078 33.8648 19.7029 33.2748C19.3979 32.6815 19.2455 31.9938 19.2455 31.2116C19.2455 30.4228 19.3979 29.7334 19.7029 29.1434C20.0078 28.5501 20.4403 28.0894 21.0004 27.7613C21.5639 27.4299 22.2317 27.2642 23.004 27.2642C23.7762 27.2642 24.4424 27.4299 25.0026 27.7613C25.566 28.0894 26.0002 28.5501 26.3051 29.1434C26.6101 29.7334 26.7625 30.4228 26.7625 31.2116C26.7625 31.9938 26.6101 32.6815 26.3051 33.2748C26.0002 33.8648 25.566 34.3255 25.0026 34.6569C24.4424 34.985 23.7762 35.1491 23.004 35.1491ZM23.0139 33.5085C23.3653 33.5085 23.6586 33.409 23.8939 33.2102C24.1292 33.008 24.3066 32.7329 24.4259 32.3849C24.5485 32.0369 24.6098 31.6408 24.6098 31.1967C24.6098 30.7526 24.5485 30.3565 24.4259 30.0085C24.3066 29.6605 24.1292 29.3854 23.8939 29.1832C23.6586 28.981 23.3653 28.8799 23.0139 28.8799C22.6593 28.8799 22.361 28.981 22.1191 29.1832C21.8804 29.3854 21.6998 29.6605 21.5771 30.0085C21.4578 30.3565 21.3982 30.7526 21.3982 31.1967C21.3982 31.6408 21.4578 32.0369 21.5771 32.3849C21.6998 32.7329 21.8804 33.008 22.1191 33.2102C22.361 33.409 22.6593 33.5085 23.0139 33.5085Z" fill="#3F434B"/>
<path d="M28.1396 35V27.3636H31.396C32.3373 27.3636 33.0814 27.5426 33.6283 27.9005C34.1752 28.2585 34.4486 28.7672 34.4486 29.4268C34.4486 29.8411 34.2945 30.1858 33.9862 30.4609C33.678 30.736 33.2504 30.9216 32.7036 31.0177C33.161 31.0509 33.5504 31.1553 33.8719 31.3309C34.1967 31.5033 34.4436 31.727 34.6127 32.0021C34.785 32.2772 34.8712 32.5821 34.8712 32.9169C34.8712 33.351 34.7552 33.7239 34.5232 34.0355C34.2945 34.347 33.9581 34.5857 33.5139 34.7514C33.0731 34.9171 32.5345 35 31.8982 35H28.1396ZM30.1134 33.414H31.8982C32.1932 33.414 32.4235 33.3444 32.5892 33.2052C32.7583 33.0627 32.8428 32.8688 32.8428 32.6235C32.8428 32.3518 32.7583 32.138 32.5892 31.9822C32.4235 31.8264 32.1932 31.7485 31.8982 31.7485H30.1134V33.414ZM30.1134 30.5056H31.4408C31.6529 30.5056 31.8335 30.4758 31.9827 30.4161C32.1352 30.3532 32.2512 30.2637 32.3307 30.1477C32.4136 30.0317 32.455 29.8941 32.455 29.735C32.455 29.4997 32.3605 29.3158 32.1716 29.1832C31.9827 29.0506 31.7242 28.9843 31.396 28.9843H30.1134V30.5056Z" fill="#3F434B"/>
<path d="M39.6862 35.1491C38.9007 35.1491 38.2245 34.99 37.6578 34.6718C37.0943 34.3503 36.6601 33.8963 36.3552 33.3096C36.0503 32.7197 35.8978 32.022 35.8978 31.2166C35.8978 30.4311 36.0503 29.7417 36.3552 29.1484C36.6601 28.5551 37.0893 28.0928 37.6428 27.7613C38.1997 27.4299 38.8526 27.2642 39.6017 27.2642C40.1054 27.2642 40.5744 27.3454 41.0086 27.5078C41.4461 27.6669 41.8273 27.9072 42.1521 28.2286C42.4802 28.5501 42.7354 28.9545 42.9177 29.4417C43.1 29.9256 43.1911 30.4924 43.1911 31.142V31.7237H36.743V30.4112H41.1975C41.1975 30.1063 41.1312 29.8361 40.9987 29.6008C40.8661 29.3655 40.6821 29.1815 40.4468 29.049C40.2148 28.9131 39.9447 28.8451 39.6365 28.8451C39.315 28.8451 39.0299 28.9197 38.7813 29.0688C38.5361 29.2147 38.3438 29.4119 38.2046 29.6605C38.0654 29.9057 37.9942 30.1792 37.9909 30.4808V31.7286C37.9909 32.1065 38.0605 32.433 38.1997 32.7081C38.3422 32.9831 38.5427 33.1953 38.8012 33.3444C39.0597 33.4936 39.3663 33.5681 39.721 33.5681C39.9563 33.5681 40.1717 33.535 40.3673 33.4687C40.5628 33.4024 40.7302 33.303 40.8694 33.1704C41.0086 33.0378 41.1147 32.8754 41.1876 32.6832L43.1464 32.8125C43.047 33.2831 42.8431 33.6941 42.5349 34.0454C42.23 34.3934 41.8356 34.6652 41.3517 34.8608C40.8711 35.053 40.3159 35.1491 39.6862 35.1491Z" fill="#3F434B"/>
<path d="M48.0235 35.1491C47.2413 35.1491 46.5685 34.9834 46.0051 34.6519C45.4449 34.3172 45.0141 33.8532 44.7124 33.2599C44.4142 32.6666 44.265 31.9839 44.265 31.2116C44.265 30.4294 44.4158 29.7433 44.7174 29.1534C45.0223 28.5601 45.4549 28.0977 46.015 27.7663C46.5751 27.4315 47.2413 27.2642 48.0136 27.2642C48.6798 27.2642 49.2631 27.3851 49.7636 27.6271C50.2641 27.869 50.6601 28.2088 50.9518 28.6463C51.2435 29.0838 51.4042 29.5975 51.434 30.1875H49.4355C49.3791 29.8063 49.23 29.4997 48.988 29.2677C48.7494 29.0324 48.4362 28.9147 48.0484 28.9147C47.7203 28.9147 47.4336 29.0042 47.1883 29.1832C46.9464 29.3589 46.7574 29.6157 46.6215 29.9538C46.4856 30.2919 46.4177 30.7012 46.4177 31.1818C46.4177 31.669 46.484 32.0833 46.6166 32.4247C46.7525 32.7661 46.943 33.0262 47.1883 33.2052C47.4336 33.3842 47.7203 33.4737 48.0484 33.4737C48.2903 33.4737 48.5074 33.424 48.6997 33.3245C48.8952 33.2251 49.056 33.0809 49.1819 32.892C49.3112 32.6998 49.3957 32.4694 49.4355 32.2009H51.434C51.4009 32.7843 51.2418 33.298 50.9568 33.7421C50.675 34.183 50.2856 34.5277 49.7884 34.7762C49.2913 35.0248 48.703 35.1491 48.0235 35.1491Z" fill="#3F434B"/>
<path d="M52.2693 29.0291V27.3636H59.1897V29.0291H56.7288V35H54.7103V29.0291H52.2693Z" fill="#3F434B"/>
<path d="M60.4736 35V27.3636H62.5915V30.3267H63.1881L65.2663 27.3636H67.752L65.0525 31.1519L67.7819 35H65.2663L63.382 32.2904H62.5915V35H60.4736Z" fill="#3F434B"/>
<path d="M70.7002 32.2059L73.4495 27.3636H75.5376V35H73.5191V30.1427L70.7797 35H68.6768V27.3636H70.7002V32.2059Z" fill="#3F434B"/>
<path d="M80.4756 35V27.3636H83.732C84.6733 27.3636 85.4174 27.5426 85.9642 27.9005C86.5111 28.2585 86.7845 28.7672 86.7845 29.4268C86.7845 29.8411 86.6304 30.1858 86.3222 30.4609C86.0139 30.736 85.5864 30.9216 85.0395 31.0177C85.4969 31.0509 85.8863 31.1553 86.2078 31.3309C86.5326 31.5033 86.7796 31.727 86.9486 32.0021C87.1209 32.2772 87.2071 32.5821 87.2071 32.9169C87.2071 33.351 87.0911 33.7239 86.8591 34.0355C86.6304 34.347 86.294 34.5857 85.8499 34.7514C85.4091 34.9171 84.8705 35 84.2341 35H80.4756ZM82.4493 33.414H84.2341C84.5291 33.414 84.7594 33.3444 84.9252 33.2052C85.0942 33.0627 85.1787 32.8688 85.1787 32.6235C85.1787 32.3518 85.0942 32.138 84.9252 31.9822C84.7594 31.8264 84.5291 31.7485 84.2341 31.7485H82.4493V33.414ZM82.4493 30.5056H83.7767C83.9888 30.5056 84.1695 30.4758 84.3186 30.4161C84.4711 30.3532 84.5871 30.2637 84.6666 30.1477C84.7495 30.0317 84.7909 29.8941 84.7909 29.735C84.7909 29.4997 84.6965 29.3158 84.5075 29.1832C84.3186 29.0506 84.0601 28.9843 83.732 28.9843H82.4493V30.5056Z" fill="#3F434B"/>
<path d="M91.7822 37.8636V27.3636H93.8703V28.6463H93.9648C94.0576 28.4408 94.1918 28.232 94.3675 28.0198C94.5464 27.8044 94.7784 27.6254 95.0635 27.4829C95.3518 27.3371 95.7098 27.2642 96.1373 27.2642C96.6942 27.2642 97.2079 27.41 97.6785 27.7017C98.1492 27.99 98.5254 28.4259 98.8071 29.0092C99.0888 29.5892 99.2297 30.3167 99.2297 31.1917C99.2297 32.0435 99.0921 32.7627 98.817 33.3494C98.5452 33.9327 98.174 34.3752 97.7034 34.6768C97.2361 34.9751 96.7124 35.1242 96.1324 35.1242C95.7214 35.1242 95.3717 35.0563 95.0834 34.9204C94.7983 34.7845 94.5647 34.6138 94.3824 34.4083C94.2001 34.1995 94.0609 33.9891 93.9648 33.7769H93.9001V37.8636H91.7822ZM93.8554 31.1818C93.8554 31.6358 93.9184 32.0319 94.0443 32.37C94.1702 32.7081 94.3525 32.9715 94.5912 33.1605C94.8298 33.3461 95.1198 33.4389 95.4612 33.4389C95.8059 33.4389 96.0976 33.3444 96.3362 33.1555C96.5748 32.9633 96.7555 32.6981 96.8781 32.36C97.0041 32.0187 97.067 31.6259 97.067 31.1818C97.067 30.741 97.0057 30.3532 96.8831 30.0184C96.7604 29.6837 96.5798 29.4218 96.3412 29.2329C96.1025 29.044 95.8092 28.9495 95.4612 28.9495C95.1165 28.9495 94.8248 29.0407 94.5862 29.223C94.3509 29.4053 94.1702 29.6638 94.0443 29.9985C93.9184 30.3333 93.8554 30.7277 93.8554 31.1818Z" fill="#3F434B"/>
<path d="M104.122 35.1491C103.336 35.1491 102.66 34.99 102.093 34.6718C101.53 34.3503 101.096 33.8963 100.791 33.3096C100.486 32.7197 100.333 32.022 100.333 31.2166C100.333 30.4311 100.486 29.7417 100.791 29.1484C101.096 28.5551 101.525 28.0928 102.078 27.7613C102.635 27.4299 103.288 27.2642 104.037 27.2642C104.541 27.2642 105.01 27.3454 105.444 27.5078C105.882 27.6669 106.263 27.9072 106.588 28.2286C106.916 28.5501 107.171 28.9545 107.353 29.4417C107.536 29.9256 107.627 30.4924 107.627 31.142V31.7237H101.179V30.4112H105.633C105.633 30.1063 105.567 29.8361 105.434 29.6008C105.302 29.3655 105.118 29.1815 104.882 29.049C104.65 28.9131 104.38 28.8451 104.072 28.8451C103.751 28.8451 103.465 28.9197 103.217 29.0688C102.972 29.2147 102.779 29.4119 102.64 29.6605C102.501 29.9057 102.43 30.1792 102.426 30.4808V31.7286C102.426 32.1065 102.496 32.433 102.635 32.7081C102.778 32.9831 102.978 33.1953 103.237 33.3444C103.495 33.4936 103.802 33.5681 104.157 33.5681C104.392 33.5681 104.607 33.535 104.803 33.4687C104.998 33.4024 105.166 33.303 105.305 33.1704C105.444 33.0378 105.55 32.8754 105.623 32.6832L107.582 32.8125C107.483 33.2831 107.279 33.6941 106.97 34.0454C106.666 34.3934 106.271 34.6652 105.787 34.8608C105.307 35.053 104.751 35.1491 104.122 35.1491Z" fill="#3F434B"/>
<path d="M112.489 35.1491C111.703 35.1491 111.027 34.99 110.46 34.6718C109.897 34.3503 109.463 33.8963 109.158 33.3096C108.853 32.7197 108.701 32.022 108.701 31.2166C108.701 30.4311 108.853 29.7417 109.158 29.1484C109.463 28.5551 109.892 28.0928 110.446 27.7613C111.002 27.4299 111.655 27.2642 112.404 27.2642C112.908 27.2642 113.377 27.3454 113.811 27.5078C114.249 27.6669 114.63 27.9072 114.955 28.2286C115.283 28.5501 115.538 28.9545 115.72 29.4417C115.903 29.9256 115.994 30.4924 115.994 31.142V31.7237H109.546V30.4112H114C114 30.1063 113.934 29.8361 113.801 29.6008C113.669 29.3655 113.485 29.1815 113.25 29.049C113.018 28.9131 112.747 28.8451 112.439 28.8451C112.118 28.8451 111.833 28.9197 111.584 29.0688C111.339 29.2147 111.147 29.4119 111.007 29.6605C110.868 29.9057 110.797 30.1792 110.794 30.4808V31.7286C110.794 32.1065 110.863 32.433 111.002 32.7081C111.145 32.9831 111.345 33.1953 111.604 33.3444C111.862 33.4936 112.169 33.5681 112.524 33.5681C112.759 33.5681 112.974 33.535 113.17 33.4687C113.366 33.4024 113.533 33.303 113.672 33.1704C113.811 33.0378 113.917 32.8754 113.99 32.6832L115.949 32.8125C115.85 33.2831 115.646 33.6941 115.338 34.0454C115.033 34.3934 114.638 34.6652 114.154 34.8608C113.674 35.053 113.119 35.1491 112.489 35.1491Z" fill="#3F434B"/>
<path d="M120.826 35.1491C120.044 35.1491 119.371 34.9834 118.808 34.6519C118.248 34.3172 117.817 33.8532 117.515 33.2599C117.217 32.6666 117.068 31.9839 117.068 31.2116C117.068 30.4294 117.219 29.7433 117.52 29.1534C117.825 28.5601 118.258 28.0977 118.818 27.7663C119.378 27.4315 120.044 27.2642 120.816 27.2642C121.483 27.2642 122.066 27.3851 122.566 27.6271C123.067 27.869 123.463 28.2088 123.755 28.6463C124.046 29.0838 124.207 29.5975 124.237 30.1875H122.238C122.182 29.8063 122.033 29.4997 121.791 29.2677C121.552 29.0324 121.239 28.9147 120.851 28.9147C120.523 28.9147 120.236 29.0042 119.991 29.1832C119.749 29.3589 119.56 29.6157 119.424 29.9538C119.288 30.2919 119.22 30.7012 119.22 31.1818C119.22 31.669 119.287 32.0833 119.419 32.4247C119.555 32.7661 119.746 33.0262 119.991 33.2052C120.236 33.3842 120.523 33.4737 120.851 33.4737C121.093 33.4737 121.31 33.424 121.502 33.3245C121.698 33.2251 121.859 33.0809 121.985 32.892C122.114 32.6998 122.198 32.4694 122.238 32.2009H124.237C124.204 32.7843 124.045 33.298 123.759 33.7421C123.478 34.183 123.088 34.5277 122.591 34.7762C122.094 35.0248 121.506 35.1491 120.826 35.1491Z" fill="#3F434B"/>
<path d="M125.072 29.0291V27.3636H131.992V29.0291H129.532V35H127.513V29.0291H125.072Z" fill="#3F434B"/>
<path d="M133.276 37.8636V27.3636H135.364V28.6463H135.459C135.552 28.4408 135.686 28.232 135.862 28.0198C136.041 27.8044 136.273 27.6254 136.558 27.4829C136.846 27.3371 137.204 27.2642 137.631 27.2642C138.188 27.2642 138.702 27.41 139.173 27.7017C139.643 27.99 140.02 28.4259 140.301 29.0092C140.583 29.5892 140.724 30.3167 140.724 31.1917C140.724 32.0435 140.586 32.7627 140.311 33.3494C140.039 33.9327 139.668 34.3752 139.198 34.6768C138.73 34.9751 138.207 35.1242 137.627 35.1242C137.216 35.1242 136.866 35.0563 136.577 34.9204C136.292 34.7845 136.059 34.6138 135.877 34.4083C135.694 34.1995 135.555 33.9891 135.459 33.7769H135.394V37.8636H133.276ZM135.35 31.1818C135.35 31.6358 135.412 32.0319 135.538 32.37C135.664 32.7081 135.847 32.9715 136.085 33.1605C136.324 33.3461 136.614 33.4389 136.955 33.4389C137.3 33.4389 137.592 33.3444 137.83 33.1555C138.069 32.9633 138.25 32.6981 138.372 32.36C138.498 32.0187 138.561 31.6259 138.561 31.1818C138.561 30.741 138.5 30.3532 138.377 30.0184C138.255 29.6837 138.074 29.4218 137.835 29.2329C137.597 29.044 137.303 28.9495 136.955 28.9495C136.611 28.9495 136.319 29.0407 136.08 29.223C135.845 29.4053 135.664 29.6638 135.538 29.9985C135.412 30.3333 135.35 30.7277 135.35 31.1818Z" fill="#3F434B"/>
<path d="M145.616 35.1491C144.83 35.1491 144.154 34.99 143.587 34.6718C143.024 34.3503 142.59 33.8963 142.285 33.3096C141.98 32.7197 141.827 32.022 141.827 31.2166C141.827 30.4311 141.98 29.7417 142.285 29.1484C142.59 28.5551 143.019 28.0928 143.573 27.7613C144.129 27.4299 144.782 27.2642 145.531 27.2642C146.035 27.2642 146.504 27.3454 146.938 27.5078C147.376 27.6669 147.757 27.9072 148.082 28.2286C148.41 28.5501 148.665 28.9545 148.847 29.4417C149.03 29.9256 149.121 30.4924 149.121 31.142V31.7237H142.673V30.4112H147.127C147.127 30.1063 147.061 29.8361 146.928 29.6008C146.796 29.3655 146.612 29.1815 146.377 29.049C146.145 28.9131 145.874 28.8451 145.566 28.8451C145.245 28.8451 144.96 28.9197 144.711 29.0688C144.466 29.2147 144.274 29.4119 144.134 29.6605C143.995 29.9057 143.924 30.1792 143.921 30.4808V31.7286C143.921 32.1065 143.99 32.433 144.129 32.7081C144.272 32.9831 144.472 33.1953 144.731 33.3444C144.989 33.4936 145.296 33.5681 145.651 33.5681C145.886 33.5681 146.101 33.535 146.297 33.4687C146.493 33.4024 146.66 33.303 146.799 33.1704C146.938 33.0378 147.044 32.8754 147.117 32.6832L149.076 32.8125C148.977 33.2831 148.773 33.6941 148.465 34.0454C148.16 34.3934 147.765 34.6652 147.281 34.8608C146.801 35.053 146.246 35.1491 145.616 35.1491Z" fill="#3F434B"/>
<path d="M16.4347 102.237V98.3196H17.0213C17.1903 98.2135 17.3262 98.0445 17.429 97.8125C17.535 97.5804 17.6212 97.307 17.6875 96.9921C17.7571 96.6773 17.8101 96.3376 17.8466 95.973C17.8864 95.6051 17.9212 95.2339 17.951 94.8593L18.1499 92.3636H24.0064V98.3196H25.1896V102.237H23.1712V100H18.5028V102.237H16.4347ZM19.1293 98.3196H22.0078V93.9943H19.9496L19.87 94.8593C19.8137 95.6747 19.7325 96.3674 19.6264 96.9375C19.5204 97.5042 19.3546 97.9649 19.1293 98.3196Z" fill="#3F434B"/>
<path d="M28.6014 100.144C28.1142 100.144 27.68 100.06 27.2988 99.8906C26.9177 99.7182 26.6161 99.4647 26.394 99.1299C26.1752 98.7919 26.0659 98.3709 26.0659 97.8671C26.0659 97.4429 26.1438 97.0866 26.2995 96.7983C26.4553 96.5099 26.6674 96.2779 26.9359 96.1022C27.2044 95.9266 27.5093 95.794 27.8507 95.7045C28.1954 95.615 28.5566 95.552 28.9345 95.5156C29.3786 95.4692 29.7366 95.4261 30.0083 95.3863C30.2801 95.3432 30.4773 95.2803 30.6 95.1974C30.7226 95.1145 30.7839 94.9919 30.7839 94.8295V94.7997C30.7839 94.4848 30.6845 94.2412 30.4856 94.0688C30.2901 93.8965 30.0117 93.8103 29.6504 93.8103C29.2692 93.8103 28.966 93.8948 28.7406 94.0639C28.5152 94.2296 28.3661 94.4384 28.2931 94.6903L26.3343 94.5312C26.4338 94.0672 26.6293 93.6661 26.921 93.3281C27.2127 92.9867 27.5888 92.7249 28.0495 92.5426C28.5136 92.357 29.0505 92.2642 29.6603 92.2642C30.0846 92.2642 30.4906 92.3139 30.8784 92.4133C31.2695 92.5127 31.6158 92.6669 31.9174 92.8757C32.2224 93.0845 32.4627 93.3529 32.6383 93.6811C32.814 94.0059 32.9018 94.3953 32.9018 94.8494V100H30.8933V98.941H30.8336C30.711 99.1796 30.5469 99.3901 30.3414 99.5724C30.136 99.7514 29.889 99.8922 29.6007 99.995C29.3123 100.094 28.9792 100.144 28.6014 100.144ZM29.2079 98.6825C29.5195 98.6825 29.7946 98.6212 30.0332 98.4985C30.2718 98.3726 30.4591 98.2036 30.595 97.9914C30.7309 97.7793 30.7988 97.539 30.7988 97.2706V96.4602C30.7325 96.5033 30.6414 96.543 30.5254 96.5795C30.4127 96.6126 30.2851 96.6441 30.1426 96.674C30.0001 96.7005 29.8575 96.7253 29.715 96.7485C29.5725 96.7684 29.4432 96.7867 29.3272 96.8032C29.0787 96.8397 28.8616 96.8977 28.676 96.9772C28.4904 97.0568 28.3462 97.1645 28.2434 97.3004C28.1407 97.433 28.0893 97.5987 28.0893 97.7975C28.0893 98.0859 28.1937 98.3063 28.4025 98.4588C28.6146 98.6079 28.8831 98.6825 29.2079 98.6825Z" fill="#3F434B"/>
<path d="M33.7781 94.0291V92.3636H40.6985V94.0291H38.2376V100H36.2191V94.0291H33.7781Z" fill="#3F434B"/>
<path d="M43.8865 100.144C43.3993 100.144 42.9651 100.06 42.584 99.8906C42.2028 99.7182 41.9012 99.4647 41.6792 99.1299C41.4604 98.7919 41.351 98.3709 41.351 97.8671C41.351 97.4429 41.4289 97.0866 41.5847 96.7983C41.7405 96.5099 41.9526 96.2779 42.2211 96.1022C42.4895 95.9266 42.7945 95.794 43.1358 95.7045C43.4805 95.615 43.8418 95.552 44.2196 95.5156C44.6638 95.4692 45.0217 95.4261 45.2935 95.3863C45.5653 95.3432 45.7625 95.2803 45.8851 95.1974C46.0078 95.1145 46.0691 94.9919 46.0691 94.8295V94.7997C46.0691 94.4848 45.9696 94.2412 45.7708 94.0688C45.5752 93.8965 45.2968 93.8103 44.9355 93.8103C44.5544 93.8103 44.2511 93.8948 44.0257 94.0639C43.8004 94.2296 43.6512 94.4384 43.5783 94.6903L41.6195 94.5312C41.7189 94.0672 41.9145 93.6661 42.2061 93.3281C42.4978 92.9867 42.874 92.7249 43.3347 92.5426C43.7987 92.357 44.3356 92.2642 44.9455 92.2642C45.3697 92.2642 45.7757 92.3139 46.1635 92.4133C46.5546 92.5127 46.901 92.6669 47.2026 92.8757C47.5075 93.0845 47.7478 93.3529 47.9235 93.6811C48.0991 94.0059 48.187 94.3953 48.187 94.8494V100H46.1784V98.941H46.1188C45.9962 99.1796 45.8321 99.3901 45.6266 99.5724C45.4211 99.7514 45.1742 99.8922 44.8858 99.995C44.5975 100.094 44.2644 100.144 43.8865 100.144ZM44.4931 98.6825C44.8046 98.6825 45.0797 98.6212 45.3184 98.4985C45.557 98.3726 45.7443 98.2036 45.8801 97.9914C46.016 97.7793 46.084 97.539 46.084 97.2706V96.4602C46.0177 96.5033 45.9266 96.543 45.8105 96.5795C45.6979 96.6126 45.5703 96.6441 45.4277 96.674C45.2852 96.7005 45.1427 96.7253 45.0002 96.7485C44.8577 96.7684 44.7284 96.7867 44.6124 96.8032C44.3638 96.8397 44.1467 96.8977 43.9611 96.9772C43.7755 97.0568 43.6313 97.1645 43.5286 97.3004C43.4258 97.433 43.3745 97.5987 43.3745 97.7975C43.3745 98.0859 43.4789 98.3063 43.6877 98.4588C43.8998 98.6079 44.1683 98.6825 44.4931 98.6825Z" fill="#3F434B"/>
<path d="M58.3849 95.3366V97.0021H54.3977V95.3366H58.3849ZM55.0938 92.3636V100H53.0703V92.3636H55.0938ZM59.7124 92.3636V100H57.7038V92.3636H59.7124Z" fill="#3F434B"/>
<path d="M63.533 100.144C63.0458 100.144 62.6116 100.06 62.2305 99.8906C61.8493 99.7182 61.5477 99.4647 61.3256 99.1299C61.1069 98.7919 60.9975 98.3709 60.9975 97.8671C60.9975 97.4429 61.0754 97.0866 61.2312 96.7983C61.387 96.5099 61.5991 96.2779 61.8675 96.1022C62.136 95.9266 62.4409 95.794 62.7823 95.7045C63.127 95.615 63.4883 95.552 63.8661 95.5156C64.3103 95.4692 64.6682 95.4261 64.94 95.3863C65.2118 95.3432 65.409 95.2803 65.5316 95.1974C65.6542 95.1145 65.7156 94.9919 65.7156 94.8295V94.7997C65.7156 94.4848 65.6161 94.2412 65.4173 94.0688C65.2217 93.8965 64.9433 93.8103 64.582 93.8103C64.2009 93.8103 63.8976 93.8948 63.6722 94.0639C63.4468 94.2296 63.2977 94.4384 63.2248 94.6903L61.266 94.5312C61.3654 94.0672 61.561 93.6661 61.8526 93.3281C62.1443 92.9867 62.5205 92.7249 62.9812 92.5426C63.4452 92.357 63.9821 92.2642 64.592 92.2642C65.0162 92.2642 65.4222 92.3139 65.81 92.4133C66.2011 92.5127 66.5475 92.6669 66.8491 92.8757C67.154 93.0845 67.3943 93.3529 67.57 93.6811C67.7456 94.0059 67.8335 94.3953 67.8335 94.8494V100H65.8249V98.941H65.7653C65.6426 99.1796 65.4786 99.3901 65.2731 99.5724C65.0676 99.7514 64.8207 99.8922 64.5323 99.995C64.244 100.094 63.9109 100.144 63.533 100.144ZM64.1396 98.6825C64.4511 98.6825 64.7262 98.6212 64.9648 98.4985C65.2035 98.3726 65.3907 98.2036 65.5266 97.9914C65.6625 97.7793 65.7305 97.539 65.7305 97.2706V96.4602C65.6642 96.5033 65.573 96.543 65.457 96.5795C65.3443 96.6126 65.2167 96.6441 65.0742 96.674C64.9317 96.7005 64.7892 96.7253 64.6467 96.7485C64.5041 96.7684 64.3749 96.7867 64.2589 96.8032C64.0103 96.8397 63.7932 96.8977 63.6076 96.9772C63.422 97.0568 63.2778 97.1645 63.1751 97.3004C63.0723 97.433 63.021 97.5987 63.021 97.7975C63.021 98.0859 63.1254 98.3063 63.3342 98.4588C63.5463 98.6079 63.8148 98.6825 64.1396 98.6825Z" fill="#3F434B"/>
<path d="M69.4766 100V92.3636H76.1534V100H74.13V94.0291H71.4751V100H69.4766Z" fill="#3F434B"/>
<path d="M77.8438 102.864V92.3636H79.9318V93.6463H80.0263C80.1191 93.4408 80.2533 93.232 80.429 93.0198C80.608 92.8044 80.84 92.6254 81.125 92.4829C81.4134 92.3371 81.7713 92.2642 82.1989 92.2642C82.7557 92.2642 83.2694 92.41 83.7401 92.7017C84.2107 92.99 84.5869 93.4259 84.8686 94.0092C85.1503 94.5892 85.2912 95.3167 85.2912 96.1917C85.2912 97.0435 85.1536 97.7627 84.8786 98.3494C84.6068 98.9327 84.2356 99.3752 83.7649 99.6768C83.2976 99.9751 82.7739 100.124 82.1939 100.124C81.7829 100.124 81.4332 100.056 81.1449 99.9204C80.8599 99.7845 80.6262 99.6138 80.4439 99.4083C80.2616 99.1995 80.1224 98.9891 80.0263 98.7769H79.9616V102.864H77.8438ZM79.9169 96.1818C79.9169 96.6358 79.9799 97.0319 80.1058 97.37C80.2318 97.7081 80.4141 97.9715 80.6527 98.1605C80.8913 98.3461 81.1813 98.4389 81.5227 98.4389C81.8674 98.4389 82.1591 98.3444 82.3977 98.1555C82.6364 97.9633 82.817 97.6981 82.9396 97.36C83.0656 97.0187 83.1286 96.6259 83.1286 96.1818C83.1286 95.741 83.0672 95.3532 82.9446 95.0184C82.822 94.6837 82.6413 94.4218 82.4027 94.2329C82.1641 94.044 81.8707 93.9495 81.5227 93.9495C81.178 93.9495 80.8864 94.0407 80.6477 94.223C80.4124 94.4053 80.2318 94.6638 80.1058 94.9985C79.9799 95.3333 79.9169 95.7277 79.9169 96.1818Z" fill="#3F434B"/>
<path d="M88.8807 100.144C88.3935 100.144 87.9593 100.06 87.5781 99.8906C87.197 99.7182 86.8954 99.4647 86.6733 99.1299C86.4545 98.7919 86.3452 98.3709 86.3452 97.8671C86.3452 97.4429 86.4231 97.0866 86.5788 96.7983C86.7346 96.5099 86.9467 96.2779 87.2152 96.1022C87.4837 95.9266 87.7886 95.794 88.13 95.7045C88.4747 95.615 88.8359 95.552 89.2138 95.5156C89.6579 95.4692 90.0159 95.4261 90.2876 95.3863C90.5594 95.3432 90.7566 95.2803 90.8793 95.1974C91.0019 95.1145 91.0632 94.9919 91.0632 94.8295V94.7997C91.0632 94.4848 90.9638 94.2412 90.7649 94.0688C90.5694 93.8965 90.291 93.8103 89.9297 93.8103C89.5485 93.8103 89.2453 93.8948 89.0199 94.0639C88.7945 94.2296 88.6454 94.4384 88.5724 94.6903L86.6136 94.5312C86.7131 94.0672 86.9086 93.6661 87.2003 93.3281C87.492 92.9867 87.8681 92.7249 88.3288 92.5426C88.7928 92.357 89.3298 92.2642 89.9396 92.2642C90.3639 92.2642 90.7699 92.3139 91.1577 92.4133C91.5488 92.5127 91.8951 92.6669 92.1967 92.8757C92.5017 93.0845 92.742 93.3529 92.9176 93.6811C93.0933 94.0059 93.1811 94.3953 93.1811 94.8494V100H91.1726V98.941H91.1129C90.9903 99.1796 90.8262 99.3901 90.6207 99.5724C90.4153 99.7514 90.1683 99.8922 89.88 99.995C89.5916 100.094 89.2585 100.144 88.8807 100.144ZM89.4872 98.6825C89.7988 98.6825 90.0739 98.6212 90.3125 98.4985C90.5511 98.3726 90.7384 98.2036 90.8743 97.9914C91.0102 97.7793 91.0781 97.539 91.0781 97.2706V96.4602C91.0118 96.5033 90.9207 96.543 90.8047 96.5795C90.692 96.6126 90.5644 96.6441 90.4219 96.674C90.2794 96.7005 90.1368 96.7253 89.9943 96.7485C89.8518 96.7684 89.7225 96.7867 89.6065 96.8032C89.358 96.8397 89.1409 96.8977 88.9553 96.9772C88.7696 97.0568 88.6255 97.1645 88.5227 97.3004C88.42 97.433 88.3686 97.5987 88.3686 97.7975C88.3686 98.0859 88.473 98.3063 88.6818 98.4588C88.8939 98.6079 89.1624 98.6825 89.4872 98.6825Z" fill="#3F434B"/>
<path d="M94.8242 100V92.3636H98.0806C99.0219 92.3636 99.766 92.5426 100.313 92.9005C100.86 93.2585 101.133 93.7672 101.133 94.4268C101.133 94.8411 100.979 95.1858 100.671 95.4609C100.363 95.736 99.935 95.9216 99.3881 96.0177C99.8455 96.0509 100.235 96.1553 100.556 96.3309C100.881 96.5033 101.128 96.727 101.297 97.0021C101.47 97.2772 101.556 97.5821 101.556 97.9169C101.556 98.351 101.44 98.7239 101.208 99.0355C100.979 99.347 100.643 99.5857 100.199 99.7514C99.7577 99.9171 99.2191 100 98.5827 100H94.8242ZM96.7979 98.414H98.5827C98.8777 98.414 99.1081 98.3444 99.2738 98.2052C99.4428 98.0627 99.5273 97.8688 99.5273 97.6235C99.5273 97.3518 99.4428 97.138 99.2738 96.9822C99.1081 96.8264 98.8777 96.7485 98.5827 96.7485H96.7979V98.414ZM96.7979 95.5056H98.1254C98.3375 95.5056 98.5181 95.4758 98.6673 95.4161C98.8197 95.3532 98.9357 95.2637 99.0153 95.1477C99.0981 95.0317 99.1396 94.8941 99.1396 94.735C99.1396 94.4997 99.0451 94.3158 98.8562 94.1832C98.6673 94.0506 98.4087 93.9843 98.0806 93.9843H96.7979V95.5056Z" fill="#3F434B"/>
<path d="M102.443 100L102.433 98.3196H102.687C102.866 98.3196 103.02 98.2765 103.149 98.1903C103.282 98.1008 103.391 97.9566 103.477 97.7578C103.563 97.5589 103.631 97.2954 103.681 96.9673C103.731 96.6358 103.764 96.2282 103.781 95.7443L103.905 92.3636H109.712V100H107.693V94.0291H105.809L105.69 96.3608C105.66 97.0004 105.582 97.5506 105.456 98.0113C105.333 98.472 105.163 98.8499 104.944 99.1448C104.725 99.4365 104.462 99.6519 104.153 99.7911C103.845 99.9304 103.487 100 103.08 100H102.443Z" fill="#3F434B"/>
<path d="M114.834 100.149C114.048 100.149 113.372 99.99 112.805 99.6718C112.242 99.3503 111.808 98.8963 111.503 98.3096C111.198 97.7197 111.045 97.022 111.045 96.2166C111.045 95.4311 111.198 94.7417 111.503 94.1484C111.808 93.5551 112.237 93.0928 112.79 92.7613C113.347 92.4299 114 92.2642 114.749 92.2642C115.253 92.2642 115.722 92.3454 116.156 92.5078C116.594 92.6669 116.975 92.9072 117.3 93.2286C117.628 93.5501 117.883 93.9545 118.065 94.4417C118.247 94.9256 118.339 95.4924 118.339 96.142V96.7237H111.89V95.4112H116.345C116.345 95.1063 116.279 94.8361 116.146 94.6008C116.014 94.3655 115.83 94.1815 115.594 94.049C115.362 93.9131 115.092 93.8451 114.784 93.8451C114.462 93.8451 114.177 93.9197 113.929 94.0688C113.684 94.2147 113.491 94.4119 113.352 94.6605C113.213 94.9057 113.142 95.1792 113.138 95.4808V96.7286C113.138 97.1065 113.208 97.433 113.347 97.7081C113.49 97.9831 113.69 98.1953 113.949 98.3444C114.207 98.4936 114.514 98.5681 114.868 98.5681C115.104 98.5681 115.319 98.535 115.515 98.4687C115.71 98.4024 115.878 98.303 116.017 98.1704C116.156 98.0378 116.262 97.8754 116.335 97.6832L118.294 97.8125C118.194 98.2831 117.991 98.6941 117.682 99.0454C117.377 99.3934 116.983 99.6652 116.499 99.8608C116.019 100.053 115.463 100.149 114.834 100.149Z" fill="#3F434B"/>
<path d="M125.035 95.3366V97.0021H121.048V95.3366H125.035ZM121.744 92.3636V100H119.721V92.3636H121.744ZM126.363 92.3636V100H124.354V92.3636H126.363Z" fill="#3F434B"/>
<path d="M130.029 97.2059L132.779 92.3636H134.867V100H132.848V95.1427L130.109 100H128.006V92.3636H130.029V97.2059Z" fill="#3F434B"/>
<path d="M141.039 100V94.0241H139.607C139.219 94.0241 138.924 94.1136 138.722 94.2926C138.52 94.4715 138.421 94.6837 138.424 94.9289C138.421 95.1775 138.517 95.388 138.712 95.5603C138.911 95.7294 139.203 95.8139 139.587 95.8139H141.745V97.2457H139.587C138.934 97.2457 138.369 97.1463 137.892 96.9474C137.415 96.7485 137.047 96.4718 136.788 96.1171C136.53 95.7592 136.402 95.3432 136.405 94.8693C136.402 94.3721 136.53 93.9363 136.788 93.5617C137.047 93.1839 137.416 92.8906 137.897 92.6818C138.381 92.4697 138.951 92.3636 139.607 92.3636H143.013V100H141.039ZM136.187 100L138.309 96.0227H140.333L138.215 100H136.187Z" fill="#3F434B"/>
<path d="M11.46 120V112.364H18.1368V120H16.1134V114.029H13.4585V120H11.46Z" fill="#3F434B"/>
<path d="M23.2774 120.149C22.5052 120.149 21.8373 119.985 21.2739 119.657C20.7137 119.325 20.2812 118.865 19.9763 118.275C19.6714 117.682 19.5189 116.994 19.5189 116.212C19.5189 115.423 19.6714 114.733 19.9763 114.143C20.2812 113.55 20.7137 113.089 21.2739 112.761C21.8373 112.43 22.5052 112.264 23.2774 112.264C24.0497 112.264 24.7159 112.43 25.276 112.761C25.8395 113.089 26.2736 113.55 26.5786 114.143C26.8835 114.733 27.036 115.423 27.036 116.212C27.036 116.994 26.8835 117.682 26.5786 118.275C26.2736 118.865 25.8395 119.325 25.276 119.657C24.7159 119.985 24.0497 120.149 23.2774 120.149ZM23.2874 118.508C23.6387 118.508 23.932 118.409 24.1673 118.21C24.4027 118.008 24.58 117.733 24.6993 117.385C24.8219 117.037 24.8833 116.641 24.8833 116.197C24.8833 115.753 24.8219 115.356 24.6993 115.008C24.58 114.66 24.4027 114.385 24.1673 114.183C23.932 113.981 23.6387 113.88 23.2874 113.88C22.9327 113.88 22.6344 113.981 22.3925 114.183C22.1539 114.385 21.9732 114.66 21.8506 115.008C21.7313 115.356 21.6716 115.753 21.6716 116.197C21.6716 116.641 21.7313 117.037 21.8506 117.385C21.9732 117.733 22.1539 118.008 22.3925 118.21C22.6344 118.409 22.9327 118.508 23.2874 118.508Z" fill="#3F434B"/>
<path d="M28.4131 120V112.364H31.6695C32.6108 112.364 33.3548 112.543 33.9017 112.901C34.4486 113.258 34.722 113.767 34.722 114.427C34.722 114.841 34.5679 115.186 34.2597 115.461C33.9514 115.736 33.5239 115.922 32.977 116.018C33.4344 116.051 33.8238 116.155 34.1453 116.331C34.4701 116.503 34.7171 116.727 34.8861 117.002C35.0584 117.277 35.1446 117.582 35.1446 117.917C35.1446 118.351 35.0286 118.724 34.7966 119.035C34.5679 119.347 34.2315 119.586 33.7874 119.751C33.3466 119.917 32.808 120 32.1716 120H28.4131ZM30.3868 118.414H32.1716C32.4666 118.414 32.6969 118.344 32.8627 118.205C33.0317 118.063 33.1162 117.869 33.1162 117.624C33.1162 117.352 33.0317 117.138 32.8627 116.982C32.6969 116.826 32.4666 116.749 32.1716 116.749H30.3868V118.414ZM30.3868 115.506H31.7142C31.9263 115.506 32.107 115.476 32.2561 115.416C32.4086 115.353 32.5246 115.264 32.6041 115.148C32.687 115.032 32.7284 114.894 32.7284 114.735C32.7284 114.5 32.634 114.316 32.445 114.183C32.2561 114.051 31.9976 113.984 31.6695 113.984H30.3868V115.506Z" fill="#3F434B"/>
<path d="M39.9596 120.149C39.1741 120.149 38.498 119.99 37.9312 119.672C37.3678 119.35 36.9336 118.896 36.6286 118.31C36.3237 117.72 36.1713 117.022 36.1713 116.217C36.1713 115.431 36.3237 114.742 36.6286 114.148C36.9336 113.555 37.3628 113.093 37.9163 112.761C38.4731 112.43 39.126 112.264 39.8751 112.264C40.3789 112.264 40.8479 112.345 41.2821 112.508C41.7196 112.667 42.1007 112.907 42.4255 113.229C42.7536 113.55 43.0089 113.955 43.1911 114.442C43.3734 114.926 43.4646 115.492 43.4646 116.142V116.724H37.0164V115.411H41.471C41.471 115.106 41.4047 114.836 41.2721 114.601C41.1395 114.365 40.9556 114.182 40.7203 114.049C40.4883 113.913 40.2181 113.845 39.9099 113.845C39.5884 113.845 39.3034 113.92 39.0548 114.069C38.8095 114.215 38.6173 114.412 38.4781 114.66C38.3389 114.906 38.2676 115.179 38.2643 115.481V116.729C38.2643 117.106 38.3339 117.433 38.4731 117.708C38.6156 117.983 38.8161 118.195 39.0747 118.344C39.3332 118.494 39.6398 118.568 39.9944 118.568C40.2297 118.568 40.4452 118.535 40.6407 118.469C40.8363 118.402 41.0036 118.303 41.1428 118.17C41.282 118.038 41.3881 117.875 41.461 117.683L43.4198 117.812C43.3204 118.283 43.1166 118.694 42.8083 119.045C42.5034 119.393 42.109 119.665 41.6251 119.861C41.1445 120.053 40.5893 120.149 39.9596 120.149Z" fill="#3F434B"/>
<path d="M48.297 120.149C47.5148 120.149 46.8419 119.983 46.2785 119.652C45.7184 119.317 45.2875 118.853 44.9859 118.26C44.6876 117.667 44.5384 116.984 44.5384 116.212C44.5384 115.429 44.6892 114.743 44.9909 114.153C45.2958 113.56 45.7283 113.098 46.2884 112.766C46.8486 112.432 47.5148 112.264 48.287 112.264C48.9532 112.264 49.5365 112.385 50.037 112.627C50.5375 112.869 50.9336 113.209 51.2252 113.646C51.5169 114.084 51.6776 114.597 51.7075 115.187H49.7089C49.6526 114.806 49.5034 114.5 49.2615 114.268C49.0228 114.032 48.7096 113.915 48.3218 113.915C47.9937 113.915 47.707 114.004 47.4617 114.183C47.2198 114.359 47.0309 114.616 46.895 114.954C46.7591 115.292 46.6911 115.701 46.6911 116.182C46.6911 116.669 46.7574 117.083 46.89 117.425C47.0259 117.766 47.2165 118.026 47.4617 118.205C47.707 118.384 47.9937 118.474 48.3218 118.474C48.5638 118.474 48.7809 118.424 48.9731 118.325C49.1687 118.225 49.3294 118.081 49.4553 117.892C49.5846 117.7 49.6691 117.469 49.7089 117.201H51.7075C51.6743 117.784 51.5152 118.298 51.2302 118.742C50.9485 119.183 50.559 119.528 50.0619 119.776C49.5647 120.025 48.9764 120.149 48.297 120.149Z" fill="#3F434B"/>
<path d="M52.5427 114.029V112.364H59.4632V114.029H57.0022V120H54.9838V114.029H52.5427Z" fill="#3F434B"/>
<path d="M60.7471 120V112.364H62.865V115.327H63.4616L65.5397 112.364H68.0255L65.3259 116.152L68.0553 120H65.5397L63.6555 117.29H62.865V120H60.7471Z" fill="#3F434B"/>
<path d="M70.9736 117.206L73.7229 112.364H75.811V120H73.7925V115.143L71.0532 120H68.9502V112.364H70.9736V117.206Z" fill="#3F434B"/>
<path d="M86.0637 115.337V117.002H82.0764V115.337H86.0637ZM82.7725 112.364V120H80.749V112.364H82.7725ZM87.3911 112.364V120H85.3825V112.364H87.3911Z" fill="#3F434B"/>
<path d="M91.2117 120.144C90.7245 120.144 90.2903 120.06 89.9092 119.891C89.528 119.718 89.2264 119.465 89.0043 119.13C88.7856 118.792 88.6762 118.371 88.6762 117.867C88.6762 117.443 88.7541 117.087 88.9099 116.798C89.0657 116.51 89.2778 116.278 89.5463 116.102C89.8147 115.927 90.1196 115.794 90.461 115.705C90.8057 115.615 91.167 115.552 91.5448 115.516C91.989 115.469 92.3469 115.426 92.6187 115.386C92.8905 115.343 93.0877 115.28 93.2103 115.197C93.333 115.115 93.3943 114.992 93.3943 114.83V114.8C93.3943 114.485 93.2948 114.241 93.096 114.069C92.9004 113.896 92.622 113.81 92.2607 113.81C91.8796 113.81 91.5763 113.895 91.3509 114.064C91.1256 114.23 90.9764 114.438 90.9035 114.69L88.9447 114.531C89.0441 114.067 89.2397 113.666 89.5313 113.328C89.823 112.987 90.1992 112.725 90.6599 112.543C91.1239 112.357 91.6608 112.264 92.2707 112.264C92.6949 112.264 93.1009 112.314 93.4887 112.413C93.8798 112.513 94.2262 112.667 94.5278 112.876C94.8327 113.084 95.073 113.353 95.2487 113.681C95.4243 114.006 95.5122 114.395 95.5122 114.849V120H93.5036V118.941H93.444C93.3214 119.18 93.1573 119.39 92.9518 119.572C92.7463 119.751 92.4994 119.892 92.211 119.995C91.9227 120.094 91.5896 120.144 91.2117 120.144ZM91.8183 118.682C92.1298 118.682 92.4049 118.621 92.6436 118.499C92.8822 118.373 93.0695 118.204 93.2053 117.991C93.3412 117.779 93.4092 117.539 93.4092 117.271V116.46C93.3429 116.503 93.2517 116.543 93.1357 116.58C93.0231 116.613 92.8954 116.644 92.7529 116.674C92.6104 116.7 92.4679 116.725 92.3254 116.749C92.1829 116.768 92.0536 116.787 91.9376 116.803C91.689 116.84 91.4719 116.898 91.2863 116.977C91.1007 117.057 90.9565 117.164 90.8538 117.3C90.751 117.433 90.6997 117.599 90.6997 117.798C90.6997 118.086 90.8041 118.306 91.0129 118.459C91.225 118.608 91.4935 118.682 91.8183 118.682Z" fill="#3F434B"/>
<path d="M100.396 122.864V112.364H102.484V113.646H102.578C102.671 113.441 102.805 113.232 102.981 113.02C103.16 112.804 103.392 112.625 103.677 112.483C103.965 112.337 104.323 112.264 104.751 112.264C105.307 112.264 105.821 112.41 106.292 112.702C106.762 112.99 107.139 113.426 107.42 114.009C107.702 114.589 107.843 115.317 107.843 116.192C107.843 117.044 107.705 117.763 107.43 118.349C107.159 118.933 106.787 119.375 106.317 119.677C105.849 119.975 105.326 120.124 104.746 120.124C104.335 120.124 103.985 120.056 103.697 119.92C103.412 119.785 103.178 119.614 102.996 119.408C102.813 119.2 102.674 118.989 102.578 118.777H102.513V122.864H100.396ZM102.469 116.182C102.469 116.636 102.532 117.032 102.658 117.37C102.784 117.708 102.966 117.972 103.204 118.16C103.443 118.346 103.733 118.439 104.074 118.439C104.419 118.439 104.711 118.344 104.949 118.155C105.188 117.963 105.369 117.698 105.491 117.36C105.617 117.019 105.68 116.626 105.68 116.182C105.68 115.741 105.619 115.353 105.496 115.018C105.374 114.684 105.193 114.422 104.954 114.233C104.716 114.044 104.423 113.95 104.074 113.95C103.73 113.95 103.438 114.041 103.199 114.223C102.964 114.405 102.784 114.664 102.658 114.999C102.532 115.333 102.469 115.728 102.469 116.182Z" fill="#3F434B"/>
<path d="M111.432 120.144C110.945 120.144 110.511 120.06 110.13 119.891C109.749 119.718 109.447 119.465 109.225 119.13C109.006 118.792 108.897 118.371 108.897 117.867C108.897 117.443 108.975 117.087 109.131 116.798C109.286 116.51 109.498 116.278 109.767 116.102C110.035 115.927 110.34 115.794 110.682 115.705C111.026 115.615 111.388 115.552 111.766 115.516C112.21 115.469 112.568 115.426 112.839 115.386C113.111 115.343 113.308 115.28 113.431 115.197C113.554 115.115 113.615 114.992 113.615 114.83V114.8C113.615 114.485 113.516 114.241 113.317 114.069C113.121 113.896 112.843 113.81 112.481 113.81C112.1 113.81 111.797 113.895 111.572 114.064C111.346 114.23 111.197 114.438 111.124 114.69L109.165 114.531C109.265 114.067 109.46 113.666 109.752 113.328C110.044 112.987 110.42 112.725 110.881 112.543C111.345 112.357 111.882 112.264 112.491 112.264C112.916 112.264 113.322 112.314 113.709 112.413C114.101 112.513 114.447 112.667 114.748 112.876C115.053 113.084 115.294 113.353 115.469 113.681C115.645 114.006 115.733 114.395 115.733 114.849V120H113.724V118.941H113.665C113.542 119.18 113.378 119.39 113.173 119.572C112.967 119.751 112.72 119.892 112.432 119.995C112.143 120.094 111.81 120.144 111.432 120.144ZM112.039 118.682C112.351 118.682 112.626 118.621 112.864 118.499C113.103 118.373 113.29 118.204 113.426 117.991C113.562 117.779 113.63 117.539 113.63 117.271V116.46C113.564 116.503 113.472 116.543 113.356 116.58C113.244 116.613 113.116 116.644 112.974 116.674C112.831 116.7 112.689 116.725 112.546 116.749C112.404 116.768 112.274 116.787 112.158 116.803C111.91 116.84 111.693 116.898 111.507 116.977C111.321 117.057 111.177 117.164 111.074 117.3C110.972 117.433 110.92 117.599 110.92 117.798C110.92 118.086 111.025 118.306 111.234 118.459C111.446 118.608 111.714 118.682 112.039 118.682Z" fill="#3F434B"/>
<path d="M123.725 109.56L124.371 110.942C124.156 111.121 123.917 111.253 123.655 111.339C123.393 111.422 123.08 111.477 122.715 111.504C122.354 111.53 121.913 111.548 121.393 111.558C120.803 111.565 120.322 111.659 119.951 111.842C119.58 112.024 119.298 112.311 119.106 112.702C118.914 113.089 118.788 113.597 118.728 114.223H118.803C119.032 113.756 119.353 113.394 119.767 113.139C120.185 112.884 120.7 112.756 121.313 112.756C121.963 112.756 122.532 112.899 123.019 113.184C123.509 113.469 123.89 113.878 124.162 114.412C124.434 114.946 124.57 115.585 124.57 116.331C124.57 117.106 124.417 117.781 124.112 118.354C123.811 118.924 123.382 119.367 122.825 119.682C122.268 119.993 121.605 120.149 120.836 120.149C120.064 120.149 119.398 119.987 118.838 119.662C118.281 119.337 117.85 118.858 117.545 118.225C117.243 117.592 117.093 116.813 117.093 115.888V115.262C117.093 113.423 117.451 112.059 118.166 111.17C118.882 110.282 119.935 109.831 121.323 109.818C121.701 109.812 122.043 109.81 122.348 109.813C122.652 109.816 122.919 109.802 123.148 109.768C123.38 109.735 123.572 109.666 123.725 109.56ZM120.846 118.508C121.171 118.508 121.449 118.424 121.681 118.255C121.917 118.086 122.097 117.844 122.223 117.529C122.353 117.214 122.417 116.838 122.417 116.401C122.417 115.966 122.353 115.598 122.223 115.297C122.097 114.992 121.917 114.76 121.681 114.601C121.446 114.442 121.164 114.362 120.836 114.362C120.591 114.362 120.371 114.407 120.175 114.496C119.979 114.586 119.812 114.718 119.673 114.894C119.537 115.066 119.431 115.28 119.355 115.535C119.282 115.787 119.245 116.076 119.245 116.401C119.245 117.053 119.386 117.569 119.668 117.947C119.953 118.321 120.346 118.508 120.846 118.508Z" fill="#3F434B"/>
<path d="M129.426 120.149C128.654 120.149 127.986 119.985 127.422 119.657C126.862 119.325 126.43 118.865 126.125 118.275C125.82 117.682 125.667 116.994 125.667 116.212C125.667 115.423 125.82 114.733 126.125 114.143C126.43 113.55 126.862 113.089 127.422 112.761C127.986 112.43 128.654 112.264 129.426 112.264C130.198 112.264 130.864 112.43 131.424 112.761C131.988 113.089 132.422 113.55 132.727 114.143C133.032 114.733 133.184 115.423 133.184 116.212C133.184 116.994 133.032 117.682 132.727 118.275C132.422 118.865 131.988 119.325 131.424 119.657C130.864 119.985 130.198 120.149 129.426 120.149ZM129.436 118.508C129.787 118.508 130.08 118.409 130.316 118.21C130.551 118.008 130.728 117.733 130.848 117.385C130.97 117.037 131.032 116.641 131.032 116.197C131.032 115.753 130.97 115.356 130.848 115.008C130.728 114.66 130.551 114.385 130.316 114.183C130.08 113.981 129.787 113.88 129.436 113.88C129.081 113.88 128.783 113.981 128.541 114.183C128.302 114.385 128.122 114.66 127.999 115.008C127.88 115.356 127.82 115.753 127.82 116.197C127.82 116.641 127.88 117.037 127.999 117.385C128.122 117.733 128.302 118.008 128.541 118.21C128.783 118.409 129.081 118.508 129.436 118.508Z" fill="#3F434B"/>
<path d="M133.822 114.029V112.364H140.742V114.029H138.282V120H136.263V114.029H133.822Z" fill="#3F434B"/>
<path d="M143.334 122.864C143.065 122.864 142.814 122.842 142.578 122.799C142.346 122.759 142.154 122.708 142.002 122.645L142.479 121.064C142.727 121.14 142.951 121.182 143.15 121.188C143.352 121.195 143.526 121.148 143.672 121.049C143.821 120.95 143.942 120.78 144.035 120.542L144.159 120.219L141.42 112.364H143.647L145.228 117.972H145.308L146.904 112.364H149.146L146.178 120.825C146.035 121.236 145.841 121.594 145.596 121.899C145.354 122.207 145.047 122.444 144.676 122.61C144.305 122.779 143.858 122.864 143.334 122.864Z" fill="#3F434B"/>
<path d="M47.7383 137.206L50.4876 132.364H52.5756V140H50.5572V135.143L47.8178 140H45.7148V132.364H47.7383V137.206Z" fill="#3F434B"/>
<path d="M53.826 140L53.8161 138.32H54.0696C54.2486 138.32 54.4027 138.276 54.532 138.19C54.6645 138.101 54.7739 137.957 54.8601 137.758C54.9463 137.559 55.0142 137.295 55.0639 136.967C55.1136 136.636 55.1468 136.228 55.1634 135.744L55.2876 132.364H61.0945V140H59.076V134.029H57.1918L57.0724 136.361C57.0426 137 56.9647 137.551 56.8388 138.011C56.7161 138.472 56.5455 138.85 56.3267 139.145C56.108 139.437 55.8445 139.652 55.5362 139.791C55.228 139.93 54.87 140 54.4624 140H53.826Z" fill="#3F434B"/>
<path d="M64.7598 137.206L67.5091 132.364H69.5971V140H67.5787V135.143L64.8393 140H62.7363V132.364H64.7598V137.206Z" fill="#3F434B"/>
<path d="M75.8427 142.864C75.5742 142.864 75.3223 142.842 75.087 142.799C74.855 142.759 74.6628 142.708 74.5103 142.645L74.9876 141.064C75.2362 141.14 75.4599 141.182 75.6587 141.188C75.8609 141.195 76.0349 141.148 76.1808 141.049C76.3299 140.95 76.4509 140.78 76.5437 140.542L76.668 140.219L73.9286 132.364H76.1559L77.7369 137.972H77.8164L79.4123 132.364H81.6545L78.6864 140.825C78.5439 141.236 78.35 141.594 78.1048 141.899C77.8628 142.207 77.5562 142.444 77.185 142.61C76.8138 142.779 76.3664 142.864 75.8427 142.864Z" fill="#3F434B"/>
<path d="M89.1603 132.364V140H87.1518V132.364H89.1603ZM88.1809 135.714V137.385C88.0185 137.458 87.8163 137.527 87.5744 137.594C87.3324 137.657 87.0789 137.708 86.8137 137.748C86.5486 137.788 86.3 137.807 86.068 137.807C84.9709 137.807 84.1075 137.582 83.4778 137.131C82.8481 136.677 82.5332 135.953 82.5332 134.959V132.354H84.5318V134.959C84.5318 135.254 84.5815 135.487 84.6809 135.66C84.7837 135.832 84.9461 135.956 85.1681 136.033C85.3935 136.106 85.6935 136.142 86.068 136.142C86.416 136.142 86.7574 136.106 87.0922 136.033C87.4269 135.96 87.7898 135.854 88.1809 135.714Z" fill="#3F434B"/>
<path d="M94.2848 140.149C93.4993 140.149 92.8232 139.99 92.2564 139.672C91.6929 139.35 91.2588 138.896 90.9538 138.31C90.6489 137.72 90.4965 137.022 90.4965 136.217C90.4965 135.431 90.6489 134.742 90.9538 134.148C91.2588 133.555 91.688 133.093 92.2415 132.761C92.7983 132.43 93.4512 132.264 94.2003 132.264C94.7041 132.264 95.1731 132.345 95.6072 132.508C96.0447 132.667 96.4259 132.907 96.7507 133.229C97.0788 133.55 97.334 133.954 97.5163 134.442C97.6986 134.926 97.7898 135.492 97.7898 136.142V136.724H91.3416V135.411H95.7962C95.7962 135.106 95.7299 134.836 95.5973 134.601C95.4647 134.365 95.2808 134.182 95.0455 134.049C94.8134 133.913 94.5433 133.845 94.2351 133.845C93.9136 133.845 93.6286 133.92 93.38 134.069C93.1347 134.215 92.9425 134.412 92.8033 134.66C92.6641 134.906 92.5928 135.179 92.5895 135.481V136.729C92.5895 137.106 92.6591 137.433 92.7983 137.708C92.9408 137.983 93.1413 138.195 93.3999 138.344C93.6584 138.494 93.965 138.568 94.3196 138.568C94.5549 138.568 94.7704 138.535 94.9659 138.469C95.1615 138.402 95.3288 138.303 95.468 138.17C95.6072 138.038 95.7133 137.875 95.7862 137.683L97.745 137.812C97.6456 138.283 97.4418 138.694 97.1335 139.045C96.8286 139.393 96.4342 139.665 95.9503 139.861C95.4697 140.053 94.9145 140.149 94.2848 140.149ZM92.6342 131.32C92.3492 131.32 92.1039 131.22 91.8984 131.021C91.6929 130.819 91.5902 130.58 91.5902 130.305C91.5902 130.024 91.6929 129.785 91.8984 129.589C92.1039 129.394 92.3492 129.296 92.6342 129.296C92.9226 129.296 93.1662 129.394 93.3651 129.589C93.5672 129.785 93.6683 130.024 93.6683 130.305C93.6683 130.58 93.5672 130.819 93.3651 131.021C93.1662 131.22 92.9226 131.32 92.6342 131.32ZM95.6768 131.32C95.3918 131.32 95.1465 131.22 94.9411 131.021C94.7356 130.819 94.6328 130.58 94.6328 130.305C94.6328 130.024 94.7356 129.785 94.9411 129.589C95.1465 129.394 95.3918 129.296 95.6768 129.296C95.9652 129.296 96.2088 129.394 96.4077 129.589C96.6098 129.785 96.7109 130.024 96.7109 130.305C96.7109 130.58 96.6098 130.819 96.4077 131.021C96.2088 131.22 95.9652 131.32 95.6768 131.32Z" fill="#3F434B"/>
<path d="M105.521 129.56L106.167 130.942C105.951 131.121 105.713 131.253 105.451 131.339C105.189 131.422 104.876 131.477 104.511 131.504C104.15 131.53 103.709 131.548 103.189 131.558C102.599 131.565 102.118 131.659 101.747 131.842C101.376 132.024 101.094 132.311 100.902 132.702C100.71 133.089 100.584 133.597 100.524 134.223H100.599C100.827 133.756 101.149 133.394 101.563 133.139C101.981 132.884 102.496 132.756 103.109 132.756C103.759 132.756 104.327 132.899 104.815 133.184C105.305 133.469 105.686 133.878 105.958 134.412C106.23 134.946 106.366 135.585 106.366 136.331C106.366 137.106 106.213 137.781 105.908 138.354C105.607 138.924 105.178 139.367 104.621 139.682C104.064 139.993 103.401 140.149 102.632 140.149C101.86 140.149 101.194 139.987 100.634 139.662C100.077 139.337 99.6458 138.858 99.3409 138.225C99.0393 137.592 98.8885 136.813 98.8885 135.888V135.262C98.8885 133.423 99.2464 132.059 99.9624 131.17C100.678 130.282 101.731 129.831 103.119 129.818C103.497 129.812 103.839 129.81 104.143 129.813C104.448 129.816 104.715 129.802 104.944 129.768C105.176 129.735 105.368 129.666 105.521 129.56ZM102.642 138.508C102.967 138.508 103.245 138.424 103.477 138.255C103.713 138.086 103.893 137.844 104.019 137.529C104.148 137.214 104.213 136.838 104.213 136.401C104.213 135.966 104.148 135.598 104.019 135.297C103.893 134.992 103.713 134.76 103.477 134.601C103.242 134.442 102.96 134.362 102.632 134.362C102.387 134.362 102.166 134.407 101.971 134.496C101.775 134.586 101.608 134.718 101.469 134.894C101.333 135.066 101.227 135.28 101.151 135.535C101.078 135.787 101.041 136.076 101.041 136.401C101.041 137.053 101.182 137.569 101.464 137.947C101.749 138.321 102.142 138.508 102.642 138.508Z" fill="#3F434B"/>
<path d="M109.079 142.864C108.811 142.864 108.559 142.842 108.323 142.799C108.091 142.759 107.899 142.708 107.747 142.645L108.224 141.064C108.472 141.14 108.696 141.182 108.895 141.188C109.097 141.195 109.271 141.148 109.417 141.049C109.566 140.95 109.687 140.78 109.78 140.542L109.904 140.219L107.165 132.364H109.392L110.973 137.972H111.053L112.649 132.364H114.891L111.923 140.825C111.78 141.236 111.586 141.594 111.341 141.899C111.099 142.207 110.793 142.444 110.421 142.61C110.05 142.779 109.603 142.864 109.079 142.864Z" fill="#3F434B"/>
<path d="M469.768 17.2372V13.3196H470.354C470.523 13.2135 470.659 13.0445 470.762 12.8125C470.868 12.5804 470.954 12.307 471.021 11.9921C471.09 11.6773 471.143 11.3376 471.18 10.973C471.219 10.6051 471.254 10.2339 471.284 9.85933L471.483 7.36359H477.339V13.3196H478.523V17.2372H476.504V15H471.836V17.2372H469.768ZM472.462 13.3196H475.341V8.99427H473.283L473.203 9.85933C473.147 10.6747 473.065 11.3674 472.959 11.9375C472.853 12.5042 472.688 12.9649 472.462 13.3196Z" fill="#3F434B"/>
<path d="M481.934 15.1441C481.447 15.1441 481.013 15.0596 480.632 14.8906C480.251 14.7182 479.949 14.4647 479.727 14.1299C479.508 13.7919 479.399 13.3709 479.399 12.8671C479.399 12.4429 479.477 12.0866 479.633 11.7983C479.788 11.5099 480 11.2779 480.269 11.1022C480.537 10.9266 480.842 10.794 481.184 10.7045C481.528 10.615 481.89 10.552 482.267 10.5156C482.712 10.4692 483.07 10.4261 483.341 10.3863C483.613 10.3432 483.81 10.2803 483.933 10.1974C484.056 10.1145 484.117 9.99191 484.117 9.8295V9.79967C484.117 9.4848 484.017 9.2412 483.819 9.06885C483.623 8.8965 483.345 8.81033 482.983 8.81033C482.602 8.81033 482.299 8.89484 482.074 9.06388C481.848 9.2296 481.699 9.4384 481.626 9.6903L479.667 9.53121C479.767 9.06719 479.962 8.66615 480.254 8.32808C480.546 7.9867 480.922 7.72486 481.383 7.54257C481.847 7.35696 482.383 7.26416 482.993 7.26416C483.418 7.26416 483.824 7.31388 484.211 7.41331C484.602 7.51274 484.949 7.66686 485.25 7.87567C485.555 8.08447 485.796 8.35294 485.971 8.68106C486.147 9.00587 486.235 9.39532 486.235 9.84939V15H484.226V13.941H484.167C484.044 14.1796 483.88 14.3901 483.674 14.5724C483.469 14.7514 483.222 14.8922 482.934 14.995C482.645 15.0944 482.312 15.1441 481.934 15.1441ZM482.541 13.6825C482.852 13.6825 483.128 13.6212 483.366 13.4985C483.605 13.3726 483.792 13.2036 483.928 12.9914C484.064 12.7793 484.132 12.539 484.132 12.2706V11.4602C484.066 11.5033 483.974 11.543 483.858 11.5795C483.746 11.6126 483.618 11.6441 483.476 11.674C483.333 11.7005 483.191 11.7253 483.048 11.7485C482.906 11.7684 482.776 11.7867 482.66 11.8032C482.412 11.8397 482.195 11.8977 482.009 11.9772C481.823 12.0568 481.679 12.1645 481.576 12.3004C481.474 12.433 481.422 12.5987 481.422 12.7975C481.422 13.0859 481.527 13.3063 481.736 13.4588C481.948 13.6079 482.216 13.6825 482.541 13.6825Z" fill="#3F434B"/>
<path d="M487.111 9.02908V7.36359H494.032V9.02908H491.571V15H489.552V9.02908H487.111Z" fill="#3F434B"/>
<path d="M497.22 15.1441C496.732 15.1441 496.298 15.0596 495.917 14.8906C495.536 14.7182 495.234 14.4647 495.012 14.1299C494.793 13.7919 494.684 13.3709 494.684 12.8671C494.684 12.4429 494.762 12.0866 494.918 11.7983C495.073 11.5099 495.286 11.2779 495.554 11.1022C495.823 10.9266 496.127 10.794 496.469 10.7045C496.814 10.615 497.175 10.552 497.553 10.5156C497.997 10.4692 498.355 10.4261 498.627 10.3863C498.898 10.3432 499.096 10.2803 499.218 10.1974C499.341 10.1145 499.402 9.99191 499.402 9.8295V9.79967C499.402 9.4848 499.303 9.2412 499.104 9.06885C498.908 8.8965 498.63 8.81033 498.269 8.81033C497.887 8.81033 497.584 8.89484 497.359 9.06388C497.133 9.2296 496.984 9.4384 496.911 9.6903L494.953 9.53121C495.052 9.06719 495.247 8.66615 495.539 8.32808C495.831 7.9867 496.207 7.72486 496.668 7.54257C497.132 7.35696 497.669 7.26416 498.278 7.26416C498.703 7.26416 499.109 7.31388 499.497 7.41331C499.888 7.51274 500.234 7.66686 500.536 7.87567C500.841 8.08447 501.081 8.35294 501.256 8.68106C501.432 9.00587 501.52 9.39532 501.52 9.84939V15H499.511V13.941H499.452C499.329 14.1796 499.165 14.3901 498.96 14.5724C498.754 14.7514 498.507 14.8922 498.219 14.995C497.93 15.0944 497.597 15.1441 497.22 15.1441ZM497.826 13.6825C498.138 13.6825 498.413 13.6212 498.651 13.4985C498.89 13.3726 499.077 13.2036 499.213 12.9914C499.349 12.7793 499.417 12.539 499.417 12.2706V11.4602C499.351 11.5033 499.26 11.543 499.144 11.5795C499.031 11.6126 498.903 11.6441 498.761 11.674C498.618 11.7005 498.476 11.7253 498.333 11.7485C498.191 11.7684 498.061 11.7867 497.945 11.8032C497.697 11.8397 497.48 11.8977 497.294 11.9772C497.109 12.0568 496.964 12.1645 496.862 12.3004C496.759 12.433 496.707 12.5987 496.707 12.7975C496.707 13.0859 496.812 13.3063 497.021 13.4588C497.233 13.6079 497.501 13.6825 497.826 13.6825Z" fill="#3F434B"/>
<path d="M510.878 15V9.0241H509.446C509.058 9.0241 508.763 9.11359 508.561 9.29257C508.359 9.47155 508.259 9.68367 508.263 9.92893C508.259 10.1775 508.355 10.388 508.551 10.5603C508.75 10.7294 509.042 10.8139 509.426 10.8139H511.584V12.2457H509.426C508.773 12.2457 508.208 12.1463 507.731 11.9474C507.253 11.7485 506.886 11.4718 506.627 11.1171C506.369 10.7592 506.241 10.3432 506.244 9.86927C506.241 9.37211 506.369 8.93627 506.627 8.56175C506.886 8.1839 507.255 7.89058 507.736 7.68177C508.22 7.46965 508.79 7.36359 509.446 7.36359H512.851V15H510.878ZM506.025 15L508.148 11.0227H510.172L508.054 15H506.025Z" fill="#3F434B"/>
<path d="M514.497 15V7.36359H517.753C518.695 7.36359 519.439 7.54257 519.986 7.90052C520.533 8.25848 520.806 8.76724 520.806 9.4268C520.806 9.8411 520.652 10.1858 520.344 10.4609C520.035 10.736 519.608 10.9216 519.061 11.0177C519.518 11.0509 519.908 11.1553 520.229 11.3309C520.554 11.5033 520.801 11.727 520.97 12.0021C521.142 12.2772 521.229 12.5821 521.229 12.9169C521.229 13.351 521.113 13.7239 520.881 14.0355C520.652 14.347 520.315 14.5857 519.871 14.7514C519.431 14.9171 518.892 15 518.256 15H514.497ZM516.471 13.414H518.256C518.551 13.414 518.781 13.3444 518.947 13.2052C519.116 13.0627 519.2 12.8688 519.2 12.6235C519.2 12.3518 519.116 12.138 518.947 11.9822C518.781 11.8264 518.551 11.7485 518.256 11.7485H516.471V13.414ZM516.471 10.5056H517.798C518.01 10.5056 518.191 10.4758 518.34 10.4161C518.493 10.3532 518.609 10.2637 518.688 10.1477C518.771 10.0317 518.812 9.89413 518.812 9.73504C518.812 9.49972 518.718 9.31577 518.529 9.18319C518.34 9.05062 518.082 8.98433 517.753 8.98433H516.471V10.5056Z" fill="#3F434B"/>
<path d="M522.563 15V7.36359H524.681V10.3267H525.278L527.356 7.36359H529.842L527.142 11.1519L529.872 15H527.356L525.472 12.2904H524.681V15H522.563Z" fill="#3F434B"/>
<path d="M532.79 12.2059L535.539 7.36359H537.627V15H535.609V10.1427L532.87 15H530.767V7.36359H532.79V12.2059Z" fill="#3F434B"/>
<path d="M461.149 35V27.3636H464.406C465.347 27.3636 466.091 27.5426 466.638 27.9005C467.185 28.2585 467.458 28.7672 467.458 29.4268C467.458 29.8411 467.304 30.1858 466.996 30.4609C466.688 30.736 466.26 30.9216 465.713 31.0177C466.171 31.0509 466.56 31.1553 466.882 31.3309C467.206 31.5033 467.453 31.727 467.622 32.0021C467.795 32.2772 467.881 32.5821 467.881 32.9169C467.881 33.351 467.765 33.7239 467.533 34.0355C467.304 34.347 466.968 34.5857 466.524 34.7514C466.083 34.9171 465.544 35 464.908 35H461.149ZM463.123 33.414H464.908C465.203 33.414 465.433 33.3444 465.599 33.2052C465.768 33.0627 465.853 32.8688 465.853 32.6235C465.853 32.3518 465.768 32.138 465.599 31.9822C465.433 31.8264 465.203 31.7485 464.908 31.7485H463.123V33.414ZM463.123 30.5056H464.451C464.663 30.5056 464.843 30.4758 464.992 30.4161C465.145 30.3532 465.261 30.2637 465.34 30.1477C465.423 30.0317 465.465 29.8941 465.465 29.735C465.465 29.4997 465.37 29.3158 465.181 29.1832C464.992 29.0506 464.734 28.9843 464.406 28.9843H463.123V30.5056Z" fill="#3F434B"/>
<path d="M472.456 35V27.3636H475.712C476.654 27.3636 477.398 27.5426 477.945 27.9005C478.492 28.2585 478.765 28.7672 478.765 29.4268C478.765 29.8411 478.611 30.1858 478.303 30.4609C477.994 30.736 477.567 30.9216 477.02 31.0177C477.477 31.0509 477.867 31.1553 478.188 31.3309C478.513 31.5033 478.76 31.727 478.929 32.0021C479.101 32.2772 479.188 32.5821 479.188 32.9169C479.188 33.351 479.072 33.7239 478.84 34.0355C478.611 34.347 478.274 34.5857 477.83 34.7514C477.39 34.9171 476.851 35 476.215 35H472.456ZM474.43 33.414H476.215C476.51 33.414 476.74 33.3444 476.906 33.2052C477.075 33.0627 477.159 32.8688 477.159 32.6235C477.159 32.3518 477.075 32.138 476.906 31.9822C476.74 31.8264 476.51 31.7485 476.215 31.7485H474.43V33.414ZM474.43 30.5056H475.757C475.969 30.5056 476.15 30.4758 476.299 30.4161C476.452 30.3532 476.568 30.2637 476.647 30.1477C476.73 30.0317 476.771 29.8941 476.771 29.735C476.771 29.4997 476.677 29.3158 476.488 29.1832C476.299 29.0506 476.041 28.9843 475.712 28.9843H474.43V30.5056Z" fill="#3F434B"/>
<path d="M483.973 35.1491C483.2 35.1491 482.533 34.985 481.969 34.6569C481.409 34.3255 480.977 33.8648 480.672 33.2748C480.367 32.6815 480.214 31.9938 480.214 31.2116C480.214 30.4228 480.367 29.7334 480.672 29.1434C480.977 28.5501 481.409 28.0894 481.969 27.7613C482.533 27.4299 483.2 27.2642 483.973 27.2642C484.745 27.2642 485.411 27.4299 485.971 27.7613C486.535 28.0894 486.969 28.5501 487.274 29.1434C487.579 29.7334 487.731 30.4228 487.731 31.2116C487.731 31.9938 487.579 32.6815 487.274 33.2748C486.969 33.8648 486.535 34.3255 485.971 34.6569C485.411 34.985 484.745 35.1491 483.973 35.1491ZM483.983 33.5085C484.334 33.5085 484.627 33.409 484.863 33.2102C485.098 33.008 485.275 32.7329 485.395 32.3849C485.517 32.0369 485.579 31.6408 485.579 31.1967C485.579 30.7526 485.517 30.3565 485.395 30.0085C485.275 29.6605 485.098 29.3854 484.863 29.1832C484.627 28.981 484.334 28.8799 483.983 28.8799C483.628 28.8799 483.33 28.981 483.088 29.1832C482.849 29.3854 482.669 29.6605 482.546 30.0085C482.427 30.3565 482.367 30.7526 482.367 31.1967C482.367 31.6408 482.427 32.0369 482.546 32.3849C482.669 32.7329 482.849 33.008 483.088 33.2102C483.33 33.409 483.628 33.5085 483.983 33.5085Z" fill="#3F434B"/>
<path d="M492.589 35.1491C491.803 35.1491 491.127 34.99 490.56 34.6718C489.997 34.3503 489.562 33.8963 489.258 33.3096C488.953 32.7197 488.8 32.022 488.8 31.2166C488.8 30.4311 488.953 29.7417 489.258 29.1484C489.562 28.5551 489.992 28.0928 490.545 27.7613C491.102 27.4299 491.755 27.2642 492.504 27.2642C493.008 27.2642 493.477 27.3454 493.911 27.5078C494.348 27.6669 494.73 27.9072 495.054 28.2286C495.383 28.5501 495.638 28.9545 495.82 29.4417C496.002 29.9256 496.093 30.4924 496.093 31.142V31.7237H489.645V30.4112H494.1C494.1 30.1063 494.034 29.8361 493.901 29.6008C493.768 29.3655 493.584 29.1815 493.349 29.049C493.117 28.9131 492.847 28.8451 492.539 28.8451C492.217 28.8451 491.932 28.9197 491.684 29.0688C491.438 29.2147 491.246 29.4119 491.107 29.6605C490.968 29.9057 490.897 30.1792 490.893 30.4808V31.7286C490.893 32.1065 490.963 32.433 491.102 32.7081C491.245 32.9831 491.445 33.1953 491.704 33.3444C491.962 33.4936 492.269 33.5681 492.623 33.5681C492.859 33.5681 493.074 33.535 493.27 33.4687C493.465 33.4024 493.633 33.303 493.772 33.1704C493.911 33.0378 494.017 32.8754 494.09 32.6832L496.049 32.8125C495.949 33.2831 495.745 33.6941 495.437 34.0454C495.132 34.3934 494.738 34.6652 494.254 34.8608C493.773 35.053 493.218 35.1491 492.589 35.1491Z" fill="#3F434B"/>
<path d="M502.79 30.3366V32.0021H498.803V30.3366H502.79ZM499.499 27.3636V35H497.476V27.3636H499.499ZM504.118 27.3636V35H502.109V27.3636H504.118Z" fill="#3F434B"/>
<path d="M505.761 35V27.3636H507.879V30.3267H508.475L510.553 27.3636H513.039L510.34 31.1519L513.069 35H510.553L508.669 32.2904H507.879V35H505.761Z" fill="#3F434B"/>
<path d="M517.1 35.1491C516.327 35.1491 515.66 34.985 515.096 34.6569C514.536 34.3255 514.103 33.8648 513.799 33.2748C513.494 32.6815 513.341 31.9938 513.341 31.2116C513.341 30.4228 513.494 29.7334 513.799 29.1434C514.103 28.5501 514.536 28.0894 515.096 27.7613C515.66 27.4299 516.327 27.2642 517.1 27.2642C517.872 27.2642 518.538 27.4299 519.098 27.7613C519.662 28.0894 520.096 28.5501 520.401 29.1434C520.706 29.7334 520.858 30.4228 520.858 31.2116C520.858 31.9938 520.706 32.6815 520.401 33.2748C520.096 33.8648 519.662 34.3255 519.098 34.6569C518.538 34.985 517.872 35.1491 517.1 35.1491ZM517.11 33.5085C517.461 33.5085 517.754 33.409 517.99 33.2102C518.225 33.008 518.402 32.7329 518.522 32.3849C518.644 32.0369 518.706 31.6408 518.706 31.1967C518.706 30.7526 518.644 30.3565 518.522 30.0085C518.402 29.6605 518.225 29.3854 517.99 29.1832C517.754 28.981 517.461 28.8799 517.11 28.8799C516.755 28.8799 516.457 28.981 516.215 29.1832C515.976 29.3854 515.795 29.6605 515.673 30.0085C515.554 30.3565 515.494 30.7526 515.494 31.1967C515.494 31.6408 515.554 32.0369 515.673 32.3849C515.795 32.7329 515.976 33.008 516.215 33.2102C516.457 33.409 516.755 33.5085 517.11 33.5085Z" fill="#3F434B"/>
<path d="M526.75 32.6583L528.818 27.3636H530.429L527.451 35H526.044L523.135 27.3636H524.741L526.75 32.6583ZM524.259 27.3636V35H522.235V27.3636H524.259ZM529.345 35V27.3636H531.343V35H529.345Z" fill="#3F434B"/>
<path d="M535.159 35.1441C534.672 35.1441 534.238 35.0596 533.856 34.8906C533.475 34.7182 533.174 34.4647 532.952 34.1299C532.733 33.7919 532.623 33.3709 532.623 32.8671C532.623 32.4429 532.701 32.0866 532.857 31.7983C533.013 31.5099 533.225 31.2779 533.494 31.1022C533.762 30.9266 534.067 30.794 534.408 30.7045C534.753 30.615 535.114 30.552 535.492 30.5156C535.936 30.4692 536.294 30.4261 536.566 30.3863C536.838 30.3432 537.035 30.2803 537.158 30.1974C537.28 30.1145 537.342 29.9919 537.342 29.8295V29.7997C537.342 29.4848 537.242 29.2412 537.043 29.0688C536.848 28.8965 536.569 28.8103 536.208 28.8103C535.827 28.8103 535.524 28.8948 535.298 29.0639C535.073 29.2296 534.924 29.4384 534.851 29.6903L532.892 29.5312C532.991 29.0672 533.187 28.6661 533.479 28.3281C533.77 27.9867 534.146 27.7249 534.607 27.5426C535.071 27.357 535.608 27.2642 536.218 27.2642C536.642 27.2642 537.048 27.3139 537.436 27.4133C537.827 27.5127 538.173 27.6669 538.475 27.8757C538.78 28.0845 539.02 28.3529 539.196 28.6811C539.372 29.0059 539.459 29.3953 539.459 29.8494V35H537.451V33.941H537.391C537.269 34.1796 537.105 34.3901 536.899 34.5724C536.694 34.7514 536.447 34.8922 536.158 34.995C535.87 35.0944 535.537 35.1441 535.159 35.1441ZM535.766 33.6825C536.077 33.6825 536.352 33.6212 536.591 33.4985C536.829 33.3726 537.017 33.2036 537.153 32.9914C537.288 32.7793 537.356 32.539 537.356 32.2706V31.4602C537.29 31.5033 537.199 31.543 537.083 31.5795C536.97 31.6126 536.843 31.6441 536.7 31.674C536.558 31.7005 536.415 31.7253 536.273 31.7485C536.13 31.7684 536.001 31.7867 535.885 31.8032C535.636 31.8397 535.419 31.8977 535.234 31.9772C535.048 32.0568 534.904 32.1645 534.801 32.3004C534.698 32.433 534.647 32.5987 534.647 32.7975C534.647 33.0859 534.751 33.3063 534.96 33.4588C535.172 33.6079 535.441 33.6825 535.766 33.6825Z" fill="#3F434B"/>
<path d="M540.336 29.0291V27.3636H547.256V29.0291H544.795V35H542.777V29.0291H540.336Z" fill="#3F434B"/>
<path d="M629.248 123V121.449L632.872 118.093C633.18 117.795 633.439 117.526 633.648 117.288C633.86 117.049 634.02 116.815 634.13 116.587C634.239 116.355 634.294 116.104 634.294 115.836C634.294 115.538 634.226 115.281 634.09 115.065C633.954 114.847 633.769 114.679 633.533 114.563C633.298 114.444 633.031 114.384 632.733 114.384C632.421 114.384 632.149 114.447 631.917 114.573C631.685 114.699 631.506 114.88 631.38 115.115C631.255 115.35 631.192 115.63 631.192 115.955H629.148C629.148 115.289 629.299 114.711 629.601 114.22C629.902 113.73 630.325 113.35 630.868 113.082C631.412 112.813 632.038 112.679 632.748 112.679C633.477 112.679 634.112 112.808 634.652 113.067C635.195 113.322 635.618 113.677 635.92 114.131C636.221 114.585 636.372 115.105 636.372 115.692C636.372 116.076 636.296 116.456 636.143 116.83C635.994 117.205 635.727 117.621 635.343 118.078C634.958 118.532 634.416 119.077 633.717 119.714L632.231 121.17V121.24H636.506V123H629.248Z" fill="#3F434B"/>
<path d="M642.058 123.224C641.203 123.22 640.467 123.01 639.851 122.592C639.238 122.175 638.765 121.57 638.434 120.778C638.106 119.986 637.943 119.033 637.947 117.919C637.947 116.809 638.111 115.862 638.439 115.08C638.77 114.298 639.243 113.703 639.856 113.295C640.472 112.884 641.206 112.679 642.058 112.679C642.91 112.679 643.643 112.884 644.256 113.295C644.872 113.706 645.346 114.303 645.678 115.085C646.009 115.864 646.173 116.809 646.17 117.919C646.17 119.036 646.004 119.991 645.673 120.783C645.344 121.575 644.874 122.18 644.261 122.597C643.647 123.015 642.913 123.224 642.058 123.224ZM642.058 121.439C642.642 121.439 643.107 121.146 643.455 120.559C643.803 119.972 643.976 119.092 643.972 117.919C643.972 117.147 643.893 116.504 643.734 115.99C643.578 115.476 643.356 115.09 643.067 114.832C642.782 114.573 642.446 114.444 642.058 114.444C641.478 114.444 641.014 114.734 640.666 115.314C640.318 115.894 640.143 116.762 640.139 117.919C640.139 118.701 640.217 119.354 640.373 119.878C640.532 120.398 640.756 120.789 641.044 121.051C641.332 121.31 641.67 121.439 642.058 121.439Z" fill="#3F434B"/>
<path d="M650.368 125.237V121.32H650.955C651.124 121.214 651.26 121.044 651.363 120.812C651.469 120.58 651.555 120.307 651.621 119.992C651.691 119.677 651.744 119.338 651.78 118.973C651.82 118.605 651.855 118.234 651.885 117.859L652.083 115.364H657.94V121.32H659.123V125.237H657.105V123H652.436V125.237H650.368ZM653.063 121.32H655.941V116.994H653.883L653.804 117.859C653.747 118.675 653.666 119.367 653.56 119.937C653.454 120.504 653.288 120.965 653.063 121.32Z" fill="#3F434B"/>
<path d="M665.672 118.337V120.002H661.685V118.337H665.672ZM662.381 115.364V123H660.357V115.364H662.381ZM666.999 115.364V123H664.991V115.364H666.999Z" fill="#3F434B"/>
<path d="M672.123 123.149C671.337 123.149 670.661 122.99 670.094 122.672C669.531 122.35 669.097 121.896 668.792 121.31C668.487 120.72 668.334 120.022 668.334 119.217C668.334 118.431 668.487 117.742 668.792 117.148C669.097 116.555 669.526 116.093 670.079 115.761C670.636 115.43 671.289 115.264 672.038 115.264C672.542 115.264 673.011 115.345 673.445 115.508C673.883 115.667 674.264 115.907 674.589 116.229C674.917 116.55 675.172 116.955 675.354 117.442C675.537 117.926 675.628 118.492 675.628 119.142V119.724H669.18V118.411H673.634C673.634 118.106 673.568 117.836 673.435 117.601C673.303 117.366 673.119 117.182 672.883 117.049C672.651 116.913 672.381 116.845 672.073 116.845C671.751 116.845 671.466 116.92 671.218 117.069C670.973 117.215 670.78 117.412 670.641 117.66C670.502 117.906 670.431 118.179 670.427 118.481V119.729C670.427 120.107 670.497 120.433 670.636 120.708C670.779 120.983 670.979 121.195 671.238 121.344C671.496 121.494 671.803 121.568 672.157 121.568C672.393 121.568 672.608 121.535 672.804 121.469C672.999 121.402 673.167 121.303 673.306 121.17C673.445 121.038 673.551 120.875 673.624 120.683L675.583 120.812C675.483 121.283 675.28 121.694 674.971 122.045C674.666 122.393 674.272 122.665 673.788 122.861C673.308 123.053 672.752 123.149 672.123 123.149Z" fill="#3F434B"/>
<path d="M679.033 120.206L681.782 115.364H683.871V123H681.852V118.143L679.113 123H677.01V115.364H679.033V120.206ZM681.42 112.699H682.896C682.893 113.302 682.669 113.788 682.225 114.156C681.784 114.523 681.188 114.707 680.435 114.707C679.68 114.707 679.081 114.523 678.64 114.156C678.2 113.788 677.979 113.302 677.979 112.699H679.446C679.443 112.928 679.515 113.133 679.665 113.315C679.817 113.498 680.074 113.589 680.435 113.589C680.787 113.589 681.038 113.499 681.191 113.32C681.343 113.141 681.42 112.934 681.42 112.699Z" fill="#3F434B"/>
<path d="M688.809 123V115.364H695.485V123H693.462V117.029H690.807V123H688.809Z" fill="#3F434B"/>
<path d="M697.176 125.864V115.364H699.264V116.646H699.358C699.451 116.441 699.585 116.232 699.761 116.02C699.94 115.804 700.172 115.625 700.457 115.483C700.745 115.337 701.103 115.264 701.531 115.264C702.088 115.264 702.601 115.41 703.072 115.702C703.543 115.99 703.919 116.426 704.201 117.009C704.482 117.589 704.623 118.317 704.623 119.192C704.623 120.044 704.486 120.763 704.211 121.349C703.939 121.933 703.568 122.375 703.097 122.677C702.63 122.975 702.106 123.124 701.526 123.124C701.115 123.124 700.765 123.056 700.477 122.92C700.192 122.785 699.958 122.614 699.776 122.408C699.594 122.2 699.454 121.989 699.358 121.777H699.294V125.864H697.176ZM699.249 119.182C699.249 119.636 699.312 120.032 699.438 120.37C699.564 120.708 699.746 120.972 699.985 121.16C700.223 121.346 700.513 121.439 700.855 121.439C701.199 121.439 701.491 121.344 701.73 121.156C701.968 120.963 702.149 120.698 702.272 120.36C702.398 120.019 702.461 119.626 702.461 119.182C702.461 118.741 702.399 118.353 702.277 118.018C702.154 117.684 701.973 117.422 701.735 117.233C701.496 117.044 701.203 116.95 700.855 116.95C700.51 116.95 700.218 117.041 699.98 117.223C699.744 117.405 699.564 117.664 699.438 117.999C699.312 118.333 699.249 118.728 699.249 119.182Z" fill="#3F434B"/>
<path d="M709.485 123.149C708.713 123.149 708.045 122.985 707.482 122.657C706.922 122.325 706.489 121.865 706.184 121.275C705.879 120.682 705.727 119.994 705.727 119.212C705.727 118.423 705.879 117.733 706.184 117.143C706.489 116.55 706.922 116.089 707.482 115.761C708.045 115.43 708.713 115.264 709.485 115.264C710.258 115.264 710.924 115.43 711.484 115.761C712.047 116.089 712.482 116.55 712.787 117.143C713.091 117.733 713.244 118.423 713.244 119.212C713.244 119.994 713.091 120.682 712.787 121.275C712.482 121.865 712.047 122.325 711.484 122.657C710.924 122.985 710.258 123.149 709.485 123.149ZM709.495 121.509C709.847 121.509 710.14 121.409 710.375 121.21C710.611 121.008 710.788 120.733 710.907 120.385C711.03 120.037 711.091 119.641 711.091 119.197C711.091 118.753 711.03 118.357 710.907 118.009C710.788 117.66 710.611 117.385 710.375 117.183C710.14 116.981 709.847 116.88 709.495 116.88C709.141 116.88 708.842 116.981 708.6 117.183C708.362 117.385 708.181 117.66 708.059 118.009C707.939 118.357 707.88 118.753 707.88 119.197C707.88 119.641 707.939 120.037 708.059 120.385C708.181 120.733 708.362 121.008 708.6 121.21C708.842 121.409 709.141 121.509 709.495 121.509Z" fill="#3F434B"/>
<path d="M718.071 123.149C717.289 123.149 716.616 122.983 716.053 122.652C715.493 122.317 715.062 121.853 714.76 121.26C714.462 120.667 714.313 119.984 714.313 119.212C714.313 118.429 714.464 117.743 714.765 117.153C715.07 116.56 715.503 116.098 716.063 115.766C716.623 115.432 717.289 115.264 718.061 115.264C718.728 115.264 719.311 115.385 719.811 115.627C720.312 115.869 720.708 116.209 721 116.646C721.291 117.084 721.452 117.598 721.482 118.187H719.483C719.427 117.806 719.278 117.5 719.036 117.268C718.797 117.032 718.484 116.915 718.096 116.915C717.768 116.915 717.481 117.004 717.236 117.183C716.994 117.359 716.805 117.616 716.669 117.954C716.533 118.292 716.466 118.701 716.466 119.182C716.466 119.669 716.532 120.083 716.664 120.425C716.8 120.766 716.991 121.026 717.236 121.205C717.481 121.384 717.768 121.474 718.096 121.474C718.338 121.474 718.555 121.424 718.748 121.325C718.943 121.225 719.104 121.081 719.23 120.892C719.359 120.7 719.444 120.469 719.483 120.201H721.482C721.449 120.784 721.29 121.298 721.005 121.742C720.723 122.183 720.333 122.528 719.836 122.776C719.339 123.025 718.751 123.149 718.071 123.149Z" fill="#3F434B"/>
<path d="M722.838 125.864V115.364H724.926V116.646H725.02C725.113 116.441 725.247 116.232 725.423 116.02C725.602 115.804 725.834 115.625 726.119 115.483C726.407 115.337 726.765 115.264 727.193 115.264C727.75 115.264 728.264 115.41 728.734 115.702C729.205 115.99 729.581 116.426 729.863 117.009C730.144 117.589 730.285 118.317 730.285 119.192C730.285 120.044 730.148 120.763 729.873 121.349C729.601 121.933 729.23 122.375 728.759 122.677C728.292 122.975 727.768 123.124 727.188 123.124C726.777 123.124 726.427 123.056 726.139 122.92C725.854 122.785 725.62 122.614 725.438 122.408C725.256 122.2 725.117 121.989 725.02 121.777H724.956V125.864H722.838ZM724.911 119.182C724.911 119.636 724.974 120.032 725.1 120.37C725.226 120.708 725.408 120.972 725.647 121.16C725.885 121.346 726.175 121.439 726.517 121.439C726.862 121.439 727.153 121.344 727.392 121.156C727.631 120.963 727.811 120.698 727.934 120.36C728.06 120.019 728.123 119.626 728.123 119.182C728.123 118.741 728.061 118.353 727.939 118.018C727.816 117.684 727.635 117.422 727.397 117.233C727.158 117.044 726.865 116.95 726.517 116.95C726.172 116.95 725.881 117.041 725.642 117.223C725.407 117.405 725.226 117.664 725.1 117.999C724.974 118.333 724.911 118.728 724.911 119.182Z" fill="#3F434B"/>
<path d="M735.148 123.149C734.375 123.149 733.707 122.985 733.144 122.657C732.584 122.325 732.151 121.865 731.846 121.275C731.541 120.682 731.389 119.994 731.389 119.212C731.389 118.423 731.541 117.733 731.846 117.143C732.151 116.55 732.584 116.089 733.144 115.761C733.707 115.43 734.375 115.264 735.148 115.264C735.92 115.264 736.586 115.43 737.146 115.761C737.71 116.089 738.144 116.55 738.449 117.143C738.754 117.733 738.906 118.423 738.906 119.212C738.906 119.994 738.754 120.682 738.449 121.275C738.144 121.865 737.71 122.325 737.146 122.657C736.586 122.985 735.92 123.149 735.148 123.149ZM735.157 121.509C735.509 121.509 735.802 121.409 736.037 121.21C736.273 121.008 736.45 120.733 736.569 120.385C736.692 120.037 736.753 119.641 736.753 119.197C736.753 118.753 736.692 118.357 736.569 118.009C736.45 117.66 736.273 117.385 736.037 117.183C735.802 116.981 735.509 116.88 735.157 116.88C734.803 116.88 734.505 116.981 734.263 117.183C734.024 117.385 733.843 117.66 733.721 118.009C733.601 118.357 733.542 118.753 733.542 119.197C733.542 119.641 733.601 120.037 733.721 120.385C733.843 120.733 734.024 121.008 734.263 121.21C734.505 121.409 734.803 121.509 735.157 121.509Z" fill="#3F434B"/>
<path d="M746.91 115.364V123H744.902V115.364H746.91ZM745.931 118.714V120.385C745.769 120.458 745.566 120.527 745.324 120.594C745.082 120.657 744.829 120.708 744.564 120.748C744.299 120.788 744.05 120.808 743.818 120.808C742.721 120.808 741.858 120.582 741.228 120.131C740.598 119.677 740.283 118.953 740.283 117.959V115.354H742.282V117.959C742.282 118.254 742.331 118.487 742.431 118.66C742.534 118.832 742.696 118.956 742.918 119.033C743.144 119.106 743.443 119.142 743.818 119.142C744.166 119.142 744.507 119.106 744.842 119.033C745.177 118.96 745.54 118.854 745.931 118.714Z" fill="#3F434B"/>
<path d="M748.555 123V115.364H750.673V118.327H751.269L753.347 115.364H755.833L753.134 119.152L755.863 123H753.347L751.463 120.29H750.673V123H748.555Z" fill="#3F434B"/>
<path d="M758.781 120.206L761.531 115.364H763.619V123H761.6V118.143L758.861 123H756.758V115.364H758.781V120.206Z" fill="#3F434B"/>
<path d="M772.007 123.149C771.225 123.149 770.552 122.983 769.988 122.652C769.428 122.317 768.997 121.853 768.696 121.26C768.398 120.667 768.248 119.984 768.248 119.212C768.248 118.429 768.399 117.743 768.701 117.153C769.006 116.56 769.438 116.098 769.998 115.766C770.559 115.432 771.225 115.264 771.997 115.264C772.663 115.264 773.247 115.385 773.747 115.627C774.247 115.869 774.644 116.209 774.935 116.646C775.227 117.084 775.388 117.598 775.417 118.187H773.419C773.363 117.806 773.213 117.5 772.971 117.268C772.733 117.032 772.42 116.915 772.032 116.915C771.704 116.915 771.417 117.004 771.172 117.183C770.93 117.359 770.741 117.616 770.605 117.954C770.469 118.292 770.401 118.701 770.401 119.182C770.401 119.669 770.467 120.083 770.6 120.425C770.736 120.766 770.926 121.026 771.172 121.205C771.417 121.384 771.704 121.474 772.032 121.474C772.274 121.474 772.491 121.424 772.683 121.325C772.879 121.225 773.039 121.081 773.165 120.892C773.295 120.7 773.379 120.469 773.419 120.201H775.417C775.384 120.784 775.225 121.298 774.94 121.742C774.658 122.183 774.269 122.528 773.772 122.776C773.275 123.025 772.686 123.149 772.007 123.149Z" fill="#3F434B"/>
<path d="M779.417 125.237V121.32H780.004C780.173 121.214 780.309 121.044 780.411 120.812C780.517 120.58 780.604 120.307 780.67 119.992C780.74 119.677 780.793 119.338 780.829 118.973C780.869 118.605 780.904 118.234 780.933 117.859L781.132 115.364H786.989V121.32H788.172V125.237H786.154V123H781.485V125.237H779.417ZM782.112 121.32H784.99V116.994H782.932L782.852 117.859C782.796 118.675 782.715 119.367 782.609 119.937C782.503 120.504 782.337 120.965 782.112 121.32Z" fill="#3F434B"/>
<path d="M791.584 123.144C791.097 123.144 790.662 123.06 790.281 122.891C789.9 122.718 789.598 122.465 789.376 122.13C789.158 121.792 789.048 121.371 789.048 120.867C789.048 120.443 789.126 120.087 789.282 119.798C789.438 119.51 789.65 119.278 789.918 119.102C790.187 118.927 790.492 118.794 790.833 118.705C791.178 118.615 791.539 118.552 791.917 118.516C792.361 118.469 792.719 118.426 792.991 118.386C793.263 118.343 793.46 118.28 793.582 118.197C793.705 118.115 793.766 117.992 793.766 117.83V117.8C793.766 117.485 793.667 117.241 793.468 117.069C793.272 116.897 792.994 116.81 792.633 116.81C792.252 116.81 791.948 116.895 791.723 117.064C791.498 117.23 791.348 117.438 791.276 117.69L789.317 117.531C789.416 117.067 789.612 116.666 789.903 116.328C790.195 115.987 790.571 115.725 791.032 115.543C791.496 115.357 792.033 115.264 792.643 115.264C793.067 115.264 793.473 115.314 793.861 115.413C794.252 115.513 794.598 115.667 794.9 115.876C795.205 116.084 795.445 116.353 795.621 116.681C795.796 117.006 795.884 117.395 795.884 117.849V123H793.876V121.941H793.816C793.693 122.18 793.529 122.39 793.324 122.572C793.118 122.751 792.871 122.892 792.583 122.995C792.295 123.094 791.962 123.144 791.584 123.144ZM792.19 121.683C792.502 121.683 792.777 121.621 793.016 121.499C793.254 121.373 793.442 121.204 793.577 120.991C793.713 120.779 793.781 120.539 793.781 120.271V119.46C793.715 119.503 793.624 119.543 793.508 119.58C793.395 119.613 793.268 119.644 793.125 119.674C792.982 119.7 792.84 119.725 792.697 119.749C792.555 119.768 792.426 119.787 792.31 119.803C792.061 119.84 791.844 119.898 791.658 119.977C791.473 120.057 791.329 120.165 791.226 120.3C791.123 120.433 791.072 120.599 791.072 120.798C791.072 121.086 791.176 121.306 791.385 121.459C791.597 121.608 791.866 121.683 792.19 121.683Z" fill="#3F434B"/>
<path d="M796.76 117.029V115.364H803.681V117.029H801.22V123H799.202V117.029H796.76Z" fill="#3F434B"/>
<path d="M806.292 117.71H808.574C809.585 117.71 810.374 117.952 810.941 118.436C811.507 118.917 811.791 119.56 811.791 120.365C811.791 120.889 811.663 121.349 811.408 121.747C811.153 122.142 810.785 122.45 810.304 122.672C809.824 122.891 809.247 123 808.574 123H804.965V115.364H806.988V121.334H808.574C808.929 121.334 809.221 121.245 809.449 121.066C809.678 120.887 809.794 120.658 809.797 120.38C809.794 120.085 809.678 119.845 809.449 119.659C809.221 119.47 808.929 119.376 808.574 119.376H806.292V117.71ZM812.611 123V115.364H814.729V123H812.611Z" fill="#3F434B"/>
<path d="M665.543 143V137.024H664.111C663.723 137.024 663.428 137.114 663.226 137.293C663.024 137.472 662.924 137.684 662.928 137.929C662.924 138.178 663.021 138.388 663.216 138.56C663.415 138.729 663.707 138.814 664.091 138.814H666.249V140.246H664.091C663.438 140.246 662.873 140.146 662.396 139.947C661.918 139.749 661.551 139.472 661.292 139.117C661.034 138.759 660.906 138.343 660.909 137.869C660.906 137.372 661.034 136.936 661.292 136.562C661.551 136.184 661.92 135.891 662.401 135.682C662.885 135.47 663.455 135.364 664.111 135.364H667.517V143H665.543ZM660.691 143L662.813 139.023H664.837L662.719 143H660.691Z" fill="#3F434B"/>
<path d="M669.162 143V135.364H672.418C673.36 135.364 674.104 135.543 674.651 135.901C675.198 136.259 675.471 136.767 675.471 137.427C675.471 137.841 675.317 138.186 675.009 138.461C674.7 138.736 674.273 138.922 673.726 139.018C674.183 139.051 674.573 139.155 674.894 139.331C675.219 139.503 675.466 139.727 675.635 140.002C675.807 140.277 675.894 140.582 675.894 140.917C675.894 141.351 675.778 141.724 675.546 142.035C675.317 142.347 674.981 142.586 674.536 142.751C674.096 142.917 673.557 143 672.921 143H669.162ZM671.136 141.414H672.921C673.216 141.414 673.446 141.344 673.612 141.205C673.781 141.063 673.865 140.869 673.865 140.624C673.865 140.352 673.781 140.138 673.612 139.982C673.446 139.826 673.216 139.749 672.921 139.749H671.136V141.414ZM671.136 138.506H672.463C672.675 138.506 672.856 138.476 673.005 138.416C673.158 138.353 673.274 138.264 673.353 138.148C673.436 138.032 673.477 137.894 673.477 137.735C673.477 137.5 673.383 137.316 673.194 137.183C673.005 137.051 672.747 136.984 672.418 136.984H671.136V138.506Z" fill="#3F434B"/>
<path d="M677.229 143V135.364H679.346V138.327H679.943L682.021 135.364H684.507L681.807 139.152L684.537 143H682.021L680.137 140.29H679.346V143H677.229Z" fill="#3F434B"/>
<path d="M687.455 140.206L690.204 135.364H692.292V143H690.274V138.143L687.535 143H685.432V135.364H687.455V140.206Z" fill="#3F434B"/>
<path d="M697.23 143V135.364H700.487C701.428 135.364 702.172 135.543 702.719 135.901C703.266 136.259 703.539 136.767 703.539 137.427C703.539 137.841 703.385 138.186 703.077 138.461C702.769 138.736 702.341 138.922 701.794 139.018C702.252 139.051 702.641 139.155 702.963 139.331C703.288 139.503 703.534 139.727 703.703 140.002C703.876 140.277 703.962 140.582 703.962 140.917C703.962 141.351 703.846 141.724 703.614 142.035C703.385 142.347 703.049 142.586 702.605 142.751C702.164 142.917 701.625 143 700.989 143H697.23ZM699.204 141.414H700.989C701.284 141.414 701.514 141.344 701.68 141.205C701.849 141.063 701.934 140.869 701.934 140.624C701.934 140.352 701.849 140.138 701.68 139.982C701.514 139.826 701.284 139.749 700.989 139.749H699.204V141.414ZM699.204 138.506H700.532C700.744 138.506 700.924 138.476 701.074 138.416C701.226 138.353 701.342 138.264 701.422 138.148C701.504 138.032 701.546 137.894 701.546 137.735C701.546 137.5 701.451 137.316 701.262 137.183C701.074 137.051 700.815 136.984 700.487 136.984H699.204V138.506Z" fill="#3F434B"/>
<path d="M708.537 143V135.364H711.793C712.735 135.364 713.479 135.543 714.026 135.901C714.573 136.259 714.846 136.767 714.846 137.427C714.846 137.841 714.692 138.186 714.384 138.461C714.075 138.736 713.648 138.922 713.101 139.018C713.558 139.051 713.948 139.155 714.269 139.331C714.594 139.503 714.841 139.727 715.01 140.002C715.182 140.277 715.269 140.582 715.269 140.917C715.269 141.351 715.153 141.724 714.921 142.035C714.692 142.347 714.356 142.586 713.911 142.751C713.471 142.917 712.932 143 712.296 143H708.537ZM710.511 141.414H712.296C712.591 141.414 712.821 141.344 712.987 141.205C713.156 141.063 713.24 140.869 713.24 140.624C713.24 140.352 713.156 140.138 712.987 139.982C712.821 139.826 712.591 139.749 712.296 139.749H710.511V141.414ZM710.511 138.506H711.838C712.05 138.506 712.231 138.476 712.38 138.416C712.533 138.353 712.649 138.264 712.728 138.148C712.811 138.032 712.852 137.894 712.852 137.735C712.852 137.5 712.758 137.316 712.569 137.183C712.38 137.051 712.122 136.984 711.793 136.984H710.511V138.506Z" fill="#3F434B"/>
<path d="M720.054 143.149C719.282 143.149 718.614 142.985 718.05 142.657C717.49 142.325 717.058 141.865 716.753 141.275C716.448 140.682 716.295 139.994 716.295 139.212C716.295 138.423 716.448 137.733 716.753 137.143C717.058 136.55 717.49 136.089 718.05 135.761C718.614 135.43 719.282 135.264 720.054 135.264C720.826 135.264 721.492 135.43 722.052 135.761C722.616 136.089 723.05 136.55 723.355 137.143C723.66 137.733 723.812 138.423 723.812 139.212C723.812 139.994 723.66 140.682 723.355 141.275C723.05 141.865 722.616 142.325 722.052 142.657C721.492 142.985 720.826 143.149 720.054 143.149ZM720.064 141.508C720.415 141.508 720.708 141.409 720.944 141.21C721.179 141.008 721.356 140.733 721.476 140.385C721.598 140.037 721.66 139.641 721.66 139.197C721.66 138.753 721.598 138.357 721.476 138.008C721.356 137.66 721.179 137.385 720.944 137.183C720.708 136.981 720.415 136.88 720.064 136.88C719.709 136.88 719.411 136.981 719.169 137.183C718.93 137.385 718.75 137.66 718.627 138.008C718.508 138.357 718.448 138.753 718.448 139.197C718.448 139.641 718.508 140.037 718.627 140.385C718.75 140.733 718.93 141.008 719.169 141.21C719.411 141.409 719.709 141.508 720.064 141.508Z" fill="#3F434B"/>
<path d="M728.67 143.149C727.884 143.149 727.208 142.99 726.641 142.672C726.078 142.35 725.644 141.896 725.339 141.31C725.034 140.72 724.881 140.022 724.881 139.217C724.881 138.431 725.034 137.742 725.339 137.148C725.644 136.555 726.073 136.093 726.626 135.761C727.183 135.43 727.836 135.264 728.585 135.264C729.089 135.264 729.558 135.345 729.992 135.508C730.43 135.667 730.811 135.907 731.135 136.229C731.464 136.55 731.719 136.955 731.901 137.442C732.083 137.926 732.175 138.492 732.175 139.142V139.724H725.726V138.411H730.181C730.181 138.106 730.115 137.836 729.982 137.601C729.849 137.366 729.666 137.182 729.43 137.049C729.198 136.913 728.928 136.845 728.62 136.845C728.298 136.845 728.013 136.92 727.765 137.069C727.519 137.215 727.327 137.412 727.188 137.66C727.049 137.906 726.978 138.179 726.974 138.481V139.729C726.974 140.107 727.044 140.433 727.183 140.708C727.326 140.983 727.526 141.195 727.785 141.344C728.043 141.494 728.35 141.568 728.704 141.568C728.94 141.568 729.155 141.535 729.351 141.469C729.546 141.402 729.714 141.303 729.853 141.17C729.992 141.038 730.098 140.875 730.171 140.683L732.13 140.812C732.03 141.283 731.827 141.694 731.518 142.045C731.213 142.393 730.819 142.665 730.335 142.861C729.854 143.053 729.299 143.149 728.67 143.149Z" fill="#3F434B"/>
<path d="M738.871 138.337V140.002H734.884V138.337H738.871ZM735.58 135.364V143H733.557V135.364H735.58ZM740.199 135.364V143H738.19V135.364H740.199Z" fill="#3F434B"/>
<path d="M741.842 143V135.364H743.96V138.327H744.556L746.634 135.364H749.12L746.421 139.152L749.15 143H746.634L744.75 140.29H743.96V143H741.842Z" fill="#3F434B"/>
<path d="M753.181 143.149C752.408 143.149 751.741 142.985 751.177 142.657C750.617 142.325 750.185 141.865 749.88 141.275C749.575 140.682 749.422 139.994 749.422 139.212C749.422 138.423 749.575 137.733 749.88 137.143C750.185 136.55 750.617 136.089 751.177 135.761C751.741 135.43 752.408 135.264 753.181 135.264C753.953 135.264 754.619 135.43 755.179 135.761C755.743 136.089 756.177 136.55 756.482 137.143C756.787 137.733 756.939 138.423 756.939 139.212C756.939 139.994 756.787 140.682 756.482 141.275C756.177 141.865 755.743 142.325 755.179 142.657C754.619 142.985 753.953 143.149 753.181 143.149ZM753.191 141.508C753.542 141.508 753.835 141.409 754.071 141.21C754.306 141.008 754.483 140.733 754.603 140.385C754.725 140.037 754.787 139.641 754.787 139.197C754.787 138.753 754.725 138.357 754.603 138.008C754.483 137.66 754.306 137.385 754.071 137.183C753.835 136.981 753.542 136.88 753.191 136.88C752.836 136.88 752.538 136.981 752.296 137.183C752.057 137.385 751.877 137.66 751.754 138.008C751.635 138.357 751.575 138.753 751.575 139.197C751.575 139.641 751.635 140.037 751.754 140.385C751.877 140.733 752.057 141.008 752.296 141.21C752.538 141.409 752.836 141.508 753.191 141.508Z" fill="#3F434B"/>
<path d="M762.831 140.658L764.899 135.364H766.51L763.532 143H762.125L759.216 135.364H760.822L762.831 140.658ZM760.34 135.364V143H758.316V135.364H760.34ZM765.426 143V135.364H767.424V143H765.426Z" fill="#3F434B"/>
<path d="M771.24 143.144C770.753 143.144 770.319 143.06 769.938 142.891C769.556 142.718 769.255 142.465 769.033 142.13C768.814 141.792 768.705 141.371 768.705 140.867C768.705 140.443 768.782 140.087 768.938 139.798C769.094 139.51 769.306 139.278 769.575 139.102C769.843 138.927 770.148 138.794 770.489 138.705C770.834 138.615 771.195 138.552 771.573 138.516C772.017 138.469 772.375 138.426 772.647 138.386C772.919 138.343 773.116 138.28 773.239 138.197C773.361 138.115 773.423 137.992 773.423 137.83V137.8C773.423 137.485 773.323 137.241 773.124 137.069C772.929 136.897 772.65 136.81 772.289 136.81C771.908 136.81 771.605 136.895 771.379 137.064C771.154 137.23 771.005 137.438 770.932 137.69L768.973 137.531C769.072 137.067 769.268 136.666 769.56 136.328C769.851 135.987 770.228 135.725 770.688 135.543C771.152 135.357 771.689 135.264 772.299 135.264C772.723 135.264 773.129 135.314 773.517 135.413C773.908 135.513 774.255 135.667 774.556 135.876C774.861 136.084 775.101 136.353 775.277 136.681C775.453 137.006 775.54 137.395 775.54 137.849V143H773.532V141.941H773.472C773.35 142.18 773.186 142.39 772.98 142.572C772.775 142.751 772.528 142.892 772.239 142.995C771.951 143.094 771.618 143.144 771.24 143.144ZM771.847 141.683C772.158 141.683 772.433 141.621 772.672 141.499C772.911 141.373 773.098 141.204 773.234 140.991C773.37 140.779 773.438 140.539 773.438 140.271V139.46C773.371 139.503 773.28 139.543 773.164 139.58C773.051 139.613 772.924 139.644 772.781 139.674C772.639 139.701 772.496 139.725 772.354 139.749C772.211 139.768 772.082 139.787 771.966 139.803C771.717 139.84 771.5 139.898 771.315 139.977C771.129 140.057 770.985 140.165 770.882 140.3C770.779 140.433 770.728 140.599 770.728 140.798C770.728 141.086 770.832 141.306 771.041 141.459C771.253 141.608 771.522 141.683 771.847 141.683Z" fill="#3F434B"/>
<path d="M776.417 137.029V135.364H783.337V137.029H780.876V143H778.858V137.029H776.417Z" fill="#3F434B"/>
<path d="M831.307 194.54V195.828H827.171V194.54H831.307ZM827.588 191.364V199H826.132V191.364H827.588ZM832.346 191.364V199H830.894V191.364H832.346Z" fill="#C64E1B"/>
<path d="M836.557 199.169C836.073 199.169 835.636 199.079 835.245 198.9C834.853 198.718 834.544 198.455 834.315 198.11C834.089 197.765 833.977 197.343 833.977 196.842C833.977 196.411 834.06 196.057 834.225 195.778C834.391 195.5 834.615 195.28 834.897 195.117C835.178 194.955 835.493 194.832 835.841 194.749C836.189 194.666 836.544 194.603 836.905 194.56C837.362 194.507 837.734 194.464 838.019 194.431C838.304 194.395 838.511 194.337 838.64 194.257C838.769 194.177 838.834 194.048 838.834 193.869V193.834C838.834 193.4 838.711 193.064 838.466 192.825C838.224 192.587 837.863 192.467 837.382 192.467C836.882 192.467 836.487 192.578 836.199 192.8C835.914 193.019 835.717 193.263 835.607 193.531L834.21 193.213C834.376 192.749 834.618 192.374 834.936 192.089C835.258 191.801 835.627 191.592 836.045 191.463C836.463 191.33 836.902 191.264 837.362 191.264C837.667 191.264 837.99 191.301 838.332 191.373C838.677 191.443 838.998 191.572 839.296 191.761C839.598 191.95 839.845 192.22 840.037 192.572C840.229 192.92 840.325 193.372 840.325 193.929V199H838.874V197.956H838.814C838.718 198.148 838.574 198.337 838.382 198.523C838.189 198.708 837.942 198.862 837.641 198.985C837.339 199.108 836.978 199.169 836.557 199.169ZM836.88 197.976C837.291 197.976 837.642 197.895 837.934 197.732C838.229 197.57 838.453 197.358 838.605 197.096C838.761 196.831 838.839 196.547 838.839 196.246V195.261C838.786 195.314 838.683 195.364 838.531 195.41C838.382 195.454 838.211 195.492 838.019 195.525C837.826 195.555 837.639 195.583 837.457 195.609C837.275 195.632 837.122 195.652 836.999 195.669C836.711 195.705 836.448 195.767 836.209 195.853C835.974 195.939 835.785 196.063 835.642 196.226C835.503 196.385 835.433 196.597 835.433 196.862C835.433 197.23 835.569 197.508 835.841 197.697C836.113 197.883 836.459 197.976 836.88 197.976Z" fill="#C64E1B"/>
<path d="M841.704 199L841.699 197.712H841.972C842.184 197.712 842.362 197.668 842.504 197.578C842.65 197.485 842.769 197.329 842.862 197.111C842.955 196.892 843.026 196.59 843.076 196.206C843.126 195.818 843.162 195.331 843.185 194.744L843.32 191.364H848.649V199H847.192V192.646H844.697L844.577 195.241C844.548 195.871 844.483 196.421 844.384 196.892C844.287 197.363 844.147 197.755 843.961 198.07C843.775 198.382 843.537 198.615 843.245 198.771C842.953 198.924 842.599 199 842.181 199H841.704Z" fill="#C64E1B"/>
<path d="M853.848 199.154C853.132 199.154 852.508 198.99 851.974 198.662C851.44 198.334 851.026 197.875 850.731 197.285C850.436 196.695 850.289 196.005 850.289 195.217C850.289 194.424 850.436 193.732 850.731 193.138C851.026 192.545 851.44 192.084 851.974 191.756C852.508 191.428 853.132 191.264 853.848 191.264C854.564 191.264 855.189 191.428 855.723 191.756C856.256 192.084 856.67 192.545 856.965 193.138C857.26 193.732 857.408 194.424 857.408 195.217C857.408 196.005 857.26 196.695 856.965 197.285C856.67 197.875 856.256 198.334 855.723 198.662C855.189 198.99 854.564 199.154 853.848 199.154ZM853.853 197.906C854.317 197.906 854.702 197.784 855.007 197.538C855.312 197.293 855.537 196.967 855.683 196.559C855.832 196.151 855.906 195.702 855.906 195.212C855.906 194.724 855.832 194.277 855.683 193.869C855.537 193.458 855.312 193.128 855.007 192.88C854.702 192.631 854.317 192.507 853.853 192.507C853.386 192.507 852.998 192.631 852.69 192.88C852.385 193.128 852.158 193.458 852.009 193.869C851.863 194.277 851.79 194.724 851.79 195.212C851.79 195.702 851.863 196.151 852.009 196.559C852.158 196.967 852.385 197.293 852.69 197.538C852.998 197.784 853.386 197.906 853.853 197.906Z" fill="#C64E1B"/>
<path d="M858.279 199L861.237 195.092L858.314 191.364H860.044L862.406 194.535H862.938V191.364H864.424V194.535H864.941L867.303 191.364H869.033L866.124 195.092L869.067 199H867.303L864.921 195.818H864.424V199H862.938V195.818H862.44L860.044 199H858.279Z" fill="#C64E1B"/>
<path d="M873.569 199.154C872.817 199.154 872.169 198.993 871.625 198.672C871.085 198.347 870.668 197.891 870.373 197.305C870.081 196.715 869.935 196.024 869.935 195.231C869.935 194.449 870.081 193.76 870.373 193.163C870.668 192.567 871.079 192.101 871.605 191.766C872.136 191.431 872.756 191.264 873.465 191.264C873.896 191.264 874.313 191.335 874.718 191.478C875.122 191.62 875.485 191.844 875.806 192.149C876.128 192.454 876.382 192.85 876.567 193.337C876.753 193.821 876.846 194.409 876.846 195.102V195.629H870.775V194.516H875.389C875.389 194.124 875.309 193.778 875.15 193.476C874.991 193.172 874.767 192.931 874.479 192.756C874.194 192.58 873.859 192.492 873.475 192.492C873.057 192.492 872.693 192.595 872.381 192.8C872.073 193.003 871.834 193.268 871.665 193.596C871.499 193.921 871.417 194.274 871.417 194.655V195.525C871.417 196.035 871.506 196.469 871.685 196.827C871.867 197.185 872.121 197.459 872.446 197.648C872.77 197.833 873.15 197.926 873.584 197.926C873.866 197.926 874.123 197.886 874.355 197.807C874.587 197.724 874.787 197.601 874.956 197.439C875.125 197.276 875.255 197.076 875.344 196.837L876.751 197.091C876.638 197.505 876.436 197.868 876.145 198.18C875.856 198.488 875.493 198.728 875.056 198.9C874.622 199.07 874.126 199.154 873.569 199.154Z" fill="#C64E1B"/>
<path d="M883.67 194.54V195.828H879.534V194.54H883.67ZM879.952 191.364V199H878.495V191.364H879.952ZM884.709 191.364V199H883.258V191.364H884.709Z" fill="#C64E1B"/>
<path d="M888.155 196.917L891.52 191.364H893.121V199H891.665V193.442L888.314 199H886.698V191.364H888.155V196.917Z" fill="#C64E1B"/>
<path d="M898.411 199.154C897.659 199.154 897.011 198.993 896.467 198.672C895.927 198.347 895.509 197.891 895.214 197.305C894.923 196.715 894.777 196.024 894.777 195.231C894.777 194.449 894.923 193.76 895.214 193.163C895.509 192.567 895.92 192.101 896.447 191.766C896.978 191.431 897.597 191.264 898.307 191.264C898.738 191.264 899.155 191.335 899.56 191.478C899.964 191.62 900.327 191.844 900.648 192.149C900.97 192.454 901.223 192.85 901.409 193.337C901.595 193.821 901.687 194.409 901.687 195.102V195.629H895.617V194.516H900.231C900.231 194.124 900.151 193.778 899.992 193.476C899.833 193.172 899.609 192.931 899.321 192.756C899.036 192.58 898.701 192.492 898.317 192.492C897.899 192.492 897.534 192.595 897.223 192.8C896.915 193.003 896.676 193.268 896.507 193.596C896.341 193.921 896.258 194.274 896.258 194.655V195.525C896.258 196.035 896.348 196.469 896.527 196.827C896.709 197.185 896.963 197.459 897.287 197.648C897.612 197.833 897.992 197.926 898.426 197.926C898.708 197.926 898.965 197.886 899.197 197.807C899.429 197.724 899.629 197.601 899.798 197.439C899.967 197.276 900.096 197.076 900.186 196.837L901.593 197.091C901.48 197.505 901.278 197.868 900.986 198.18C900.698 198.488 900.335 198.728 899.898 198.9C899.463 199.07 898.968 199.154 898.411 199.154Z" fill="#C64E1B"/>
<path d="M907.042 199V191.364H910.209C911.07 191.364 911.753 191.547 912.257 191.915C912.761 192.28 913.013 192.775 913.013 193.402C913.013 193.849 912.87 194.204 912.585 194.466C912.3 194.728 911.922 194.903 911.452 194.993C911.793 195.033 912.106 195.135 912.391 195.301C912.676 195.463 912.905 195.682 913.077 195.957C913.253 196.232 913.341 196.561 913.341 196.942C913.341 197.346 913.236 197.704 913.028 198.016C912.819 198.324 912.515 198.566 912.118 198.741C911.723 198.914 911.248 199 910.691 199H907.042ZM908.439 197.757H910.691C911.059 197.757 911.347 197.669 911.556 197.494C911.765 197.318 911.869 197.079 911.869 196.778C911.869 196.423 911.765 196.145 911.556 195.942C911.347 195.737 911.059 195.634 910.691 195.634H908.439V197.757ZM908.439 194.545H910.224C910.502 194.545 910.741 194.506 910.939 194.426C911.142 194.347 911.296 194.234 911.402 194.088C911.511 193.939 911.566 193.763 911.566 193.561C911.566 193.266 911.445 193.036 911.203 192.87C910.961 192.704 910.63 192.621 910.209 192.621H908.439V194.545Z" fill="#C64E1B"/>
<path d="M918.188 199.154C917.449 199.154 916.813 198.987 916.279 198.652C915.749 198.314 915.341 197.848 915.056 197.255C914.771 196.662 914.628 195.982 914.628 195.217C914.628 194.441 914.774 193.757 915.066 193.163C915.358 192.567 915.769 192.101 916.299 191.766C916.829 191.431 917.454 191.264 918.173 191.264C918.753 191.264 919.27 191.372 919.724 191.587C920.178 191.799 920.545 192.098 920.823 192.482C921.105 192.867 921.272 193.316 921.325 193.829H919.878C919.799 193.472 919.617 193.163 919.332 192.905C919.05 192.646 918.672 192.517 918.198 192.517C917.784 192.517 917.421 192.626 917.109 192.845C916.801 193.061 916.561 193.369 916.388 193.77C916.216 194.168 916.13 194.638 916.13 195.182C916.13 195.739 916.214 196.219 916.383 196.623C916.552 197.028 916.791 197.341 917.099 197.563C917.411 197.785 917.777 197.896 918.198 197.896C918.48 197.896 918.735 197.845 918.964 197.742C919.196 197.636 919.39 197.485 919.545 197.29C919.704 197.094 919.815 196.859 919.878 196.584H921.325C921.272 197.078 921.111 197.518 920.843 197.906C920.574 198.294 920.215 198.599 919.764 198.821C919.317 199.043 918.791 199.154 918.188 199.154Z" fill="#C64E1B"/>
<path d="M926.206 199.154C925.454 199.154 924.806 198.993 924.262 198.672C923.722 198.347 923.304 197.891 923.009 197.305C922.718 196.715 922.572 196.024 922.572 195.231C922.572 194.449 922.718 193.76 923.009 193.163C923.304 192.567 923.715 192.101 924.242 191.766C924.773 191.431 925.392 191.264 926.102 191.264C926.532 191.264 926.95 191.335 927.354 191.478C927.759 191.62 928.122 191.844 928.443 192.149C928.765 192.454 929.018 192.85 929.204 193.337C929.389 193.821 929.482 194.409 929.482 195.102V195.629H923.412V194.516H928.026C928.026 194.124 927.946 193.778 927.787 193.476C927.628 193.172 927.404 192.931 927.116 192.756C926.831 192.58 926.496 192.492 926.112 192.492C925.694 192.492 925.329 192.595 925.018 192.8C924.71 193.003 924.471 193.268 924.302 193.596C924.136 193.921 924.053 194.274 924.053 194.655V195.525C924.053 196.035 924.143 196.469 924.322 196.827C924.504 197.185 924.758 197.459 925.082 197.648C925.407 197.833 925.787 197.926 926.221 197.926C926.503 197.926 926.759 197.886 926.991 197.807C927.224 197.724 927.424 197.601 927.593 197.439C927.762 197.276 927.891 197.076 927.981 196.837L929.388 197.091C929.275 197.505 929.073 197.868 928.781 198.18C928.493 198.488 928.13 198.728 927.692 198.9C927.258 199.07 926.763 199.154 926.206 199.154Z" fill="#C64E1B"/>
<path d="M932.127 191.364L933.813 194.337L935.513 191.364H937.139L934.757 195.182L937.158 199H935.533L933.813 196.146L932.097 199H930.467L932.843 195.182L930.496 191.364H932.127Z" fill="#C64E1B"/>
<path d="M945.586 199.154C944.871 199.154 944.246 198.99 943.712 198.662C943.179 198.334 942.764 197.875 942.469 197.285C942.174 196.695 942.027 196.005 942.027 195.217C942.027 194.424 942.174 193.732 942.469 193.138C942.764 192.545 943.179 192.084 943.712 191.756C944.246 191.428 944.871 191.264 945.586 191.264C946.302 191.264 946.927 191.428 947.461 191.756C947.994 192.084 948.409 192.545 948.704 193.138C948.999 193.732 949.146 194.424 949.146 195.217C949.146 196.005 948.999 196.695 948.704 197.285C948.409 197.875 947.994 198.334 947.461 198.662C946.927 198.99 946.302 199.154 945.586 199.154ZM945.591 197.906C946.055 197.906 946.44 197.784 946.745 197.538C947.05 197.293 947.275 196.967 947.421 196.559C947.57 196.151 947.645 195.702 947.645 195.212C947.645 194.724 947.57 194.277 947.421 193.869C947.275 193.458 947.05 193.128 946.745 192.88C946.44 192.631 946.055 192.507 945.591 192.507C945.124 192.507 944.736 192.631 944.428 192.88C944.123 193.128 943.896 193.458 943.747 193.869C943.601 194.277 943.528 194.724 943.528 195.212C943.528 195.702 943.601 196.151 943.747 196.559C943.896 196.967 944.123 197.293 944.428 197.538C944.736 197.784 945.124 197.906 945.591 197.906Z" fill="#C64E1B"/>
<path d="M955.688 191.364V192.646H952.272V199H950.805V191.364H955.688Z" fill="#C64E1B"/>
<path d="M957.259 201.864V191.364H958.71V192.601H958.835C958.921 192.442 959.045 192.258 959.207 192.05C959.37 191.841 959.595 191.659 959.884 191.503C960.172 191.344 960.553 191.264 961.027 191.264C961.643 191.264 962.194 191.42 962.678 191.731C963.161 192.043 963.541 192.492 963.816 193.079C964.094 193.665 964.234 194.371 964.234 195.197C964.234 196.022 964.096 196.73 963.821 197.32C963.546 197.906 963.168 198.359 962.688 198.677C962.207 198.992 961.658 199.149 961.042 199.149C960.578 199.149 960.198 199.071 959.903 198.915C959.612 198.76 959.383 198.577 959.217 198.369C959.052 198.16 958.924 197.974 958.835 197.812H958.745V201.864H957.259ZM958.715 195.182C958.715 195.719 958.793 196.189 958.949 196.594C959.105 196.998 959.33 197.315 959.625 197.543C959.92 197.769 960.281 197.881 960.709 197.881C961.153 197.881 961.524 197.764 961.822 197.528C962.121 197.29 962.346 196.967 962.499 196.559C962.654 196.151 962.732 195.692 962.732 195.182C962.732 194.678 962.656 194.226 962.504 193.824C962.354 193.423 962.129 193.107 961.827 192.875C961.529 192.643 961.156 192.527 960.709 192.527C960.278 192.527 959.913 192.638 959.615 192.86C959.32 193.082 959.096 193.392 958.944 193.79C958.791 194.187 958.715 194.651 958.715 195.182Z" fill="#C64E1B"/>
<path d="M968.121 199.169C967.638 199.169 967.2 199.079 966.809 198.9C966.418 198.718 966.108 198.455 965.879 198.11C965.654 197.765 965.541 197.343 965.541 196.842C965.541 196.411 965.624 196.057 965.79 195.778C965.956 195.5 966.179 195.28 966.461 195.117C966.743 194.955 967.058 194.832 967.406 194.749C967.754 194.666 968.108 194.603 968.469 194.56C968.927 194.507 969.298 194.464 969.583 194.431C969.868 194.395 970.075 194.337 970.205 194.257C970.334 194.177 970.398 194.048 970.398 193.869V193.834C970.398 193.4 970.276 193.064 970.031 192.825C969.789 192.587 969.427 192.467 968.947 192.467C968.446 192.467 968.052 192.578 967.764 192.8C967.478 193.019 967.281 193.263 967.172 193.531L965.775 193.213C965.941 192.749 966.183 192.374 966.501 192.089C966.822 191.801 967.192 191.592 967.609 191.463C968.027 191.33 968.466 191.264 968.927 191.264C969.232 191.264 969.555 191.301 969.896 191.373C970.241 191.443 970.563 191.572 970.861 191.761C971.162 191.95 971.409 192.22 971.602 192.572C971.794 192.92 971.89 193.372 971.89 193.929V199H970.438V197.956H970.379C970.282 198.148 970.138 198.337 969.946 198.523C969.754 198.708 969.507 198.862 969.205 198.985C968.904 199.108 968.542 199.169 968.121 199.169ZM968.445 197.976C968.856 197.976 969.207 197.895 969.499 197.732C969.794 197.57 970.017 197.358 970.17 197.096C970.326 196.831 970.403 196.547 970.403 196.246V195.261C970.35 195.314 970.248 195.364 970.095 195.41C969.946 195.454 969.775 195.492 969.583 195.525C969.391 195.555 969.204 195.583 969.021 195.609C968.839 195.632 968.687 195.652 968.564 195.669C968.276 195.705 968.012 195.767 967.773 195.853C967.538 195.939 967.349 196.063 967.207 196.226C967.067 196.385 966.998 196.597 966.998 196.862C966.998 197.23 967.134 197.508 967.406 197.697C967.677 197.883 968.024 197.976 968.445 197.976Z" fill="#C64E1B"/>
<path d="M979.045 194.54V195.828H974.909V194.54H979.045ZM975.327 191.364V199H973.87V191.364H975.327ZM980.084 191.364V199H978.633V191.364H980.084Z" fill="#C64E1B"/>
<path d="M983.53 196.917L986.895 191.364H988.496V199H987.04V193.442L983.689 199H982.073V191.364H983.53V196.917Z" fill="#C64E1B"/>
<path d="M996.625 191.364V199H995.173V191.364H996.625ZM995.993 194.908V196.191C995.765 196.284 995.523 196.367 995.268 196.44C995.012 196.509 994.744 196.564 994.462 196.604C994.18 196.643 993.887 196.663 993.582 196.663C992.638 196.663 991.887 196.433 991.33 195.972C990.773 195.508 990.495 194.799 990.495 193.844V191.349H991.942V193.844C991.942 194.206 992.008 194.499 992.14 194.724C992.273 194.95 992.462 195.115 992.707 195.222C992.953 195.328 993.244 195.381 993.582 195.381C994.03 195.381 994.442 195.339 994.82 195.256C995.201 195.17 995.592 195.054 995.993 194.908Z" fill="#C64E1B"/>
<path d="M1001.89 199.154C1001.14 199.154 1000.49 198.993 999.95 198.672C999.409 198.347 998.992 197.891 998.697 197.305C998.405 196.715 998.259 196.024 998.259 195.231C998.259 194.449 998.405 193.76 998.697 193.163C998.992 192.567 999.403 192.101 999.93 191.766C1000.46 191.431 1001.08 191.264 1001.79 191.264C1002.22 191.264 1002.64 191.335 1003.04 191.478C1003.45 191.62 1003.81 191.844 1004.13 192.149C1004.45 192.454 1004.71 192.85 1004.89 193.337C1005.08 193.821 1005.17 194.409 1005.17 195.102V195.629H999.099V194.516H1003.71C1003.71 194.124 1003.63 193.778 1003.47 193.476C1003.32 193.172 1003.09 192.931 1002.8 192.756C1002.52 192.58 1002.18 192.492 1001.8 192.492C1001.38 192.492 1001.02 192.595 1000.71 192.8C1000.4 193.003 1000.16 193.268 999.989 193.596C999.824 193.921 999.741 194.274 999.741 194.655V195.525C999.741 196.035 999.83 196.469 1000.01 196.827C1000.19 197.185 1000.45 197.459 1000.77 197.648C1001.09 197.833 1001.47 197.926 1001.91 197.926C1002.19 197.926 1002.45 197.886 1002.68 197.807C1002.91 197.724 1003.11 197.601 1003.28 197.439C1003.45 197.276 1003.58 197.076 1003.67 196.837L1005.08 197.091C1004.96 197.505 1004.76 197.868 1004.47 198.18C1004.18 198.488 1003.82 198.728 1003.38 198.9C1002.95 199.07 1002.45 199.154 1001.89 199.154Z" fill="#C64E1B"/>
<path d="M1011.99 194.54V195.828H1007.86V194.54H1011.99ZM1008.28 191.364V199H1006.82V191.364H1008.28ZM1013.03 191.364V199H1011.58V191.364H1013.03Z" fill="#C64E1B"/>
<path d="M1016.48 196.917L1019.84 191.364H1021.45V199H1019.99V193.442L1016.64 199H1015.02V191.364H1016.48V196.917Z" fill="#C64E1B"/>
<path d="M1024.9 196.917L1028.27 191.364H1029.87V199H1028.41V193.442L1025.06 199H1023.44V191.364H1024.9V196.917ZM1027.63 188.778H1028.85C1028.85 189.338 1028.65 189.794 1028.26 190.146C1027.86 190.494 1027.33 190.668 1026.66 190.668C1025.99 190.668 1025.45 190.494 1025.06 190.146C1024.67 189.794 1024.47 189.338 1024.47 188.778H1025.69C1025.69 189.027 1025.76 189.247 1025.91 189.44C1026.05 189.628 1026.3 189.723 1026.66 189.723C1027 189.723 1027.25 189.628 1027.4 189.44C1027.55 189.251 1027.63 189.03 1027.63 188.778Z" fill="#C64E1B"/>
<path d="M753.224 91.154C752.485 91.154 751.848 90.9867 751.315 90.6519C750.784 90.3138 750.377 89.8482 750.092 89.2549C749.807 88.6616 749.664 87.9822 749.664 87.2165C749.664 86.441 749.81 85.7565 750.102 85.1633C750.393 84.5667 750.804 84.101 751.335 83.7662C751.865 83.4315 752.49 83.2641 753.209 83.2641C753.789 83.2641 754.306 83.3718 754.76 83.5873C755.214 83.7994 755.58 84.0977 755.859 84.4822C756.14 84.8666 756.308 85.3157 756.361 85.8295H754.914C754.835 85.4715 754.652 85.1633 754.367 84.9047C754.085 84.6462 753.708 84.517 753.234 84.517C752.819 84.517 752.456 84.6263 752.145 84.8451C751.837 85.0605 751.596 85.3688 751.424 85.7698C751.252 86.1675 751.165 86.6382 751.165 87.1817C751.165 87.7385 751.25 88.2191 751.419 88.6235C751.588 89.0278 751.827 89.3411 752.135 89.5631C752.447 89.7852 752.813 89.8962 753.234 89.8962C753.515 89.8962 753.771 89.8448 753.999 89.7421C754.231 89.636 754.425 89.4852 754.581 89.2897C754.74 89.0941 754.851 88.8588 754.914 88.5837H756.361C756.308 89.0776 756.147 89.5184 755.879 89.9062C755.61 90.2939 755.25 90.5989 754.8 90.8209C754.352 91.043 753.827 91.154 753.224 91.154Z" fill="#36554D"/>
<path d="M763.126 86.5404V87.828H758.99V86.5404H763.126ZM759.407 83.3635V90.9999H757.95V83.3635H759.407ZM764.165 83.3635V90.9999H762.713V83.3635H764.165Z" fill="#36554D"/>
<path d="M770.708 90.9999V84.6313H768.878C768.444 84.6313 768.106 84.7324 767.864 84.9346C767.622 85.1367 767.501 85.4019 767.501 85.73C767.501 86.0548 767.612 86.3167 767.834 86.5155C768.059 86.7111 768.374 86.8089 768.779 86.8089H771.14V88.012H768.779C768.215 88.012 767.728 87.9192 767.317 87.7336C766.909 87.5447 766.594 87.2778 766.372 86.9331C766.154 86.5885 766.044 86.1808 766.044 85.7101C766.044 85.2296 766.157 84.8153 766.382 84.4672C766.611 84.1159 766.937 83.8441 767.362 83.6519C767.789 83.4597 768.295 83.3635 768.878 83.3635H772.105V90.9999H770.708ZM765.696 90.9999L767.849 87.142H769.37L767.218 90.9999H765.696Z" fill="#36554D"/>
<path d="M773.136 84.6462V83.3635H779.579V84.6462H777.089V90.9999H775.637V84.6462H773.136Z" fill="#36554D"/>
<path d="M782.608 88.9168L785.974 83.3635H787.575V90.9999H786.118V85.4417L782.767 90.9999H781.152V83.3635H782.608V88.9168Z" fill="#36554D"/>
<path d="M792.865 91.154C792.112 91.154 791.464 90.9933 790.921 90.6718C790.381 90.347 789.963 89.8912 789.668 89.3046C789.376 88.7146 789.23 88.0236 789.23 87.2314C789.23 86.4492 789.376 85.7599 789.668 85.1633C789.963 84.5667 790.374 84.101 790.901 83.7662C791.431 83.4315 792.051 83.2641 792.76 83.2641C793.191 83.2641 793.609 83.3354 794.013 83.4779C794.417 83.6204 794.78 83.8441 795.102 84.1491C795.423 84.454 795.677 84.8501 795.863 85.3373C796.048 85.8212 796.141 86.4095 796.141 87.1022V87.6292H790.071V86.5155H794.684C794.684 86.1244 794.605 85.7781 794.446 85.4765C794.287 85.1715 794.063 84.9313 793.775 84.7556C793.489 84.5799 793.155 84.4921 792.77 84.4921C792.353 84.4921 791.988 84.5948 791.676 84.8003C791.368 85.0025 791.13 85.2677 790.961 85.5958C790.795 85.9206 790.712 86.2736 790.712 86.6547V87.5248C790.712 88.0352 790.801 88.4694 790.98 88.8273C791.163 89.1853 791.416 89.4587 791.741 89.6476C792.066 89.8332 792.445 89.926 792.88 89.926C793.161 89.926 793.418 89.8863 793.65 89.8067C793.882 89.7239 794.083 89.6012 794.252 89.4388C794.421 89.2764 794.55 89.0759 794.64 88.8373L796.047 89.0908C795.934 89.5051 795.732 89.868 795.44 90.1796C795.152 90.4878 794.789 90.7281 794.351 90.9005C793.917 91.0695 793.422 91.154 792.865 91.154Z" fill="#36554D"/>
<path d="M804.712 91.154C803.996 91.154 803.371 90.99 802.838 90.6618C802.304 90.3337 801.89 89.8747 801.595 89.2847C801.3 88.6948 801.152 88.0054 801.152 87.2165C801.152 86.4244 801.3 85.7317 801.595 85.1384C801.89 84.5451 802.304 84.0844 802.838 83.7563C803.371 83.4282 803.996 83.2641 804.712 83.2641C805.428 83.2641 806.053 83.4282 806.586 83.7563C807.12 84.0844 807.534 84.5451 807.829 85.1384C808.124 85.7317 808.272 86.4244 808.272 87.2165C808.272 88.0054 808.124 88.6948 807.829 89.2847C807.534 89.8747 807.12 90.3337 806.586 90.6618C806.053 90.99 805.428 91.154 804.712 91.154ZM804.717 89.9062C805.181 89.9062 805.565 89.7835 805.87 89.5383C806.175 89.293 806.401 88.9665 806.547 88.5589C806.696 88.1512 806.77 87.7021 806.77 87.2116C806.77 86.7243 806.696 86.2769 806.547 85.8692C806.401 85.4582 806.175 85.1285 805.87 84.8799C805.565 84.6313 805.181 84.507 804.717 84.507C804.25 84.507 803.862 84.6313 803.554 84.8799C803.249 85.1285 803.022 85.4582 802.873 85.8692C802.727 86.2769 802.654 86.7243 802.654 87.2116C802.654 87.7021 802.727 88.1512 802.873 88.5589C803.022 88.9665 803.249 89.293 803.554 89.5383C803.862 89.7835 804.25 89.9062 804.717 89.9062Z" fill="#36554D"/>
<path d="M814.813 83.3635V84.6462H811.398V90.9999H809.931V83.3635H814.813Z" fill="#36554D"/>
<path d="M816.384 93.8635V83.3635H817.836V84.6015H817.96C818.046 84.4424 818.171 84.2584 818.333 84.0496C818.495 83.8408 818.721 83.6585 819.009 83.5028C819.297 83.3437 819.679 83.2641 820.153 83.2641C820.769 83.2641 821.319 83.4199 821.803 83.7314C822.287 84.043 822.666 84.4921 822.942 85.0787C823.22 85.6654 823.359 86.3714 823.359 87.1966C823.359 88.0219 823.222 88.7296 822.947 89.3195C822.671 89.9062 822.294 90.3586 821.813 90.6768C821.332 90.9916 820.784 91.1491 820.167 91.1491C819.703 91.1491 819.324 91.0712 819.029 90.9154C818.737 90.7596 818.509 90.5773 818.343 90.3685C818.177 90.1597 818.05 89.9741 817.96 89.8117H817.871V93.8635H816.384ZM817.841 87.1817C817.841 87.7187 817.919 88.1893 818.074 88.5937C818.23 88.998 818.456 89.3145 818.751 89.5432C819.046 89.7686 819.407 89.8813 819.834 89.8813C820.278 89.8813 820.65 89.7636 820.948 89.5283C821.246 89.2897 821.472 88.9665 821.624 88.5589C821.78 88.1512 821.858 87.6921 821.858 87.1817C821.858 86.6779 821.782 86.2255 821.629 85.8245C821.48 85.4234 821.255 85.1069 820.953 84.8749C820.655 84.6429 820.282 84.5269 819.834 84.5269C819.403 84.5269 819.039 84.6379 818.741 84.86C818.446 85.0821 818.222 85.392 818.069 85.7897C817.917 86.1874 817.841 86.6514 817.841 87.1817Z" fill="#36554D"/>
<path d="M827.247 91.1689C826.763 91.1689 826.326 91.0795 825.934 90.9005C825.543 90.7182 825.233 90.4547 825.005 90.11C824.779 89.7653 824.667 89.3427 824.667 88.8422C824.667 88.4114 824.75 88.0567 824.915 87.7783C825.081 87.4999 825.305 87.2795 825.586 87.1171C825.868 86.9547 826.183 86.8321 826.531 86.7492C826.879 86.6663 827.234 86.6034 827.595 86.5603C828.052 86.5073 828.424 86.4642 828.709 86.431C828.994 86.3946 829.201 86.3366 829.33 86.257C829.459 86.1775 829.524 86.0482 829.524 85.8692V85.8344C829.524 85.4002 829.401 85.0638 829.156 84.8252C828.914 84.5866 828.553 84.4672 828.072 84.4672C827.572 84.4672 827.177 84.5783 826.889 84.8003C826.604 85.0191 826.407 85.2627 826.297 85.5312L824.9 85.213C825.066 84.749 825.308 84.3744 825.626 84.0894C825.948 83.801 826.317 83.5922 826.735 83.463C827.153 83.3304 827.592 83.2641 828.052 83.2641C828.357 83.2641 828.68 83.3006 829.022 83.3735C829.367 83.4431 829.688 83.5724 829.986 83.7613C830.288 83.9502 830.535 84.2203 830.727 84.5716C830.919 84.9197 831.015 85.3721 831.015 85.9289V90.9999H829.564V89.9559H829.504C829.408 90.1481 829.264 90.337 829.072 90.5226C828.879 90.7082 828.632 90.8624 828.331 90.985C828.029 91.1076 827.668 91.1689 827.247 91.1689ZM827.57 89.9758C827.981 89.9758 828.332 89.8946 828.624 89.7322C828.919 89.5698 829.143 89.3576 829.295 89.0958C829.451 88.8306 829.529 88.5473 829.529 88.2457V87.2613C829.476 87.3143 829.373 87.364 829.221 87.4104C829.072 87.4535 828.901 87.4916 828.709 87.5248C828.516 87.5546 828.329 87.5828 828.147 87.6093C827.965 87.6325 827.812 87.6524 827.689 87.6689C827.401 87.7054 827.138 87.7667 826.899 87.8529C826.664 87.9391 826.475 88.0634 826.332 88.2258C826.193 88.3849 826.123 88.597 826.123 88.8621C826.123 89.23 826.259 89.5084 826.531 89.6974C826.803 89.883 827.149 89.9758 827.57 89.9758Z" fill="#36554D"/>
<path d="M838.171 86.5404V87.828H834.034V86.5404H838.171ZM834.452 83.3635V90.9999H832.995V83.3635H834.452ZM839.21 83.3635V90.9999H837.758V83.3635H839.21Z" fill="#36554D"/>
<path d="M842.655 88.9168L846.021 83.3635H847.622V90.9999H846.165V85.4417L842.814 90.9999H841.199V83.3635H842.655V88.9168Z" fill="#36554D"/>
<path d="M855.75 83.3635V90.9999H854.299V83.3635H855.75ZM855.119 86.9083V88.191C854.89 88.2838 854.648 88.3666 854.393 88.4395C854.138 88.5091 853.869 88.5638 853.588 88.6036C853.306 88.6434 853.013 88.6633 852.708 88.6633C851.763 88.6633 851.012 88.4329 850.456 87.9722C849.899 87.5082 849.62 86.7989 849.62 85.8444V83.3486H851.067V85.8444C851.067 86.2056 851.133 86.499 851.266 86.7243C851.399 86.9497 851.587 87.1154 851.833 87.2215C852.078 87.3276 852.37 87.3806 852.708 87.3806C853.155 87.3806 853.568 87.3392 853.946 87.2563C854.327 87.1701 854.718 87.0541 855.119 86.9083Z" fill="#36554D"/>
<path d="M861.019 91.154C860.267 91.154 859.619 90.9933 859.075 90.6718C858.535 90.347 858.117 89.8912 857.822 89.3046C857.531 88.7146 857.385 88.0236 857.385 87.2314C857.385 86.4492 857.531 85.7599 857.822 85.1633C858.117 84.5667 858.528 84.101 859.055 83.7662C859.586 83.4315 860.205 83.2641 860.915 83.2641C861.345 83.2641 861.763 83.3354 862.167 83.4779C862.572 83.6204 862.935 83.8441 863.256 84.1491C863.578 84.454 863.831 84.8501 864.017 85.3373C864.202 85.8212 864.295 86.4095 864.295 87.1022V87.6292H858.225V86.5155H862.839C862.839 86.1244 862.759 85.7781 862.6 85.4765C862.441 85.1715 862.217 84.9313 861.929 84.7556C861.644 84.5799 861.309 84.4921 860.925 84.4921C860.507 84.4921 860.142 84.5948 859.831 84.8003C859.523 85.0025 859.284 85.2677 859.115 85.5958C858.949 85.9206 858.866 86.2736 858.866 86.6547V87.5248C858.866 88.0352 858.956 88.4694 859.135 88.8273C859.317 89.1853 859.571 89.4587 859.895 89.6476C860.22 89.8332 860.6 89.926 861.034 89.926C861.316 89.926 861.572 89.8863 861.805 89.8067C862.037 89.7239 862.237 89.6012 862.406 89.4388C862.575 89.2764 862.704 89.0759 862.794 88.8373L864.201 89.0908C864.088 89.5051 863.886 89.868 863.594 90.1796C863.306 90.4878 862.943 90.7281 862.506 90.9005C862.071 91.0695 861.576 91.154 861.019 91.154Z" fill="#36554D"/>
<path d="M871.12 86.5404V87.828H866.984V86.5404H871.12ZM867.401 83.3635V90.9999H865.945V83.3635H867.401ZM872.159 83.3635V90.9999H870.707V83.3635H872.159Z" fill="#36554D"/>
<path d="M875.604 88.9168L878.97 83.3635H880.571V90.9999H879.114V85.4417L875.763 90.9999H874.148V83.3635H875.604V88.9168Z" fill="#36554D"/>
<path d="M884.026 88.9168L887.392 83.3635H888.993V90.9999H887.536V85.4417L884.185 90.9999H882.57V83.3635H884.026V88.9168ZM886.756 80.7783H887.979C887.979 81.3385 887.78 81.7942 887.382 82.1455C886.988 82.4935 886.454 82.6675 885.781 82.6675C885.112 82.6675 884.58 82.4935 884.185 82.1455C883.791 81.7942 883.594 81.3385 883.594 80.7783H884.812C884.812 81.0269 884.885 81.2473 885.031 81.4395C885.176 81.6285 885.427 81.7229 885.781 81.7229C886.129 81.7229 886.378 81.6285 886.527 81.4395C886.679 81.2506 886.756 81.0302 886.756 80.7783Z" fill="#36554D"/>
<path d="M229.399 88.9815H230.92C230.94 89.293 231.081 89.5333 231.343 89.7024C231.608 89.8714 231.951 89.9559 232.372 89.9559C232.8 89.9559 233.164 89.8648 233.466 89.6825C233.767 89.4969 233.918 89.2102 233.918 88.8224C233.918 88.5904 233.86 88.3882 233.744 88.2159C233.631 88.0402 233.471 87.9043 233.262 87.8082C233.056 87.7121 232.813 87.664 232.531 87.664H231.288V86.4957H232.531C232.952 86.4957 233.267 86.3996 233.476 86.2073C233.684 86.0151 233.789 85.7748 233.789 85.4865C233.789 85.1749 233.676 84.9247 233.451 84.7358C233.229 84.5435 232.919 84.4474 232.521 84.4474C232.117 84.4474 231.78 84.5385 231.512 84.7208C231.243 84.8998 231.103 85.1318 231.089 85.4169H229.588C229.598 84.9893 229.727 84.6148 229.976 84.2933C230.228 83.9685 230.566 83.7166 230.99 83.5376C231.417 83.3553 231.903 83.2642 232.447 83.2642C233.013 83.2642 233.504 83.3553 233.918 83.5376C234.332 83.7199 234.652 83.9718 234.878 84.2933C235.106 84.6148 235.221 84.9843 235.221 85.4019C235.221 85.8229 235.095 86.1676 234.843 86.436C234.594 86.7012 234.269 86.8918 233.868 87.0078V87.0873C234.163 87.1072 234.425 87.1967 234.654 87.3558C234.883 87.5149 235.062 87.7253 235.191 87.9872C235.32 88.249 235.385 88.5456 235.385 88.8771C235.385 89.3444 235.256 89.7488 234.997 90.0902C234.742 90.4315 234.387 90.695 233.933 90.8806C233.482 91.0629 232.967 91.1541 232.387 91.1541C231.823 91.1541 231.318 91.0662 230.871 90.8906C230.426 90.7116 230.073 90.4597 229.812 90.1349C229.553 89.8101 229.416 89.4256 229.399 88.9815Z" fill="#F7BE2B"/>
<path d="M239.142 91.169C238.658 91.169 238.221 91.0795 237.83 90.9005C237.438 90.7182 237.129 90.4547 236.9 90.11C236.674 89.7653 236.562 89.3428 236.562 88.8423C236.562 88.4114 236.645 88.0568 236.81 87.7784C236.976 87.5 237.2 87.2795 237.482 87.1171C237.763 86.9547 238.078 86.8321 238.426 86.7492C238.774 86.6664 239.129 86.6034 239.49 86.5603C239.947 86.5073 240.319 86.4642 240.604 86.4311C240.889 86.3946 241.096 86.3366 241.225 86.2571C241.354 86.1775 241.419 86.0483 241.419 85.8693V85.8345C241.419 85.4003 241.296 85.0639 241.051 84.8252C240.809 84.5866 240.448 84.4673 239.967 84.4673C239.467 84.4673 239.072 84.5783 238.784 84.8004C238.499 85.0191 238.302 85.2627 238.192 85.5312L236.795 85.213C236.961 84.749 237.203 84.3745 237.521 84.0894C237.843 83.8011 238.212 83.5923 238.63 83.463C239.048 83.3304 239.487 83.2642 239.947 83.2642C240.252 83.2642 240.576 83.3006 240.917 83.3735C241.262 83.4431 241.583 83.5724 241.881 83.7613C242.183 83.9502 242.43 84.2204 242.622 84.5717C242.814 84.9197 242.911 85.3721 242.911 85.9289V91H241.459V89.9559H241.399C241.303 90.1482 241.159 90.3371 240.967 90.5227C240.774 90.7083 240.527 90.8624 240.226 90.985C239.924 91.1077 239.563 91.169 239.142 91.169ZM239.465 89.9758C239.876 89.9758 240.228 89.8946 240.519 89.7322C240.814 89.5698 241.038 89.3577 241.19 89.0958C241.346 88.8307 241.424 88.5473 241.424 88.2457V87.2613C241.371 87.3143 241.268 87.3641 241.116 87.4105C240.967 87.4536 240.796 87.4917 240.604 87.5248C240.411 87.5546 240.224 87.5828 240.042 87.6093C239.86 87.6325 239.707 87.6524 239.585 87.669C239.296 87.7054 239.033 87.7668 238.794 87.8529C238.559 87.9391 238.37 88.0634 238.227 88.2258C238.088 88.3849 238.018 88.597 238.018 88.8622C238.018 89.2301 238.154 89.5085 238.426 89.6974C238.698 89.883 239.044 89.9758 239.465 89.9758Z" fill="#F7BE2B"/>
<path d="M244.89 91V83.3636H251.12V91H249.663V84.6463H246.337V91H244.89Z" fill="#F7BE2B"/>
<path d="M253.107 93.8636V83.3636H254.559V84.6015H254.683C254.769 84.4424 254.894 84.2585 255.056 84.0497C255.219 83.8409 255.444 83.6586 255.732 83.5028C256.021 83.3437 256.402 83.2642 256.876 83.2642C257.492 83.2642 258.042 83.4199 258.526 83.7315C259.01 84.043 259.39 84.4921 259.665 85.0788C259.943 85.6654 260.082 86.3714 260.082 87.1967C260.082 88.022 259.945 88.7296 259.67 89.3196C259.395 89.9062 259.017 90.3586 258.536 90.6768C258.056 90.9917 257.507 91.1491 256.891 91.1491C256.427 91.1491 256.047 91.0712 255.752 90.9154C255.46 90.7597 255.232 90.5774 255.066 90.3686C254.9 90.1598 254.773 89.9741 254.683 89.8117H254.594V93.8636H253.107ZM254.564 87.1818C254.564 87.7187 254.642 88.1893 254.798 88.5937C254.953 88.9981 255.179 89.3146 255.474 89.5433C255.769 89.7687 256.13 89.8813 256.558 89.8813C257.002 89.8813 257.373 89.7637 257.671 89.5284C257.969 89.2897 258.195 88.9666 258.347 88.5589C258.503 88.1512 258.581 87.6922 258.581 87.1818C258.581 86.678 258.505 86.2256 258.352 85.8245C258.203 85.4235 257.978 85.107 257.676 84.875C257.378 84.6429 257.005 84.5269 256.558 84.5269C256.127 84.5269 255.762 84.638 255.464 84.86C255.169 85.0821 254.945 85.392 254.793 85.7897C254.64 86.1875 254.564 86.6515 254.564 87.1818Z" fill="#F7BE2B"/>
<path d="M265.039 91.1541C264.287 91.1541 263.639 90.9933 263.095 90.6718C262.555 90.347 262.137 89.8913 261.842 89.3046C261.551 88.7147 261.405 88.0236 261.405 87.2315C261.405 86.4493 261.551 85.7599 261.842 85.1633C262.137 84.5667 262.548 84.101 263.075 83.7663C263.606 83.4315 264.225 83.2642 264.935 83.2642C265.366 83.2642 265.783 83.3354 266.188 83.4779C266.592 83.6205 266.955 83.8442 267.276 84.1491C267.598 84.454 267.851 84.8501 268.037 85.3373C268.223 85.8212 268.315 86.4095 268.315 87.1022V87.6292H262.245V86.5156H266.859C266.859 86.1245 266.779 85.7781 266.62 85.4765C266.461 85.1716 266.237 84.9313 265.949 84.7556C265.664 84.58 265.329 84.4921 264.945 84.4921C264.527 84.4921 264.162 84.5949 263.851 84.8004C263.543 85.0026 263.304 85.2677 263.135 85.5958C262.969 85.9206 262.886 86.2736 262.886 86.6548V87.5248C262.886 88.0352 262.976 88.4694 263.155 88.8274C263.337 89.1853 263.591 89.4588 263.915 89.6477C264.24 89.8333 264.62 89.9261 265.054 89.9261C265.336 89.9261 265.593 89.8863 265.825 89.8068C266.057 89.7239 266.257 89.6013 266.426 89.4389C266.595 89.2765 266.724 89.0759 266.814 88.8373L268.221 89.0909C268.108 89.5052 267.906 89.8681 267.614 90.1796C267.326 90.4879 266.963 90.7282 266.526 90.9005C266.091 91.0696 265.596 91.1541 265.039 91.1541Z" fill="#F7BE2B"/>
<path d="M269.291 84.6463V83.3636H275.734V84.6463H273.243V91H271.792V84.6463H269.291Z" fill="#F7BE2B"/>
<path d="M286.187 86.5404V87.8281H282.051V86.5404H286.187ZM282.468 83.3636V91H281.012V83.3636H282.468ZM287.226 83.3636V91H285.774V83.3636H287.226Z" fill="#F7BE2B"/>
<path d="M291.437 91.169C290.953 91.169 290.516 91.0795 290.124 90.9005C289.733 90.7182 289.423 90.4547 289.195 90.11C288.969 89.7653 288.857 89.3428 288.857 88.8423C288.857 88.4114 288.94 88.0568 289.105 87.7784C289.271 87.5 289.495 87.2795 289.776 87.1171C290.058 86.9547 290.373 86.8321 290.721 86.7492C291.069 86.6664 291.424 86.6034 291.785 86.5603C292.242 86.5073 292.614 86.4642 292.899 86.4311C293.184 86.3946 293.391 86.3366 293.52 86.2571C293.649 86.1775 293.714 86.0483 293.714 85.8693V85.8345C293.714 85.4003 293.591 85.0639 293.346 84.8252C293.104 84.5866 292.743 84.4673 292.262 84.4673C291.762 84.4673 291.367 84.5783 291.079 84.8004C290.794 85.0191 290.597 85.2627 290.487 85.5312L289.09 85.213C289.256 84.749 289.498 84.3745 289.816 84.0894C290.138 83.8011 290.507 83.5923 290.925 83.463C291.343 83.3304 291.782 83.2642 292.242 83.2642C292.547 83.2642 292.87 83.3006 293.212 83.3735C293.557 83.4431 293.878 83.5724 294.176 83.7613C294.478 83.9502 294.725 84.2204 294.917 84.5717C295.109 84.9197 295.205 85.3721 295.205 85.9289V91H293.754V89.9559H293.694C293.598 90.1482 293.454 90.3371 293.262 90.5227C293.069 90.7083 292.822 90.8624 292.521 90.985C292.219 91.1077 291.858 91.169 291.437 91.169ZM291.76 89.9758C292.171 89.9758 292.522 89.8946 292.814 89.7322C293.109 89.5698 293.333 89.3577 293.485 89.0958C293.641 88.8307 293.719 88.5473 293.719 88.2457V87.2613C293.666 87.3143 293.563 87.3641 293.411 87.4105C293.262 87.4536 293.091 87.4917 292.899 87.5248C292.706 87.5546 292.519 87.5828 292.337 87.6093C292.155 87.6325 292.002 87.6524 291.879 87.669C291.591 87.7054 291.328 87.7668 291.089 87.8529C290.854 87.9391 290.665 88.0634 290.522 88.2258C290.383 88.3849 290.313 88.597 290.313 88.8622C290.313 89.2301 290.449 89.5085 290.721 89.6974C290.993 89.883 291.339 89.9758 291.76 89.9758Z" fill="#F7BE2B"/>
<path d="M300.89 91V83.3636H304.057C304.919 83.3636 305.602 83.5475 306.106 83.9154C306.609 84.28 306.861 84.7755 306.861 85.4019C306.861 85.8494 306.719 86.204 306.434 86.4659C306.149 86.7277 305.771 86.9034 305.3 86.9929C305.642 87.0326 305.955 87.1354 306.24 87.3011C306.525 87.4635 306.754 87.6822 306.926 87.9573C307.102 88.2324 307.189 88.5606 307.189 88.9417C307.189 89.3461 307.085 89.704 306.876 90.0156C306.667 90.3238 306.364 90.5658 305.966 90.7414C305.572 90.9138 305.096 91 304.54 91H300.89ZM302.287 89.7571H304.54C304.907 89.7571 305.196 89.6692 305.405 89.4936C305.613 89.3179 305.718 89.0793 305.718 88.7777C305.718 88.423 305.613 88.1446 305.405 87.9424C305.196 87.7369 304.907 87.6342 304.54 87.6342H302.287V89.7571ZM302.287 86.5454H304.072C304.351 86.5454 304.589 86.5056 304.788 86.4261C304.99 86.3465 305.144 86.2339 305.251 86.088C305.36 85.9389 305.415 85.7632 305.415 85.561C305.415 85.2661 305.294 85.0357 305.052 84.87C304.81 84.7043 304.478 84.6214 304.057 84.6214H302.287V86.5454Z" fill="#F7BE2B"/>
<path d="M309.939 85.9886H312.156C313.091 85.9886 313.81 86.2206 314.314 86.6846C314.818 87.1486 315.069 87.7469 315.069 88.4794C315.069 88.9566 314.957 89.3858 314.731 89.767C314.506 90.1482 314.176 90.4498 313.742 90.6718C313.308 90.8906 312.779 91 312.156 91H308.82V83.3636H310.277V89.7173H312.156C312.584 89.7173 312.935 89.6063 313.21 89.3842C313.485 89.1588 313.623 88.8721 313.623 88.5241C313.623 88.1562 313.485 87.8563 313.21 87.6242C312.935 87.3889 312.584 87.2713 312.156 87.2713H309.939V85.9886ZM316.153 91V83.3636H317.64V91H316.153Z" fill="#F7BE2B"/>
<path d="M322.926 91.1541C322.173 91.1541 321.525 90.9933 320.982 90.6718C320.442 90.347 320.024 89.8913 319.729 89.3046C319.437 88.7147 319.292 88.0236 319.292 87.2315C319.292 86.4493 319.437 85.7599 319.729 85.1633C320.024 84.5667 320.435 84.101 320.962 83.7663C321.492 83.4315 322.112 83.2642 322.821 83.2642C323.252 83.2642 323.67 83.3354 324.074 83.4779C324.479 83.6205 324.842 83.8442 325.163 84.1491C325.485 84.454 325.738 84.8501 325.924 85.3373C326.109 85.8212 326.202 86.4095 326.202 87.1022V87.6292H320.132V86.5156H324.745C324.745 86.1245 324.666 85.7781 324.507 85.4765C324.348 85.1716 324.124 84.9313 323.836 84.7556C323.551 84.58 323.216 84.4921 322.831 84.4921C322.414 84.4921 322.049 84.5949 321.738 84.8004C321.429 85.0026 321.191 85.2677 321.022 85.5958C320.856 85.9206 320.773 86.2736 320.773 86.6548V87.5248C320.773 88.0352 320.863 88.4694 321.042 88.8274C321.224 89.1853 321.477 89.4588 321.802 89.6477C322.127 89.8333 322.507 89.9261 322.941 89.9261C323.222 89.9261 323.479 89.8863 323.711 89.8068C323.943 89.7239 324.144 89.6013 324.313 89.4389C324.482 89.2765 324.611 89.0759 324.701 88.8373L326.108 89.0909C325.995 89.5052 325.793 89.8681 325.501 90.1796C325.213 90.4879 324.85 90.7282 324.412 90.9005C323.978 91.0696 323.483 91.1541 322.926 91.1541Z" fill="#F7BE2B"/>
<path d="M327.399 88.9815H328.92C328.94 89.293 329.081 89.5333 329.343 89.7024C329.608 89.8714 329.951 89.9559 330.372 89.9559C330.8 89.9559 331.164 89.8648 331.466 89.6825C331.767 89.4969 331.918 89.2102 331.918 88.8224C331.918 88.5904 331.86 88.3882 331.744 88.2159C331.631 88.0402 331.471 87.9043 331.262 87.8082C331.056 87.7121 330.813 87.664 330.531 87.664H329.288V86.4957H330.531C330.952 86.4957 331.267 86.3996 331.476 86.2073C331.684 86.0151 331.789 85.7748 331.789 85.4865C331.789 85.1749 331.676 84.9247 331.451 84.7358C331.229 84.5435 330.919 84.4474 330.521 84.4474C330.117 84.4474 329.78 84.5385 329.512 84.7208C329.243 84.8998 329.103 85.1318 329.089 85.4169H327.588C327.598 84.9893 327.727 84.6148 327.976 84.2933C328.228 83.9685 328.566 83.7166 328.99 83.5376C329.417 83.3553 329.903 83.2642 330.447 83.2642C331.013 83.2642 331.504 83.3553 331.918 83.5376C332.332 83.7199 332.652 83.9718 332.878 84.2933C333.106 84.6148 333.221 84.9843 333.221 85.4019C333.221 85.8229 333.095 86.1676 332.843 86.436C332.594 86.7012 332.269 86.8918 331.868 87.0078V87.0873C332.163 87.1072 332.425 87.1967 332.654 87.3558C332.883 87.5149 333.062 87.7253 333.191 87.9872C333.32 88.249 333.385 88.5456 333.385 88.8771C333.385 89.3444 333.256 89.7488 332.997 90.0902C332.742 90.4315 332.387 90.695 331.933 90.8806C331.482 91.0629 330.967 91.1541 330.387 91.1541C329.823 91.1541 329.318 91.0662 328.871 90.8906C328.426 90.7116 328.073 90.4597 327.812 90.1349C327.553 89.8101 327.416 89.4256 327.399 88.9815Z" fill="#F7BE2B"/>
<path d="M334.174 93.2024V89.7123H334.795C334.955 89.5665 335.089 89.3925 335.198 89.1903C335.311 88.9881 335.405 88.7478 335.482 88.4694C335.561 88.191 335.627 87.8662 335.68 87.495C335.733 87.1205 335.78 86.6929 335.82 86.2123L336.058 83.3636H341.249V89.7123H342.422V93.2024H340.97V91H335.646V93.2024H334.174ZM336.386 89.7123H339.797V84.6363H337.391L337.232 86.2123C337.155 87.0144 337.059 87.7104 336.943 88.3004C336.827 88.887 336.642 89.3577 336.386 89.7123Z" fill="#F7BE2B"/>
<path d="M349.037 88.9169L352.402 83.3636H354.003V91H352.547V85.4417L349.196 91H347.58V83.3636H349.037V88.9169Z" fill="#F7BE2B"/>
<path d="M355.549 88.9815H357.071C357.091 89.293 357.231 89.5333 357.493 89.7024C357.758 89.8714 358.101 89.9559 358.522 89.9559C358.95 89.9559 359.315 89.8648 359.616 89.6825C359.918 89.4969 360.069 89.2102 360.069 88.8224C360.069 88.5904 360.011 88.3882 359.895 88.2159C359.782 88.0402 359.621 87.9043 359.412 87.8082C359.207 87.7121 358.963 87.664 358.681 87.664H357.439V86.4957H358.681C359.102 86.4957 359.417 86.3996 359.626 86.2073C359.835 86.0151 359.939 85.7748 359.939 85.4865C359.939 85.1749 359.827 84.9247 359.601 84.7358C359.379 84.5435 359.069 84.4474 358.672 84.4474C358.267 84.4474 357.931 84.5385 357.662 84.7208C357.394 84.8998 357.253 85.1318 357.24 85.4169H355.738C355.748 84.9893 355.877 84.6148 356.126 84.2933C356.378 83.9685 356.716 83.7166 357.14 83.5376C357.568 83.3553 358.053 83.2642 358.597 83.2642C359.164 83.2642 359.654 83.3553 360.069 83.5376C360.483 83.7199 360.803 83.9718 361.028 84.2933C361.257 84.6148 361.371 84.9843 361.371 85.4019C361.371 85.8229 361.245 86.1676 360.993 86.436C360.745 86.7012 360.42 86.8918 360.019 87.0078V87.0873C360.314 87.1072 360.576 87.1967 360.804 87.3558C361.033 87.5149 361.212 87.7253 361.341 87.9872C361.471 88.249 361.535 88.5456 361.535 88.8771C361.535 89.3444 361.406 89.7488 361.147 90.0902C360.892 90.4315 360.538 90.695 360.083 90.8806C359.633 91.0629 359.117 91.1541 358.537 91.1541C357.974 91.1541 357.468 91.0662 357.021 90.8906C356.577 90.7116 356.224 90.4597 355.962 90.1349C355.703 89.8101 355.566 89.4256 355.549 88.9815Z" fill="#F7BE2B"/>
<path d="M366.895 91V80.8181H370.524C371.316 80.8181 371.972 80.9623 372.493 81.2507C373.013 81.539 373.402 81.9334 373.661 82.4339C373.919 82.9311 374.049 83.4912 374.049 84.1143C374.049 84.7407 373.918 85.3042 373.656 85.8046C373.397 86.3018 373.006 86.6962 372.483 86.9879C371.962 87.2762 371.308 87.4204 370.519 87.4204H368.023V86.1179H370.38C370.88 86.1179 371.286 86.0317 371.598 85.8593C371.909 85.6837 372.138 85.445 372.284 85.1434C372.43 84.8418 372.502 84.4988 372.502 84.1143C372.502 83.7298 372.43 83.3884 372.284 83.0902C372.138 82.7919 371.908 82.5582 371.593 82.3892C371.281 82.2201 370.87 82.1356 370.36 82.1356H368.431V91H366.895Z" fill="#F7BE2B"/>
<path d="M379.524 81.9914H381.358C382.134 81.9914 382.821 82.1621 383.421 82.5035C384.025 82.8416 384.497 83.3172 384.838 83.9304C385.183 84.5402 385.355 85.2495 385.355 86.0582C385.355 86.8603 385.183 87.5646 384.838 88.1711C384.497 88.7777 384.025 89.2516 383.421 89.593C382.821 89.9311 382.134 90.1001 381.358 90.1001H379.524C378.748 90.1001 378.059 89.9327 377.455 89.598C376.852 89.2599 376.378 88.7893 376.034 88.186C375.692 87.5828 375.521 86.8785 375.521 86.0731C375.521 85.2611 375.694 84.5485 376.039 83.9353C376.383 83.3222 376.856 82.8449 377.455 82.5035C378.059 82.1621 378.748 81.9914 379.524 81.9914ZM379.524 83.3188C378.993 83.3188 378.541 83.4299 378.166 83.6519C377.792 83.8707 377.505 84.1856 377.306 84.5965C377.107 85.0075 377.008 85.4997 377.008 86.0731C377.008 86.6332 377.107 87.1155 377.306 87.5198C377.508 87.9209 377.797 88.2308 378.171 88.4495C378.546 88.665 378.997 88.7727 379.524 88.7727H381.363C381.89 88.7727 382.339 88.665 382.71 88.4495C383.085 88.2308 383.37 87.9192 383.566 87.5149C383.764 87.1072 383.864 86.6216 383.864 86.0582C383.864 85.4914 383.764 85.0042 383.566 84.5965C383.37 84.1856 383.085 83.8707 382.71 83.6519C382.339 83.4299 381.89 83.3188 381.363 83.3188H379.524ZM381.199 80.6392V91.4176H379.693V80.6392H381.199Z" fill="#F7BE2B"/>
<path d="M224.618 103.364V104.457H221.078V111H219.904V103.364H224.618Z" fill="#F7BE2B"/>
<path d="M226.33 113.864V103.364H227.464V104.577H227.603C227.689 104.444 227.808 104.275 227.961 104.07C228.117 103.861 228.339 103.675 228.627 103.513C228.919 103.347 229.313 103.264 229.81 103.264C230.453 103.264 231.02 103.425 231.511 103.746C232.001 104.068 232.384 104.524 232.659 105.114C232.934 105.704 233.072 106.4 233.072 107.202C233.072 108.01 232.934 108.711 232.659 109.305C232.384 109.895 232.003 110.352 231.516 110.677C231.028 110.998 230.467 111.159 229.83 111.159C229.34 111.159 228.947 111.078 228.652 110.915C228.357 110.75 228.13 110.562 227.971 110.354C227.812 110.142 227.689 109.966 227.603 109.827H227.504V113.864H226.33ZM227.484 107.182C227.484 107.758 227.568 108.267 227.737 108.708C227.906 109.146 228.153 109.489 228.478 109.737C228.803 109.982 229.201 110.105 229.671 110.105C230.162 110.105 230.571 109.976 230.899 109.717C231.231 109.455 231.479 109.104 231.645 108.663C231.814 108.219 231.898 107.725 231.898 107.182C231.898 106.645 231.816 106.161 231.65 105.73C231.487 105.296 231.241 104.953 230.909 104.701C230.581 104.446 230.168 104.318 229.671 104.318C229.194 104.318 228.793 104.439 228.468 104.681C228.143 104.92 227.898 105.254 227.732 105.685C227.567 106.113 227.484 106.612 227.484 107.182Z" fill="#F7BE2B"/>
<path d="M237.109 111.179C236.625 111.179 236.186 111.088 235.791 110.905C235.397 110.72 235.084 110.453 234.852 110.105C234.62 109.754 234.504 109.33 234.504 108.832C234.504 108.395 234.59 108.04 234.762 107.768C234.934 107.493 235.165 107.278 235.453 107.122C235.741 106.966 236.06 106.85 236.408 106.774C236.759 106.695 237.112 106.632 237.467 106.585C237.931 106.526 238.307 106.481 238.595 106.451C238.887 106.418 239.099 106.363 239.232 106.287C239.367 106.211 239.435 106.078 239.435 105.889V105.849C239.435 105.359 239.301 104.978 239.033 104.706C238.768 104.434 238.365 104.298 237.825 104.298C237.264 104.298 236.825 104.421 236.507 104.666C236.189 104.911 235.965 105.173 235.836 105.452L234.722 105.054C234.921 104.59 235.186 104.229 235.518 103.97C235.853 103.708 236.217 103.526 236.612 103.423C237.009 103.317 237.4 103.264 237.785 103.264C238.03 103.264 238.312 103.294 238.63 103.354C238.951 103.41 239.261 103.528 239.56 103.707C239.861 103.886 240.112 104.156 240.31 104.517C240.509 104.878 240.609 105.362 240.609 105.969V111H239.435V109.966H239.376C239.296 110.132 239.164 110.309 238.978 110.498C238.792 110.687 238.545 110.847 238.237 110.98C237.929 111.113 237.553 111.179 237.109 111.179ZM237.288 110.125C237.752 110.125 238.143 110.034 238.461 109.852C238.782 109.669 239.024 109.434 239.187 109.146C239.353 108.857 239.435 108.554 239.435 108.236V107.162C239.386 107.222 239.276 107.276 239.107 107.326C238.942 107.372 238.749 107.414 238.531 107.45C238.315 107.483 238.105 107.513 237.899 107.54C237.697 107.563 237.533 107.583 237.407 107.599C237.102 107.639 236.817 107.704 236.552 107.793C236.29 107.879 236.078 108.01 235.915 108.186C235.756 108.358 235.677 108.594 235.677 108.892C235.677 109.3 235.828 109.608 236.129 109.817C236.434 110.022 236.82 110.125 237.288 110.125Z" fill="#F7BE2B"/>
<path d="M242.273 111L245.375 107.122L242.313 103.364H243.705L246.25 106.625H246.887V103.364H248.06V106.625H248.676L251.222 103.364H252.614L249.571 107.122L252.654 111H251.242L248.656 107.719H248.06V111H246.887V107.719H246.29L243.685 111H242.273Z" fill="#F7BE2B"/>
<path d="M253.515 113.187V109.906H254.151C254.307 109.744 254.441 109.568 254.554 109.379C254.667 109.19 254.764 108.967 254.847 108.708C254.933 108.446 255.006 108.128 255.066 107.754C255.126 107.376 255.179 106.92 255.225 106.386L255.484 103.364H260.336V109.906H261.509V113.187H260.336V111H254.688V113.187H253.515ZM255.484 109.906H259.163V104.457H256.577L256.379 106.386C256.296 107.185 256.193 107.883 256.07 108.479C255.948 109.076 255.752 109.552 255.484 109.906Z" fill="#F7BE2B"/>
<path d="M265.314 111.179C264.83 111.179 264.391 111.088 263.996 110.905C263.602 110.72 263.289 110.453 263.057 110.105C262.825 109.754 262.709 109.33 262.709 108.832C262.709 108.395 262.795 108.04 262.967 107.768C263.14 107.493 263.37 107.278 263.658 107.122C263.947 106.966 264.265 106.85 264.613 106.774C264.964 106.695 265.317 106.632 265.672 106.585C266.136 106.526 266.512 106.481 266.8 106.451C267.092 106.418 267.304 106.363 267.437 106.287C267.573 106.211 267.64 106.078 267.64 105.889V105.849C267.64 105.359 267.506 104.978 267.238 104.706C266.973 104.434 266.57 104.298 266.03 104.298C265.47 104.298 265.03 104.421 264.712 104.666C264.394 104.911 264.17 105.173 264.041 105.452L262.927 105.054C263.126 104.59 263.391 104.229 263.723 103.97C264.058 103.708 264.422 103.526 264.817 103.423C265.214 103.317 265.605 103.264 265.99 103.264C266.235 103.264 266.517 103.294 266.835 103.354C267.157 103.41 267.466 103.528 267.765 103.707C268.066 103.886 268.317 104.156 268.515 104.517C268.714 104.878 268.814 105.362 268.814 105.969V111H267.64V109.966H267.581C267.501 110.132 267.369 110.309 267.183 110.498C266.997 110.687 266.751 110.847 266.442 110.98C266.134 111.113 265.758 111.179 265.314 111.179ZM265.493 110.125C265.957 110.125 266.348 110.034 266.666 109.852C266.988 109.669 267.229 109.434 267.392 109.146C267.558 108.857 267.64 108.554 267.64 108.236V107.162C267.591 107.222 267.481 107.276 267.312 107.326C267.147 107.372 266.954 107.414 266.736 107.45C266.52 107.483 266.31 107.513 266.104 107.54C265.902 107.563 265.738 107.583 265.612 107.599C265.307 107.639 265.022 107.704 264.757 107.793C264.495 107.879 264.283 108.01 264.121 108.186C263.961 108.358 263.882 108.594 263.882 108.892C263.882 109.3 264.033 109.608 264.334 109.817C264.639 110.022 265.025 110.125 265.493 110.125Z" fill="#F7BE2B"/>
<path d="M276.066 106.645V107.739H271.85V106.645H276.066ZM272.129 103.364V111H270.955V103.364H272.129ZM276.961 103.364V111H275.788V103.364H276.961Z" fill="#F7BE2B"/>
<path d="M281.351 111.179C280.867 111.179 280.428 111.088 280.033 110.905C279.639 110.72 279.326 110.453 279.094 110.105C278.862 109.754 278.746 109.33 278.746 108.832C278.746 108.395 278.832 108.04 279.004 107.768C279.177 107.493 279.407 107.278 279.695 107.122C279.984 106.966 280.302 106.85 280.65 106.774C281.001 106.695 281.354 106.632 281.709 106.585C282.173 106.526 282.549 106.481 282.837 106.451C283.129 106.418 283.341 106.363 283.474 106.287C283.61 106.211 283.678 106.078 283.678 105.889V105.849C283.678 105.359 283.543 104.978 283.275 104.706C283.01 104.434 282.607 104.298 282.067 104.298C281.507 104.298 281.067 104.421 280.749 104.666C280.431 104.911 280.207 105.173 280.078 105.452L278.964 105.054C279.163 104.59 279.429 104.229 279.76 103.97C280.095 103.708 280.459 103.526 280.854 103.423C281.251 103.317 281.643 103.264 282.027 103.264C282.272 103.264 282.554 103.294 282.872 103.354C283.194 103.41 283.504 103.528 283.802 103.707C284.103 103.886 284.354 104.156 284.553 104.517C284.751 104.878 284.851 105.362 284.851 105.969V111H283.678V109.966H283.618C283.538 110.132 283.406 110.309 283.22 110.498C283.035 110.687 282.788 110.847 282.479 110.98C282.171 111.113 281.795 111.179 281.351 111.179ZM281.53 110.125C281.994 110.125 282.385 110.034 282.703 109.852C283.025 109.669 283.267 109.434 283.429 109.146C283.595 108.857 283.678 108.554 283.678 108.236V107.162C283.628 107.222 283.518 107.276 283.349 107.326C283.184 107.372 282.991 107.414 282.773 107.45C282.557 107.483 282.347 107.513 282.141 107.54C281.939 107.563 281.775 107.583 281.649 107.599C281.344 107.639 281.059 107.704 280.794 107.793C280.532 107.879 280.32 108.01 280.158 108.186C279.999 108.358 279.919 108.594 279.919 108.892C279.919 109.3 280.07 109.608 280.371 109.817C280.676 110.022 281.063 110.125 281.53 110.125Z" fill="#F7BE2B"/>
<path d="M291.169 109.409L293.833 103.364H294.947L291.646 111H290.691L287.45 103.364H288.544L291.169 109.409ZM288.166 103.364V111H286.992V103.364H288.166ZM294.171 111V103.364H295.345V111H294.171Z" fill="#F7BE2B"/>
<path d="M299.242 109.608L299.163 110.145C299.106 110.523 299.02 110.927 298.904 111.358C298.792 111.789 298.674 112.195 298.551 112.576C298.429 112.957 298.328 113.26 298.248 113.486H297.353C297.396 113.274 297.453 112.994 297.522 112.646C297.592 112.298 297.661 111.908 297.731 111.477C297.804 111.05 297.864 110.612 297.91 110.165L297.97 109.608H299.242Z" fill="#F7BE2B"/>
<path d="M305.354 111V103.364H311.359V111H310.186V104.457H306.527V111H305.354Z" fill="#F7BE2B"/>
<path d="M316.604 111.159C315.915 111.159 315.31 110.995 314.79 110.667C314.273 110.339 313.868 109.88 313.577 109.29C313.288 108.7 313.144 108.01 313.144 107.222C313.144 106.426 313.288 105.732 313.577 105.138C313.868 104.545 314.273 104.084 314.79 103.756C315.31 103.428 315.915 103.264 316.604 103.264C317.294 103.264 317.897 103.428 318.414 103.756C318.934 104.084 319.339 104.545 319.627 105.138C319.919 105.732 320.065 106.426 320.065 107.222C320.065 108.01 319.919 108.7 319.627 109.29C319.339 109.88 318.934 110.339 318.414 110.667C317.897 110.995 317.294 111.159 316.604 111.159ZM316.604 110.105C317.128 110.105 317.559 109.971 317.897 109.702C318.235 109.434 318.485 109.081 318.648 108.643C318.81 108.206 318.891 107.732 318.891 107.222C318.891 106.711 318.81 106.236 318.648 105.795C318.485 105.354 318.235 104.998 317.897 104.726C317.559 104.454 317.128 104.318 316.604 104.318C316.081 104.318 315.65 104.454 315.312 104.726C314.974 104.998 314.723 105.354 314.561 105.795C314.399 106.236 314.317 106.711 314.317 107.222C314.317 107.732 314.399 108.206 314.561 108.643C314.723 109.081 314.974 109.434 315.312 109.702C315.65 109.971 316.081 110.105 316.604 110.105Z" fill="#F7BE2B"/>
<path d="M321.04 113.187V109.906H321.677C321.832 109.744 321.967 109.568 322.079 109.379C322.192 109.19 322.29 108.967 322.373 108.708C322.459 108.446 322.532 108.128 322.591 107.754C322.651 107.376 322.704 106.92 322.751 106.386L323.009 103.364H327.861V109.906H329.035V113.187H327.861V111H322.214V113.187H321.04ZM323.009 109.906H326.688V104.457H324.103L323.904 106.386C323.821 107.185 323.718 107.883 323.596 108.479C323.473 109.076 323.278 109.552 323.009 109.906Z" fill="#F7BE2B"/>
<path d="M329.916 111V109.906H330.194C330.423 109.906 330.614 109.861 330.766 109.772C330.918 109.679 331.041 109.518 331.134 109.29C331.23 109.058 331.303 108.736 331.353 108.325C331.406 107.911 331.444 107.384 331.467 106.744L331.606 103.364H336.697V111H335.524V104.457H332.72L332.6 107.182C332.574 107.808 332.518 108.36 332.431 108.837C332.349 109.311 332.221 109.709 332.049 110.03C331.88 110.352 331.654 110.594 331.373 110.756C331.091 110.919 330.738 111 330.314 111H329.916Z" fill="#F7BE2B"/>
<path d="M342.051 111.159C341.316 111.159 340.681 110.997 340.147 110.672C339.617 110.344 339.208 109.886 338.919 109.3C338.634 108.71 338.492 108.024 338.492 107.241C338.492 106.459 338.634 105.77 338.919 105.173C339.208 104.573 339.609 104.106 340.123 103.771C340.64 103.433 341.243 103.264 341.932 103.264C342.33 103.264 342.723 103.33 343.11 103.463C343.498 103.596 343.851 103.811 344.169 104.109C344.488 104.404 344.741 104.795 344.93 105.283C345.119 105.77 345.213 106.37 345.213 107.082V107.58H339.327V106.565H344.02C344.02 106.134 343.934 105.75 343.762 105.412C343.593 105.074 343.351 104.807 343.036 104.611C342.724 104.416 342.356 104.318 341.932 104.318C341.465 104.318 341.06 104.434 340.719 104.666C340.381 104.895 340.121 105.193 339.939 105.561C339.756 105.929 339.665 106.323 339.665 106.744V107.42C339.665 107.997 339.765 108.486 339.963 108.887C340.166 109.285 340.446 109.588 340.804 109.797C341.162 110.002 341.578 110.105 342.051 110.105C342.36 110.105 342.638 110.062 342.887 109.976C343.139 109.886 343.356 109.754 343.538 109.578C343.72 109.399 343.861 109.177 343.961 108.912L345.094 109.23C344.975 109.615 344.774 109.953 344.493 110.244C344.211 110.533 343.863 110.758 343.449 110.92C343.034 111.08 342.569 111.159 342.051 111.159Z" fill="#F7BE2B"/>
<path d="M346.316 111L349.418 107.122L346.356 103.364H347.748L350.293 106.625H350.93V103.364H352.103V106.625H352.719L355.265 103.364H356.657L353.614 107.122L356.697 111H355.285L352.699 107.719H352.103V111H350.93V107.719H350.333L347.728 111H346.316Z" fill="#F7BE2B"/>
<path d="M360.62 111.179C360.136 111.179 359.697 111.088 359.303 110.905C358.909 110.72 358.595 110.453 358.363 110.105C358.131 109.754 358.015 109.33 358.015 108.832C358.015 108.395 358.101 108.04 358.274 107.768C358.446 107.493 358.676 107.278 358.965 107.122C359.253 106.966 359.571 106.85 359.919 106.774C360.271 106.695 360.624 106.632 360.978 106.585C361.442 106.526 361.819 106.481 362.107 106.451C362.399 106.418 362.611 106.363 362.743 106.287C362.879 106.211 362.947 106.078 362.947 105.889V105.849C362.947 105.359 362.813 104.978 362.544 104.706C362.279 104.434 361.877 104.298 361.336 104.298C360.776 104.298 360.337 104.421 360.019 104.666C359.701 104.911 359.477 105.173 359.348 105.452L358.234 105.054C358.433 104.59 358.698 104.229 359.029 103.97C359.364 103.708 359.729 103.526 360.123 103.423C360.521 103.317 360.912 103.264 361.297 103.264C361.542 103.264 361.824 103.294 362.142 103.354C362.463 103.41 362.773 103.528 363.071 103.707C363.373 103.886 363.623 104.156 363.822 104.517C364.021 104.878 364.12 105.362 364.12 105.969V111H362.947V109.966H362.887C362.808 110.132 362.675 110.309 362.49 110.498C362.304 110.687 362.057 110.847 361.749 110.98C361.441 111.113 361.065 111.179 360.62 111.179ZM360.799 110.125C361.263 110.125 361.654 110.034 361.973 109.852C362.294 109.669 362.536 109.434 362.699 109.146C362.864 108.857 362.947 108.554 362.947 108.236V107.162C362.897 107.222 362.788 107.276 362.619 107.326C362.453 107.372 362.261 107.414 362.042 107.45C361.827 107.483 361.616 107.513 361.411 107.54C361.209 107.563 361.045 107.583 360.919 107.599C360.614 107.639 360.329 107.704 360.064 107.793C359.802 107.879 359.59 108.01 359.427 108.186C359.268 108.358 359.189 108.594 359.189 108.892C359.189 109.3 359.339 109.608 359.641 109.817C359.946 110.022 360.332 110.125 360.799 110.125Z" fill="#F7BE2B"/>
<path d="M376.682 109.906L376.543 113.187H375.33V111H374.336V109.906H376.682ZM366.262 103.364H367.435V109.906H370.319V103.364H371.492V109.906H374.376V103.364H375.549V111H366.262V103.364Z" fill="#F7BE2B"/>
<path d="M379.562 109.27L383.241 103.364H384.593V111H383.42V105.094L379.761 111H378.389V103.364H379.562V109.27Z" fill="#F7BE2B"/>
<path d="M390.919 109.409L393.583 103.364H394.697L391.396 111H390.441L387.2 103.364H388.294L390.919 109.409ZM387.916 103.364V111H386.742V103.364H387.916ZM393.921 111V103.364H395.095V111H393.921Z" fill="#F7BE2B"/>
<path d="M279.521 131V123.364H285.526V131H284.353V124.457H280.694V131H279.521Z" fill="#F7BE2B"/>
<path d="M287.669 133.864V123.364H288.803V124.577H288.942C289.028 124.444 289.147 124.275 289.3 124.07C289.456 123.861 289.678 123.675 289.966 123.513C290.258 123.347 290.652 123.264 291.149 123.264C291.792 123.264 292.359 123.425 292.85 123.746C293.34 124.068 293.723 124.524 293.998 125.114C294.273 125.704 294.411 126.4 294.411 127.202C294.411 128.01 294.273 128.711 293.998 129.305C293.723 129.895 293.342 130.352 292.854 130.677C292.367 130.998 291.805 131.159 291.169 131.159C290.679 131.159 290.286 131.078 289.991 130.915C289.696 130.75 289.469 130.562 289.31 130.354C289.151 130.142 289.028 129.966 288.942 129.827H288.842V133.864H287.669ZM288.823 127.182C288.823 127.758 288.907 128.267 289.076 128.708C289.245 129.146 289.492 129.489 289.817 129.737C290.142 129.982 290.539 130.105 291.01 130.105C291.501 130.105 291.91 129.976 292.238 129.717C292.569 129.455 292.818 129.104 292.984 128.663C293.153 128.219 293.237 127.725 293.237 127.182C293.237 126.645 293.154 126.161 292.989 125.73C292.826 125.296 292.579 124.953 292.248 124.701C291.92 124.446 291.507 124.318 291.01 124.318C290.533 124.318 290.132 124.439 289.807 124.681C289.482 124.92 289.237 125.254 289.071 125.685C288.905 126.113 288.823 126.612 288.823 127.182Z" fill="#F7BE2B"/>
<path d="M297.374 129.27L301.053 123.364H302.405V131H301.232V125.094L297.573 131H296.2V123.364H297.374V129.27Z" fill="#F7BE2B"/>
<path d="M304.077 129.051H305.329C305.356 129.396 305.512 129.658 305.797 129.837C306.085 130.016 306.46 130.105 306.92 130.105C307.391 130.105 307.794 130.009 308.128 129.817C308.463 129.621 308.631 129.306 308.631 128.872C308.631 128.617 308.568 128.395 308.442 128.206C308.316 128.014 308.138 127.865 307.91 127.758C307.681 127.652 307.411 127.599 307.099 127.599H305.787V126.545H307.099C307.567 126.545 307.911 126.439 308.133 126.227C308.359 126.015 308.472 125.75 308.472 125.432C308.472 125.09 308.351 124.817 308.109 124.611C307.867 124.403 307.524 124.298 307.079 124.298C306.632 124.298 306.259 124.399 305.961 124.602C305.663 124.8 305.505 125.057 305.489 125.372H304.256C304.269 124.961 304.395 124.598 304.633 124.283C304.872 123.965 305.197 123.717 305.608 123.538C306.019 123.355 306.49 123.264 307.02 123.264C307.557 123.264 308.022 123.359 308.417 123.548C308.815 123.733 309.121 123.987 309.337 124.308C309.555 124.626 309.665 124.988 309.665 125.392C309.665 125.823 309.544 126.171 309.302 126.436C309.06 126.701 308.757 126.89 308.392 127.003V127.082C308.68 127.102 308.931 127.195 309.143 127.361C309.358 127.523 309.525 127.737 309.645 128.002C309.764 128.264 309.824 128.554 309.824 128.872C309.824 129.336 309.699 129.74 309.451 130.085C309.202 130.427 308.861 130.692 308.427 130.881C307.993 131.066 307.497 131.159 306.94 131.159C306.4 131.159 305.916 131.071 305.489 130.896C305.061 130.717 304.721 130.47 304.469 130.155C304.221 129.837 304.09 129.469 304.077 129.051Z" fill="#F7BE2B"/>
<path d="M312.486 126.128H314.674C315.568 126.128 316.253 126.355 316.727 126.809C317.201 127.263 317.438 127.838 317.438 128.534C317.438 128.991 317.332 129.407 317.12 129.782C316.907 130.153 316.596 130.45 316.185 130.672C315.774 130.891 315.27 131 314.674 131H311.472V123.364H312.645V129.906H314.674C315.138 129.906 315.519 129.784 315.817 129.538C316.115 129.293 316.264 128.978 316.264 128.594C316.264 128.189 316.115 127.86 315.817 127.604C315.519 127.349 315.138 127.222 314.674 127.222H312.486V126.128ZM318.651 131V123.364H319.824V131H318.651Z" fill="#F7BE2B"/>
<path d="M321.972 131V123.364H325.094C325.916 123.364 326.569 123.549 327.053 123.92C327.537 124.292 327.779 124.782 327.779 125.392C327.779 125.856 327.641 126.216 327.366 126.471C327.091 126.723 326.738 126.893 326.307 126.983C326.589 127.023 326.862 127.122 327.127 127.281C327.396 127.44 327.618 127.659 327.794 127.937C327.969 128.213 328.057 128.551 328.057 128.952C328.057 129.343 327.958 129.692 327.759 130.001C327.56 130.309 327.275 130.553 326.904 130.731C326.532 130.91 326.088 131 325.571 131H321.972ZM323.085 129.926H325.571C325.976 129.926 326.292 129.83 326.521 129.638C326.75 129.446 326.864 129.184 326.864 128.852C326.864 128.458 326.75 128.148 326.521 127.923C326.292 127.694 325.976 127.579 325.571 127.579H323.085V129.926ZM323.085 126.565H325.094C325.409 126.565 325.679 126.522 325.904 126.436C326.13 126.347 326.302 126.221 326.421 126.058C326.544 125.892 326.605 125.697 326.605 125.472C326.605 125.15 326.471 124.898 326.203 124.716C325.934 124.53 325.565 124.437 325.094 124.437H323.085V126.565Z" fill="#F7BE2B"/>
<path d="M330.589 133.864C330.39 133.864 330.213 133.847 330.057 133.814C329.901 133.784 329.793 133.754 329.734 133.724L330.032 132.69C330.317 132.763 330.569 132.79 330.788 132.77C331.006 132.75 331.2 132.652 331.369 132.477C331.542 132.304 331.699 132.024 331.842 131.636L332.06 131.04L329.237 123.364H330.509L332.617 129.449H332.697L334.805 123.364H336.077L332.836 132.114C332.69 132.508 332.51 132.834 332.294 133.093C332.079 133.355 331.828 133.549 331.543 133.675C331.262 133.801 330.944 133.864 330.589 133.864Z" fill="#F7BE2B"/>
</svg>

After

Width:  |  Height:  |  Size: 163 KiB

View file

@ -0,0 +1,28 @@
<svg width="80" height="80" viewBox="0 0 80 80" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_20_351)">
<mask id="mask0_20_351" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="3" width="79" height="75">
<path d="M39.6857 3.42859L48.8571 31.6857H78.5714L54.5143 49.1429L63.7143 77.4L39.6857 59.9429L15.6571 77.4L24.8286 49.1429L0.799988 31.6857H30.4857L39.6857 3.42859Z" fill="white"/>
</mask>
<g mask="url(#mask0_20_351)">
<path d="M82.6002 44H-3.22833V78.6286H82.6002V44Z" fill="#C64E1B"/>
</g>
<mask id="mask1_20_351" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="3" width="79" height="75">
<path d="M39.6857 3.42859L48.8571 31.6857H78.5714L54.5143 49.1429L63.7143 77.4L39.6857 59.9429L15.6571 77.4L24.8286 49.1429L0.799988 31.6857H30.4857L39.6857 3.42859Z" fill="white"/>
</mask>
<g mask="url(#mask1_20_351)">
<path d="M82.6002 2.02856H-3.22833V37.0286H82.6002V2.02856Z" fill="#C64E1B"/>
</g>
<mask id="mask2_20_351" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="3" width="79" height="75">
<path d="M39.6857 3.42859L48.8571 31.6857H78.5714L54.5143 49.1429L63.7143 77.4L39.6857 59.9429L15.6571 77.4L24.8286 49.1429L0.799988 31.6857H30.4857L39.6857 3.42859Z" fill="white"/>
</mask>
<g mask="url(#mask2_20_351)">
<path d="M82.6002 37.0286H-3.22833V44H82.6002V37.0286Z" fill="white"/>
</g>
<path d="M39.6857 22.7143L27.9143 61.1143L39.6857 51.9429L51.4286 61.1143L39.6857 22.7143Z" fill="white"/>
</g>
<defs>
<clipPath id="clip0_20_351">
<rect width="80" height="80" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View file

@ -0,0 +1,4 @@
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M26 5C27.6569 5 29 6.34315 29 8V19.8772C29 22.6386 26.7614 24.8772 24 24.8772H10.3973L4.45208 27.8904C3.78688 28.2276 3 27.7442 3 26.9985V24.8772V22.0376V8C3 6.34315 4.34315 5 6 5H26Z" fill="#C64E1B"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M22 16.5037H10V18.0037H22V16.5037ZM22 10.9962H10V12.4962H22V10.9962Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 488 B

View file

@ -0,0 +1,10 @@
<svg width="101" height="100" viewBox="0 0 101 100" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M85.2139 21.485L84.2909 76.7715C84.2319 80.1252 81.4039 82.7645 78.0599 82.576L6.60019 78.7361C3.37549 78.5575 0.885093 75.8289 1.00409 72.5943L2.99849 19.3219C3.11759 16.2758 5.51869 13.825 8.56479 13.6365L79.0719 9.3997C82.5149 9.1914 85.4019 11.9597 85.3429 15.4126L85.2739 18.7564L85.2139 21.485Z" fill="white"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M44.138 46.093L41.021 36.5L37.9041 46.093L36.9254 49.1049H33.7585H23.6719L28.1786 52.3792H39.3076L39.3119 52.3659L41.021 47.1057L42.7301 52.3659L42.7344 52.3792H53.8634L58.3701 49.1049H48.2835H45.1166L44.138 46.093ZM49.408 55.6163H43.8322L43.8089 55.6332L43.795 55.6433L43.8003 55.6596L45.5095 60.9198L41.0349 57.6688L41.021 57.6587L41.0071 57.6688L36.5326 60.9198L38.2417 55.6596L38.247 55.6433L38.2331 55.6332L38.2098 55.6163H32.634L34.3942 56.8951L33.4156 59.907L30.2987 69.5L38.4589 63.5712L41.021 61.7098L43.5831 63.5712L51.7434 69.5L48.6264 59.907L47.6478 56.8951L49.408 55.6163Z" fill="#131513"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M44.138 46.093L41.021 36.5L37.9041 46.093L36.9254 49.1049H33.7585H23.6719L28.1786 52.3792H39.3076L39.3119 52.3659L41.021 47.1057L42.7301 52.3659L42.7344 52.3792H53.8634L58.3701 49.1049H48.2835H45.1166L44.138 46.093ZM49.408 55.6163H43.8322L43.8089 55.6332L43.795 55.6433L43.8003 55.6596L45.5095 60.9198L41.0349 57.6688L41.021 57.6587L41.0071 57.6688L36.5326 60.9198L38.2417 55.6596L38.247 55.6433L38.2331 55.6332L38.2098 55.6163H32.634L34.3942 56.8951L33.4156 59.907L30.2987 69.5L38.4589 63.5712L41.021 61.7098L43.5831 63.5712L51.7434 69.5L48.6264 59.907L47.6478 56.8951L49.408 55.6163Z" fill="#C64E1B" fill-opacity="0.59"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M84.5579 15.398C84.6085 12.402 82.1041 10.0026 79.1191 10.1831L8.61313 14.4199C8.6129 14.4199 8.61337 14.4199 8.61313 14.4199C5.96851 14.5839 3.88639 16.7101 3.78277 19.3518C3.78276 19.352 3.78278 19.3516 3.78277 19.3518L1.78842 72.623C1.68514 75.4303 3.84618 77.7972 6.64346 77.9522L78.1019 81.792L78.1039 81.7921C81.0004 81.9554 83.4547 79.6686 83.5059 76.7576L84.4289 21.4718L84.4289 21.4676L84.5579 15.3991C84.5579 15.3987 84.5579 15.3983 84.5579 15.398ZM79.0247 8.61599C82.9252 8.3802 86.1944 11.5167 86.1276 15.4259L86.1276 15.4287L85.9986 21.498L85.9986 21.5021L85.0756 76.7845C85.0089 80.5803 81.8079 83.5726 78.0171 83.3597C78.0166 83.3597 78.0161 83.3597 78.0156 83.3596L6.55663 79.5198C2.90451 79.3175 0.0847541 76.2273 0.219477 72.5653L2.21395 19.2911C2.34884 15.8411 5.06914 13.0662 8.51616 12.8529L79.0247 8.61599C79.0248 8.61599 79.0245 8.616 79.0247 8.61599Z" fill="black"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M85.6616 23.3342C85.6654 23.5937 85.4581 23.8072 85.1986 23.811L6.04916 24.9719C5.78961 24.9758 5.57612 24.7684 5.57232 24.5089C5.56851 24.2493 5.77583 24.0359 6.03537 24.032L85.1848 22.8711C85.4443 22.8673 85.6578 23.0747 85.6616 23.3342Z" fill="black"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.96041 17.1338C9.65755 16.7638 10.5188 16.7626 11.1628 17.1006C11.3926 17.2212 11.4812 17.5053 11.3605 17.7351C11.2399 17.965 10.9558 18.0535 10.726 17.9329C10.3678 17.745 9.83505 17.7338 9.40105 17.9641C8.99931 18.1773 8.65534 18.6131 8.67571 19.3997L8.67579 19.4026L8.67578 19.4026C8.68744 19.9947 8.95359 20.3587 9.28916 20.5635C9.64449 20.7805 10.0991 20.8304 10.4692 20.7258C10.719 20.6551 10.9787 20.8004 11.0493 21.0501C11.12 21.2999 10.9748 21.5597 10.725 21.6303C10.1127 21.8035 9.38661 21.7244 8.79933 21.3658C8.19263 20.9954 7.75447 20.3379 7.73599 19.4226C7.70725 18.2949 8.23135 17.5207 8.96041 17.1338Z" fill="black"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M14.2031 16.932C14.8715 16.5476 15.7015 16.521 16.3527 16.8091C16.5901 16.9141 16.6975 17.1916 16.5925 17.429C16.4875 17.6664 16.2099 17.7737 15.9725 17.6687C15.5919 17.5004 15.0774 17.5136 14.6717 17.7468C14.2939 17.9641 13.9727 18.3949 13.9932 19.1613L13.9933 19.1666L13.9933 19.1666C14.001 19.6683 14.2026 20.0006 14.465 20.2266C14.6617 20.3959 14.6839 20.6927 14.5145 20.8894C14.3451 21.0861 14.0483 21.1082 13.8516 20.9389C13.4002 20.5501 13.0662 19.9705 13.0534 19.1837C13.0252 18.0959 13.5075 17.332 14.2031 16.932Z" fill="black"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M21.1487 16.7359C21.1572 16.9954 20.9537 17.2125 20.6943 17.221C20.3386 17.2326 19.9868 17.3641 19.7309 17.6137C19.483 17.8554 19.2909 18.2411 19.3034 18.835C19.3088 19.0945 19.1029 19.3093 18.8433 19.3148C18.5838 19.3202 18.369 19.1142 18.3636 18.8547C18.3462 18.0298 18.6205 17.3836 19.0746 16.9407C19.5207 16.5056 20.1066 16.2997 20.6636 16.2815C20.9231 16.273 21.1402 16.4765 21.1487 16.7359Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 4.6 KiB

View file

@ -0,0 +1,4 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4.76172 20.9419C4.76172 18.9559 5.58268 17.1559 6.90161 15.8529C7.56958 15.1929 8.36654 14.6609 9.24849 14.2969L11.9974 16.4647L14.7462 14.2969C15.6292 14.6609 16.4251 15.1929 17.0931 15.8529C18.412 17.1559 19.233 18.9559 19.233 20.9419" stroke="#FA773F" stroke-width="1.49996" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M15.2375 6.87359C15.2375 9.33359 13.6176 10.5636 11.9976 10.5636C10.3777 10.5636 8.75781 9.33359 8.75781 6.87359C8.75781 4.41359 10.3777 3.18359 11.9976 3.18359C13.6176 3.18359 15.2375 4.42359 15.2375 6.87359Z" stroke="#FA773F" stroke-width="1.49996" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 749 B

View file

@ -624,17 +624,17 @@ a.btn:is(:hover, :focus, :active) {
color: var(--color-link);
}
.browser-check-content {
.cert-check-content {
font-family: 'Golos';
font-size: var(--size-text-secondary);
padding: var(--indent-mini) var(--w-screen) var(--indent-mini) calc(var(--w-screen) + 38px);
background-color: var(--bg-warn);
}
.browser-check-text {
.cert-check-text {
position: relative;
padding-left: 40px;
}
.browser-check-text::before {
.cert-check-text::before {
position: absolute;
content: url(img/svg/info.svg);
left: 0;

View file

@ -1,9 +1,13 @@
<nav class="header" id="webbpm-header">
<div class="header-logo">
<div class="logo"><a routerLink="/"></a></div>
<div class="main-page"><a routerLink="/">Реестр повесток физических лиц</a></div>
<nav class="header" id="webbpm-header" [ngClass]="{'header-landing': isLanding}">
<div *ngIf="isLanding">
<div class="header-logo"></div>
<div class="header-title">Реестр повесток физических лиц</div>
</div>
<div class="header-menu">
<div *ngIf="!isLanding" class="header-logo">
<div class="logo"><a routerLink="/"></a></div>
<div class="main-page"><a routerLink="/">Реестр повесток физических лиц</a></div>
</div>
<div *ngIf="!isLanding" class="header-menu">
<div ngbDropdown class="logout" log-out></div>
</div>
</nav>

View file

@ -0,0 +1,106 @@
<div class="list-group lk-what">
<div>
<div class="title">Реестр повесток</div>
<div class="short-text">Реестр повесток содержит сведения обо всех направленных повестках военкомата</div>
<div class="subtitle">Зачем смотреть реестр повесток?</div>
<div class="paragraph">
<div class="paragraph-third">
<div class="icon-checklist short-text">Узнать, что в Реестре есть повестка на Ваше имя.</div>
</div>
<div class="paragraph-third">
<div class="icon-clock short-text">Уточнить дату, время 
и место явки.</div>
</div>
<div class="paragraph-third">
<div class="icon-text short-text">Получить выписку из Реестра повесток или Реестра воинского учёта.</div>
</div>
</div>
</div>
</div>
<div class="list-group lk-access">
<div class="paragraph">
<div class="paragraph-left">
<div class="subtitle short-text">Как посмотреть повестку?</div>
</div>
<div class="paragraph-right">
<div class="list">
<div class="esia short-text">Войти в Реестр с помощью своей учётной записи на Госуслугах через ЕСИА</div>
<div class="case short-text">Она должна быть подтверждённой</div>
<div class="user short-text">Если учётной записи нет, зарегистрируйтесь</div>
</div>
<div class="btn-group">
<a href="." class="btn">Войти в Личный кабинет</a>
<!--<a href="#" class="btn btn-secondary">Зарегистрироваться</a>-->
</div>
</div>
</div>
</div>
<div class="list-group lk-info">
<div class="subtitle">Для чего направляется повестка?</div>
<div class="paragraph">
<div class="paragraph-half">
<div class="section-group">
<div class="icon-user">Прохождение медосвидетельствования</div>
<div class="icon-building">Прохождение призывной комиссии</div>
</div>
</div>
<div class="paragraph-half">
<div class="section-group">
<div class="icon-case">Уточнение документов воинского учёта</div>
<div class="icon-shield">Отправка к месту прохождения военной службы.</div>
</div>
</div>
</div>
</div>
<div class="list-group lk-pass">
<div class="subtitle">Как вручается повестка?</div>
<div><a href="https://www.consultant.ru/document/cons_doc_LAW_18260/0b6fba2b4841a88fc0274d43870ea1d54a32b91d/?ysclid=lypo4aufut593686350">Закон о воинской обязанности и военной службе, ст. 31.</a></div>
<div class="pass-list">
<div>Лично под расписку по месту жительства, работы или учёбы</div>
<div>Размещение в Реестре повесток</div>
<div>Заказным письмом по Почте России</div>
</div>
</div>
<div class="list-group lk-when">
<div class="paragraph">
<div class="paragraph-left">
<div class="subtitle short-text">Когда повестка считается вручённой?</div>
</div>
<div class="paragraph-right">
<div class="list">
<div class="romb short-text">После подписи, удостоверяющей получение лично</div>
<div class="romb short-text">Через 7 дней с даты размещения в Реестре повесток</div>
<div class="romb short-text">В день вручения заказного письма</div>
<div class="romb short-text">В день отказа от получения лично или по почте — в случае такого отказа</div>
</div>
</div>
</div>
</div>
<div class="list-group lk-msg">
<div class="msg-list">
<span class="info"></span>Явиться в военкомат необходимо в срок, указанный в повестке!
</div>
</div>
<div class="list-group lk-limits">
<div class="subtitle">Временные ограничения</div>
<div>В случае неявки по повестке к Вам будут применены временные меры. <a href="https://www.consultant.ru/document/cons_doc_LAW_18260/dc940acbd42ce7edc1bdb8be8fcb13e3bd02820d/?ysclid=lypo6bitf0605727213">Подробнее о временных мерах</a></div>
<div class="scheme"></div>
</div>
<div class="list-group lk-alert">
<div class="short-text">Если не прийти в военкомат в течение 20 календарных дней от даты явки, указанной в повестке, начнут действовать другие ограничения, запрещающие:</div>
<div class="paragraph">
<div class="paragraph-left">
<div class="list">
<div class="romb short-text">управлять транспортом</div>
<div class="romb short-text">регистрировать транспорт и недвижимость</div>
<div class="romb short-text">получать кредиты и займы</div>
<div class="romb short-text">регистрироваться в качестве ИП или самозанятого</div>
</div>
</div>
<div class="paragraph-right">
<div class="alert-block">
<div>С даты, когда повестка размещена в Реестре повесток, гражданам, подлежащим призыву на воинскую службу, запрещается выезд из России</div>
<div>Все ограничения, включая запрет на выезд из России, временные. Их снимут в течение суток после явки в военкомат</div>
</div>
</div>
</div>
</div>

View file

@ -1,8 +1,19 @@
<div class="wrapper">
<app-header *ngIf="headerVisible">
</app-header>
<div class="container">
<div *ngIf="isLanding" id="cert-check-info">
<div class="cert-check-content">
<div class="cert-check-text">
<p class="plain-text text-header">
Установите сертификат.
</p>
<p class="plain-text">
Для обеспечения защищенного соединения с сайтом реестра повесток необходимо установить сертификат безопасности. Он размещен на официальном сайте Портала государственных услуг Российской Федерации. Для установки воспользуйтесь <a href="https://www.gosuslugi.ru/crt/">инструкцией</a>
</p>
</div>
</div>
</div>
<div class="container-inside" id="webbpm-angular-application-container">
<router-outlet></router-outlet>
<app-footer *ngIf="footerVisible"></app-footer>

View file

@ -0,0 +1,42 @@
import {AnalyticalScope, Behavior, Control, NotNull} from "@webbpm/base-package";
import {ElementRef} from "@angular/core";
import {AuditService} from "./service/AuditService";
import {LinkEventTypeEnum} from "./component/enum/LinkEventTypeEnum";
@AnalyticalScope(Control)
export class LinkClickHandler extends Behavior {
@NotNull()
public eventType: LinkEventTypeEnum;
private control: Control;
private auditService: AuditService;
private el: ElementRef;
initialize() {
this.control = this.getScript(Control);
this.el = this.control.getEl();
super.initialize();
}
bindEvents() {
super.bindEvents();
if (this.el) {
this.el.nativeElement.addEventListener('click',
(event: MouseEvent) => this.onClickFunction(event));
}
}
unbindEvents() {
super.unbindEvents()
if (this.el) {
this.el.nativeElement.removeEventListener('click',
(event: MouseEvent) => this.onClickFunction(event));
}
}
private onClickFunction(event: MouseEvent) {
const target = event.target as HTMLElement;
if (target.tagName === 'A') {
this.auditService.logActionAudit(this.eventType);
}
}
}

View file

@ -26,9 +26,15 @@ export class ExtractLoadService extends Behavior {
super.initialize();
this.button = this.getScript(AbstractButton);
this.httpClient = this.injector.get(HttpClient);
this.errorEvent.subscribe(() => console.log("error event occurred", this.errorEvent));
this.onClickFunction = () => {
console.log("click event occurred");
const timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
this.httpClient.get('extract/' + this.formatRegistry, {
responseType: 'blob',
headers: {
"Client-Time-Zone": timeZone,
},
observe: 'response'
}).toPromise()
.then((response) => {

View file

@ -18,7 +18,7 @@ export class LoadForm extends Container {
private ervuDataService: ErvuDataService;
private subscription: Subscription;
private fields: any[];
private fieldDataList: FieldData[] = [];
private fieldDataList: FieldData[];
constructor(el: ElementRef, cd: ChangeDetectorRef) {
super(el, cd);
@ -30,7 +30,7 @@ export class LoadForm extends Container {
}
protected loadContainer(): Promise<any> {
return Promise.resolve(this.loadData());
return this.fieldDataList ? this.loadData() : Promise.resolve();
}
initialize() {
@ -39,6 +39,7 @@ export class LoadForm extends Container {
this.ervuDataService = this.injector.get(ErvuDataService);
this.subscription = this.ervuDataService.message.subscribe(value => {
if (value) {
this.fieldDataList = [];
this.fields.forEach(field => {
let fieldData: FieldData = new FieldData();
fieldData.componentGuid = field.objectId;

View file

@ -0,0 +1,5 @@
export enum LinkEventTypeEnum {
NAVIGATION_TO_SOURCE = "Переход на другие источники",
DOWNLOAD_TEMPLATE = "Скачивание шаблона",
DOWNLOAD_EXAMPLE = "Скачивание примера заполнения формы"
}

View file

@ -36,6 +36,9 @@ export class InMemoryStaticGrid extends GridV2 {
super.initGrid();
this.subscription = this.injector.get(ErvuDataService).message.subscribe(value => {
this.rowData = value ? value[this.dataList] : null;
this.initDeferred.promise.then(() => {
this.refreshData();
});
});
}

View file

@ -0,0 +1,43 @@
import {Injectable} from "@angular/core";
import {HttpClient} from "@angular/common/http";
import {Router} from "@angular/router";
@Injectable({
providedIn: 'root'
})
export class AuditService {
constructor(private httpClient: HttpClient, private router: Router) {
}
public logActionAudit(eventType: string, fileName?: string): void {
const currentRoute = this.router.url;
const sourceUrl = window.location.href;
const timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
const data: AuditAction = {
eventType: eventType,
sourceUrl: sourceUrl,
route: currentRoute,
fileName: fileName
};
this.httpClient.post("audit/action", data, {
headers: {
"Client-Time-Zone": timeZone,
}
}).toPromise();
}
}
export interface AuditAction {
eventType: string;
sourceUrl: string;
route: string;
fileName?: string;
}
export class AuditConstants {
public static readonly OPEN_PAGE_EVENT = "Открытие страницы";
}

View file

@ -3,6 +3,7 @@ import {RouterModule, Routes} from "@angular/router";
import {AccessDeniedComponent} from "./component/access-denied.component";
import {AuthGuard} from "../security/guard/auth.guard";
import {ConfirmExitGuard} from "@webbpm/base-package";
import {HomeLandingComponent} from "./component/home-landing.component";
const appRoutes: Routes = [
{
@ -26,6 +27,11 @@ const appRoutes: Routes = [
loadChildren: 'generated-sources/page-subpoena.module#PagesubpoenaModule',
canActivate: [AuthGuard],
},
{
path: 'home',
component: HomeLandingComponent,
canActivate: [ConfirmExitGuard],
},
];
@NgModule({

View file

@ -24,6 +24,8 @@ import {LogOutComponent} from "./component/logout.component";
import {LoadForm} from "../../ervu/component/container/LoadForm";
import {InMemoryStaticGrid} from "../../ervu/component/grid/InMemoryStaticGrid";
import {AuthenticationService} from "../security/authentication.service";
import {AuditService} from "../../ervu/service/AuditService";
import {HomeLandingComponent} from "./component/home-landing.component";
registerLocaleData(localeRu);
export const DIRECTIVES = [
@ -35,7 +37,8 @@ export const DIRECTIVES = [
forwardRef(() => AppProgressIndicationComponent),
forwardRef(() => TextWithDialogLinks),
forwardRef(() => LoadForm),
forwardRef(() => InMemoryStaticGrid)
forwardRef(() => InMemoryStaticGrid),
forwardRef(() => HomeLandingComponent)
];
export function checkAuthentication(authService: AuthenticationService): () => Promise<any> {
@ -62,7 +65,7 @@ export function checkAuthentication(authService: AuthenticationService): () => P
DIRECTIVES
],
providers: [
AuthenticationService,
AuthenticationService, AuditService,
{
provide: APP_INITIALIZER,
useFactory: checkAuthentication,

View file

@ -1,9 +1,10 @@
import {
ChangeDetectionStrategy,
ChangeDetectionStrategy, ChangeDetectorRef,
Component
} from "@angular/core";
import {ErvuDataService} from "../service/ervu-data.service";
import {CookieService} from "ngx-cookie";
import {NavigationStart, Router} from "@angular/router";
@Component({
moduleId: module.id,
@ -12,10 +13,18 @@ import {CookieService} from "ngx-cookie";
changeDetection: ChangeDetectionStrategy.OnPush
})
export class AppHeaderComponent {
public isLanding: boolean = false;
constructor(protected cookieService: CookieService, protected ervuDataService: ErvuDataService) {
constructor(protected cookieService: CookieService, protected ervuDataService: ErvuDataService,
protected router: Router, private cd: ChangeDetectorRef) {
if (cookieService.get("webbpm.ervu-lkrp-fl")) {
this.ervuDataService.getData();
}
router.events.subscribe((event) => {
if (event instanceof NavigationStart) {
this.isLanding = event.url == '/home';
this.cd.markForCheck();
}
})
}
}

View file

@ -0,0 +1,25 @@
import {ChangeDetectorRef, Component, OnInit} from "@angular/core";
import {AppConfigService, CadesHelper} from "@webbpm/base-package";
@Component({
moduleId: module.id,
selector: "home-landing",
templateUrl: "../../../../../src/resources/template/app/component/home_landing.html",
})
export class HomeLandingComponent implements OnInit {
constructor(private cd: ChangeDetectorRef, private appConfigService: AppConfigService) {
}
ngOnInit(): void {
let url = this.appConfigService.getParamValue("cert_check_url")
fetch(url, { mode: "no-cors" })
.then(() => {
document.getElementById("cert-check-info").hidden = true;
})
.catch((error) => {
console.error("Error " + error);
})
.finally(() => this.cd.markForCheck());
}
}

View file

@ -25,43 +25,36 @@ export abstract class AuthGuard implements CanActivate {
let url = new URL(window.location.href);
let params = new URLSearchParams(url.search);
let code = params.get('code');
let state = params.get('state');
let error = params.get('error');
let errorDescription = params.get('error_description');
if (isAccess) {
return true;
}
if (code || error) {
const params = new HttpParams().set('code', code).set('error', error);
if (error) {
let errorMessage =
'Произошла неизвестная ошибка. Обратитесь к системному администратору';
let errorCode = this.extractCode(errorDescription);
if (errorCode) {
errorMessage = EsiaErrorDetail.getDescription(errorCode);
}
let consoleError = error + ', error description = ' + errorDescription;
this.messageService.error(errorMessage);
console.error(consoleError);
}
if (code && state) {
const params = new HttpParams().set('code', code).set('state', state);
this.httpClient.get("esia/auth",
{
params: params, responseType: 'text', observe: 'response', headers: {
"Error-intercept-skip": "true"
}
params: params,
responseType: 'text',
observe: 'response',
})
.toPromise()
.then(
(response) => {
() => {
window.open(url.origin + url.pathname, "_self");
})
.catch((reason) => {
let errorMessage = reason.error.messages != null
? reason.error.messages
: reason.error.replaceAll('\\', '');
if (error) {
errorMessage = 'Произошла неизвестная ошибка. Обратитесь к системному администратору';
let errorCode = this.extractCode(errorDescription);
if (errorCode) {
errorMessage = EsiaErrorDetail.getDescription(errorCode);
}
let consoleError = error + ', error description = ' + errorDescription;
this.messageService.error(errorMessage);
console.error(consoleError);
}
else {
this.messageService.error(errorMessage);
console.error(reason);
}
});
});
return false;
}
else {

View file

@ -1,4 +1,4 @@
import {Component} from "@angular/core";
import {ChangeDetectorRef, Component} from "@angular/core";
import {
Event,
NavigationCancel,
@ -8,6 +8,7 @@ import {
Router
} from "@angular/router";
import {ProgressIndicationService} from "@webbpm/base-package";
import {AuditConstants, AuditService} from "../../../ervu/service/AuditService";
@Component({
moduleId: module.id,
@ -17,17 +18,28 @@ import {ProgressIndicationService} from "@webbpm/base-package";
export class WebbpmComponent {
public headerVisible: boolean = true;
public footerVisible: boolean = true;
public isLanding: boolean = false;
constructor(private router: Router,
private progressIndicationService: ProgressIndicationService) {
private progressIndicationService: ProgressIndicationService,
private cd: ChangeDetectorRef,
private auditService: AuditService) {
router.events.subscribe((event: Event) => {
if (event instanceof NavigationStart) {
progressIndicationService.showProgressBar();
this.isLanding = event.url == '/home';
this.cd.markForCheck();
}
else if (event instanceof NavigationEnd
|| event instanceof NavigationError
|| event instanceof NavigationCancel) {
|| event instanceof NavigationError
|| event instanceof NavigationCancel) {
progressIndicationService.hideProgressBar();
if (event instanceof NavigationEnd
&& event.url != '/home'
&& event.url != '/access-denied') {
this.auditService.logActionAudit(AuditConstants.OPEN_PAGE_EVENT);
}
}
})
}

View file

@ -1034,6 +1034,7 @@
<componentRootId>6f1b4ecf-7311-41ea-87f7-56f77ea66251</componentRootId>
<name>Гиперссылка - на Госуслугах</name>
<container>false</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="2fe08181-8a1e-4cda-be3a-0b0ddcb21603">
<properties>
@ -1072,6 +1073,22 @@
</value>
</entry>
</properties>
</scripts>
<scripts id="53f844ea-7cd7-4bd3-b9fa-0ba97d517b5f">
<classRef type="TS">
<className>LinkClickHandler</className>
<packageName>ervu</packageName>
</classRef>
<enabled>true</enabled>
<expanded>true</expanded>
<properties>
<entry>
<key>eventType</key>
<value>
<simple>"NAVIGATION_TO_SOURCE"</simple>
</value>
</entry>
</properties>
</scripts>
</children>
</children>

View file

@ -223,7 +223,6 @@
<componentRootId>a674ce01-eadd-4297-b782-53e45e059310</componentRootId>
<name>HB - (сценарий) в связи с неявкой в военкомат без уважительной причины в течение 20 календарных</name>
<container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f">
<properties>
@ -325,7 +324,6 @@
<componentRootId>854640d1-9de8-4d5a-8f00-5d33cdf097f3</componentRootId>
<name>HB - (сценарий) в качестве ограничения, направленного на обеспечение явки в военкомат</name>
<container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f">
<properties>
@ -450,7 +448,6 @@
<componentRootId>0276d338-dbbc-406a-a356-96f7fd02a5a6</componentRootId>
<name>Таблица - временные меры</name>
<container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="fe8cfe1c-5381-411e-aee6-cf4b38fcea07">
<properties>
@ -623,7 +620,6 @@
<componentRootId>040fa808-ccbf-4844-b179-d63f54dc220a</componentRootId>
<name>HB - запрет на выезд из России</name>
<container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f">
<properties>
@ -869,7 +865,6 @@
<componentRootId>573a720b-91f7-4e25-a441-7fd3133fdf31</componentRootId>
<name>HB - запрет на постановку в налоговом органе физического лица в качестве налогоплательщика, применяющего спец</name>
<container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f">
<properties>
@ -1683,7 +1678,6 @@
<componentRootId>52dc50c2-9c0c-44a8-94fb-ff190bdce295</componentRootId>
<name>VB - правый</name>
<container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f">
<properties>
@ -1818,7 +1812,6 @@
<componentRootId>ffa21c64-1030-45c8-9901-db59f298fc11</componentRootId>
<name>Диалоговые окна (информационные)</name>
<container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e"/>
@ -2045,6 +2038,22 @@
<scripts id="f203f156-be32-4131-9c86-4d6bac6d5d56">
<enabled>false</enabled>
</scripts>
<scripts id="a1579d08-139a-429e-8601-2bf95aa91147">
<classRef type="TS">
<className>LinkClickHandler</className>
<packageName>ervu</packageName>
</classRef>
<enabled>true</enabled>
<expanded>true</expanded>
<properties>
<entry>
<key>eventType</key>
<value>
<simple>"NAVIGATION_TO_SOURCE"</simple>
</value>
</entry>
</properties>
</scripts>
</children>
<children id="56f58b69-0324-4823-bb69-98682542e514">
<prototypeId>fd7e47b9-dce1-4d14-9f3a-580c79f59579</prototypeId>
@ -2456,6 +2465,22 @@
<scripts id="f203f156-be32-4131-9c86-4d6bac6d5d56">
<enabled>false</enabled>
</scripts>
<scripts id="f2041b5d-0cd4-4b7f-a790-98edc48e9d86">
<classRef type="TS">
<className>LinkClickHandler</className>
<packageName>ervu</packageName>
</classRef>
<enabled>true</enabled>
<expanded>true</expanded>
<properties>
<entry>
<key>eventType</key>
<value>
<simple>"NAVIGATION_TO_SOURCE"</simple>
</value>
</entry>
</properties>
</scripts>
</children>
<children id="8ae2b128-9044-428e-b88e-7095f1207c97">
<prototypeId>fd7e47b9-dce1-4d14-9f3a-580c79f59579</prototypeId>
@ -2891,6 +2916,22 @@
<scripts id="f203f156-be32-4131-9c86-4d6bac6d5d56">
<enabled>false</enabled>
</scripts>
<scripts id="9d29fb9f-020d-46eb-a8c4-efd831aae46a">
<classRef type="TS">
<className>LinkClickHandler</className>
<packageName>ervu</packageName>
</classRef>
<enabled>true</enabled>
<expanded>true</expanded>
<properties>
<entry>
<key>eventType</key>
<value>
<simple>"NAVIGATION_TO_SOURCE"</simple>
</value>
</entry>
</properties>
</scripts>
</children>
<children id="67caa536-dc5e-49c6-a8b9-c3c4cf9d0459">
<prototypeId>fd7e47b9-dce1-4d14-9f3a-580c79f59579</prototypeId>
@ -3002,7 +3043,6 @@
<componentRootId>6a606277-7950-41b1-a59f-7d1deb5cccd2</componentRootId>
<name>Уважительные причины неявки в военкомат</name>
<container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c">
<properties>
@ -3174,6 +3214,7 @@
<componentRootId>613a502f-2276-454e-bb91-4596be5e94cf</componentRootId>
<name>Гиперссылка - Закон о воинской обязанности и военной службе, ст. 7.</name>
<container>false</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="2fe08181-8a1e-4cda-be3a-0b0ddcb21603">
<properties>
@ -3215,6 +3256,7 @@
<componentRootId>81c3d5d2-0f2e-401d-b107-4ad7467f7b30</componentRootId>
<name>Текст(гссылка) - Закон о воинской обязанности и военной службе, ст. 7.</name>
<container>false</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c">
<properties>
@ -3232,6 +3274,22 @@
<scripts id="f203f156-be32-4131-9c86-4d6bac6d5d56">
<enabled>false</enabled>
</scripts>
<scripts id="9cc0c0c5-77a3-410f-874b-4d3879a36124">
<classRef type="TS">
<className>LinkClickHandler</className>
<packageName>ervu</packageName>
</classRef>
<enabled>true</enabled>
<expanded>true</expanded>
<properties>
<entry>
<key>eventType</key>
<value>
<simple>"NAVIGATION_TO_SOURCE"</simple>
</value>
</entry>
</properties>
</scripts>
</children>
<children id="6dd87957-9a07-4c23-b203-90d8fb8bc181">
<prototypeId>fd7e47b9-dce1-4d14-9f3a-580c79f59579</prototypeId>
@ -3344,7 +3402,6 @@
<componentRootId>07d89523-77ea-40f3-96d0-952c74b082b0</componentRootId>
<name>AC - для вызова диалогов</name>
<container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f">
<properties>

View file

@ -513,7 +513,6 @@
<componentRootId>4e247261-22c9-4b75-bc42-1214d6478193</componentRootId>
<name>HB заголовок - Повестки</name>
<container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f">
<properties>
@ -573,7 +572,6 @@
<componentRootId>3962166c-e12b-4866-b6fc-e53c9f233272</componentRootId>
<name>VB - 1.1.1.1 (на имя выписана повестка) сценарий</name>
<container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f">
<properties>
@ -640,7 +638,6 @@
<componentRootId>54ec4ded-0f1d-44b1-beea-1d10f2c65d6b</componentRootId>
<name>HB - явитесь по повестке в военкомат</name>
<container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
<scripts id="b6068710-0f31-48ec-8e03-c0c1480a40c0"/>
@ -783,7 +780,6 @@
<componentRootId>54755bcb-801b-450d-aa2e-046e2a405538</componentRootId>
<name>VB - 1.1.1.1 (на ? дату нет сформированных повесток) сценарий</name>
<container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f">
<properties>
@ -919,7 +915,6 @@
<componentRootId>ae6bbd9c-b3f6-458a-9c19-07e06a4716da</componentRootId>
<name>VB - 1.1.1.1 (в реестре нет информации о сформированных повестках) сценарий</name>
<container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f">
<properties>
@ -1013,12 +1008,6 @@
</value>
</item>
</value>
</entry>
<entry>
<key>visible</key>
<value>
<simple>false</simple>
</value>
</entry>
</properties>
</scripts>
@ -1329,6 +1318,57 @@
</entry>
</complex>
</value>
</entry>
</complex>
</value>
</item>
<item id="57305b6c-cb1c-4d2f-8922-94b08469dab2" removed="false">
<value>
<complex>
<entry>
<key>_isGroupSelected</key>
<value>
<simple>false</simple>
</value>
</entry>
<entry>
<key>one</key>
<value>
<complex>
<entry>
<key>conditionFirstPart</key>
<value>
<complex>
<entry>
<key>objectValue</key>
<value>
<complex>
<entry>
<key>behavior</key>
<value>
<simple>{"objectId":"a28b93c3-fbbc-43d2-ab0c-9b0abcae5106","packageName":"component.field","className":"TextField","type":"TS"}</simple>
</value>
</entry>
<entry>
<key>method</key>
<value>
<simple>"getValue"</simple>
</value>
</entry>
</complex>
</value>
</entry>
</complex>
</value>
</entry>
<entry>
<key>operation</key>
<value>
<simple>"IS_NOT_EMPTY"</simple>
</value>
</entry>
</complex>
</value>
</entry>
</complex>
</value>
@ -1728,7 +1768,6 @@
<componentRootId>8ed0924a-73dc-4732-8426-0a7217654309</componentRootId>
<name>HB - данные загружаются</name>
<container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f">
<properties>
@ -1826,12 +1865,6 @@
<value>
<simple>"Запросить выписку"</simple>
</value>
</entry>
<entry>
<key>visible</key>
<value>
<simple>false</simple>
</value>
</entry>
</properties>
</scripts>
@ -2404,7 +2437,6 @@
<componentRootId>935a9f9f-4d12-4813-b313-919627c0e642</componentRootId>
<name>VB - 1.1.2.2 (применены временные меры) сценарий</name>
<container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f">
<properties>
@ -2961,7 +2993,6 @@
<componentRootId>4b46dfb0-e372-48e7-96cb-6d488cbfbc55</componentRootId>
<name>VB - 1.1.2.2 (на "дата" нет действующих ограничений) сценарий</name>
<container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f">
<properties>
@ -3114,7 +3145,6 @@
<componentRootId>751006da-a8d6-45c6-8eee-0895c30f8035</componentRootId>
<name>VB - 1.1.2.2 (В реестре нет информации о примененных временных мерах) сценарий</name>
<container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f">
<properties>
@ -3177,7 +3207,6 @@
<componentRootId>a4bb1eb3-c05a-4c96-acc4-885a99e4e28d</componentRootId>
<name>HB - данные загружаются</name>
<container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f">
<properties>
@ -4049,7 +4078,6 @@
<componentRootId>304824d5-9f9f-4af9-9b08-6232f7536774</componentRootId>
<name>FS - 1.1.3 (Воинский учёт)</name>
<container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="46f20297-81d1-4786-bb17-2a78ca6fda6f">
<properties>
@ -4139,6 +4167,7 @@
<componentRootId>8ae57bdb-4acb-4f34-9641-9b5031b408d3</componentRootId>
<name>VB - 1.1.3.1 (вы состоите на учете) сценаций</name>
<container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f">
<properties>
@ -4643,12 +4672,6 @@
</value>
</item>
</value>
</entry>
<entry>
<key>visible</key>
<value>
<simple>false</simple>
</value>
</entry>
</properties>
</scripts>
@ -4764,12 +4787,6 @@
<value>
<simple>null</simple>
</value>
</entry>
<entry>
<key>visible</key>
<value>
<simple>false</simple>
</value>
</entry>
</properties>
</scripts>
@ -4929,12 +4946,6 @@
<value>
<simple>"Запросить выписку"</simple>
</value>
</entry>
<entry>
<key>visible</key>
<value>
<simple>false</simple>
</value>
</entry>
</properties>
</scripts>
@ -5710,7 +5721,7 @@
<entry>
<key>behavior</key>
<value>
<simple>{"objectId":"63871032-9206-4f76-8c93-c8ab1b8200d2","packageName":"component.field","className":"NumberField","type":"TS"}</simple>
<simple>{"objectId":"a28b93c3-fbbc-43d2-ab0c-9b0abcae5106","packageName":"component.field","className":"TextField","type":"TS"}</simple>
</value>
</entry>
<entry>
@ -5733,7 +5744,7 @@
<key>staticValue</key>
<value>
<implRef type="TS">
<className>number</className>
<className>string</className>
<packageName></packageName>
</implRef>
<simple>0.0</simple>
@ -5745,7 +5756,7 @@
<entry>
<key>operation</key>
<value>
<simple>"EQUALS"</simple>
<simple>"IS_NOT_EMPTY"</simple>
</value>
</entry>
</complex>
@ -5754,7 +5765,24 @@
</complex>
</value>
</item>
<item id="7d9187ca-f2e5-48ff-8670-93d9fc8bcf85" removed="false">
<item id="7d9187ca-f2e5-48ff-8670-93d9fc8bcf85" removed="true"/>
<item id="94f9c8a4-2825-4ab1-874f-b7141e206799" removed="false">
<value>
<complex>
<entry>
<key>_isGroupSelected</key>
<value>
<simple>true</simple>
</value>
</entry>
<entry>
<key>group</key>
<value>
<complex>
<entry>
<key>conditions</key>
<value>
<item id="9f0c2f9b-3ee6-48fe-88be-b42fb236e578" removed="false">
<value>
<complex>
<entry>
@ -5801,6 +5829,74 @@
</entry>
</complex>
</value>
</entry>
</complex>
</value>
</item>
<item id="9159dca3-746f-49f0-bc84-db0ee17ed9cb" removed="false">
<value>
<complex>
<entry>
<key>_isGroupSelected</key>
<value>
<simple>false</simple>
</value>
</entry>
<entry>
<key>one</key>
<value>
<complex>
<entry>
<key>conditionFirstPart</key>
<value>
<complex>
<entry>
<key>objectValue</key>
<value>
<complex>
<entry>
<key>behavior</key>
<value>
<simple>{"objectId":"63871032-9206-4f76-8c93-c8ab1b8200d2","packageName":"component.field","className":"NumberField","type":"TS"}</simple>
</value>
</entry>
<entry>
<key>method</key>
<value>
<simple>"getValue"</simple>
</value>
</entry>
</complex>
</value>
</entry>
</complex>
</value>
</entry>
<entry>
<key>conditionSecondPart</key>
<value>
<complex>
<entry>
<key>staticValue</key>
<value>
<implRef type="TS">
<className>number</className>
<packageName></packageName>
</implRef>
<simple>0.0</simple>
</value>
</entry>
</complex>
</value>
</entry>
<entry>
<key>operation</key>
<value>
<simple>"EQUALS"</simple>
</value>
</entry>
</complex>
</value>
</entry>
</complex>
</value>
@ -5815,6 +5911,22 @@
</entry>
</complex>
</value>
</entry>
</complex>
</value>
</item>
<item id="aed64e39-e66a-44b0-bd2a-7afe960e78d3" removed="true"/>
<item id="3404b012-e85d-4507-b479-ba8720fb7e98" removed="true"/>
</value>
</entry>
<entry>
<key>logicalOperation</key>
<value>
<simple>"AND"</simple>
</value>
</entry>
</complex>
</value>
</entry>
<entry>
<key>thenActions</key>
@ -7173,313 +7285,6 @@
</value>
</entry>
</complex>
</value>
</item>
</value>
</entry>
</properties>
</scripts>
</children>
<children id="315c5087-825a-4ade-99d9-7dbe09f87226">
<prototypeId>98594cec-0a9b-4cef-af09-e1b71cb2ad9e</prototypeId>
<componentRootId>315c5087-825a-4ade-99d9-7dbe09f87226</componentRootId>
<name>AC - для найденного пользователя в ерву</name>
<container>false</container>
<childrenReordered>false</childrenReordered>
<scripts id="37dff5c8-1599-4984-b107-c44a87b6da2e">
<properties>
<entry>
<key>elseActions</key>
<value>
<item id="15082312-b39c-473a-b08a-f0690c5d37d2" removed="true"/>
</value>
</entry>
<entry>
<key>eventRefs</key>
<value>
<item id="ca97a9f3-5f25-4f75-b4a0-c98aac1b1e57" removed="false">
<value>
<complex>
<entry>
<key>behavior</key>
<value>
<simple>{"objectId":"a28b93c3-fbbc-43d2-ab0c-9b0abcae5106","packageName":"component.field","className":"TextField","type":"TS"}</simple>
</value>
</entry>
<entry>
<key>propertyName</key>
<value>
<simple>"valueChangeEvent"</simple>
</value>
</entry>
</complex>
</value>
</item>
</value>
</entry>
<entry>
<key>ifCondition</key>
<value>
<complex>
<entry>
<key>conditions</key>
<value>
<item id="ff5d074b-77d4-48c6-a7c4-3ca7e585d8c9" removed="false">
<value>
<complex>
<entry>
<key>_isGroupSelected</key>
<value>
<simple>false</simple>
</value>
</entry>
<entry>
<key>one</key>
<value>
<complex>
<entry>
<key>conditionFirstPart</key>
<value>
<complex>
<entry>
<key>objectValue</key>
<value>
<complex>
<entry>
<key>behavior</key>
<value>
<simple>{"objectId":"a28b93c3-fbbc-43d2-ab0c-9b0abcae5106","packageName":"component.field","className":"TextField","type":"TS"}</simple>
</value>
</entry>
<entry>
<key>method</key>
<value>
<simple>"getValue"</simple>
</value>
</entry>
</complex>
</value>
</entry>
</complex>
</value>
</entry>
<entry>
<key>conditionSecondPart</key>
<value>
<complex>
<entry>
<key>staticValue</key>
<value>
<implRef type="TS">
<className>string</className>
<packageName></packageName>
</implRef>
<simple>"null"</simple>
</value>
</entry>
</complex>
</value>
</entry>
<entry>
<key>operation</key>
<value>
<simple>"IS_NOT_EMPTY"</simple>
</value>
</entry>
</complex>
</value>
</entry>
</complex>
</value>
</item>
<item id="af4102d7-698c-420e-a7fe-ca9bf69a29a7" removed="true"/>
</value>
</entry>
<entry>
<key>logicalOperation</key>
<value>
<simple>null</simple>
</value>
</entry>
</complex>
</value>
</entry>
<entry>
<key>thenActions</key>
<value>
<item id="7654b087-130d-4441-9acf-cdd831c65374" removed="false">
<value>
<complex>
<entry>
<key>behavior</key>
<value>
<simple>{"objectId":"cfb60860-1b04-4eb5-9ccf-1e6436c27b09","packageName":"component.button","className":"Button","type":"TS"}</simple>
</value>
</entry>
<entry>
<key>method</key>
<value>
<simple>"setVisible"</simple>
</value>
</entry>
<entry>
<key>value</key>
<value>
<complex>
<entry>
<key>staticValue</key>
<value>
<implRef type="TS">
<className>boolean</className>
<packageName></packageName>
</implRef>
<simple>true</simple>
</value>
</entry>
</complex>
</value>
</entry>
</complex>
</value>
</item>
<item id="83e45626-89e0-4dd6-9caf-a17d6c474a72" removed="false">
<value>
<complex>
<entry>
<key>behavior</key>
<value>
<simple>{"objectId":"dd701bad-b22d-40c9-b00b-b92f070890db","packageName":"ervu.component.textwithdialoglinks","className":"TextWithDialogLinks","type":"TS"}</simple>
</value>
</entry>
<entry>
<key>method</key>
<value>
<simple>"setVisible"</simple>
</value>
</entry>
<entry>
<key>value</key>
<value>
<complex>
<entry>
<key>staticValue</key>
<value>
<implRef type="TS">
<className>boolean</className>
<packageName></packageName>
</implRef>
<simple>true</simple>
</value>
</entry>
</complex>
</value>
</entry>
</complex>
</value>
</item>
<item id="8d08e1aa-8fdc-4c49-b995-f1e1f40452d1" removed="false">
<value>
<complex>
<entry>
<key>behavior</key>
<value>
<simple>{"objectId":"d68b5c38-9ed6-4596-9b0c-dd1dc542c5ef","packageName":"component.button","className":"Button","type":"TS"}</simple>
</value>
</entry>
<entry>
<key>method</key>
<value>
<simple>"setVisible"</simple>
</value>
</entry>
<entry>
<key>value</key>
<value>
<complex>
<entry>
<key>staticValue</key>
<value>
<implRef type="TS">
<className>boolean</className>
<packageName></packageName>
</implRef>
<simple>true</simple>
</value>
</entry>
</complex>
</value>
</entry>
</complex>
</value>
</item>
<item id="d0250c79-e72e-4997-8d8e-0dcd9ea93f42" removed="false">
<value>
<complex>
<entry>
<key>behavior</key>
<value>
<simple>{"objectId":"fea5aebc-c206-48bc-a613-ab31813fd639","packageName":"component.container","className":"HBox","type":"TS"}</simple>
</value>
</entry>
<entry>
<key>method</key>
<value>
<simple>"setVisible"</simple>
</value>
</entry>
<entry>
<key>value</key>
<value>
<complex>
<entry>
<key>staticValue</key>
<value>
<implRef type="TS">
<className>boolean</className>
<packageName></packageName>
</implRef>
<simple>true</simple>
</value>
</entry>
</complex>
</value>
</entry>
</complex>
</value>
</item>
<item id="9d3d9d9b-772e-4db7-841d-63d12caa1422" removed="false">
<value>
<complex>
<entry>
<key>behavior</key>
<value>
<simple>{"objectId":"d5fa2655-8dd8-4004-9dec-217a41e5b9ed","packageName":"component","className":"Text","type":"TS"}</simple>
</value>
</entry>
<entry>
<key>method</key>
<value>
<simple>"setVisible"</simple>
</value>
</entry>
<entry>
<key>value</key>
<value>
<complex>
<entry>
<key>staticValue</key>
<value>
<implRef type="TS">
<className>boolean</className>
<packageName></packageName>
</implRef>
<simple>true</simple>
</value>
</entry>
</complex>
</value>
</entry>
</complex>
</value>
</item>
</value>
@ -7511,7 +7316,6 @@
<componentRootId>cc277790-aa36-4798-9a37-97d2a381e5e8</componentRootId>
<name>Реестр воинского учета</name>
<container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c">
<properties>
@ -7709,6 +7513,7 @@
<componentRootId>61e47a39-6f30-4d52-92db-fce8f0df062c</componentRootId>
<name>Текст(гссылка) - Закон о воинской обязанности и военной службе, ст. 8.2.</name>
<container>false</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c">
<properties>
@ -7726,6 +7531,22 @@
<scripts id="f203f156-be32-4131-9c86-4d6bac6d5d56">
<enabled>false</enabled>
</scripts>
<scripts id="ed835461-d64e-44b3-aa26-63abb48473ad">
<classRef type="TS">
<className>LinkClickHandler</className>
<packageName>ervu</packageName>
</classRef>
<enabled>true</enabled>
<expanded>true</expanded>
<properties>
<entry>
<key>eventType</key>
<value>
<simple>"NAVIGATION_TO_SOURCE"</simple>
</value>
</entry>
</properties>
</scripts>
</children>
<children id="757294ad-d1dd-4a9f-987d-40a666b2ad9d">
<prototypeId>fd7e47b9-dce1-4d14-9f3a-580c79f59579</prototypeId>
@ -7837,7 +7658,6 @@
<componentRootId>018ebef5-5b82-464e-ae64-b8a38c11a244</componentRootId>
<name>Реестр повесток</name>
<container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c">
<properties>
@ -8155,6 +7975,22 @@
<scripts id="f203f156-be32-4131-9c86-4d6bac6d5d56">
<enabled>false</enabled>
</scripts>
<scripts id="f5574121-d46d-4ce1-a314-515f81571e49">
<classRef type="TS">
<className>LinkClickHandler</className>
<packageName>ervu</packageName>
</classRef>
<enabled>true</enabled>
<expanded>true</expanded>
<properties>
<entry>
<key>eventType</key>
<value>
<simple>"NAVIGATION_TO_SOURCE"</simple>
</value>
</entry>
</properties>
</scripts>
</children>
<children id="7281e53c-3e98-453f-935a-cd5f93420620">
<prototypeId>fd7e47b9-dce1-4d14-9f3a-580c79f59579</prototypeId>
@ -8273,7 +8109,6 @@
<componentRootId>e40b27e3-8df0-4e8c-adeb-6e24de6f18d2</componentRootId>
<name>Временные меры</name>
<container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c">
<properties>
@ -8626,6 +8461,22 @@
<scripts id="f203f156-be32-4131-9c86-4d6bac6d5d56">
<enabled>false</enabled>
</scripts>
<scripts id="72fc7c7d-ab13-40f5-a79d-75619e3af934">
<classRef type="TS">
<className>LinkClickHandler</className>
<packageName>ervu</packageName>
</classRef>
<enabled>true</enabled>
<expanded>true</expanded>
<properties>
<entry>
<key>eventType</key>
<value>
<simple>"NAVIGATION_TO_SOURCE"</simple>
</value>
</entry>
</properties>
</scripts>
</children>
<children id="52473ef0-1993-4be5-a86f-7cbc6dc8e75a">
<prototypeId>fd7e47b9-dce1-4d14-9f3a-580c79f59579</prototypeId>
@ -8751,7 +8602,6 @@
<componentRootId>dce4d66d-4b4f-4883-a54c-e44e96a06a53</componentRootId>
<name>Уважительные причины неявки в военкомат</name>
<container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c">
<properties>
@ -8981,6 +8831,22 @@
<scripts id="f203f156-be32-4131-9c86-4d6bac6d5d56">
<enabled>false</enabled>
</scripts>
<scripts id="9b7eead5-b15c-4e63-a6c2-ef164b092268">
<classRef type="TS">
<className>LinkClickHandler</className>
<packageName>ervu</packageName>
</classRef>
<enabled>true</enabled>
<expanded>true</expanded>
<properties>
<entry>
<key>eventType</key>
<value>
<simple>"NAVIGATION_TO_SOURCE"</simple>
</value>
</entry>
</properties>
</scripts>
</children>
<children id="3e33975b-5bde-4d58-a4d5-a7acb9633beb">
<prototypeId>fd7e47b9-dce1-4d14-9f3a-580c79f59579</prototypeId>
@ -9092,7 +8958,6 @@
<componentRootId>5777f90d-5b51-4c1b-b0cc-4ace05faa8f3</componentRootId>
<name>Диалог - Отрицательное количество дней до явки в военкомат</name>
<container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c">
<properties>
@ -9406,7 +9271,6 @@
<componentRootId>2452bb18-95f0-4bfc-a40d-52b59e3c5cd6</componentRootId>
<name>AC - на вызов диалоговых окон</name>
<container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f">
<properties>
@ -10395,7 +10259,6 @@
<componentRootId>5443b358-365f-4bfd-bb4c-f2854dd96da4</componentRootId>
<name>Диалоговые окна отправки на электронную почту</name>
<container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e"/>
@ -10558,6 +10421,22 @@
<value>
<simple>"https://www.gosuslugi.ru"</simple>
</value>
</entry>
</properties>
</scripts>
<scripts id="a5b10562-a190-4409-bbc9-afc6e9dcf26d">
<classRef type="TS">
<className>LinkClickHandler</className>
<packageName>ervu</packageName>
</classRef>
<enabled>true</enabled>
<expanded>true</expanded>
<properties>
<entry>
<key>eventType</key>
<value>
<simple>"NAVIGATION_TO_SOURCE"</simple>
</value>
</entry>
</properties>
</scripts>
@ -10692,7 +10571,6 @@
<componentRootId>f25ca4de-d55b-4a06-bb4c-5eedd65d4095</componentRootId>
<name>Диалог - Отправка выписки на электронную почту - к удалению</name>
<container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c">
<properties>
@ -10869,6 +10747,22 @@
<value>
<simple>"https://www.gosuslugi.ru"</simple>
</value>
</entry>
</properties>
</scripts>
<scripts id="d727881a-0a95-45a3-ad0d-e9d6d58e816a">
<classRef type="TS">
<className>LinkClickHandler</className>
<packageName>ervu</packageName>
</classRef>
<enabled>true</enabled>
<expanded>true</expanded>
<properties>
<entry>
<key>eventType</key>
<value>
<simple>"NAVIGATION_TO_SOURCE"</simple>
</value>
</entry>
</properties>
</scripts>
@ -11088,7 +10982,6 @@
<componentRootId>673d4fd7-0527-41df-abcd-2ab522bb161c</componentRootId>
<name>Диалог - Выписка отправлена - к удалению</name>
<container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c">
<properties>
@ -11268,7 +11161,6 @@
<componentRootId>d9788c7d-ebeb-413a-969a-a33f167a2bd9</componentRootId>
<name>Диалог - не удалось отправить выписку</name>
<container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c">
<properties>
@ -11461,7 +11353,6 @@
<componentRootId>8aff628b-a0a4-4296-854d-8a03dbef5937</componentRootId>
<name>AC - на вызов диалоговых окон</name>
<container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e"/>

View file

@ -195,7 +195,6 @@
<componentRootId>2d0083b3-0994-4131-9cfc-de84cab46dab</componentRootId>
<name>HB - явитесь по повестке в военкомат. Ели не придёте в срок, к Вам применят временные меры</name>
<container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f">
<properties>
@ -338,6 +337,7 @@
<componentRootId>fc2ddccc-d84c-4b0b-a9fc-5aa1391d590b</componentRootId>
<name>FS - информация по повестке</name>
<container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="46f20297-81d1-4786-bb17-2a78ca6fda6f">
<properties>
@ -1101,6 +1101,22 @@
<scripts id="f203f156-be32-4131-9c86-4d6bac6d5d56">
<enabled>false</enabled>
</scripts>
<scripts id="bf78cf16-a0a1-41ee-9945-8670cd247a15">
<classRef type="TS">
<className>LinkClickHandler</className>
<packageName>ervu</packageName>
</classRef>
<enabled>true</enabled>
<expanded>true</expanded>
<properties>
<entry>
<key>eventType</key>
<value>
<simple>"NAVIGATION_TO_SOURCE"</simple>
</value>
</entry>
</properties>
</scripts>
</children>
</children>
<children id="7aabbeed-3e64-4cdd-8fe3-841b134da135">
@ -1133,6 +1149,12 @@
</item>
</value>
</entry>
<entry>
<key>visible</key>
<value>
<simple>false</simple>
</value>
</entry>
</properties>
</scripts>
</children>
@ -2099,6 +2121,7 @@
<componentRootId>713e58f9-9106-4e75-bf08-23761e541e51</componentRootId>
<name>VB - правый</name>
<container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f">
<properties>
@ -2412,7 +2435,6 @@
<componentRootId>c9c74406-f8f4-4a9a-8a62-57fe026f5fa5</componentRootId>
<name>FS - (если вы не можете явиться по уважительной причине)</name>
<container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="46f20297-81d1-4786-bb17-2a78ca6fda6f">
<properties>
@ -2505,7 +2527,6 @@
<componentRootId>2f73cbfa-c121-49b0-994a-1bc17d654e1a</componentRootId>
<name>FS - (дней до применения всех временных мер)</name>
<container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="46f20297-81d1-4786-bb17-2a78ca6fda6f">
<properties>
@ -2611,7 +2632,6 @@
<componentRootId>d63ff6bf-f971-4a5e-8b36-e4c5a2e48771</componentRootId>
<name>Диалоговые окна (информационные)</name>
<container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e"/>
@ -2838,6 +2858,22 @@
<scripts id="f203f156-be32-4131-9c86-4d6bac6d5d56">
<enabled>false</enabled>
</scripts>
<scripts id="11e50082-7200-4ad6-bd54-ee10c3c0b5a2">
<classRef type="TS">
<className>LinkClickHandler</className>
<packageName>ervu</packageName>
</classRef>
<enabled>true</enabled>
<expanded>true</expanded>
<properties>
<entry>
<key>eventType</key>
<value>
<simple>"NAVIGATION_TO_SOURCE"</simple>
</value>
</entry>
</properties>
</scripts>
</children>
<children id="b6aa0a33-f198-4846-9105-64aa80094be6">
<prototypeId>fd7e47b9-dce1-4d14-9f3a-580c79f59579</prototypeId>
@ -3249,6 +3285,22 @@
<scripts id="f203f156-be32-4131-9c86-4d6bac6d5d56">
<enabled>false</enabled>
</scripts>
<scripts id="3faadefb-4757-4f48-8b41-ffde6981f883">
<classRef type="TS">
<className>LinkClickHandler</className>
<packageName>ervu</packageName>
</classRef>
<enabled>true</enabled>
<expanded>true</expanded>
<properties>
<entry>
<key>eventType</key>
<value>
<simple>"NAVIGATION_TO_SOURCE"</simple>
</value>
</entry>
</properties>
</scripts>
</children>
<children id="e78fddf7-4f36-45cf-89a7-29c68e3616e8">
<prototypeId>fd7e47b9-dce1-4d14-9f3a-580c79f59579</prototypeId>
@ -3360,7 +3412,6 @@
<componentRootId>43f57db1-0f42-4d3c-8166-45e7691b124a</componentRootId>
<name>Временные меры</name>
<container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c">
<properties>
@ -3684,6 +3735,22 @@
<scripts id="f203f156-be32-4131-9c86-4d6bac6d5d56">
<enabled>false</enabled>
</scripts>
<scripts id="ce2084ca-ce7d-4789-9ba2-e78cc8df9bef">
<classRef type="TS">
<className>LinkClickHandler</className>
<packageName>ervu</packageName>
</classRef>
<enabled>true</enabled>
<expanded>true</expanded>
<properties>
<entry>
<key>eventType</key>
<value>
<simple>"NAVIGATION_TO_SOURCE"</simple>
</value>
</entry>
</properties>
</scripts>
</children>
<children id="c90d9a4f-0c35-47a1-a07c-345240c3b7d3">
<prototypeId>fd7e47b9-dce1-4d14-9f3a-580c79f59579</prototypeId>
@ -3802,7 +3869,6 @@
<componentRootId>76ac701a-62f6-493e-8ab3-9391e956c3f1</componentRootId>
<name>Уважительные причины неявки в военкомат</name>
<container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c">
<properties>
@ -4032,6 +4098,22 @@
<scripts id="f203f156-be32-4131-9c86-4d6bac6d5d56">
<enabled>false</enabled>
</scripts>
<scripts id="29b36664-c038-438c-b4a4-41eb37d0225f">
<classRef type="TS">
<className>LinkClickHandler</className>
<packageName>ervu</packageName>
</classRef>
<enabled>true</enabled>
<expanded>true</expanded>
<properties>
<entry>
<key>eventType</key>
<value>
<simple>"NAVIGATION_TO_SOURCE"</simple>
</value>
</entry>
</properties>
</scripts>
</children>
<children id="72183341-d63b-4e4b-85a5-0187806b8158">
<prototypeId>fd7e47b9-dce1-4d14-9f3a-580c79f59579</prototypeId>
@ -4448,5 +4530,87 @@
</properties>
</scripts>
</children>
<children id="66d254b2-bf2b-40eb-b175-ccc50b9dceed">
<prototypeId>98594cec-0a9b-4cef-af09-e1b71cb2ad9e</prototypeId>
<componentRootId>66d254b2-bf2b-40eb-b175-ccc50b9dceed</componentRootId>
<name>AC - временная мера</name>
<container>false</container>
<childrenReordered>false</childrenReordered>
<scripts id="37dff5c8-1599-4984-b107-c44a87b6da2e">
<properties>
<entry>
<key>elseActions</key>
<value>
<item id="8d3cc8e0-b29f-465f-bfd5-5b04403944b8" removed="true"/>
</value>
</entry>
<entry>
<key>eventRefs</key>
<value>
<item id="8bf6b67c-543f-4637-abc9-abc82dab3401" removed="false">
<value>
<complex>
<entry>
<key>behavior</key>
<value>
<simple>{"objectId":"05e0b1a0-7d08-4480-8532-b19692e8812a","packageName":"component.button","className":"Button","type":"TS"}</simple>
</value>
</entry>
<entry>
<key>propertyName</key>
<value>
<simple>"clickEvent"</simple>
</value>
</entry>
</complex>
</value>
</item>
</value>
</entry>
<entry>
<key>ifCondition</key>
<value>
<complex>
<entry>
<key>logicalOperation</key>
<value>
<simple>null</simple>
</value>
</entry>
</complex>
</value>
</entry>
<entry>
<key>thenActions</key>
<value>
<item id="d67b987f-e771-4551-808b-28c56b13febc" removed="false">
<value>
<complex>
<entry>
<key>behavior</key>
<value>
<simple>{"objectId":"43f57db1-0f42-4d3c-8166-45e7691b124a","packageName":"component","className":"Dialog","type":"TS"}</simple>
</value>
</entry>
<entry>
<key>method</key>
<value>
<simple>"show"</simple>
</value>
</entry>
<entry>
<key>value</key>
<value>
<simple>null</simple>
</value>
</entry>
</complex>
</value>
</item>
</value>
</entry>
</properties>
</scripts>
</children>
</rootObjects>
</xmlPage>