Ready to Test

This commit is contained in:
Mike Phares 2022-07-26 09:34:09 -07:00
commit 2afec95704
1004 changed files with 164796 additions and 0 deletions

243
.editorconfig Normal file
View File

@ -0,0 +1,243 @@
[*.cs]
csharp_indent_block_contents = true
csharp_indent_braces = false
csharp_indent_case_contents = true
csharp_indent_case_contents_when_block = true
csharp_indent_labels = one_less_than_current
csharp_indent_switch_labels = true
csharp_new_line_before_catch = true
csharp_new_line_before_else = true
csharp_new_line_before_finally = true
csharp_new_line_before_members_in_anonymous_types = true
csharp_new_line_before_members_in_object_initializers = true
csharp_new_line_before_open_brace = all
csharp_new_line_between_query_expression_clauses = true
csharp_prefer_braces = false
csharp_prefer_simple_default_expression = true:warning
csharp_prefer_simple_using_statement = true:warning
csharp_prefer_static_local_function = true:warning
csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async
csharp_preserve_single_line_blocks = true
csharp_preserve_single_line_statements = false
csharp_space_after_cast = false
csharp_space_after_colon_in_inheritance_clause = true
csharp_space_after_comma = true
csharp_space_after_dot = false
csharp_space_after_keywords_in_control_flow_statements = true
csharp_space_after_semicolon_in_for_statement = true
csharp_space_around_binary_operators = before_and_after
csharp_space_around_declaration_statements = false
csharp_space_before_colon_in_inheritance_clause = true
csharp_space_before_comma = false
csharp_space_before_dot = false
csharp_space_before_open_square_brackets = false
csharp_space_before_semicolon_in_for_statement = false
csharp_space_between_empty_square_brackets = false
csharp_space_between_method_call_empty_parameter_list_parentheses = false
csharp_space_between_method_call_name_and_opening_parenthesis = false
csharp_space_between_method_call_parameter_list_parentheses = false
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
csharp_space_between_method_declaration_name_and_open_parenthesis = false
csharp_space_between_method_declaration_parameter_list_parentheses = false
csharp_space_between_parentheses = false
csharp_space_between_square_brackets = false
csharp_style_allow_blank_line_after_colon_in_constructor_initializer_experimental = true
csharp_style_allow_blank_lines_between_consecutive_braces_experimental = true
csharp_style_allow_embedded_statements_on_same_line_experimental = true
csharp_style_conditional_delegate_call = true
csharp_style_deconstructed_variable_declaration = false
csharp_style_expression_bodied_accessors = when_on_single_line:warning
csharp_style_expression_bodied_constructors = when_on_single_line:warning
csharp_style_expression_bodied_indexers = when_on_single_line:warning
csharp_style_expression_bodied_lambdas = when_on_single_line:warning
csharp_style_expression_bodied_local_functions = when_on_single_line:warning
csharp_style_expression_bodied_methods = when_on_single_line:warning
csharp_style_expression_bodied_operators = when_on_single_line:warning
csharp_style_expression_bodied_properties = when_on_single_line:warning
csharp_style_implicit_object_creation_when_type_is_apparent = true:warning
csharp_style_inlined_variable_declaration = false
csharp_style_namespace_declarations = file_scoped:warning
csharp_style_pattern_local_over_anonymous_function = true:warning
csharp_style_pattern_matching_over_as_with_null_check = true:warning
csharp_style_pattern_matching_over_is_with_cast_check = true:warning
csharp_style_prefer_index_operator = true:warning
csharp_style_prefer_not_pattern = true:warning
csharp_style_prefer_null_check_over_type_check = true
csharp_style_prefer_pattern_matching = true:warning
csharp_style_prefer_range_operator = true:warning
csharp_style_prefer_switch_expression = true:warning
csharp_style_throw_expression = true
csharp_style_unused_value_assignment_preference = discard_variable:warning
csharp_style_unused_value_expression_statement_preference = discard_variable:warning
csharp_style_var_elsewhere = false:warning
csharp_style_var_for_built_in_types = false:warning
csharp_style_var_when_type_is_apparent = false:warning
csharp_using_directive_placement = outside_namespace
dotnet_code_quality_unused_parameters = all
dotnet_code_quality_unused_parameters = non_public # IDE0060: Remove unused parameter
dotnet_code_quality.CAXXXX.api_surface = private, internal
dotnet_diagnostic.CA1825.severity = warning # CA1823: Avoid zero-length array allocations
dotnet_diagnostic.CA1829.severity = warning # CA1829: Use Length/Count property instead of Count() when available
dotnet_diagnostic.CA1834.severity = warning # CA1834: Consider using 'StringBuilder.Append(char)' when applicable
dotnet_diagnostic.IDE0001.severity = warning # IDE0001: Simplify name
dotnet_diagnostic.IDE0002.severity = warning # Simplify (member access) - System.Version.Equals("1", "2"); Version.Equals("1", "2");
dotnet_diagnostic.IDE0005.severity = warning # Using directive is unnecessary
dotnet_diagnostic.IDE0047.severity = warning # IDE0047: Parentheses can be removed
dotnet_diagnostic.IDE0060.severity = warning # IDE0060: Remove unused parameter
dotnet_naming_rule.abstract_method_should_be_pascal_case.severity = warning
dotnet_naming_rule.abstract_method_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.abstract_method_should_be_pascal_case.symbols = abstract_method
dotnet_naming_rule.class_should_be_pascal_case.severity = warning
dotnet_naming_rule.class_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.class_should_be_pascal_case.symbols = class
dotnet_naming_rule.delegate_should_be_pascal_case.severity = warning
dotnet_naming_rule.delegate_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.delegate_should_be_pascal_case.symbols = delegate
dotnet_naming_rule.enum_should_be_pascal_case.severity = warning
dotnet_naming_rule.enum_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.enum_should_be_pascal_case.symbols = enum
dotnet_naming_rule.event_should_be_pascal_case.severity = warning
dotnet_naming_rule.event_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.event_should_be_pascal_case.symbols = event
dotnet_naming_rule.interface_should_be_begins_with_i.severity = warning
dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i
dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface
dotnet_naming_rule.method_should_be_pascal_case.severity = warning
dotnet_naming_rule.method_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.method_should_be_pascal_case.symbols = method
dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = warning
dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members
dotnet_naming_rule.private_method_should_be_pascal_case.severity = warning
dotnet_naming_rule.private_method_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.private_method_should_be_pascal_case.symbols = private_method
dotnet_naming_rule.private_or_internal_field_should_be_private_of_internal_field.severity = warning
dotnet_naming_rule.private_or_internal_field_should_be_private_of_internal_field.style = private_of_internal_field
dotnet_naming_rule.private_or_internal_field_should_be_private_of_internal_field.symbols = private_or_internal_field
dotnet_naming_rule.private_or_internal_static_field_should_be_private_of_internal_field.severity = warning
dotnet_naming_rule.private_or_internal_static_field_should_be_private_of_internal_field.style = private_of_internal_field
dotnet_naming_rule.private_or_internal_static_field_should_be_private_of_internal_field.symbols = private_or_internal_static_field
dotnet_naming_rule.property_should_be_pascal_case.severity = warning
dotnet_naming_rule.property_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.property_should_be_pascal_case.symbols = property
dotnet_naming_rule.public_or_protected_field_should_be_private_of_internal_field.severity = warning
dotnet_naming_rule.public_or_protected_field_should_be_private_of_internal_field.style = private_of_internal_field
dotnet_naming_rule.public_or_protected_field_should_be_private_of_internal_field.symbols = public_or_protected_field
dotnet_naming_rule.static_field_should_be_pascal_case.severity = warning
dotnet_naming_rule.static_field_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.static_field_should_be_pascal_case.symbols = static_field
dotnet_naming_rule.static_method_should_be_pascal_case.severity = warning
dotnet_naming_rule.static_method_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.static_method_should_be_pascal_case.symbols = static_method
dotnet_naming_rule.struct_should_be_pascal_case.severity = warning
dotnet_naming_rule.struct_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.struct_should_be_pascal_case.symbols = struct
dotnet_naming_rule.types_should_be_pascal_case.severity = warning
dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.types_should_be_pascal_case.symbols = types
dotnet_naming_style.begins_with_i.capitalization = pascal_case
dotnet_naming_style.begins_with_i.required_prefix = I
dotnet_naming_style.begins_with_i.required_suffix =
dotnet_naming_style.begins_with_i.word_separator =
dotnet_naming_style.pascal_case.capitalization = pascal_case
dotnet_naming_style.pascal_case.required_prefix =
dotnet_naming_style.pascal_case.required_suffix =
dotnet_naming_style.pascal_case.word_separator =
dotnet_naming_style.private_of_internal_field.capitalization = pascal_case
dotnet_naming_style.private_of_internal_field.required_prefix = _
dotnet_naming_style.private_of_internal_field.required_suffix =
dotnet_naming_style.private_of_internal_field.word_separator =
dotnet_naming_symbols.abstract_method.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.abstract_method.applicable_kinds = method
dotnet_naming_symbols.abstract_method.required_modifiers = abstract
dotnet_naming_symbols.class.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.class.applicable_kinds = class
dotnet_naming_symbols.class.required_modifiers =
dotnet_naming_symbols.delegate.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.delegate.applicable_kinds = delegate
dotnet_naming_symbols.delegate.required_modifiers =
dotnet_naming_symbols.enum.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.enum.applicable_kinds = enum
dotnet_naming_symbols.enum.required_modifiers =
dotnet_naming_symbols.event.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.event.applicable_kinds = event
dotnet_naming_symbols.event.required_modifiers =
dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.interface.applicable_kinds = interface
dotnet_naming_symbols.interface.required_modifiers =
dotnet_naming_symbols.method.applicable_accessibilities = public
dotnet_naming_symbols.method.applicable_kinds = method
dotnet_naming_symbols.method.required_modifiers =
dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method
dotnet_naming_symbols.non_field_members.required_modifiers =
dotnet_naming_symbols.private_method.applicable_accessibilities = private
dotnet_naming_symbols.private_method.applicable_kinds = method
dotnet_naming_symbols.private_method.required_modifiers =
dotnet_naming_symbols.private_or_internal_field.applicable_accessibilities = internal, private, private_protected
dotnet_naming_symbols.private_or_internal_field.applicable_kinds = field
dotnet_naming_symbols.private_or_internal_field.required_modifiers =
dotnet_naming_symbols.private_or_internal_static_field.applicable_accessibilities = internal, private, private_protected
dotnet_naming_symbols.private_or_internal_static_field.applicable_kinds = field
dotnet_naming_symbols.private_or_internal_static_field.required_modifiers = static
dotnet_naming_symbols.property.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.property.applicable_kinds = property
dotnet_naming_symbols.property.required_modifiers =
dotnet_naming_symbols.public_or_protected_field.applicable_accessibilities = public, protected
dotnet_naming_symbols.public_or_protected_field.applicable_kinds = field
dotnet_naming_symbols.public_or_protected_field.required_modifiers =
dotnet_naming_symbols.static_field.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.static_field.applicable_kinds = field
dotnet_naming_symbols.static_field.required_modifiers = static
dotnet_naming_symbols.static_method.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.static_method.applicable_kinds = method
dotnet_naming_symbols.static_method.required_modifiers = static
dotnet_naming_symbols.struct.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.struct.applicable_kinds = struct
dotnet_naming_symbols.struct.required_modifiers =
dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum
dotnet_naming_symbols.types.required_modifiers =
dotnet_remove_unnecessary_suppression_exclusions = 0
dotnet_separate_import_directive_groups = false
dotnet_sort_system_directives_first = false
dotnet_style_allow_multiple_blank_lines_experimental = false:warning
dotnet_style_allow_statement_immediately_after_block_experimental = true
dotnet_style_coalesce_expression = true
dotnet_style_collection_initializer = true:warning
dotnet_style_explicit_tuple_names = true:warning
dotnet_style_namespace_match_folder = true
dotnet_style_null_propagation = true:warning
dotnet_style_object_initializer = true:warning
dotnet_style_operator_placement_when_wrapping = beginning_of_line
dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity
dotnet_style_parentheses_in_other_binary_operators = always_for_clarity
dotnet_style_parentheses_in_other_operators = never_if_unnecessary
dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity
dotnet_style_predefined_type_for_locals_parameters_members = true
dotnet_style_predefined_type_for_member_access = true
dotnet_style_prefer_auto_properties = true:warning
dotnet_style_prefer_compound_assignment = true:warning
dotnet_style_prefer_conditional_expression_over_assignment = false
dotnet_style_prefer_conditional_expression_over_return = false
dotnet_style_prefer_inferred_anonymous_type_member_names = true:warning
dotnet_style_prefer_inferred_tuple_names = true:warning
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:warning
dotnet_style_prefer_simplified_boolean_expressions = true:warning
dotnet_style_prefer_simplified_interpolation = true
dotnet_style_qualification_for_event = false:error
dotnet_style_qualification_for_field = false
dotnet_style_qualification_for_method = false:error
dotnet_style_qualification_for_property = false:error
dotnet_style_readonly_field = true:warning
dotnet_style_require_accessibility_modifiers = for_non_interface_members
end_of_line = crlf
file_header_template = unset
indent_size = 4
indent_style = space
insert_final_newline = false
root = true
tab_width = 4
# https://docs.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1822
# https://github.com/dotnet/aspnetcore/blob/main/.editorconfig
# https://github.com/dotnet/project-system/blob/main/.editorconfig

342
.gitignore vendored Normal file
View File

@ -0,0 +1,342 @@
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
**/Properties/launchSettings.json
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding add-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# JetBrains Rider
.idea/
*.sln.iml
# CodeRush
.cr/
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/
##
## Visual Studio Code
##
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
# Libman.json
/wwwroot/lib/*

267
.groovy Normal file
View File

@ -0,0 +1,267 @@
#!/usr/bin/env groovy
/* groovylint-disable CompileStatic, ConsecutiveStringConcatenation, DuplicateNumberLiteral, DuplicateStringLiteral, LineLength, NestedBlockDepth, NoDef, VariableTypeRequired */
import groovy.transform.Field
@Field String _DDrive = 'D:/'
@Field String _ExePath = '...'
@Field String _AgentStaging = ''
@Field String _NGINXFile = '...'
@Field String _PortNumber = '...'
@Field String _AssemblyName = '...'
@Field String _AgentDevelopment = ''
@Field String _NetVersion = 'net6.0'
@Field String _GitCommitSeven = '...'
@Field String _TargetLocation = '...'
@Field String _FirstBeforePlus = '5000'
@Field String _GitName = 'OI-Metrology'
@Field String _ProjectDirectory = 'Archive'
@Field String _MonARessource = 'OI_Metrology'
@Field String _WorkingDirectoryName = 'IFXApps'
@Field String _DDriveNet = "${_DDrive}${_NetVersion}"
@Field String _AgentProduction = 'messa010ec-ecfisysadmin'
@Field String _CredentialsId = 'Metrology-Username-Password'
@Field String _Company = 'Infineon Technologies Americas Corp.'
@Field String _ProgramFilesDotnet = 'C:/program files/dotnet/dotnet.exe'
pipeline {
agent {
label env.JENKINS_ENVIRONMENT == 'Development' ? _AgentDevelopment : env.JENKINS_ENVIRONMENT == 'Staging' ? _AgentStaging : env.JENKINS_ENVIRONMENT == 'Production' ? _AgentProduction : 'Else'
}
parameters {
string(name: 'MONA_SUFFIX', defaultValue: env.JENKINS_ENVIRONMENT == 'Development' ? '_IFX' : '_EC', description: 'MonA Suffix')
string(name: 'GIT_SERVER', defaultValue: env.JENKINS_ENVIRONMENT == 'Development' ? 'mestsa003.infineon.com' : 'mestsa07ec.ec.local', description: 'git server')
string(name: 'DEFAULT_FILE_SERVER', defaultValue: env.JENKINS_ENVIRONMENT == 'Development' ? 'messv02ecc1_ec_local' : 'messv02ecc1.ec.local', description: 'Default file server...')
}
stages {
stage('Git') {
steps {
bat(returnStatus: true, script: 'git init')
bat(returnStatus: true, script: 'git remote add origin \\\\' + params.GIT_SERVER + '\\Git\\' + _GitName + '.git')
bat(returnStatus: true, script: 'git pull origin master')
}
}
stage('Setup') {
steps {
script {
_AssemblyName = "${env.JOB_NAME}"
_GitCommitSeven = '1234567'
// _GitCommitSeven = env.GIT_COMMIT.substring(0, 7)
dir(_ProjectDirectory) {
def files = findFiles(glob: '*.csproj')
if (files.length != 1) {
error("Build failed because couldn't find a *.csproj file")
}
echo """
${files[0].name}
${files[0].path}
${files[0].directory}
${files[0].length}
${files[0].lastModified}
"""
_AssemblyName = files[0].name.split('[.]csproj')[0]
}
_TargetLocation = "\\\\${params.DEFAULT_FILE_SERVER}\\EC_EAFRepository\\${env.JENKINS_ENVIRONMENT}\\DeploymentStorage\\Adaptation_${_AssemblyName}"
withCredentials([usernamePassword(credentialsId: _CredentialsId, passwordVariable: 'password', usernameVariable: 'username')]) {
dir("C:/Users/${username}/AppData/Local/IFXApps/nginx-1.20.1/conf/includes") {
_NGINXFile = "C:/Users/${username}/AppData/Local/IFXApps/nginx-1.20.1/conf/includes/${_AssemblyName}.conf"
def files = findFiles(glob: "${_AssemblyName}.conf")
if (files.length != 1) {
writeFile(file: _NGINXFile, text: "location / { proxy_pass http://localhost:${_FirstBeforePlus}; }")
}
}
}
}
}
}
stage('Read NGINX') {
steps {
script {
String text = readFile(file: _NGINXFile)
String check = text == null ? _FirstBeforePlus : text.split(';')[0]
String[] segments = check.split(':')
if (segments.length != 3) {
_PortNumber = check
}
else {
_PortNumber = (segments[2].toInteger() + 2).toString()
}
_ExePath = "${_DDriveNet}/${_GitCommitSeven}-${env.BUILD_NUMBER}-${_PortNumber}-${env.JOB_NAME}/${_AssemblyName}.exe"
}
}
}
stage('Info') {
steps {
// echo "GIT_URL_N - ${env.GIT_URL_N}"
// echo "BRANCH_NAME ${env.BRANCH_NAME}"
// echo "DEPLOY_VERSION ${env.DEPLOY_VERSION}"
// echo "GIT_AUTHOR_NAME ${env.GIT_AUTHOR_NAME}"
// echo "GIT_LOCAL_BRANCH ${env.GIT_LOCAL_BRANCH}"
// echo "GIT_COMMITTER_EMAIL ${env.GIT_COMMITTER_EMAIL}"
// echo "GIT_PREVIOUS_COMMIT ${env.GIT_PREVIOUS_COMMIT}"
// echo "GIT_PREVIOUS_SUCCESSFUL_COMMIT ${env.GIT_PREVIOUS_SUCCESSFUL_COMMIT}"
echo "_AssemblyName ${_AssemblyName}" // ...
echo "_ExePath ${_ExePath}" // ...
echo "_PortNumber ${_PortNumber}" // ...
echo "BUILD_NUMBER ${env.BUILD_NUMBER}" // 11
echo "DEFAULT_FILE_SERVER ${params.DEFAULT_FILE_SERVER}" // 11
echo "GIT_BRANCH ${env.GIT_BRANCH}" // origin/master
echo "GIT_COMMIT ${env.GIT_COMMIT}" // 73b814069f2cf0173a62a8228815a9bc9ba93c41
echo "GIT_SERVER ${params.GIT_SERVER}" // ...
echo "GIT_URL ${env.GIT_URL}" // D:\ProgramData\Git\....git
echo "JENKINS_ENVIRONMENT ${env.JENKINS_ENVIRONMENT}" // 11
echo "JENKINS_URL ${env.JENKINS_URL}" // http://localhost:8080/
echo "JOB_NAME ${env.JOB_NAME}" // ...
echo "WORKSPACE ${env.WORKSPACE}" // D:\.jenkins\_\...
}
}
// stage('Restore') {
// steps {
// bat(returnStatus: true, script: 'dotnet --info')
// }
// }
stage('Safe storage of app secrets') {
steps {
withCredentials([usernamePassword(credentialsId: _CredentialsId, passwordVariable: 'password', usernameVariable: 'username')]) {
dir(_ProjectDirectory) {
bat(returnStatus: true, script: '"' + _ProgramFilesDotnet + '" ' +
'user-secrets init')
bat(returnStatus: true, script: '"' + _ProgramFilesDotnet + '" ' +
'user-secrets set "Company" "' + _Company + '"')
bat(returnStatus: true, script: '"' + _ProgramFilesDotnet + '" ' +
'user-secrets set "ServiceUser" "' + username + '"')
bat(returnStatus: true, script: '"' + _ProgramFilesDotnet + '" ' +
'user-secrets set "BuildNumber" "' + env.BUILD_NUMBER + '"')
bat(returnStatus: true, script: '"' + _ProgramFilesDotnet + '" ' +
'user-secrets set "GitCommitSeven" "' + _GitCommitSeven + '"')
bat(returnStatus: true, script: '"' + _ProgramFilesDotnet + '" ' +
'user-secrets set "Server" "' + params.DEFAULT_FILE_SERVER + '"')
bat(returnStatus: true, script: '"' + _ProgramFilesDotnet + '" ' +
'user-secrets set "URLs" "' + 'http://localhost:' + _PortNumber)
bat(returnStatus: true, script: '"' + _ProgramFilesDotnet + '" ' +
'user-secrets set "WorkingDirectoryName" "' + _WorkingDirectoryName + '"')
bat(returnStatus: true, script: '"' + _ProgramFilesDotnet + '" ' +
'user-secrets set "MonARessource" "' + _MonARessource + env.MONA_SUFFIX + '"')
}
}
}
}
// stage('Core Build (packagemanagement.eu.infineon.com)') {
// steps {
// echo "Build number is ${currentBuild.number}"
// dir(_ProjectDirectory) {
// bat(returnStatus: true, script: '"' + _ProgramFilesDotnet + '" ' +
// 'build --runtime win-x64 --self-contained --verbosity quiet --source ' +
// 'https://packagemanagement.eu.infineon.com:4430/api/v2/')
// }
// }
// }
stage('Core Build') {
steps {
echo "Build number is ${currentBuild.number}"
dir(_ProjectDirectory) {
bat(returnStatus: true, script: '"' + _ProgramFilesDotnet + '" ' +
'build --runtime win-x64 --self-contained --verbosity quiet')
}
}
}
stage('Commit Id') {
steps {
dir(_ProjectDirectory) {
writeFile(file: 'bin/Debug/' + _NetVersion + "/win-x64/${env.GIT_COMMIT}-${env.BUILD_NUMBER}.txt", text: "${env.GIT_URL}")
}
}
}
// stage('Test') {
// options {
// timeout(time: 10, unit: 'MINUTES')
// }
// steps {
// dir(_ProjectDirectory) {
// bat('dotnet --info')
// }
// }
// }
// stage('Version') {
// steps {
// bat('dotnet --info')
// }
// }
stage('Package') {
steps {
dir(_ProjectDirectory) {
fileOperations([fileZipOperation(folderPath: 'bin/Debug/' + _NetVersion + '/win-x64', outputFolderPath: "${_DDriveNet}/${_GitCommitSeven}-${env.BUILD_NUMBER}-${_PortNumber}-${env.JOB_NAME}-Debug")])
fileOperations([fileCopyOperation(excludes: '', flattenFiles: true, includes: "${_AssemblyName}*", renameFiles: false, sourceCaptureExpression: '', targetLocation: "${_DDriveNet}/${_GitCommitSeven}-${env.BUILD_NUMBER}-${_PortNumber}-${env.JOB_NAME}-Debug", targetNameExpression: '')])
}
}
}
stage('Publish') {
steps {
dir(_ProjectDirectory) {
bat(returnStatus: true, script: '"' + _ProgramFilesDotnet + '" ' +
'remove reference "../Client/' + env.JOB_NAME + '.Client.csproj"')
bat(returnStatus: true, script: '"' + _ProgramFilesDotnet + '" ' +
'publish --configuration Release --runtime win-x64 --verbosity quiet ' +
"--self-contained true --p:Version=6.0.202-${_GitCommitSeven}-${env.BUILD_NUMBER} -o " +
'"' + "${_DDriveNet}/${_GitCommitSeven}-${env.BUILD_NUMBER}-${_PortNumber}-${env.JOB_NAME}" + '"')
}
}
}
stage('Service') {
steps {
withCredentials([usernamePassword(credentialsId: _CredentialsId, passwordVariable: 'password', usernameVariable: 'username')]) {
bat(returnStatus: true, script: 'sc create "' + "${env.JOB_NAME}-${_PortNumber}" + '" ' +
'start= delayed-auto DisplayName="' + "${env.JOB_NAME}-${_PortNumber}" + '" ' +
'binPath= "' + _ExePath + '" ' +
'obj= "' + "${env.USERDOMAIN}\\${username}" + '" password= "' + password + '"')
bat(returnStatus: true, script: 'sc start "' + "${env.JOB_NAME}-${_PortNumber}" + '"')
}
}
}
stage('Upadate NGINX') {
steps {
writeFile(file: _NGINXFile, text: "location / { proxy_pass http://localhost:${_PortNumber}; }")
}
}
stage('NGINX Test and Reload') {
steps {
withCredentials([usernamePassword(credentialsId: _CredentialsId, passwordVariable: 'password', usernameVariable: 'username')]) {
dir("C:/Users/${username}/AppData/Local/IFXApps/nginx-1.20.1") {
script {
int returnStatus = bat(returnStatus: true, script: 'nginx.exe -t')
println("returnStatus ################ ${returnStatus} ####################")
if (returnStatus == 0) {
bat(returnStatus: true, script: 'nginx.exe -s reload')
}
}
}
}
}
}
// stage('Force Fail') {
// steps {
// error("Build failed because of this and that..")
// }
// }
// stage('Copy Files to: file-share') {
// steps {
// dir(_ProjectDirectory + '/bin/Debug/' + _NetVersion + '/win-x64') {
// fileOperations([fileCopyOperation(excludes: '', flattenFiles: true, includes: "${_AssemblyName}*.txt", renameFiles: false, sourceCaptureExpression: '', targetLocation: _TargetLocation, targetNameExpression: '')])
// fileOperations([fileCopyOperation(excludes: '', flattenFiles: true, includes: "${_AssemblyName}*.dll", renameFiles: false, sourceCaptureExpression: '', targetLocation: _TargetLocation, targetNameExpression: '')])
// fileOperations([fileCopyOperation(excludes: '', flattenFiles: true, includes: "${_AssemblyName}*.exe", renameFiles: false, sourceCaptureExpression: '', targetLocation: _TargetLocation, targetNameExpression: '')])
// fileOperations([fileCopyOperation(excludes: '', flattenFiles: true, includes: "${_AssemblyName}*.pdb", renameFiles: false, sourceCaptureExpression: '', targetLocation: _TargetLocation, targetNameExpression: '')])
// }
// }
// }
}
post {
always {
dir(_ProjectDirectory + '/bin') {
deleteDir()
}
dir(_ProjectDirectory + '/obj') {
deleteDir()
}
// cleanWs()
}
}
}

35
.vscode/launch.json vendored Normal file
View File

@ -0,0 +1,35 @@
{
"version": "0.2.0",
"configurations": [
{
// Use IntelliSense to find out which attributes exist for C# debugging
// Use hover for the description of the existing attributes
// For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md
"name": ".NET Core Launch (web)",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
// If you have changed target frameworks, make sure to update the program path.
"program": "${workspaceFolder}/Archive/bin/Debug/net6.0/win-x64/Archive.dll",
"args": [],
"cwd": "${workspaceFolder}",
"stopAtEntry": false,
// Enable launching a web browser when ASP.NET Core starts. For more information: https://aka.ms/VSCode-CS-LaunchJson-WebBrowser
"serverReadyAction": {
"action": "openExternally",
"pattern": "\\bNow listening on:\\s+(https?://\\S+)"
},
"env": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"sourceFileMap": {
"/Views": "${workspaceFolder}/Archive/Views"
}
},
{
"name": ".NET Core Attach",
"type": "coreclr",
"request": "attach"
}
]
}

6
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,6 @@
{
"cSpell.enabled": false,
"files.exclude": {
"**/.git": false
}
}

41
.vscode/tasks.json vendored Normal file
View File

@ -0,0 +1,41 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"command": "dotnet",
"type": "process",
"args": [
"build",
"${workspaceFolder}/Archive/Archive.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "publish",
"command": "dotnet",
"type": "process",
"args": [
"publish",
"${workspaceFolder}/Archive/Archive.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "watch",
"command": "dotnet",
"type": "process",
"args": [
"watch",
"run",
"--project",
"${workspaceFolder}/Archive/Archive.csproj"
],
"problemMatcher": "$msCompile"
}
]
}

35
Archive/.vscode/launch.json vendored Normal file
View File

@ -0,0 +1,35 @@
{
"version": "0.2.0",
"configurations": [
{
// Use IntelliSense to find out which attributes exist for C# debugging
// Use hover for the description of the existing attributes
// For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md
"name": ".NET Core Launch (web)",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
// If you have changed target frameworks, make sure to update the program path.
"program": "${workspaceFolder}/bin/Debug/net6.0/win-x64/Archive.dll",
"args": [],
"cwd": "${workspaceFolder}",
"stopAtEntry": false,
// Enable launching a web browser when ASP.NET Core starts. For more information: https://aka.ms/VSCode-CS-LaunchJson-WebBrowser
"serverReadyAction": {
"action": "openExternally",
"pattern": "\\bNow listening on:\\s+(https?://\\S+)"
},
"env": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"sourceFileMap": {
"/Views": "${workspaceFolder}/Views"
}
},
{
"name": ".NET Core Attach",
"type": "coreclr",
"request": "attach"
}
]
}

41
Archive/.vscode/tasks.json vendored Normal file
View File

@ -0,0 +1,41 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"command": "dotnet",
"type": "process",
"args": [
"build",
"${workspaceFolder}/Archive.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "publish",
"command": "dotnet",
"type": "process",
"args": [
"publish",
"${workspaceFolder}/Archive.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "watch",
"command": "dotnet",
"type": "process",
"args": [
"watch",
"run",
"--project",
"${workspaceFolder}/Archive.csproj"
],
"problemMatcher": "$msCompile"
}
]
}

View File

@ -0,0 +1,50 @@
using Microsoft.AspNetCore.Mvc;
using OI.Metrology.Shared.DataModels;
using OI.Metrology.Shared.Repositories;
using OI.Metrology.Shared.Services;
using System;
using System.IO;
namespace OI.Metrology.Archive.ApiControllers;
public class AttachmentsController : Controller
{
protected IMetrologyRepo _Repo;
protected IAttachmentsService _AttachmentsService;
public AttachmentsController(IMetrologyRepo repo, IAttachmentsService attachmentsService)
{
_Repo = repo;
_AttachmentsService = attachmentsService;
}
// this endpoint was created in hope that it would make retrieving attachments to display in OpenInsight easier
// url would be like /api/attachments/mercuryprobe/header/HgProbe_66-232268-4329_20180620052640032/data.pdf
[HttpGet("/api/attachments/{toolTypeName}/{tabletype}/{title}/{filename}")]
public IActionResult GetAttachment(
string toolTypeName,
string tabletype,
string title,
string filename)
{
ToolType tt = _Repo.GetToolTypeByName(toolTypeName);
bool header = !string.Equals(tabletype.Trim(), "data", StringComparison.OrdinalIgnoreCase);
try
{
string contenttype = "application/pdf";
if (filename.ToLower().TrimEnd().EndsWith(".txt"))
contenttype = "text/plain";
Stream fs = _AttachmentsService.GetAttachmentStreamByTitle(tt, header, title, filename);
return File(fs, contenttype);
}
catch (Exception ex)
{
return Content(ex.Message);
}
}
}

View File

@ -0,0 +1,46 @@
using Microsoft.AspNetCore.Mvc;
namespace OI.Metrology.Archive.ApiContollers;
using OI.Metrology.Shared.Repositories;
using System.Text.Json;
// this controller is for the Awaiting Dispo functionality
public class AwaitingDispoController : Controller
{
protected IMetrologyRepo _Repo;
public AwaitingDispoController(IMetrologyRepo repo) => _Repo = repo;
// returns the data to show in the Awaiting Dispo grid
// marked no-cache, just-in-case since igniteUI automatically adds a query string parameter to prevent caching
[HttpGet("/api/awaitingdispo")]
[ResponseCache(NoStore = true)]
public IActionResult Index()
{
var r = new
{
Results = _Repo.GetAwaitingDispo()
};
return Json(r, new JsonSerializerOptions { PropertyNamingPolicy = null, WriteIndented = true });
}
// this endpoint is used to set the ReviewDate column, causing the header to no longer show in Awaiting Dispo
[HttpPost("/api/awaitingdispo/markasreviewed")]
public IActionResult MarkAsReviewed([FromQuery] long headerid, [FromQuery] int tooltypeid)
{
_ = _Repo.UpdateReviewDate(tooltypeid, headerid, false);
return Ok();
}
// this endpoint is used to clear the ReviewDate column, causing the header to show up again
[HttpPost("/api/awaitingdispo/markasawaiting")]
public IActionResult MarkAsAwaiting([FromQuery] long headerid, [FromQuery] int tooltypeid)
{
if (_Repo.UpdateReviewDate(tooltypeid, headerid, true) <= 1)
return Ok();
else
return StatusCode(444);
}
}

View File

@ -0,0 +1,169 @@
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json.Linq;
using OI.Metrology.Shared.DataModels;
using OI.Metrology.Shared.Repositories;
using OI.Metrology.Shared.Services;
using System;
using System.Collections.Generic;
using System.Linq;
namespace OI.Metrology.Archive.ApiContollers;
[ApiController]
public class InboundController : ControllerBase
{
private IConfiguration Config { get; }
private ILogger Logger { get; }
protected IMetrologyRepo _Repo;
protected IAttachmentsService _AttachmentService;
protected IInboundDataService _InboundDataService;
public InboundController(IConfiguration config, ILogger<InboundController> logger, IMetrologyRepo repo, IInboundDataService inboundDataService, IAttachmentsService attachmentService)
{
Config = config;
Logger = logger;
_Repo = repo;
_InboundDataService = inboundDataService;
_AttachmentService = attachmentService;
}
// this class represents the API response back to the client
public class DataResponse
{
public bool Success { get; set; }
public long HeaderID { get; set; }
public List<string> Errors { get; set; }
public List<string> Warnings { get; set; }
}
// this is the main endpoint, it accepts a JSON message that contains both the header and data records together
// tooltype is the ToolTypeName column from the ToolType table
// JToken is how you can accept a JSON message without deserialization.
// Using "string" doesn't work because ASP.NET Core will expect a json encoded string, not give you the actual string.
[HttpPost("/api/inbound/{tooltype}")]
public IActionResult Data(string tooltype, [FromBody] JToken jsonbody)
{
DataResponse r = new()
{
Success = false,
HeaderID = -1,
Errors = new List<string>(),
Warnings = new List<string>()
};
if (!IsIPAddressAllowed())
{
Logger.LogInformation($"Rejected remote IP: {HttpContext.Connection.RemoteIpAddress}");
r.Errors.Add("Remote IP is not on allowed list");
return Unauthorized(r);
}
ToolType toolType = _Repo.GetToolTypeByName(tooltype);
if (toolType == null)
{
r.Errors.Add("Invalid tool type: " + tooltype);
return BadRequest(r);
}
// get metadata
List<ToolTypeMetadata> metaData = _Repo.GetToolTypeMetadataByToolTypeID(toolType.ID).ToList();
if (metaData == null)
{
r.Errors.Add("Invalid metadata for tool type: " + tooltype);
return BadRequest(r);
}
// validate fields
if (jsonbody != null)
_InboundDataService.ValidateJSONFields(jsonbody, 0, metaData, r.Errors, r.Warnings);
else
r.Errors.Add("Invalid json");
if (r.Errors.Count == 0)
{
try
{
r.HeaderID = _InboundDataService.DoSQLInsert(jsonbody, toolType, metaData);
r.Success = r.HeaderID > 0;
}
catch (Exception ex)
{
r.Errors.Add(ex.Message);
}
return Ok(r);
}
else
{
return BadRequest(r);
}
}
// this is the endpoint for attaching a field. It is not JSON, it is form-data/multipart like an HTML form because that's the normal way.
// header ID is the ID value from the Header table
// datauniqueid is the Title value from the Data/Detail table
[HttpPost("/api/inbound/{tooltype}/attachment")]
public IActionResult AttachFile(string tooltype, [FromQuery] long headerid, [FromQuery] string datauniqueid = "")
{
if (!IsIPAddressAllowed())
{
Logger.LogInformation($"Rejected remote IP: {HttpContext.Connection.RemoteIpAddress}");
return Unauthorized("Remote IP is not on allowed list");
}
ToolType toolType = _Repo.GetToolTypeByName(tooltype);
if (toolType == null)
return BadRequest($"Invalid tool type: {tooltype}");
if (Request.Form == null)
return BadRequest($"Invalid form");
if (Request.Form.Files.Count != 1)
return BadRequest($"Invalid file count");
string filename = System.IO.Path.GetFileName(Request.Form.Files[0].FileName);
if (string.IsNullOrWhiteSpace(filename))
return BadRequest("Empty filename");
if (filename.IndexOfAny(System.IO.Path.GetInvalidFileNameChars()) >= 0)
return BadRequest("Invalid filename");
_AttachmentService.SaveAttachment(toolType, headerid, datauniqueid, filename, Request.Form.Files[0]);
return Ok();
}
protected bool IsIPAddressAllowed()
{
string allowedList = Config[Constants.InboundApiAllowedIPList];
if (string.IsNullOrWhiteSpace(allowedList))
return true;
System.Net.IPAddress remoteIP = HttpContext.Connection.RemoteIpAddress;
byte[] remoteIPBytes = remoteIP.GetAddressBytes();
string[] allowedIPs = allowedList.Split(';');
foreach (string ip in allowedIPs)
{
System.Net.IPAddress parsedIP;
if (System.Net.IPAddress.TryParse(ip, out parsedIP))
{
if (parsedIP.GetAddressBytes().SequenceEqual(remoteIPBytes))
return true;
}
}
return false;
}
}

View File

@ -0,0 +1,276 @@
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Newtonsoft.Json;
using System;
using System.IO;
using System.Linq;
namespace OI.Metrology.Archive.ApiContollers;
using OI.Metrology.Shared.DataModels;
using OI.Metrology.Shared.Repositories;
using OI.Metrology.Shared.Services;
using System.Collections.Generic;
using System.Text.Json;
// using System.Data.Common;
public class ToolTypesController : Controller
{
// this controller powers the bulk of the UI
// it is named after the /api/tooltypes prefix
// the URL pattern is RESTful and the tool type is the root of every request
private IConfiguration Config { get; }
protected IMetrologyRepo _Repo;
protected IAttachmentsService _AttachmentsService;
public ToolTypesController(IConfiguration config, IMetrologyRepo repo, IAttachmentsService attachmentsService)
{
Config = config;
_Repo = repo;
_AttachmentsService = attachmentsService;
}
// Get a list of tooltypes, returns just Name and ID
[HttpGet("/api/tooltypes")]
public IActionResult Index()
{
var r = new
{
Results = _Repo.GetToolTypes().Select(tt => new { tt.ToolTypeName, tt.ID })
};
return Json(r, new JsonSerializerOptions { PropertyNamingPolicy = null, WriteIndented = true });
}
// Gets the metadata for a tooltype, accepts a parameter which sorts the results
// This is used to setup the grid displays on the UI
[HttpGet("/api/tooltypes/{id}")]
public IActionResult GetToolTypeMetadata(int id, string sortby = "")
{
ToolType tt = _Repo.GetToolTypeByID(id);
IEnumerable<ToolTypeMetadata> md = _Repo.GetToolTypeMetadataByToolTypeID(id);
if (string.Equals(sortby, "grid", StringComparison.OrdinalIgnoreCase))
md = md.OrderBy(f => f.GridDisplayOrder).ToList();
if (string.Equals(sortby, "table", StringComparison.OrdinalIgnoreCase))
md = md.OrderBy(f => f.GridDisplayOrder).ToList();
var r = new
{
Results = new
{
ToolType = tt,
Metadata = md
}
};
return Json(r, new JsonSerializerOptions { PropertyNamingPolicy = null, WriteIndented = true });
}
//Just Changed here
// Gets headers, request/response format is to allow paging with igniteUI
// The headerid parameter is used for navigating directly to a header, when the button is clicked in Awaiting Dispo
[HttpGet("/api/tooltypes/{id}/headers")]
public IActionResult GetHeaders(
int id,
[FromQuery] DateTime? datebegin,
[FromQuery] DateTime? dateend,
[FromQuery] int? page,
[FromQuery] int? pagesize,
[FromQuery] long? headerid, bool isSharePoint)
{
long totalRecs;
System.Data.DataTable dt = _Repo.GetHeaders(id, datebegin, dateend, page, pagesize, headerid, out totalRecs, isSharePoint);
var r = new
{
Results = dt,
TotalRows = totalRecs,
};
string json = JsonConvert.SerializeObject(r);
return Content(json);
}
// Gets header titles, used in the Run Headers UI
[HttpGet("/api/tooltypes/{id}/headertitles")]
public IActionResult GetHeaderTitles(
int id,
[FromQuery] int? page,
[FromQuery] int? pagesize, bool isArchive)
{
long totalRecs;
IEnumerable<HeaderCommon> dt = _Repo.GetHeaderTitles(id, page, pagesize, out totalRecs, isArchive);
var r = new
{
Results = dt,
TotalRows = totalRecs,
};
string json = JsonConvert.SerializeObject(r);
return Content(json);
}
// Get all of the fields for a header, used with the Run Header UI
[HttpGet("/api/tooltypes/{id}/headers/{headerid}/fields")]
public IActionResult GetHeaderFields(
int id,
long headerid, bool isArchive)
{
var r = new
{
Results = _Repo.GetHeaderFields(id, headerid, isArchive).Select(x => new { Column = x.Key, x.Value }).ToList()
};
string json = JsonConvert.SerializeObject(r);
return Content(json);
}
// Get the data for a header, used with the Run Info UI
[HttpGet("/api/tooltypes/{id}/headers/{title}/data/isSharePoint")]
public IActionResult GetData(
int id,
string title)
{
var r = new
{
Results = _Repo.GetDataSharePoint(id, title)
};
string json = JsonConvert.SerializeObject(r);
return Content(json);
}
// Get the data for a header, used with the Run Info UI
[HttpGet("/api/tooltypes/{id}/headers/{headerid}/data")]
public IActionResult GetData(
int id,
long headerid, bool isSharePoint)
{
var r = new
{
Results = _Repo.GetData(id, headerid, isSharePoint)
};
string json = JsonConvert.SerializeObject(r);
return Content(json);
}
// Display an attachment, used for Run Info - note it is by tool type ID and attachment GUID, so it is best for internal use
[HttpGet("/api/tooltypes/{toolTypeId}/{tabletype}/files/{attachmentId}/{filename}")]
public IActionResult GetAttachment(
int toolTypeId,
string tabletype,
string attachmentId,
string filename, bool isArchive)
{
ToolType tt = _Repo.GetToolTypeByID(toolTypeId);
bool header = !string.Equals(tabletype.Trim(), "data", StringComparison.OrdinalIgnoreCase);
Guid attachmentIdParsed;
if (!Guid.TryParse(attachmentId, out attachmentIdParsed))
return Content("Invalid attachment id");
//try
// {
// figure out what content type to use. this is very simple because there are only two types being used
string contenttype = "application/pdf";
if (filename.ToLower().TrimEnd().EndsWith(".txt"))
contenttype = "text/plain";
// Get attachment stream and feed it to the client
Stream fs = _AttachmentsService.GetAttachmentStreamByAttachmentId(tt, header, attachmentIdParsed, filename);
/*if (isArchive)
{
fs = attachmentsService.GetAttachmentStreamByAttachmentIdArchive(tt, header, attachmentIdParsed, filename);
//fs = attachmentsService.GetAttachmentStreamByAttachmentId
}*/
return File(fs, contenttype);
//}
/*catch (Exception ex)
{
return Content(ex.Message);
}*/
}
// This endpoint triggers writing of the OI Export file
[HttpPost("/api/tooltypes/{toolTypeId}/headers/{headerid}/oiexport")]
public IActionResult OIExport(int toolTypeId, long headerid)
{
// Call the export stored procedure
System.Data.DataSet ds = _Repo.GetOIExportData(toolTypeId, headerid);
try
{
// The SP must return 3 result tables
if (ds.Tables.Count != 3)
throw new Exception("Error exporting, invalid results");
// The first table has just one row, which is the export filename
if (ds.Tables[0].Rows.Count != 1)
throw new Exception("Error exporting, invalid filename");
string filename = Convert.ToString(ds.Tables[0].Rows[0][0]);
// The second table has the header data
if (ds.Tables[1].Rows.Count != 1)
throw new Exception("Error exporting, invalid header data");
System.Text.StringBuilder sb = new();
foreach (object o in ds.Tables[1].Rows[0].ItemArray)
{
if ((o != null) && (!Convert.IsDBNull(o)))
_ = sb.Append(Convert.ToString(o));
_ = sb.Append('\t');
}
// The third table has the detail data
foreach (System.Data.DataRow dr in ds.Tables[2].Rows)
{
foreach (object o in dr.ItemArray)
{
if ((o != null) && (!Convert.IsDBNull(o)))
_ = sb.Append(Convert.ToString(o));
_ = sb.Append('\t');
}
}
_ = sb.AppendLine();
// The output file will only have one line, the header columns are output first
// Then each detail rows has it's columns appended
// H1, H2, H3, D1.1, D1.2, D1.3, D2.1, D2.2, D2.3, etc
// Get the configured export path
string exportRootPath = Config[Constants.OIExportPathKey];
// Write the file
System.IO.File.WriteAllText(
Path.Join(exportRootPath, filename),
sb.ToString());
}
catch (Exception ex)
{
string json = JsonConvert.SerializeObject(new
{
ex.Message,
});
return BadRequest(json);
}
var r = new
{
Message = "OK",
};
return Ok(r);
}
}

View File

@ -0,0 +1,133 @@
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Configuration;
using System;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OI.Metrology.Archive;
// You may need to install the Microsoft.AspNetCore.Http.Abstractions package into your project
public class ApiLoggingMiddleware
{
private IConfiguration Config { get; }
private readonly RequestDelegate _Next;
public ApiLoggingMiddleware(RequestDelegate next, IConfiguration config)
{
Config = config;
_Next = next;
}
// this is the method called in ASP.NET Core middleware to handle an HTTP request
// the middleware allows you to add code to run before and after an http request is handled
// they are stacked together like a pipeline
public async Task Invoke(HttpContext httpContext)
{
try
{
bool doLogging = false;
string pathsToLog = Config[Constants.ApiLoggingPathPrefixes];
string contentTypesToLog = Config[Constants.ApiLoggingContentTypes];
// check to see if this is a request path that is enabled for logging
if (!string.IsNullOrWhiteSpace(pathsToLog))
{
// check if the request path begins with any part of pathsToLog
if (pathsToLog.Split(';').Any(p => httpContext.Request.Path.StartsWithSegments(new PathString(p))))
{
if (!string.IsNullOrWhiteSpace(contentTypesToLog))
{
// if there are content type filters configured, only log is the request begins with one of them
doLogging = contentTypesToLog.Split(';').Any(ct => httpContext.Request.ContentType.StartsWith(ct));
}
else
{
// if no content type filter is defined, log all content types
doLogging = true;
}
}
}
// if logging is enabled for this request
if (doLogging)
{
DateTime startTime = DateTime.Now;
// get request body
string requestBodyContent = await ReadRequestBody(httpContext.Request);
// save the original response and stream
Stream originalBodyStream = httpContext.Response.Body;
using MemoryStream responseBody = new();
// replace response stream with our memory stream
httpContext.Response.Body = responseBody;
// call next middleware, this is to process the request so we have a response to inspect
await _Next(httpContext);
// get response body into string
_ = httpContext.Response.Body.Seek(0, SeekOrigin.Begin);
string bodyAsText = await new StreamReader(httpContext.Response.Body).ReadToEndAsync();
// copy memory stream to original response stream
_ = httpContext.Response.Body.Seek(0, SeekOrigin.Begin);
await httpContext.Response.Body.CopyToAsync(originalBodyStream);
// log the request and response
LogRequestAndResponse(startTime, httpContext.Request, requestBodyContent, bodyAsText);
return;
}
}
catch (Exception ex)
{
Console.Error.WriteLine("Error in ApiLoggingMiddleware: " + ex.ToString());
}
// proceed with the http request normally
await _Next(httpContext);
}
private static async Task<string> ReadRequestBody(HttpRequest request)
{
HttpRequestRewindExtensions.EnableBuffering(request);
byte[] buffer = new byte[Convert.ToInt32(request.ContentLength)];
_ = await request.Body.ReadAsync(buffer);
string bodyAsText = Encoding.UTF8.GetString(buffer);
_ = request.Body.Seek(0, SeekOrigin.Begin);
return bodyAsText;
}
private void LogRequestAndResponse(DateTime requestTime, HttpRequest request, string requestBody, string responseBody)
{
int threadId = Environment.CurrentManagedThreadId;
string logPath = Config[Constants.ApiLogPath];
string fileName = $"ApiLog{requestTime:yyyyMMdd_hhmmssttt}_{threadId}.txt";
HttpContext context = request.HttpContext;
if (!Directory.Exists(logPath))
_ = Directory.CreateDirectory(logPath);
using StreamWriter sw = new(Path.Join(logPath, fileName), true);
sw.WriteLine($"Request at {requestTime:yyyy/MM/dd hh:mm:ss.ttt} from {context.Connection.RemoteIpAddress}");
sw.WriteLine($"{request.Method} {request.Path} {request.QueryString}");
sw.WriteLine("Request body:");
sw.WriteLine(requestBody);
sw.WriteLine($"Response at {DateTime.Now:yyyy/MM/dd hh:mm:ss.ttt}");
sw.WriteLine(responseBody);
sw.WriteLine("==========");
}
}
// Extension method used to add the middleware to the HTTP request pipeline.
public static class ApiLoggingMiddlewareExtensions
{
public static IApplicationBuilder UseApiLoggingMiddleware(this IApplicationBuilder builder) => builder.UseMiddleware<ApiLoggingMiddleware>();
}

53
Archive/Archive.csproj Normal file
View File

@ -0,0 +1,53 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup Label="Globals">
<SccProjectName>SAK</SccProjectName>
<SccProvider>SAK</SccProvider>
<SccAuxPath>SAK</SccAuxPath>
<SccLocalPath>SAK</SccLocalPath>
</PropertyGroup>
<PropertyGroup>
<ImplicitUsings>disable</ImplicitUsings>
<IsPackable>false</IsPackable>
<LangVersion>10.0</LangVersion>
<Nullable>disable</Nullable>
<OutputType>Exe</OutputType>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<Compile Remove="logs\**" />
<Content Remove="logs\**" />
<EmbeddedResource Remove="logs\**" />
<None Remove="logs\**" />
</ItemGroup>
<ItemGroup>
<Content Remove="compilerconfig.json" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Dapper" Version="2.0.123" />
<PackageReference Include="EntityFramework" Version="6.4.4" />
<PackageReference Include="jQuery" Version="3.6.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="6.0.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="6.0.1" />
<PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" Version="6.0.0" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="6.0.1" />
<PackageReference Include="Microsoft.Web.LibraryManager.Build" Version="2.1.175" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="System.Data.SqlClient" Version="4.8.3" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Shared\Shared.csproj" />
</ItemGroup>
<ItemGroup>
<Folder Include="moves\" />
<Folder Include="wwwroot\images\" />
<Folder Include="wwwroot\styles\" />
</ItemGroup>
<ItemGroup>
<None Include="compilerconfig.json" />
</ItemGroup>
</Project>

13
Archive/Constants.cs Normal file
View File

@ -0,0 +1,13 @@
namespace OI.Metrology.Archive;
public static class Constants
{
public const string ConnStringName = "SQL";
public const string ConnStringName2 = "SQL2";
public const string AttachmentPathKey = "AttachmentPath";
public const string OIExportPathKey = "OIExportPath";
public const string InboundApiAllowedIPList = "InboundApiAllowedIPList";
public const string ApiLoggingPathPrefixes = "ApiLoggingPathPrefixes";
public const string ApiLoggingContentTypes = "ApiLoggingContentTypes";
public const string ApiLogPath = "ApiLogPath";
}

View File

@ -0,0 +1,32 @@
using Microsoft.AspNetCore.Diagnostics;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
namespace OI.Metrology.Archive.Controllers;
[Route("/error")]
public class ErrorHandlerController : Controller
{
private ILogger Logger { get; }
public ErrorHandlerController(ILogger<ErrorHandlerController> logger) => Logger = logger;
public IActionResult Index()
{
IExceptionHandlerFeature error = HttpContext.Features.Get<IExceptionHandlerFeature>();
if (error == null)
{
return Redirect("~/");
}
else
{
Logger.LogError("Unhandled exception: " + error.Error.ToString());
dynamic r = new
{
Message = error.Error == null ? "Error" : error.Error.Message
};
return StatusCode(StatusCodes.Status500InternalServerError, r);
}
}
}

View File

@ -0,0 +1,162 @@
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using OI.Metrology.Shared.DataModels;
using OI.Metrology.Shared.Repositories;
using OI.Metrology.Shared.ViewModels;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace OI.Metrology.Archive.Controllers;
public class ExportController : Controller
{
private ILogger Logger { get; }
protected IMetrologyRepo _Repo;
public ExportController(ILogger<ExportController> logger, IMetrologyRepo repo)
{
Logger = logger;
_Repo = repo;
}
protected static void LoadToolTypes(Export m, IEnumerable<ToolType> toolTypes)
{
m.ToolTypes = toolTypes
.Where(tt => tt.ExportSPName != null)
.Select(tt => new Shared.Models.SelectListItem(tt.ToolTypeName, tt.ID.ToString())).ToList();
}
[HttpGet]
[Route("/Export")]
public ActionResult Index()
{
Export model = new();
LoadToolTypes(model, _Repo.GetToolTypes());
model.ToolType = "";
model.StartTime = DateTime.Now.AddMonths(-1);
model.EndTime = DateTime.Now;
return View(model);
}
[HttpPost]
[Route("/ExportData")]
public ActionResult ExportData(Export model)
{
IEnumerable<ToolType> toolTypes = _Repo.GetToolTypes();
// is tooltype valid
ToolType toolType = toolTypes.Where(tt => tt.ID.ToString() == model.ToolType).SingleOrDefault();
if (toolType == null)
ModelState.AddModelError("ToolType", "Invalid selection");
else if (string.IsNullOrWhiteSpace(toolType.ExportSPName))
ModelState.AddModelError("ToolType", "Tool type is not exportable");
// is enddate after startdate
if (model.StartTime > model.EndTime)
ModelState.AddModelError("EndTime", "End time must be after start time");
if (ModelState.IsValid)
{
try
{
DateTime startDT = model.StartDate.Date.Add(model.StartTime.TimeOfDay);
DateTime endDT = model.EndDate.Date.Add(model.EndTime.TimeOfDay);
return DoCSVExport(toolType.ToolTypeName, toolType.ExportSPName, startDT, endDT);
}
catch (Exception ex)
{
ModelState.AddModelError("", "Error exporting data");
ModelState.AddModelError("", ex.Message);
string errorMessage = $"Error exporting: {ex}";
Logger.LogError(message: errorMessage);
}
}
LoadToolTypes(model, toolTypes);
return View("Index", model);
}
protected ActionResult DoCSVExport(String toolTypeName, string spName, DateTime startTime, DateTime endTime)
{
string fileName = string.Format("Export_{0}_{1:yyyyMMddHHmm}_to_{2:yyyyMMddHHmm}.csv", toolTypeName, startTime, endTime);
StringBuilder sb = new();
System.Data.DataTable dt = _Repo.ExportData(spName, startTime, endTime);
_ = sb.AppendLine(GetColumnHeaders(dt));
foreach (System.Data.DataRow dr in dt.Rows)
{
_ = sb.AppendLine(GetRowData(dr));
}
byte[] contents = Encoding.UTF8.GetBytes(sb.ToString());
return File(contents, "application/octet-stream", fileName);
}
protected static string GetRowData(System.Data.DataRow dr)
{
StringBuilder r = new();
for (int i = 0; i < dr.Table.Columns.Count; i++)
{
if (i > 0)
_ = r.Append(',');
object v = dr[i];
if (!Convert.IsDBNull(v))
_ = r.Append(FormatForCSV(Convert.ToString(v)));
}
return r.ToString();
}
protected static string GetColumnHeaders(System.Data.DataTable dt)
{
StringBuilder r = new();
for (int i = 0; i < dt.Columns.Count; i++)
{
if (i > 0)
_ = r.Append(',');
_ = r.Append(FormatForCSV(dt.Columns[i].ColumnName.TrimEnd('_')));
}
return r.ToString();
}
protected static string FormatForCSV(string v)
{
StringBuilder r = new(v.Length + 2);
bool doubleQuoted = false;
if (v.StartsWith(' ') || v.EndsWith(' ') || v.Contains(',') || v.Contains('"'))
{
_ = r.Append('"');
doubleQuoted = true;
}
foreach (char c in v)
{
_ = c switch
{
'\r' or '\n' => r.Append(' '),
'"' => r.Append("\"\""),
_ => r.Append(c),
};
}
if (doubleQuoted)
_ = r.Append('"');
return r.ToString();
}
}

View File

@ -0,0 +1,49 @@
using Microsoft.AspNetCore.Mvc;
using OI.Metrology.Shared.Repositories;
using OI.Metrology.Shared.ViewModels;
using System;
namespace OI.Metrology.Archive.Controllers;
//[Authorize]
public class PagesController : Controller
{
protected IMetrologyRepo _Repo;
public PagesController(IMetrologyRepo repo) => _Repo = repo;
[HttpGet]
[Route("/")]
public IActionResult Index() =>
//return View("Home");
View("RunHeaders");
[HttpGet]
[Route("/AwaitingDispo")]
public IActionResult AwaitingDispo() => View();
[HttpGet]
[Route("/RunInfo")]
public IActionResult RunInfo([FromQuery] int tooltypeid = 1, [FromQuery] int headerid = 0)
{
RunInfo m = new()
{
ToolTypeID = tooltypeid,
HeaderID = headerid,
HeaderAttachmentID = Guid.Empty,
};
if (headerid > 0)
{
m.HeaderAttachmentID = _Repo.GetHeaderAttachmentID(tooltypeid, headerid);
}
return View(m);
}
[HttpGet]
[Route("/RunHeaders")]
public IActionResult RunHeaders() => View();
[HttpGet]
[Route("/Crash")]
public IActionResult Crash() => throw new Exception("Test unhandled exception");
}

103
Archive/Program.cs Normal file
View File

@ -0,0 +1,103 @@
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Hosting.WindowsServices;
using Microsoft.Extensions.Logging;
using OI.Metrology.Archive.Repositories;
using OI.Metrology.Archive.Services;
using OI.Metrology.Shared.Repositories;
using OI.Metrology.Shared.Services;
using System;
using System.IO;
using System.Reflection;
namespace OI.Metrology.Archive;
public class Program
{
private static string GetWebRoot()
{
string result;
Assembly assembly = Assembly.GetExecutingAssembly();
string assemblyName = assembly.GetName()?.Name;
if (string.IsNullOrEmpty(assemblyName))
throw new Exception();
string net6 = "net6.0";
string baseAssemblyName = assemblyName.Split('.')[0];
if (WindowsServiceHelpers.IsWindowsService())
result = Path.Combine("D:", net6, baseAssemblyName, "wwwroot");
else
result = Path.Combine(AppContext.BaseDirectory.Split(baseAssemblyName)[0], baseAssemblyName, "Client", "bin", "Debug", net6, "wwwroot");
if (!Directory.Exists(result))
result = string.Empty;
return result;
}
public static int Main(string[] args)
{
WebApplicationOptions options = new()
{
Args = args,
ContentRootPath = AppContext.BaseDirectory,
WebRootPath = GetWebRoot()
};
WebApplicationBuilder webApplicationBuilder = WebApplication.CreateBuilder(options);
_ = webApplicationBuilder.Configuration.AddUserSecrets<Program>();
try
{
// this prevents validation errors from being handled by ASP.NET and not hitting our custom error handle
_ = webApplicationBuilder.Services.Configure<ApiBehaviorOptions>(options => options.SuppressModelStateInvalidFilter = true);
_ = webApplicationBuilder.Services.AddControllersWithViews();
_ = new MetrologyRepo(new SQLDbConnectionFactory(webApplicationBuilder.Configuration), null);
_ = webApplicationBuilder.Services.AddSingleton<IDbConnectionFactory, SQLDbConnectionFactory>();
_ = webApplicationBuilder.Services.AddScoped<IMetrologyRepo, MetrologyRepo>();
_ = webApplicationBuilder.Services.AddScoped<IAttachmentsService, AttachmentsService>();
_ = webApplicationBuilder.Services.AddScoped<IInboundDataService, InboundDataService>();
_ = webApplicationBuilder.Services.AddMemoryCache();
_ = webApplicationBuilder.Services.AddDistributedMemoryCache();
_ = webApplicationBuilder.Services.AddSession(sessionOptions =>
{
// Set a short timeout for easy testing.
sessionOptions.IdleTimeout = TimeSpan.FromSeconds(2000);
sessionOptions.Cookie.HttpOnly = true;
// Make the session cookie essential
sessionOptions.Cookie.IsEssential = true;
}
);
if (WindowsServiceHelpers.IsWindowsService())
{
_ = webApplicationBuilder.Services.AddSingleton<IHostLifetime, WindowsServiceLifetime>();
_ = webApplicationBuilder.Logging.AddEventLog(settings =>
{
if (string.IsNullOrEmpty(settings.SourceName))
settings.SourceName = webApplicationBuilder.Environment.ApplicationName;
});
}
WebApplication webApplication = webApplicationBuilder.Build();
if (webApplicationBuilder.Environment.IsDevelopment())
{
_ = webApplication.UseExceptionHandler("/Error");
_ = webApplication.UseHsts();
}
_ = webApplication.UseStaticFiles();
_ = webApplication.UseSession();
_ = webApplication.UseHttpsRedirection();
_ = webApplication.UseMiddleware<ApiLoggingMiddleware>();
_ = webApplication.MapControllers();
webApplication.Run();
return 0;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
return 1;
}
finally
{
}
}
}

View File

@ -0,0 +1,860 @@
using Dapper;
using Microsoft.Extensions.Caching.Memory;
using Newtonsoft.Json.Linq;
using OI.Metrology.Shared.DataModels;
using OI.Metrology.Shared.Repositories;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Linq;
using System.Transactions;
namespace OI.Metrology.Archive.Repositories;
public class MetrologyRepo : IMetrologyRepo
{
private IDbConnectionFactory DBConnectionFactory { get; }
private readonly IMemoryCache _Cache;
public MetrologyRepo(IDbConnectionFactory dbConnectionFactory, IMemoryCache memoryCache)
{
DBConnectionFactory = dbConnectionFactory;
_Cache = memoryCache;
}
private DbConnection GetDbConnection() => DBConnectionFactory.GetDbConnection(Constants.ConnStringName);
private DbConnection GetDbConnection2() => DBConnectionFactory.GetDbConnection(Constants.ConnStringName2);
protected DbProviderFactory GetDbProviderFactory(IDbConnection conn) => DbProviderFactories.GetFactory(conn.GetType().Namespace);
public bool IsTestDatabase()
{
int c = 0;
using (DbConnection conn = GetDbConnection())
{
c = conn.Query<int>(
"SELECT COUNT(*) " +
"FROM Configuration " +
"WHERE KeyName = 'TestDatabase' " +
"AND ValueString = '1'").FirstOrDefault();
}
return c > 0;
}
public TransactionScope StartTransaction() => new();
protected void CacheItem(string key, object v)
{
System.Diagnostics.Debug.WriteLine("CacheItem: " + key);
_ = _Cache.Set(key, v, new MemoryCacheEntryOptions().SetSlidingExpiration(TimeSpan.FromHours(1)));
}
public IEnumerable<ToolType> GetToolTypes()
{
IEnumerable<ToolType> cached;
string cacheKey = "GetToolTypes";
if (_Cache.TryGetValue(cacheKey, out cached))
return cached;
//List<string> r = new List<string>();
//r.Add("BioRad");
//r.Add("CDE");
//r.Add("Tencor");
//r.Add("MercuryProbe");
//r.Add("StratusBioRad");
//r.Add("TencorSP1");
//CacheItem(cacheKey, r);
//return r;
//var conn =
using DbConnection conn = GetDbConnection();
IEnumerable<ToolType> r = conn.Query<ToolType>("SELECT * FROM ToolType");
CacheItem(cacheKey, r);
return r;
}
public ToolType GetToolTypeByName(string name)
{
ToolType cached;
string cacheKey = "GetToolTypeByName_" + name;
if (_Cache.TryGetValue(cacheKey, out cached))
return cached;
using DbConnection conn = GetDbConnection();
ToolType r = conn.QueryFirstOrDefault<ToolType>(
"SELECT * FROM ToolType WHERE ToolTypeName = @name",
new { name });
CacheItem(cacheKey, r);
return r;
}
//Changed by Jonathan : Changed this as the table ToolType doesn't exist in the Metrology_Archive DB
public ToolType GetToolTypeByID(int id)
{
ToolType cached;
string cacheKey = "GetToolTypeByID_" + id.ToString();
if (_Cache.TryGetValue(cacheKey, out cached))
return cached;
//using (var conn = GetDbConnection2())
using DbConnection conn = GetDbConnection();
ToolType r = conn.QueryFirstOrDefault<ToolType>(
"SELECT * FROM ToolType WHERE ID = @id",
new { id });
CacheItem(cacheKey, r);
return r;
}
//Changed by Jonathan : Changed this to look at Metrology DB because table ToolTypeMetaData does not exist in Metrology_Archive. This still fails when BioRad is the tool.
public IEnumerable<ToolTypeMetadata> GetToolTypeMetadataByToolTypeID(int id)
{
string cacheKey = "GetToolTypeMetadataByToolTypeID_" + id.ToString();
//if (_cache.TryGetValue(cacheKey, out cached))
//return cached;
using DbConnection conn = GetDbConnection();
IEnumerable<ToolTypeMetadata> r = conn.Query<ToolTypeMetadata>(
"SELECT * FROM ToolTypeMetadata WHERE ToolTypeID = @id",
new { id });
CacheItem(cacheKey, r);
return r;
}
public long InsertToolDataJSON(JToken jsonrow, long headerId, List<ToolTypeMetadata> metaData, string tableName)
{
long r = -1;
using (DbConnection conn = GetDbConnection())
{
bool isHeader = headerId <= 0;
// get fields from metadata
List<ToolTypeMetadata> fields = metaData.Where(md => md.Header == isHeader).ToList();
// maps ApiName to ColumnName
Dictionary<string, string> fieldmap = new();
// store property name of container field
string containerField = null;
// maps container ApiName to ColumnName
Dictionary<string, string> containerFieldMap = new();
// build field map
foreach (ToolTypeMetadata f in fields)
{
if ((f.ApiName != null) && f.ApiName.Contains('\\'))
{
string n = f.ApiName.Split('\\')[0].Trim().ToUpper();
if (containerField == null)
containerField = n;
else if (!string.Equals(containerField, n))
throw new Exception("Only one container field is allowed");
string pn = f.ApiName.Split('\\')[1].Trim().ToUpper();
containerFieldMap.Add(pn, f.ColumnName.Trim());
}
else if (!string.IsNullOrWhiteSpace(f.ApiName) && !string.IsNullOrWhiteSpace(f.ColumnName))
{
fieldmap.Add(f.ApiName.Trim().ToUpper(), f.ColumnName.Trim());
}
}
if (containerField == null)
{
// No container field, just insert a single row
r = InsertRowFromJSON(conn, tableName, jsonrow, fieldmap, headerId, null, null);
}
else
{
// Find the container field in the json
JProperty contJP = jsonrow.Children<JProperty>().Where(c => string.Equals(c.Name.Trim(), containerField, StringComparison.OrdinalIgnoreCase)).SingleOrDefault();
if ((contJP != null) && (contJP.Value is JArray array))
{
JArray contRows = array;
// Insert a row for each row in the container field
foreach (JToken contRow in contRows)
{
r = InsertRowFromJSON(conn, tableName, jsonrow, fieldmap, headerId, contRow, containerFieldMap);
}
}
else
throw new Exception("Invalid container field type");
}
}
return r;
}
protected void AddParameter(IDbCommand cmd, string name, object value)
{
IDbDataParameter p = cmd.CreateParameter();
p.ParameterName = name;
p.Value = value;
_ = cmd.Parameters.Add(p);
}
protected long InsertRowFromJSON(
IDbConnection conn,
string tableName,
JToken jsonrow,
Dictionary<string, string> fieldmap,
long headerId,
JToken containerrow,
Dictionary<string, string> containerFieldmap)
{
// Translate the json into a SQL INSERT using the field map
IDbCommand cmd = conn.CreateCommand();
string columns = "INSERT INTO [" + tableName + "](";
string parms = ") SELECT ";
int parmnumber = 1;
if (headerId > 0)
{
columns += "HeaderID,";
parms += "@HeaderID,";
AddParameter(cmd, "@HeaderID", headerId);
}
foreach (JProperty jp in jsonrow.Children<JProperty>())
{
string apifield = jp.Name.Trim().ToUpper();
if (fieldmap.ContainsKey(apifield))
{
string parmname = string.Format("@p{0}", parmnumber);
columns += string.Format("[{0}],", fieldmap[apifield]);
parms += parmname;
parms += ",";
parmnumber += 1;
object sqlValue = ((JValue)jp.Value).Value;
if (sqlValue == null)
sqlValue = DBNull.Value;
AddParameter(cmd, parmname, sqlValue);
}
}
if ((containerrow != null) && (containerFieldmap != null))
{
foreach (JProperty jp in containerrow.Children<JProperty>())
{
string apifield = jp.Name.Trim().ToUpper();
if (containerFieldmap.ContainsKey(apifield))
{
string parmname = string.Format("@p{0}", parmnumber);
columns += string.Format("[{0}],", containerFieldmap[apifield]);
parms += parmname;
parms += ",";
parmnumber += 1;
object sqlValue = ((JValue)jp.Value).Value;
if (sqlValue == null)
sqlValue = DBNull.Value;
AddParameter(cmd, parmname, sqlValue);
}
}
}
if (parmnumber == 1)
throw new Exception("JSON had no fields");
cmd.CommandText = columns.TrimEnd(',') + parms.TrimEnd(',') + ";SELECT SCOPE_IDENTITY();";
object o = cmd.ExecuteScalar();
if ((o == null) || Convert.IsDBNull(o))
throw new Exception("Unexpected query result");
return Convert.ToInt64(o);
}
public DataTable ExportData(string spName, DateTime startTime, DateTime endTime)
{
DataTable dt = new();
using (DbConnection conn = GetDbConnection())
{
DbProviderFactory factory = GetDbProviderFactory(conn);
DbCommand cmd = factory.CreateCommand();
cmd.Connection = conn;
cmd.CommandText = spName;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandTimeout = 600;
AddParameter(cmd, "@StartTime", startTime);
AddParameter(cmd, "@EndTime", endTime);
DbDataAdapter da = factory.CreateDataAdapter();
da.SelectCommand = cmd;
_ = da.Fill(dt);
}
return dt;
}
protected string FormDynamicSelectQuery(IEnumerable<ToolTypeMetadata> fields, string tableName)
{
System.Text.StringBuilder sb = new();
_ = sb.Append("SELECT ");
bool firstField = true;
foreach (ToolTypeMetadata f in fields)
{
if (!string.IsNullOrWhiteSpace(f.ColumnName))
{
if (!firstField)
_ = sb.Append(',');
if (f.GridAttributes != null && f.GridAttributes.Contains("isNull"))
{
_ = sb.AppendFormat("{0}", "ISNULL(" + f.ColumnName + ", '')[" + f.ColumnName + "]");
}
else
{
_ = sb.AppendFormat("[{0}]", f.ColumnName);
}
firstField = false;
}
}
_ = sb.AppendFormat(" FROM [{0}] ", tableName);
return sb.ToString();
}
//Set DB Connection based on isArchive flag, for prod need to set isArchive outside of this function.
public DataTable GetHeaders(int toolTypeId, DateTime? startTime, DateTime? endTime, int? pageNo, int? pageSize, long? headerId, out long totalRecords, bool isArchive)
{
ToolType tt = GetToolTypeByID(toolTypeId);
if (tt == null)
throw new Exception("Invalid tool type ID");
IEnumerable<ToolTypeMetadata> md = GetToolTypeMetadataByToolTypeID(toolTypeId);
if (md == null)
throw new Exception("Invalid tool type metadata");
DataTable dt = new();
//bool isArchive = true;
DbConnection conn = GetDbConnection();
if (isArchive == true)
{
conn = GetDbConnection2();
}
using (conn)
{
System.Text.StringBuilder sb = new();
_ = sb.Append(
FormDynamicSelectQuery(
md.Where(m => m.Header == true).ToList(),
tt.HeaderTableName)
);
DbProviderFactory factory = GetDbProviderFactory(conn);
DbCommand cmd = factory.CreateCommand();
string whereClause = "";
if (headerId.HasValue && headerId.Value > 0)
{
whereClause = "ID = @HeaderID ";
AddParameter(cmd, "@HeaderID", headerId.Value);
}
else
{
if (startTime.HasValue)
{
whereClause = "[Date] >= @StartTime ";
AddParameter(cmd, "@StartTime", startTime.Value);
}
if (endTime.HasValue)
{
if (whereClause.Length > 0)
whereClause += "AND ";
whereClause += "[Date] <= @EndTime ";
AddParameter(cmd, "@EndTime", endTime.Value);
}
}
if (whereClause.Length > 0)
{
_ = sb.Append("WHERE ");
_ = sb.Append(whereClause);
}
if (pageNo.HasValue && pageSize.HasValue)
{
_ = sb.Append("ORDER BY [Date] DESC OFFSET @PageNum * @PageSize ROWS FETCH NEXT @PageSize ROWS ONLY");
AddParameter(cmd, "@PageNum", pageNo.Value);
AddParameter(cmd, "@PageSize", pageSize.Value);
}
else
{
_ = sb.Append("ORDER BY [Date] DESC");
}
cmd.Connection = conn;
cmd.CommandText = sb.ToString();
cmd.CommandType = CommandType.Text;
DbDataAdapter da = factory.CreateDataAdapter();
da.SelectCommand = cmd;
_ = da.Fill(dt);
cmd.CommandText = "SELECT COUNT(*) FROM [" + tt.HeaderTableName + "] ";
if (whereClause.Length > 0)
{
cmd.CommandText += "WHERE ";
cmd.CommandText += whereClause;
}
totalRecords = Convert.ToInt64(cmd.ExecuteScalar());
}
return dt;
}
//Go Here Next
public DataTable GetData(int toolTypeId, long headerid, bool isArchive)
{
//isArchive = true;
ToolType tt = GetToolTypeByID(toolTypeId);
if (tt == null)
throw new Exception("Invalid tool type ID");
IEnumerable<ToolTypeMetadata> md = GetToolTypeMetadataByToolTypeID(toolTypeId);
if (md == null)
throw new Exception("Invalid tool type metadata");
DataTable dt = new();
DbConnection conn = GetDbConnection();
if (isArchive == true)
{
conn = GetDbConnection2();
}
using (conn)
{
System.Text.StringBuilder sb = new();
_ = sb.Append(
FormDynamicSelectQuery(
md.Where(m => m.Header == false).OrderBy(m => m.GridDisplayOrder).ToList(),
tt.DataTableName)
);
DbProviderFactory factory = GetDbProviderFactory(conn);
DbCommand cmd = factory.CreateCommand();
_ = sb.Append("WHERE [HeaderID] = @HeaderID ");
//sb.Append("WHERE [OriginID] = @HeaderID ");
if (!string.IsNullOrWhiteSpace(tt.DataGridSortBy))
{
_ = sb.AppendFormat("ORDER BY {0} ", tt.DataGridSortBy);
}
AddParameter(cmd, "@HeaderID", headerid);
cmd.Connection = conn;
cmd.CommandText = sb.ToString();
cmd.CommandType = CommandType.Text;
DbDataAdapter da = factory.CreateDataAdapter();
da.SelectCommand = cmd;
_ = da.Fill(dt);
}
// this code will add a couple of rows with stats calculations
if (!string.IsNullOrWhiteSpace(tt.DataGridStatsColumn))
{
if (dt.Columns.Contains(tt.DataGridStatsColumn))
{
double sumAll = 0;
double sumAllQ = 0;
foreach (DataRow dr in dt.Rows)
{
try
{
object v = dr[tt.DataGridStatsColumn];
if (!Convert.IsDBNull(v))
{
double d = Convert.ToDouble(v);
sumAll += d;
sumAllQ += d * d;
}
}
catch
{
}
}
double length = Convert.ToDouble(dt.Rows.Count);
double meanAverage = Math.Round(sumAll / length, 4);
double stdDev = Math.Sqrt((sumAllQ - sumAll * sumAll / length) * (1.0d / (length - 1)));
string stdDevStr = "";
if (tt.DataGridStatsStdDevType == "%")
stdDevStr = Math.Round(stdDev / meanAverage * 100.0d, 2).ToString("0.####") + "%";
else
stdDevStr = Math.Round(stdDev, 4).ToString("0.####");
int labelIndex = dt.Columns[tt.DataGridStatsColumn].Ordinal - 1;
DataRow newrow = dt.NewRow();
newrow["ID"] = -1;
newrow[labelIndex] = "Average";
newrow[tt.DataGridStatsColumn] = meanAverage;
dt.Rows.Add(newrow);
newrow = dt.NewRow();
newrow["ID"] = -2;
newrow[labelIndex] = "Std Dev";
newrow[tt.DataGridStatsColumn] = stdDevStr;
dt.Rows.Add(newrow);
}
}
return dt;
}
public string GetAttachmentInsertDateByGUID(String tableName, Guid attachmentId)
{
using DbConnection conn = GetDbConnection();
string sql = "";
if (tableName is "SP1RunData" or "TencorRunData")
{
sql = $"SELECT [InsertDate] FROM[{tableName}] where AttachmentID = @AttachmentID";
}
else
{
sql = $"SELECT [InsertDate] FROM[{tableName}] where AttachmentID = @AttachmentID";
}
return conn.ExecuteScalar<string>(sql, param: new { AttachmentID = attachmentId });
}
public DataTable GetDataSharePoint(int toolTypeId, string headerid)
{
//isArchive = true;
ToolType tt = GetToolTypeByID(toolTypeId);
if (tt == null)
throw new Exception("Invalid tool type ID");
IEnumerable<ToolTypeMetadata> md = GetToolTypeMetadataByToolTypeID(toolTypeId);
if (md == null)
throw new Exception("Invalid tool type metadata");
DataTable dt = new();
DbConnection conn = GetDbConnection();
//if (isArchive == true)
//{
// conn = GetDbConnection2();
//}
using (conn)
{
System.Text.StringBuilder sb = new();
_ = sb.Append(
FormDynamicSelectQuery(
md.Where(m => m.Header == false).OrderBy(m => m.GridDisplayOrder).ToList(),
tt.DataTableName)
);
DbProviderFactory factory = GetDbProviderFactory(conn);
DbCommand cmd = factory.CreateCommand();
_ = sb.Append("WHERE [Title] LIKE '%" + headerid + "%' ");
//sb.Append("WHERE [OriginID] = @HeaderID ");
if (!string.IsNullOrWhiteSpace(tt.DataGridSortBy))
{
_ = sb.AppendFormat("ORDER BY {0} ", tt.DataGridSortBy);
}
//AddParameter(cmd, "@HeaderID", headerid);
cmd.Connection = conn;
cmd.CommandText = sb.ToString();
cmd.CommandType = CommandType.Text;
DbDataAdapter da = factory.CreateDataAdapter();
da.SelectCommand = cmd;
_ = da.Fill(dt);
}
// this code will add a couple of rows with stats calculations
if (!string.IsNullOrWhiteSpace(tt.DataGridStatsColumn))
{
if (dt.Columns.Contains(tt.DataGridStatsColumn))
{
double sumAll = 0;
double sumAllQ = 0;
foreach (DataRow dr in dt.Rows)
{
try
{
object v = dr[tt.DataGridStatsColumn];
if (!Convert.IsDBNull(v))
{
double d = Convert.ToDouble(v);
sumAll += d;
sumAllQ += d * d;
}
}
catch
{
}
}
double length = Convert.ToDouble(dt.Rows.Count);
double meanAverage = Math.Round(sumAll / length, 4);
double stdDev = Math.Sqrt((sumAllQ - sumAll * sumAll / length) * (1.0d / (length - 1)));
string stdDevStr = "";
if (tt.DataGridStatsStdDevType == "%")
stdDevStr = Math.Round(stdDev / meanAverage * 100.0d, 2).ToString("0.####") + "%";
else
stdDevStr = Math.Round(stdDev, 4).ToString("0.####");
int labelIndex = dt.Columns[tt.DataGridStatsColumn].Ordinal - 1;
DataRow newrow = dt.NewRow();
newrow["ID"] = -1;
newrow[labelIndex] = "Average";
newrow[tt.DataGridStatsColumn] = meanAverage;
dt.Rows.Add(newrow);
newrow = dt.NewRow();
newrow["ID"] = -2;
newrow[labelIndex] = "Std Dev";
newrow[tt.DataGridStatsColumn] = stdDevStr;
dt.Rows.Add(newrow);
}
}
return dt;
}
public Guid GetHeaderAttachmentID(int toolTypeId, long headerId)
{
ToolType tt = GetToolTypeByID(toolTypeId);
if (tt == null)
throw new Exception("Invalid tool type ID");
using DbConnection conn = GetDbConnection();
string sql =
$"UPDATE [{tt.HeaderTableName}] SET AttachmentID = NEWID() WHERE ID = @HeaderID AND AttachmentID IS NULL; " +
$"SELECT AttachmentID FROM [{tt.HeaderTableName}] WHERE ID = @HeaderID";
return conn.ExecuteScalar<Guid>(sql, param: new { HeaderID = headerId });
}
public Guid GetDataAttachmentID(int toolTypeId, long headerId, string title)
{
ToolType tt = GetToolTypeByID(toolTypeId);
if (tt == null)
throw new Exception("Invalid tool type ID");
using DbConnection conn = GetDbConnection();
string sql =
$"UPDATE [{tt.DataTableName}] SET AttachmentID = NEWID() WHERE HeaderID = @HeaderID AND Title = @Title AND AttachmentID IS NULL; " +
$"SELECT AttachmentID FROM [{tt.DataTableName}] WHERE HeaderID = @HeaderID AND Title = @Title";
return conn.ExecuteScalar<Guid>(sql, param: new { HeaderID = headerId, Title = title });
}
public void PurgeExistingData(int toolTypeId, string title)
{
using DbConnection conn = GetDbConnection();
_ = conn.Execute("PurgeExistingData", param: new { ToolTypeID = toolTypeId, Title = title }, commandType: CommandType.StoredProcedure);
}
public DataSet GetOIExportData(int toolTypeId, long headerid)
{
ToolType tt = GetToolTypeByID(toolTypeId);
if (tt == null)
throw new Exception("Invalid tool type ID");
if (string.IsNullOrWhiteSpace(tt.OIExportSPName))
throw new Exception("OpenInsight export not available for " + tt.ToolTypeName);
DataSet ds = new();
using (DbConnection conn = GetDbConnection())
{
DbProviderFactory factory = GetDbProviderFactory(conn);
DbCommand cmd = factory.CreateCommand();
cmd.Connection = conn;
cmd.CommandText = tt.OIExportSPName;
cmd.CommandType = CommandType.StoredProcedure;
AddParameter(cmd, "@ID", headerid);
DbDataAdapter da = factory.CreateDataAdapter();
da.SelectCommand = cmd;
_ = da.Fill(ds);
}
return ds;
}
public IEnumerable<HeaderCommon> GetHeaderTitles(int toolTypeId, int? pageNo, int? pageSize, out long totalRecords, bool isArchive)
{
ToolType tt = GetToolTypeByID(toolTypeId);
if (tt == null)
throw new Exception("Invalid tool type ID");
DbConnection conn = GetDbConnection();
if (isArchive == true)
{
conn = GetDbConnection2();
}
using (conn)
{
string sql = $"SELECT ID, InsertDate, AttachmentID, Title, [Date] FROM {tt.HeaderTableName} ORDER BY [Date] DESC ";
IEnumerable<HeaderCommon> headers;
if (pageNo.HasValue && pageSize.HasValue)
{
sql += "OFFSET @PageNum * @PageSize ROWS FETCH NEXT @PageSize ROWS ONLY";
headers = conn.Query<HeaderCommon>(sql, param: new { PageNum = pageNo.Value, PageSize = pageSize.Value }).ToList();
}
else
{
headers = conn.Query<HeaderCommon>(sql).ToList();
}
sql = $"SELECT COUNT(*) FROM [{tt.HeaderTableName}] ";
totalRecords = Convert.ToInt64(conn.ExecuteScalar(sql));
return headers;
}
}
public IEnumerable<KeyValuePair<string, string>> GetHeaderFields(int toolTypeId, long headerid, bool isArchive)
{
ToolType tt = GetToolTypeByID(toolTypeId);
if (tt == null)
throw new Exception("Invalid tool type ID");
IEnumerable<ToolTypeMetadata> md = GetToolTypeMetadataByToolTypeID(toolTypeId);
if (md == null)
throw new Exception("Invalid tool type metadata");
List<KeyValuePair<string, string>> r = new();
DbConnection conn = GetDbConnection();
if (isArchive == true)
{
conn = GetDbConnection2();
}
using (conn)
{
DbProviderFactory factory = GetDbProviderFactory(conn);
DbCommand cmd = factory.CreateCommand();
cmd.Connection = conn;
cmd.CommandText = $"SELECT * FROM [{tt.HeaderTableName}] WHERE ID = @HeaderID";
AddParameter(cmd, "@HeaderID", headerid);
DataTable dt = new();
DbDataAdapter da = factory.CreateDataAdapter();
da.SelectCommand = cmd;
_ = da.Fill(dt);
DataRow dr = null;
if (dt.Rows.Count > 0)
dr = dt.Rows[0];
foreach (ToolTypeMetadata m in md.Where(m => m.Header == true && m.TableDisplayOrder > 0).OrderBy(m => m.TableDisplayOrder))
{
string v = "";
if (dr != null)
{
object o = dr[m.ColumnName];
if (o != null && !Convert.IsDBNull(o))
v = Convert.ToString(o);
}
KeyValuePair<string, string> kvp = new(m.DisplayTitle, v);
r.Add(kvp);
}
}
return r;
}
public IEnumerable<AwaitingDispo> GetAwaitingDispo()
{
using DbConnection conn = GetDbConnection();
return conn.Query<AwaitingDispo>("GetAwaitingDispo", commandType: CommandType.StoredProcedure);
}
//Jonathan changed this to remove the reviewDate update on the database.
public int UpdateReviewDate(int toolTypeId, long headerId, bool clearDate)
{
ToolType tt = GetToolTypeByID(toolTypeId);
if (tt == null)
throw new Exception("Invalid tool type ID");
using DbConnection conn = GetDbConnection();
if (clearDate)
{
//if it's already past the 6 hour window, then it won't show in queue anyway, so need to return value so we can show that
string sql = $"SELECT DATEDIFF(HH, INSERTDATE, GETDATE()) FROM [{tt.HeaderTableName}] WHERE ID = @HeaderID";
int hrs = conn.ExecuteScalar<int>(sql, param: new { HeaderId = headerId });
_ = conn.Execute($"UPDATE [{tt.HeaderTableName}] SET ReviewDate = NULL WHERE ID = @HeaderID", new { HeaderID = headerId });
return hrs;
}
else
{
//conn.Execute($"UPDATE [{tt.HeaderTableName}] SET ReviewDate = GETDATE() WHERE ID = @HeaderID", new { HeaderID = headerId });
return 1;
}
}
public Guid GetHeaderAttachmentIDByTitle(int toolTypeId, string title)
{
ToolType tt = GetToolTypeByID(toolTypeId);
if (tt == null)
throw new Exception("Invalid tool type ID");
using DbConnection conn = GetDbConnection();
string sql =
$"SELECT TOP 1 AttachmentID FROM [{tt.HeaderTableName}] WHERE Title = @Title ORDER BY InsertDate DESC";
return conn.ExecuteScalar<Guid>(sql, param: new { Title = title });
}
public Guid GetDataAttachmentIDByTitle(int toolTypeId, string title)
{
ToolType tt = GetToolTypeByID(toolTypeId);
if (tt == null)
throw new Exception("Invalid tool type ID");
using DbConnection conn = GetDbConnection();
string sql =
$"SELECT TOP 1 AttachmentID FROM [{tt.DataTableName}] WHERE Title = @Title ORDER BY InsertDate DESC";
return conn.ExecuteScalar<Guid>(sql, param: new { Title = title });
}
}

View File

@ -0,0 +1,30 @@
using Microsoft.Extensions.Configuration;
using OI.Metrology.Shared.Repositories;
using System;
using System.Data.Common;
using System.Data.SqlClient;
namespace OI.Metrology.Archive.Repositories;
public class SQLDbConnectionFactory : IDbConnectionFactory
{
private IConfiguration Config { get; }
public SQLDbConnectionFactory(IConfiguration config) => Config = config;
public DbConnection GetDbConnection(String connStringName)
{
DbProviderFactories.RegisterFactory(
typeof(SqlConnection).Namespace,
SqlClientFactory.Instance);
string connStr = Config?.GetConnectionString(connStringName);
if (connStr is null)
throw new Exception("Connection string is missing: " + connStringName);
DbConnection c = SqlClientFactory.Instance.CreateConnection();
c.ConnectionString = connStr;
c.Open();
return c;
}
}

View File

@ -0,0 +1,265 @@
using Microsoft.Extensions.Configuration;
using System;
using System.Globalization;
using System.IO;
namespace OI.Metrology.Archive.Services;
using OI.Metrology.Shared.DataModels;
using OI.Metrology.Shared.Repositories;
using OI.Metrology.Shared.Services;
using System.Data.SqlClient;
public class AttachmentsService : IAttachmentsService
{
private IConfiguration Config { get; }
protected IMetrologyRepo _Repo;
public AttachmentsService(IConfiguration config, IMetrologyRepo repo)
{
Config = config;
_Repo = repo;
}
protected Stream GetAttachmentStream(String tableName, Guid attachmentId, string filename)
{
string attachmentsRootPath = Config[Constants.AttachmentPathKey];
if (attachmentId.Equals(Guid.Empty))
throw new Exception("No attachments found");
DateTime insertDate = Convert.ToDateTime(_Repo.GetAttachmentInsertDateByGUID(tableName, attachmentId));
int year = insertDate.Year;
DateTime d = insertDate;
CultureInfo cul = CultureInfo.CurrentCulture;
int weekNum = cul.Calendar.GetWeekOfYear(d, CalendarWeekRule.FirstDay, DayOfWeek.Sunday);
string workWeek = "WW" + weekNum.ToString("00");
string dateDir = year + @"\" + workWeek;
string fullPath = Path.Combine(attachmentsRootPath, tableName + "_", dateDir, attachmentId.ToString(), filename);
//Check to see if file exists in the "New" directory structure, if not change the path back to the old. and check there
if (!File.Exists(fullPath))
{
fullPath = Path.Combine(attachmentsRootPath, tableName, attachmentId.ToString(), filename);
}
if (!File.Exists(fullPath))
throw new Exception("File not found");
return new FileStream(fullPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
}
//protected System.IO.Stream GetAttachmentStream(String tableName, Guid attachmentId, string filename)
//{
// //This part seems to be key
// var attachmentsRootPath = _config[Constants.AttachmentPathKey];
// //if (attachmentId.Equals(Guid.Empty))
// //throw new Exception("No attachments found");
// //string list = Directory.GetDirectories(attachmentsRootPath).Where(s => s.Contains(attachmentId.ToString())).SingleOrDefault();
// //var fullPath = list;
// var fullPath = System.IO.Path.Combine(attachmentsRootPath, tableName, attachmentId.ToString(), filename);
// if (!System.IO.File.Exists(fullPath))
// throw new Exception("File not found " + fullPath);
// return new System.IO.FileStream(fullPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
//}
protected Stream GetAttachmentStreamArchive(String tableName, Guid attachmentId, string filename)
{
//This part seems to be key
string attachmentsRootPath = Config[Constants.AttachmentPathKey];
if (attachmentId.Equals(Guid.Empty))
throw new Exception("No attachments found");
string fullPath = Path.Combine(attachmentsRootPath, tableName, "2019\\09", attachmentId.ToString(), filename);
if (!File.Exists(fullPath))
throw new Exception("File not found");
return new FileStream(fullPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
}
public Stream GetAttachmentStreamByTitle(ToolType toolType, bool header, string title, string filename)
{
if (toolType == null)
throw new Exception("Invalid tool type");
string queryString = "SELECT * FROM " + toolType.DataTableName + " WHERE AttachmentId = @attachmentId";
if (header)
{
queryString = "SELECT * FROM " + toolType.HeaderTableName + " WHERE AttachmentId = '" + title + "'";
}
DateTime SearchDate = new();
string connectionString = @"Server=messv01ec.ec.local\PROD1,53959;Database=Metrology_Archive;Integrated Security=True";
using (SqlConnection connection = new(connectionString))
{
SqlCommand command = new(queryString, connection);
//command.Parameters.AddWithValue("@attachmentId", attachmentId);
connection.Open();
SqlDataReader reader = command.ExecuteReader();
try
{
while (reader.Read())
{
Console.WriteLine(string.Format("{0}", reader["InsertDate"]));// etc
string test = string.Format("{0}", reader["InsertDate"]);
SearchDate = Convert.ToDateTime(string.Format("{0}", reader["InsertDate"]));
}
}
finally
{
// Always call Close when done reading.
reader.Close();
}
}
string SearchMonth = SearchDate.Month.ToString();
if (SearchDate.Month < 10)
{
_ = "0" + SearchMonth;
}
_ = SearchDate.Year.ToString();
_ = Config[Constants.AttachmentPathKey];
string tableName;
//var attachmentsRootPath = "\\\\messv02ecc1.ec.local\\EC_Metrology_Si\\MetrologyAttachments\\TencorRunData\\2019\\09";
Guid attachmentId;
if (header)
{
tableName = toolType.HeaderTableName;
attachmentId = _Repo.GetHeaderAttachmentIDByTitle(toolType.ID, title);
}
else
{
tableName = toolType.DataTableName;
attachmentId = _Repo.GetDataAttachmentIDByTitle(toolType.ID, title);
}
return GetAttachmentStream(tableName, attachmentId, filename);
}
public Stream GetAttachmentStreamByAttachmentId(ToolType toolType, bool header, Guid attachmentId, string filename)
{
if (toolType == null)
throw new Exception("Invalid tool type");
/*string queryString = "SELECT * FROM " + toolType.DataTableName + " WHERE AttachmentId = @attachmentId";
if (header)
{
queryString = "SELECT * FROM " + toolType.HeaderTableName + " WHERE AttachmentId = '" + attachmentId + "'";
}
DateTime SearchDate = new DateTime();
string connectionString = @"Server=messv01ec.ec.local\PROD1,53959;Database=Metrology_Archive;Integrated Security=True";
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand(queryString, connection);
command.Parameters.AddWithValue("@attachmentId", attachmentId);
connection.Open();
SqlDataReader reader = command.ExecuteReader();
try
{
while (reader.Read())
{
Console.WriteLine(string.Format("{0}", reader["InsertDate"]));// etc
//string test = string.Format("{0}", reader["InsertDate"]);
SearchDate = Convert.ToDateTime(string.Format("{0}", reader["Date"]));
}
}
finally
{
// Always call Close when done reading.
reader.Close();
}
}
string SearchMonth = SearchDate.Month.ToString();
if (SearchDate.Month < 10)
{
SearchMonth = "0" + SearchMonth;
}
string SearchYear = SearchDate.Year.ToString();*/
//string DateSearchTermin = +""+
_ = Config[Constants.AttachmentPathKey];
string tableName;
if (header)
tableName = toolType.HeaderTableName;
else
tableName = toolType.DataTableName;
//System.IO.Stream test = GetAttachmentStream(tableName, attachmentId, filename, SearchYear);
return GetAttachmentStream(tableName, attachmentId, filename);
//return test;
}
public Stream GetAttachmentStreamByAttachmentIdArchive(ToolType toolType, bool header, Guid attachmentId, string filename)
{
if (toolType == null)
throw new Exception("Invalid tool type");
_ = Config[Constants.AttachmentPathKey];
string tableName;
if (header)
tableName = toolType.HeaderTableName;
else
tableName = toolType.DataTableName;
return GetAttachmentStreamArchive(tableName, attachmentId, filename);
}
public void SaveAttachment(ToolType toolType, long headerId, string dataUniqueId, string filename, Microsoft.AspNetCore.Http.IFormFile uploadedFile)
{
if (toolType == null)
throw new Exception("Invalid tool type");
using System.Transactions.TransactionScope trans = _Repo.StartTransaction();
Guid attachmentId = Guid.Empty;
string tableName = "";
if (string.IsNullOrWhiteSpace(dataUniqueId))
{
attachmentId = _Repo.GetHeaderAttachmentID(toolType.ID, headerId);
tableName = toolType.HeaderTableName;
}
else
{
attachmentId = _Repo.GetDataAttachmentID(toolType.ID, headerId, dataUniqueId);
tableName = toolType.DataTableName;
}
if (Equals(attachmentId, Guid.Empty))
throw new Exception("Invalid attachment ID");
string attachmentsRootPath = Config[Constants.AttachmentPathKey];
string directoryPath = Path.Combine(attachmentsRootPath, tableName, attachmentId.ToString());
if (!Directory.Exists(directoryPath))
_ = Directory.CreateDirectory(directoryPath);
string fullPath = Path.Combine(directoryPath, filename);
using (FileStream s = new(fullPath, FileMode.Create, FileAccess.ReadWrite, FileShare.None))
{
uploadedFile.CopyTo(s);
}
trans.Complete();
}
public void SaveAttachment(ToolType toolType, long headerId, string dataUniqueId, string filename, object uploadedFile)
{
Microsoft.AspNetCore.Http.IFormFile formFile = (Microsoft.AspNetCore.Http.IFormFile)uploadedFile;
SaveAttachment(toolType, headerId, dataUniqueId, filename, formFile);
}
}

View File

@ -0,0 +1,236 @@
using Newtonsoft.Json.Linq;
using OI.Metrology.Shared.DataModels;
using OI.Metrology.Shared.Repositories;
using OI.Metrology.Shared.Services;
using System;
using System.Collections.Generic;
using System.Linq;
namespace OI.Metrology.Archive.Services;
public class InboundDataService : IInboundDataService
{
protected IMetrologyRepo _Repo;
public InboundDataService(IMetrologyRepo repo) => _Repo = repo;
public long DoSQLInsert(JToken jsonbody, ToolType toolType, List<ToolTypeMetadata> metaData)
{
JArray detailsArray = null;
string uniqueId = "";
foreach (JToken jt in jsonbody.Children())
{
if (jt is JProperty jp)
{
if (string.Equals(jp.Name, "Details", StringComparison.OrdinalIgnoreCase))
{
if (jp.First is JArray array)
detailsArray = array;
}
else if (string.Equals(jp.Name, "UniqueId", StringComparison.OrdinalIgnoreCase))
{
uniqueId = Convert.ToString(((JValue)jp.Value).Value);
}
}
}
long headerId = 0;
using (System.Transactions.TransactionScope transScope = _Repo.StartTransaction())
{
try
{
_Repo.PurgeExistingData(toolType.ID, uniqueId);
}
catch (Exception ex)
{
throw new Exception("Failed to purge existing data: " + ex.Message, ex);
}
try
{
headerId = _Repo.InsertToolDataJSON(jsonbody, -1, metaData, toolType.HeaderTableName);
}
catch (Exception ex)
{
throw new Exception("Insert failed for header: " + ex.Message, ex);
}
int detailrow = 1;
try
{
if (detailsArray != null)
{
foreach (JToken detail in detailsArray)
{
_ = _Repo.InsertToolDataJSON(detail, headerId, metaData, toolType.DataTableName);
detailrow += 1;
}
}
}
catch (Exception ex)
{
throw new Exception("Insert failed for detail row " + detailrow.ToString() + ": " + ex.Message, ex);
}
transScope.Complete();
}
return headerId;
}
// this method is for validating the json contents of the inbound request, it will make sure all required fields are included
// errors are generated for missing fields, and warnings are generated for additional fields not in the metadata
// this is recursive, detailIndex = 0 is for the header, then it calls itself for each of the details rows (in any)
public void ValidateJSONFields(JToken jsonbody, int detailIndex, List<ToolTypeMetadata> metaData, List<string> errors, List<string> warnings)
{
bool isHeader = detailIndex == 0;
string rowDesc = isHeader ? "header" : "detail index " + detailIndex.ToString(); // human readable description for error messages
// filter the metadata list by header/detail
List<ToolTypeMetadata> fields = metaData.Where(md => md.Header == isHeader).ToList();
// get list of ApiFields from the metadata, exclude blank ApiName
List<string> apiFields = fields.Where(f => string.IsNullOrWhiteSpace(f.ApiName) == false).Select(f => f.ApiName.Trim().ToUpper()).ToList();
// get list of ApiFields from the metadata with blank ColumnName - we ignore these fields in the jsonbody
List<string> ignoreFields = fields.Where(f => (string.IsNullOrWhiteSpace(f.ApiName) == false) && string.IsNullOrWhiteSpace(f.ColumnName)).Select(f => f.ApiName.Trim().ToUpper()).ToList();
// keep a list of valid fields found in the jsonbody so we can check for duplicates
List<string> validFields = new();
// get list of container fields in the ApiFields, ex: Points\Thickness will add Points to the list
List<string> containerFields = apiFields.Where(f => f.Contains('\\')).Select(f => f.Split('\\')[0].Trim().ToUpper()).Distinct().ToList();
// pointer to the Details array from the jsonbody, this is hard-coded as the subfield for the common Header/Detail structure
JArray detailsArray = null;
// process fields in the json body
foreach (JToken jt in jsonbody.Children())
{
if (jt is JProperty jp)
{
string jpName = jp.Name.Trim().ToUpper();
if (apiFields.Contains(jpName))
{
// Normal field detected, remove it from the list so we know which fields are missing
_ = apiFields.Remove(jpName);
// Check for duplicates
if (validFields.Contains(jpName))
errors.Add("Duplicated field on " + rowDesc + ": " + jp.Name);
else
validFields.Add(jpName);
}
else if (string.Equals(jp.Name, "Details", StringComparison.OrdinalIgnoreCase))
{
// Details container field found
if (!isHeader)
errors.Add("Details field not expected on " + rowDesc);
if (jp.First is JArray array)
detailsArray = array;
else if ((jp.First is JValue value) && (value.Value == null))
detailsArray = null;
else
errors.Add("Invalid details field");
}
else if (ignoreFields.Contains(jpName))
{
// ignore these fields
}
else if (containerFields.Contains(jpName))
{
// ignore fields that are container fields
}
else
{
// output warnings if extra fields are found
warnings.Add("Extra field on " + rowDesc + ": " + jp.Name);
}
}
}
// process container fields, ex: Points
ValidateJSONContainerFields(jsonbody, rowDesc, apiFields, containerFields, errors, warnings);
if (containerFields.Count > 1)
errors.Add("Only one container field is supported");
if (isHeader && (containerFields.Count > 0))
errors.Add("Container field is only allowed on detail");
// output errors for fields that were not found in the json
foreach (string f in apiFields)
{
errors.Add("Missing field on " + rowDesc + ": " + f);
}
// if a Details container if found, process it by recursion
if (detailsArray != null)
{
int i = 1;
foreach (JToken detail in detailsArray)
{
ValidateJSONFields(detail, i, metaData, errors, warnings);
i += 1;
}
}
}
// this method is for validating the special container fields (only used for stratus biorad)
// the container fields are used to collapse a 3 tier structure into the 2 tier used in sharepoint
protected static void ValidateJSONContainerFields(JToken jsonbody, string rowDesc, List<string> apiFields, List<string> containerFields, List<string> errors, List<string> warnings)
{
// process container fields, ex: Points
foreach (string containerField in containerFields)
{
// get the json data for this container field, ex: Points
JProperty contJP = jsonbody.Children<JProperty>().Where(jp => string.Equals(jp.Name, containerField, StringComparison.OrdinalIgnoreCase)).SingleOrDefault();
if ((contJP != null) && (contJP.Value is JArray array))
{
JArray contJPArray = array;
// Get a list of properties in the container field from the json body, but pre-pend the container field name, ex: Points\Position
List<string> contFieldProperties = new();
foreach (JToken sfJT in contJPArray.Values<JToken>()) // for each row in the json container
{
foreach (JProperty subJTJP in sfJT.Children<JProperty>()) // for each property for the row
{
string propname = (containerField + '\\' + subJTJP.Name).ToUpper();
if (!contFieldProperties.Contains(propname))
contFieldProperties.Add(propname);
}
}
// Get list of field bindings for this container field, ex: Points\Position, Points\Thickness
List<string> contFieldBindings = apiFields.Where(f => f.StartsWith(containerField, StringComparison.OrdinalIgnoreCase)).Select(f => f.ToUpper()).ToList();
foreach (string contFieldBinding in contFieldBindings)
{
// check if the jsonbody has this property in the container field
if (contFieldProperties.Contains(contFieldBinding))
{
_ = contFieldProperties.Remove(contFieldBinding); // remove from the list of properties so we know it was found
_ = apiFields.Remove(contFieldBinding); // remove from the list of missing fields
}
else
{
errors.Add("Missing field on " + rowDesc + ": " + contFieldBinding);
}
}
// Output warnings for extra properties in the container field
foreach (string contFieldProp in contFieldProperties)
{
warnings.Add("Extra field on " + rowDesc + ": " + contFieldProperties);
}
}
else
{
errors.Add("Missing container field on " + rowDesc + ": " + containerField);
}
}
}
}

View File

@ -0,0 +1,92 @@
@using OI.Metrology.Shared.ViewModels
@model OI.Metrology.Shared.ViewModels.Export
@{
ViewData["Title"] = "Export Data";
}
<style>
td {
padding-bottom: 2em;
padding-right: 1em;
}
</style>
<h3>Export Data</h3>
<hr />
<form asp-controller="Export" asp-action="ExportData" method="post" class="form-inline">
<div class="form-group">
<label for="ToolType">Tool Type</label>
<div class="form-control" id="ToolType"></div>
</div>
<div class="form-group">
<label for="StartDate">Start Time</label>
<div class="form-control mb-2 mr-sm-2" id="StartDateControl"></div>
<div class="form-control mb-2 mr-sm-2" id="StartTimeControl"></div>
</div>
<div class="form-group">
<label for="EndDate">End Time</label>
<div class="form-control mb-2 mr-sm-2" id="EndDateControl"></div>
<div class="form-control mb-2 mr-sm-2" id="EndTimeControl"></div>
</div>&nbsp;&nbsp;
<div class="form-group">
<button type="submit" class="btn btn-primary">Export Data</button>
</div>
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
</form>
<script>
$(document).ready(function () {
$("#ToolType").igCombo({
dataSource: '@Url.Content("~/api/tooltypes")',
responseDataKey: "Results",
textKey: "ToolTypeName",
valueKey: "ID",
mode: "dropdown",
width: 150,
itemsRendered: function (evt, ui) {
LoadHeaderGrid();
},
selectionChanged: LoadHeaderGrid
});
var startTime = new Date("@Model.StartTime.ToString("yyyy-MM-ddTHH:mm")");
$("#StartDateControl").igDatePicker({
dateInputFormat: "date",
value: startTime,
width: 125,
inputName: "StartDate",
});
$("#StartTimeControl").igTimePicker({
dateInputFormat: "time",
value: startTime,
width: 110,
inputName: "StartTime",
});
var endTime = new Date("@Model.EndTime.ToString("yyyy-MM-ddTHH:mm")");
$("#EndDateControl").igDatePicker({
dateInputFormat: "date",
value: endTime,
width: 125,
inputName: "EndDate",
});
$("#EndTimeControl").igTimePicker({
dateInputFormat: "time",
value: endTime,
width: 110,
inputName: "EndTime",
});
});
</script>

View File

@ -0,0 +1,77 @@

@{
ViewData["Title"] = "Awaiting Disposition";
}
<h4>Awaiting Disposition</h4>
<div style="height: 450px;">
<table id="grid"></table>
</div>
<div class="row" style="margin-top: 10px; margin-bottom: 20px;">
<div class="col-xs-1">
<input type="button" id="OpenButton" value="Open" />
</div>
<div class="col-xs-1">
<input type="button" id="RefreshButton" value="Refresh" />
</div>
</div>
<script>
$(document).ready(function () {
$("#grid").igGrid({
autoGenerateColumns: false,
width: "70%",
height: "100%",
primaryKey: "PK",
columns: [
{ key: "PK", dataType: "string", hidden: true, },
{ key: "ID", dataType: "number", hidden: true, },
{ key: "ToolTypeID", dataType: "number", hidden: true, },
{ headerText: "Tool Type", key: "ToolType", dataType: "string", width: "15%" },
{ key: "Tool", dataType: "string", width: "10%" },
{ key: "Reactor", dataType: "string", width: "10%" },
{ key: "RDS", dataType: "string", width: "10%" },
{ key: "PSN", dataType: "string", width: "10%" },
{ key: "Layer", dataType: "string", width: "10%" },
{ key: "Zone", dataType: "string", width: "10%" },
{ key: "InsertDate", dataType: "date", width: "10%", format: "dateTime" },
{ key: "Expiration", dataType: "date", width: "10%", format: "dateTime" }
],
dataSource: "@Url.Content("~/api/awaitingdispo/")",
responseDataKey: "Results",
tabIndex: 1,
features: [
{ name: "Selection", mode: "row", multipleSelection: false },
{ name: "Filtering", type: "local"},
{ name: "Sorting", type:"local"},
]
});
function LoadRunInfo() {
var row = $("#grid").igGrid("selectedRow");
if (row == null)
return;
var data = $("#grid").igGrid("findRecordByKey", row.id);
if (data == null)
return;
var targetURL = "@Url.Action("RunInfo")?tooltypeid=" + data.ToolTypeID + "&headerid=" + data.ID;
window.location.href = targetURL;
}
$("#RefreshButton").click(function () {
$("#grid").igGrid("dataBind");
});
$("#OpenButton").click(LoadRunInfo);
$("#grid").on("dblclick", "tr", LoadRunInfo);
});
setInterval(function () {
$("#RefreshButton").click();
}, 60000);
</script>

View File

@ -0,0 +1,3 @@
@{
ViewData["Title"] = "Metrology Home Page";
}

View File

@ -0,0 +1,133 @@

@{
ViewData["Title"] = "Run Headers";
}
<style>
html, body {
height: 100%;
}
div.container-fluid {
height: 90%;
}
#HeaderGrid, #FieldsGrid {
font-size: 12px;
}
.FieldTitle {
font-weight: bold;
}
</style>
<h4>Run Headers</h4>
<table>
<tr>
<td>
<label for="ToolType">Tool Type:</label>
</td>
<td>
<div id="ToolType"></div>
</td>
</tr>
</table>
<table width="100%" height="80%">
<tr>
<td width="50%">
<table id="HeaderGrid"></table>
</td>
<td width="50%">
<table id="FieldsGrid"></table>
</td>
</tr>
</table>
<script>
function LoadHeaderGrid() {
var toolTypeID = $("#ToolType").igCombo("value");
var gridCreated = $("#HeaderGrid").data("igGrid");
if (gridCreated)
$("#HeaderGrid").igGrid("destroy");
ClearFieldsGrid();
var headerURL = "@Url.Content("~/api/tooltypes/")" + toolTypeID + "/headertitles";
$("#HeaderGrid").igGrid({
autoGenerateColumns: false,
primaryKey: "ID",
height: "100%",
width: "100%",
features: [
{ name: "Paging", type: "local", recordCountKey: "TotalRows", pageSize: 25, pageSizeUrlKey: "pageSize", "pageIndexUrlKey": "page", showPageSizeDropDown: false },
{ name: "Selection", mode: "row", rowSelectionChanged: HeaderSelectionChanged },
{ name: "Filtering", type: "local" }
],
columns: [
{ key: "ID", dataType: "number", hidden: true},
{ key: "Title", dataType: "string", width: "80%" },
{ key: "InsertDate", dataType: "date", format: "dateTime", width: "20%" }
],
dataSource: headerURL,
responseDataKey: "Results",
});
}
function ClearFieldsGrid() {
var gridCreated = $("#FieldsGrid").data("igGrid");
if (gridCreated)
$("#FieldsGrid").igGrid("destroy");
}
function HeaderSelectionChanged(evt, ui) {
var toolTypeID = $("#ToolType").igCombo("value");
ClearFieldsGrid();
var url = "@Url.Content("~/api/tooltypes/")" + toolTypeID + "/headers/" + ui.row.id + "/fields";
$("#FieldsGrid").igGrid({
autoGenerateColumns: false,
primaryKey: "Column",
height: "100%",
width: "100%",
features: [
{ name: 'Resizing' }
],
columns: [
{ key: "Column", dataType: "string", width: "20%", columnCssClass: "FieldTitle", },
{ key: "Value", dataType: "string", }
],
enableHoverStyles: false,
dataSource: url,
responseDataKey: "Results",
});
}
$(document).ready(function () {
$("#ToolType").igCombo({
dataSource: '@Url.Content("~/api/tooltypes")',
responseDataKey: "Results",
textKey: "ToolTypeName",
valueKey: "ID",
mode: "dropdown",
width: 150,
dataBound: function (evt, ui) {
$("#ToolType").igCombo("index", 0);
LoadHeaderGrid();
},
selectionChanged: LoadHeaderGrid,
});
});
</script>

View File

@ -0,0 +1,534 @@
@model OI.Metrology.Shared.ViewModels.RunInfo
@{
ViewData["Title"] = "Run Information";
}
<style>
#HeaderGridDiv, #
Div {
font-size: 12px;
}
</style>
<h4>Run Information</h4>
<form class="form-inline mb-4">
<div class="form-group">
<label for="ToolType">Tool Type</label>
<div class="form-control" id="ToolType"></div>
</div>
<div class="form-group">
<label for="StartDate">Start Time</label>
<div class="form-control mb-2 mr-sm-2" id="StartDate"></div>
<div class="form-control mb-2 mr-sm-2" id="StartTime"></div>
</div>
<div class="form-group">
<label for="EndDate">End Time</label>
<div class="form-control mb-2 mr-sm-2" id="EndDate"></div>
<div class="form-control mb-2 mr-sm-2" id="EndTime"></div>
</div>&nbsp;&nbsp;
<div class="form-group">
<input class="btn btn-primary" type="button" value="Load Headers" id="LoadHeadersButton" />
</div>&nbsp;&nbsp;
@*<div class="form-group">
<label class="form-check-label" for="chkAutoRefresh">
Auto-Refresh
</label>
<input class="form-check-input" type="checkbox" id="chkAutoRefresh">
</div>*@
@*This checkbox below is for archive flag.*@
@*<div class="form-group">
<label class="form-check-label" for="isArchive">
Archive
</label>
<input class="form-check-input" type="checkbox" id="isArchive">
</div>*@
</form>
<div style="height: 300px;" id="HeaderGridDiv">
<span id="ToolTypeID" hidden></span>
<table id="HeaderGrid"></table>
</div>
<div class="row" style="margin-top: 10px; margin-bottom: 20px;">
<div class="col-xs-1">
<input type="button" class="btn" id="GetDataButton" value="Get Data" disabled />
</div>
</div>
<div id="DetailsDiv" hidden>
<span id="HeaderId"></span>
<span id="HeaderAttachmentId"></span>
<span id="HeaderDate"></span>
<span id="SPHeaderID"></span>
<div style="padding-bottom: 20px;" id="DetailsGridDiv">
<table id="DetailsGrid"></table>
</div>
<div id="ExportDiv" style="margin-top: 10px;">
<input type="button" value="Send to OpenInsight" id="OIExportButton" />
<span id="OIExportResult" style="margin-left: 10px; font-weight: bold; color: #366b02;"></span>
</div>
<p style="text-align: center; margin-top: 20px;">
<iframe id="DataAttachmentFrame" style="height:900px; border-width:thin; margin-right: 10px;" hidden></iframe>
<iframe id="HeaderAttachmentFrame" style="height:900px; border-width:thin;" hidden></iframe>
</p>
</div>
<script>
var toolType = null;
var toolTypeMetaData = null;
function LoadHeaderGrid() {
var toolTypeID = $("#ToolType").igCombo("value");
$("#ToolTypeID").text(toolTypeID);
HideDetailsDiv();
DisableHeaderButtons();
$("#HeaderId").text("");
$("#HeaderAttachmentId").text("");
$("#HeaderDate").text("");
$("#SPHeaderID").text("");
var gridCreated = $("#HeaderGrid").data("igGrid");
if (gridCreated)
$("#HeaderGrid").igGrid("destroy");
$.ajax({
type: "GET",
url: "@Url.Content("~/api/tooltypes/")" + toolTypeID + "?sortby=grid",
success: function (r) {
if ((r.Results == null) || (r.Results.ToolType == null) || (r.Results.Metadata == null))
ShowErrorMessage("Invalid tool type: " + toolTypeID);
else {
toolType = r.Results.ToolType;
toolTypeMetaData = r.Results.Metadata;
RequestHeaderData();
}
},
error: function (e) {
DisplayWSMessage("error", "There was an error getting tooltype info.", e);
}
});
}
function DisableHeaderButtons() {
$("#GetDataButton").prop("disabled", true);
$("#ReviewButton").prop("disabled", true);
}
function EnableHeaderButtons() {
$("#GetDataButton").prop("disabled", false);
$("#ReviewButton").prop("disabled", false);
}
function HideDetailsDiv() {
$("#DetailsDiv").prop("hidden", true);
$("#DataAttachmentFrame").prop("src", "");
}
function ShowDetailsDiv() {
$("#DetailsDiv").prop("hidden", false);
$("#ExportDiv").prop("hidden", true);
if ((toolType != null) && (toolType.OIExportSPName != null) && (toolType.OIExportSPName.length > 0)) {
$("#ExportDiv").prop("hidden", false);
$("#OIExportButton").prop("disabled", false);
$("#OIExportResult").text('');
}
$("#DataAttachmentFrame").prop("hidden", true);
$("#HeaderAttachmentFrame").prop("hidden", true);
if (toolType != null) {
var visibleFrames = 0;
if (toolType.DisplayDataAttachment && toolType.DisplayDataAttachment.length > 0) {
visibleFrames += 1;
$("#DataAttachmentFrame").prop("hidden", false);
}
if (toolType.DisplayHeaderAttachment && toolType.DisplayHeaderAttachment.length > 0) {
visibleFrames += 1;
$("#HeaderAttachmentFrame").prop("hidden", false);
}
var frameWidth = (98 / visibleFrames) + "%";
$("#DataAttachmentFrame,#HeaderAttachmentFrame").css('width', frameWidth);
}
}
function HeaderSelectionChanged(evt, ui) {
if (ui.row.index >= 0) {
if ($("#HeaderId").text() == ui.row.id) {
EnableHeaderButtons();
return;
}
}
DisableHeaderButtons();
HideDetailsDiv();
if (ui.row.index >= 0) {
EnableHeaderButtons();
$("#HeaderId").text(ui.row.id);
var rowData = ui.owner.grid.dataSource.dataView()[ui.row.index];
$("#HeaderAttachmentId").text(rowData.AttachmentID);
$("#HeaderDate").text(rowData.Date);
$("#SPHeaderID").text(rowData.Title);
}
}
function CancelHandler(evt, ui) {
return false;
}
function DetailSelectionChanged(evt, ui) {
$("#DataAttachmentFrame").prop("src", "");
if (ui.row.index >= 0) {
var rowData = ui.owner.grid.dataSource.dataView()[ui.row.index];
var toolTypeID = $("#ToolTypeID").text();
var attachmentUrlBase = '@Url.Content("~/api/tooltypes/")' + toolTypeID;
var attachmentId = rowData.AttachmentID;
var test = rowData.date
if ((attachmentId == null) || (attachmentId === ''))
return;
if ((toolType.DisplayDataAttachment == null) || (toolType.DisplayDataAttachment === ''))
return;
$("#DataAttachmentFrame").prop("src", attachmentUrlBase + "/data/files/" + attachmentId + "/" + toolType.DisplayDataAttachment);
//if (CheckArchive()) {
// $("#DataAttachmentFrame").prop("src", attachmentUrlBase + "/data/files/" + attachmentId + "/" + toolType.DisplayDataAttachment);
//}
}
}
function LoadHeaderAttachment() {
var toolTypeID = $("#ToolTypeID").text();
var attachmentUrlBase = '@Url.Content("~/api/tooltypes/")' + toolTypeID;
var attachmentId = $("#HeaderAttachmentId").text();
var dateToUse = new Date($("#HeaderDate").text());
var month = dateToUse.getMonth + 1;
var year = dateToUse.getFullYear;
if ((attachmentId == null) || (attachmentId === '') || (toolType.DisplayHeaderAttachment == null) || (toolType.DisplayHeaderAttachment === '')) {
$("#HeaderAttachmentFrame").prop("src", "");
} else {
$("#HeaderAttachmentFrame").prop("src", attachmentUrlBase + "/header/files/" + attachmentId + "/" + toolType.DisplayHeaderAttachment + "?isArchive=true&date="+dateToUse);
}
$("#DataAttachmentFrame").prop("src", "");
}
@*function MarkAsReviewed() {
var toolTypeId = $("#ToolTypeID").text();
var headerId = $("#HeaderId").text();
$.ajax({
type: "POST",
url: "@Url.Content("~/api/awaitingdispo/markasreviewed")?tooltypeid=" + toolTypeId + "&headerid=" + headerId,
success: function () {
},
error: function (e, ajaxOptions, ex) {
DisplayWSMessage("error", "There was an error marking header as reviewed.", e, ex);
$("#ReviewButton").prop("disabled", false);
}
});
}*@
function CheckDate() {
var date = new Date($("#HeaderDate").text());
return date;
}
function LoadDetails() {
ShowDetailsDiv();
LoadHeaderAttachment();
var dateToUse = $("#HeaderDate").text();
var gridCreated = $("#DetailsGrid").data("igGrid");
if (gridCreated)
$("#DetailsGrid").igGrid("destroy");
var dateID = Date.parse($("#HeaderDate").text());
var cutoffDt = Date.parse('2019-07-08')
var headerId = $("#HeaderId").text();
var toolTypeID = $("#ToolTypeID").text();
var spHeaderID = $("#SPHeaderID").text();
if (dateID < cutoffDt) {
detailsURL = "@Url.Content("~/api/tooltypes/")" + toolTypeID + "/headers/" + spHeaderID + "/data/isSharePoint";
}
else {
var detailsURL = "@Url.Content("~/api/tooltypes/")" + toolTypeID + "/headers/" + headerId + "/data";
}
//Changed from here
//if (CheckArchive() == true) {
// detailsURL = detailsURL + "?isArchive=true";
//}
//Changed to here
var gridColumns = [
{ key: "AttachmentID", dataType: "string", hidden: true },
{ key: "Title", dataType: "string", hidden: true },
];
for (var i = 0; i < toolTypeMetaData.length; i++)
{
var f = toolTypeMetaData[i];
if ((f.Header == false) && (f.GridDisplayOrder > 0)) {
var col = {
key: f.ColumnName,
headerText: f.DisplayTitle,
width: "150px",
};
if (f.GridAttributes != null)
jQuery.extend(col, JSON.parse(f.GridAttributes));
if (col.formatter != null) {
if (col.formatter == "boolToYesNo")
col.formatter = boolToYesNo;
else
col.formatter = null;
}
gridColumns.push(col);
}
}
var date = toolTypeMetaData[2];
var gridParms = {
autoGenerateColumns: false,
primaryKey: "ID",
features: [
{ name: "Selection", mode: "row", rowSelectionChanging: DetailSelectionChanged },
{ name: "Resizing" },
{ name: "Sorting", type: "local" }
],
columns: gridColumns,
dataSource: detailsURL,
responseDataKey: "Results",
//dataBound: MarkAsReviewed,
};
if ((toolType != null) && (toolType.DataGridAttributes != null)) {
jQuery.extend(gridParms, JSON.parse(toolType.DataGridAttributes));
}
$("#DetailsGrid").igGrid(gridParms);
}
var initialHeaderId = @Model.HeaderID;
var initialHeaderAttachmentId = "@Model.HeaderAttachmentID";
function RequestHeaderData()
{
var startDate = $("#StartDate").igDatePicker("value");
var startTime = $("#StartTime").igTimePicker("value");
var endDate = $("#EndDate").igDatePicker("value");
var endTime = $("#EndTime").igTimePicker("value");
var parms = {
datebegin: new Date(
startDate.getFullYear(), startDate.getMonth(), startDate.getDate(),
startTime.getHours(), startTime.getMinutes(), startTime.getSeconds()).toISOString(),
dateend: new Date(
endDate.getFullYear(), endDate.getMonth(), endDate.getDate(),
endTime.getHours(), endTime.getMinutes(), endTime.getSeconds()).toISOString(),
}
var headerId = 0;
if (initialHeaderId > 0) {
headerId = initialHeaderId;
parms.headerid = headerId;
//isArchive = CheckArchive()
$("#HeaderId").text(headerId);
$("#HeaderAttachmentId").text(initialHeaderAttachmentId);
initialHeaderId = -1;
}
var headerURL = "@Url.Content("~/api/tooltypes/")" + toolType.ID + "/headers?" + $.param(parms);
//if (CheckArchive() == true) {
// headerURL = headerURL + "&isArchive=true";
//}
var gridColumns = [
{ key: "ID", dataType: "number", hidden: true },
{ key: "AttachmentID", dataType: "string", hidden: true },
{ key: "Title", dataType: "string", hidden: true },
];
for (var i = 0; i < toolTypeMetaData.length; i++)
{
var f = toolTypeMetaData[i];
if ((f.Header == true) && (f.GridDisplayOrder > 0)) {
var col = {
key: f.ColumnName,
headerText: f.DisplayTitle,
width: "150px",
};
if (f.GridAttributes != null)
jQuery.extend(col, JSON.parse(f.GridAttributes));
if (col.formatter != null) {
if (col.formatter == "boolToYesNo")
col.formatter = boolToYesNo;
else
col.formatter = null;
}
gridColumns.push(col);
}
}
var gridParms = {
autoGenerateColumns: false,
primaryKey: "ID",
height: "100%",
width: "100%",
features: [
{ name: "Paging", type: "local", recordCountKey: "TotalRows", pageSize: 100, pageSizeList : [50, 100, 250, 500], pageSizeUrlKey: "pageSize", "pageIndexUrlKey": "page" },
{ name: "Selection", mode: "row", rowSelectionChanged: HeaderSelectionChanged },
{ name: "Filtering", type: "local" },
{ name: 'Resizing' },
{ name: "Sorting", type:"local"}
],
columns: gridColumns,
dataSource: headerURL,
responseDataKey: "Results",
};
if ((toolType != null) && (toolType.HeaderGridAttributes != null)) {
jQuery.extend(gridParms, JSON.parse(toolType.HeaderGridAttributes));
}
$("#HeaderGrid").igGrid(gridParms);
if (headerId > 0) {
LoadDetails();
}
}
function ReviewButton() {
var toolTypeId = $("#ToolTypeID").text();
var headerId = parseInt($("#HeaderId").text());
$("#ReviewButton").prop("disabled", true);
$.ajax({
type: "POST",
url: "@Url.Content("~/api/awaitingdispo/markasawaiting")?tooltypeid=" + toolTypeId + "&headerid=" + headerId,
success: function (e) {
DisplayWSMessage("info", "Marked as awaiting disposition",e);
$("#ReviewButton").prop("disabled", false);
},
error: function (e, ajaxOptions, ex) {
DisplayWSMessage("error", "There was an error marking header as awaiting disposition.", e, ex);
$("#ReviewButton").prop("disabled", false);
}
});
}
function OIExportButton() {
var headerId = $("#HeaderId").text();
var toolTypeID = $("#ToolTypeID").text();
$("#OIExportButton").prop("disabled", true);
$.ajax({
type: "POST",
url: "@Url.Content("~/api/tooltypes/")" + toolTypeID + "/headers/" + headerId + "/oiexport",
success: function (r) {
$("#OIExportResult").text("Exported!");
},
error: function (e, ajaxOptions, ex) {
DisplayWSMessage("error", "There was an error exporting.", e, ex);
$("#OIExportButton").prop("disabled", false);
}
});
}
function SetInitialDateTimes() {
var startTime = new Date(Date.now() - 6 * 60 * 60 * 1000);//6 hours back from now
$("#StartDate").igDatePicker({
dateInputFormat: "date",
value: startTime,
width: 125
});
$("#StartTime").igTimePicker({
dateInputFormat: "time",
value: startTime,
width: 110
});
var endTime = new Date(Date.now());
$("#EndDate").igDatePicker({
dateInputFormat: "date",
value: endTime,
width: 125
});
$("#EndTime").igTimePicker({
dateInputFormat: "time",
value: endTime,
width: 110
});
}
//function CheckArchive() {
// var isArchive = new Boolean(false);
// isArchive = document.getElementById("isArchive").checked;
// return isArchive;
//}
$(document).ready(function () {
$("#ToolType").igCombo({
dataSource: '@Url.Content("~/api/tooltypes")',
responseDataKey: "Results",
textKey: "ToolTypeName",
valueKey: "ID",
mode: "dropdown",
width: 150,
itemsRendered: function (evt, ui) {
LoadHeaderGrid();
},
selectionChanged: LoadHeaderGrid,
initialSelectedItems: [ { value: @Model.ToolTypeID } ]
});
SetInitialDateTimes();
$("#HeaderGrid").on("dblclick", "tr", LoadDetails);
$("#LoadHeadersButton").click(LoadHeaderGrid);
$("#GetDataButton").click(LoadDetails);
$("#ReviewButton").click(ReviewButton);
$("#OIExportButton").click(OIExportButton);
//setInterval(function () {
// if ($("#chkAutoRefresh").is(':checked')) {
// SetInitialDateTimes();
// $("#LoadHeadersButton").click();
// }
// }, 180000);
});
</script>

View File

@ -0,0 +1,92 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>@ViewBag.Title</title>
<script src="~/js/modernizr-3.6.0-custom.js" type="text/javascript" asp-append-version="true"></script>
<link href="~/styles/bootstrap.min.css" rel="stylesheet" asp-append-version="true" />
<link href="~/igniteui/css/themes/bootstrap3/default/infragistics.theme.css" rel="stylesheet" asp-append-version="true" />
<link href="~/igniteui/css/structure/infragistics.css" rel="stylesheet" asp-append-version="true" />
<link href="~/styles/site.css" rel="stylesheet" asp-append-version="true" />
<script src="~/js/jquery-3.6.0.min.js" type="text/javascript" asp-append-version="true"></script>
<script src="~/js/jquery-ui.min.js" type="text/javascript" asp-append-version="true"></script>
<script src="~/igniteui/js/infragistics.core.js" type="text/javascript" asp-append-version="true"></script>
<script src="~/igniteui/js/infragistics.lob.js" type="text/javascript" asp-append-version="true"></script>
<script src="~/igniteui/js/infragistics.dv.js" type="text/javascript" asp-append-version="true"></script>
<script src="~/js/common.js" type="text/javascript" asp-append-version="true"></script>
<script>
$(document).ready(function () {
if (location.pathname == "/") {
route = "/AwaitingDispo";
}
else {
route = location.pathname;
}
$('ul.nav.navbar-nav').find('a[href="' + route + '"]')
.closest('li').addClass('alert-info');
});
</script>
</head>
<body>
@{
bool isTestDatabase = false;
object testDatabaseValue = ViewBag.IsTestDatabase;
if (testDatabaseValue != null)
{
Boolean.TryParse(Convert.ToString(testDatabaseValue), out isTestDatabase);
}
}
<div class="navbar navbar-fixed-top @(isTestDatabase ? "test-database" : "" )">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<div class="navbar-brand">
<a href="/"><img src="~/images/IFX_LOGO_RGB.png" height="20" /></a>
OI Metrology Viewer - ARCHIVE
</div>
</div>
@if (isTestDatabase)
{
<p class="navbar-text hidden-xs hidden-sm">
<span class="test-database-text">TEST DATABASE</span>
</p>
}
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
@*<li>@Html.ActionLink("Awaiting Disposition", "AwaitingDispo", "Pages", new { area = "" })</li>*@
<li>@Html.ActionLink("Run Information", "RunInfo", "Pages", new { area = "" }, null)</li>
<li>@Html.ActionLink("Run Headers", "RunHeaders", "Pages", new { area = "" }, null)</li>
<li>@Html.ActionLink("Export", "Index", "Export", new { area = "" }, null)</li>
</ul>
<p class="navbar-text navbar-right">
@User.Identity.Name
</p>
</div>
</div>
</div>
<div class="container-fluid body-content">
@RenderBody()
<hr />
<footer>
<p>&copy; @DateTime.Now.Year - Infineon Technologies</p>
</footer>
</div>
<div id="MessageModal"></div>
<script src="~/js/bootstrap.min.js" type="text/javascript" asp-append-version="true"></script>
<script src="~/js/respond.min.js" type="text/javascript" asp-append-version="true"></script>
@RenderSection("scripts", required: false)
</body>
</html>

View File

@ -0,0 +1,2 @@
@using OI.Metrology
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

View File

@ -0,0 +1,3 @@
@{
Layout = "_Layout";
}

View File

@ -0,0 +1,64 @@
{
"AllowedHosts": "*",
"ApiLoggingContentTypes": "application/json",
"ApiLoggingPathPrefixes": "/api/inbound",
"ApiLogPath": "D:\\Metrology\\MetrologyAPILogs",
"AttachmentPath": "\\\\messv02ecc1.ec.local\\EC_Metrology_Si\\MetrologyAttachments",
"BuildNumber": "1",
"Company": "Infineon Technologies Americas Corp.",
"ConnectionStrings": {
"SQL": "Data Source=messv01ec.ec.local\\PROD1,53959;Integrated Security=True;Initial Catalog=Metrology_Archive;",
"SQL2": "Data Source=messv01ec.ec.local\\PROD1,53959;Integrated Security=True;Initial Catalog=Metrology_Archive;",
"SQL3": "\"Server=.\\\\messv01ec.ec.local\\PROD1,53959;Database=Metrology_Archive;User Id=sa;Password=2BeChanged!;\";"
},
"GitCommitSeven": "1234567",
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Log4netProvider": "Debug",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"InboundApiAllowedIPList": "",
"OIExportPath": "\\\\openinsight-db-srv.na.infineon.com\\apps\\Metrology\\NewSiteData",
"Serilog": {
"Using": [
"Serilog.Sinks.Console",
"Serilog.Sinks.File"
],
"MinimumLevel": "Debug",
"WriteTo": [
{
"Name": "Debug",
"Args": {
"outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level}] ({SourceContext}.{MethodName}) ({InstanceId}) ({RemoteIpAddress}) {Message}{NewLine}{Exception}"
}
},
{
"Name": "Console",
"Args": {
"outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level}] ({SourceContext}.{MethodName}) ({InstanceId}) ({RemoteIpAddress}) {Message}{NewLine}{Exception}"
}
},
{
"Name": "File",
"Args": {
"path": "%workingDirectory% - Log/log-.txt",
"outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level}] ({SourceContext}.{MethodName}) ({InstanceId}) ({RemoteIpAddress}) {Message}{NewLine}{Exception}",
"rollingInterval": "Hour"
}
}
],
"Enrich": [
"FromLogContext",
"WithMachineName",
"WithThreadId"
],
"Properties": {
"Application": "Sample"
}
},
"URLs": "https://localhost:7130;http://localhost:5126",
"WorkingDirectoryName": "IFXApps"
}

64
Archive/appsettings.json Normal file
View File

@ -0,0 +1,64 @@
{
"AllowedHosts": "*",
"ApiLoggingContentTypes": "application/json",
"ApiLoggingPathPrefixes": "/api/inbound",
"ApiLogPath": "D:\\Metrology\\MetrologyAPILogs",
"AttachmentPath": "\\\\messv02ecc1.ec.local\\EC_Metrology_Si\\MetrologyAttachments",
"BuildNumber": "1",
"Company": "Infineon Technologies Americas Corp.",
"ConnectionStrings": {
"SQL": "Data Source=messv01ec.ec.local\\PROD1,53959;Integrated Security=True;Initial Catalog=Metrology_Archive;",
"SQL2": "Data Source=messv01ec.ec.local\\PROD1,53959;Integrated Security=True;Initial Catalog=Metrology_Archive;",
"SQL3": "\"Server=.\\\\messv01ec.ec.local\\PROD1,53959;Database=Metrology_Archive;User Id=sa;Password=2BeChanged!;\";"
},
"GitCommitSeven": "1234567",
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Log4netProvider": "Debug",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"InboundApiAllowedIPList": "",
"OIExportPath": "\\\\openinsight-db-srv.na.infineon.com\\apps\\Metrology\\NewSiteData",
"Serilog": {
"Using": [
"Serilog.Sinks.Console",
"Serilog.Sinks.File"
],
"MinimumLevel": "Debug",
"WriteTo": [
{
"Name": "Debug",
"Args": {
"outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level}] ({SourceContext}.{MethodName}) ({InstanceId}) ({RemoteIpAddress}) {Message}{NewLine}{Exception}"
}
},
{
"Name": "Console",
"Args": {
"outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level}] ({SourceContext}.{MethodName}) ({InstanceId}) ({RemoteIpAddress}) {Message}{NewLine}{Exception}"
}
},
{
"Name": "File",
"Args": {
"path": "%workingDirectory% - Log/log-.txt",
"outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level}] ({SourceContext}.{MethodName}) ({InstanceId}) ({RemoteIpAddress}) {Message}{NewLine}{Exception}",
"rollingInterval": "Hour"
}
}
],
"Enrich": [
"FromLogContext",
"WithMachineName",
"WithThreadId"
],
"Properties": {
"Application": "Sample"
}
},
"URLs": "https://localhost:7130;http://localhost:5126",
"WorkingDirectoryName": "IFXApps"
}

View File

@ -0,0 +1,6 @@
[
{
"outputFile": "wwwroot/igniteui/css/themes/bootstrap3/default/infragistics.theme.css",
"inputFile": "wwwroot/igniteui/css/themes/bootstrap3/default/infragistics.theme.less"
}
]

View File

@ -0,0 +1,63 @@
{
"compilers": {
"less": {
"autoPrefix": "",
"cssComb": "none",
"ieCompat": true,
"strictMath": false,
"strictUnits": false,
"relativeUrls": true,
"rootPath": "",
"sourceMapRoot": "",
"sourceMapBasePath": "",
"sourceMap": false
},
"sass": {
"autoPrefix": "",
"includePath": "",
"indentType": "space",
"indentWidth": 2,
"outputStyle": "nested",
"Precision": 5,
"relativeUrls": true,
"sourceMapRoot": "",
"lineFeed": "",
"sourceMap": false
},
"stylus": {
"sourceMap": false
},
"babel": {
"sourceMap": false
},
"coffeescript": {
"bare": false,
"runtimeMode": "node",
"sourceMap": false
},
"handlebars": {
"root": "",
"noBOM": false,
"name": "",
"namespace": "",
"knownHelpersOnly": false,
"forcePartial": false,
"knownHelpers": [],
"commonjs": "",
"amd": false,
"sourceMap": false
}
},
"minifiers": {
"css": {
"enabled": true,
"termSemicolons": true,
"gzip": false
},
"javascript": {
"enabled": true,
"termSemicolons": true,
"gzip": false
}
}
}

66
Archive/libman.json Normal file
View File

@ -0,0 +1,66 @@
{
"version": "1.0",
"defaultProvider": "filesystem",
"libraries": [
{
"provider": "filesystem",
"library": "D:/cdnjs/bootstrap@5.1.3/css",
"destination": "wwwroot/lib/bootstrap/css"
},
{
"provider": "filesystem",
"library": "D:/cdnjs/bootstrap@5.1.3/js",
"destination": "wwwroot/lib/bootstrap/js"
},
{
"provider": "filesystem",
"library": "D:/cdnjs/bootstrap@5.1.3/scss",
"destination": "wwwroot/lib/bootstrap/scss"
},
{
"provider": "filesystem",
"library": "D:/cdnjs/bootstrap@5.1.3/scss/forms",
"destination": "wwwroot/lib/bootstrap/scss/forms"
},
{
"provider": "filesystem",
"library": "D:/cdnjs/bootstrap@5.1.3/scss/helpers",
"destination": "wwwroot/lib/bootstrap/scss/helpers"
},
{
"provider": "filesystem",
"library": "D:/cdnjs/bootstrap@5.1.3/scss/mixins",
"destination": "wwwroot/lib/bootstrap/scss/mixins"
},
{
"provider": "filesystem",
"library": "D:/cdnjs/bootstrap@5.1.3/scss/utilities",
"destination": "wwwroot/lib/bootstrap/scss/utilities"
},
{
"provider": "filesystem",
"library": "D:/cdnjs/bootstrap@5.1.3/scss/vendor",
"destination": "wwwroot/lib/bootstrap/scss/vendor"
},
{
"provider": "filesystem",
"library": "D:/cdnjs/jquery@3.6.0/",
"destination": "wwwroot/lib/jquery/"
},
{
"provider": "filesystem",
"library": "D:/cdnjs/jqueryui@1.12.1/",
"destination": "wwwroot/lib/jquery-ui/"
},
{
"provider": "filesystem",
"library": "D:/cdnjs/jqueryui@1.12.1/images",
"destination": "wwwroot/lib/jquery-ui/images"
},
{
"provider": "filesystem",
"library": "D:/cdnjs/jqueryui@1.12.1/themes",
"destination": "wwwroot/lib/jquery-ui/themes"
}
]
}

18
Archive/libman.txt Normal file
View File

@ -0,0 +1,18 @@
{
"version": "1.0",
"defaultProvider": "cdnjs",
"libraries": [
{
"library": "jquery@3.6.0",
"destination": "wwwroot/lib/jquery/"
},
{
"library": "jqueryui@1.12.1",
"destination": "wwwroot/lib/jquery-ui/"
},
{
"library": "bootstrap@5.1.3",
"destination": "wwwroot/lib/bootstrap/"
}
]
}

View File

@ -0,0 +1,16 @@
==== structure ====
このフォルダーには、Ignite UI コンポーネントの構造 (幅、高さ、マージン、パディングなど) に関連するすべてのスタイルが含まれています。このフォルダーのファイルは Ignite UI コントロールが正しく動作する上で非常に重要です。
注: structure ファイルはどのテーマにも関連していません。
===== themes =====
ignite UI および jQuery UI コンポーネントのすべてのテーマが含まれるフォルダーです。
Bootstrap 3 - Bootstrap 3 と互換性のあるテーマ
Bootstrap 4 - Bootstrap 4 と互換性のあるテーマ
infragistics
infragistics2012
IOS
Metro

View File

@ -0,0 +1,17 @@
==== structure ====
- in this folder you can find all styles related to ignite UI components structure (widths,heights,margins,paddings.etc).
The files in that folder are very important, otherwise ignite UI controls will NOT work correctly.
NOTE: The structure files are NOT related to any theme!
===== themes =====
- This is the folder that contain all the themes for ignite UI and jQuery UI components.
1. Bootstrap 3 - Themes compatible with bootstrap 3
2. Bootstrap 4 - Themes compatible with bootstrap 4
3. infragistics
3. infragistics2012
3. IOS
3. Metro

View File

@ -0,0 +1,388 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>
<json>
<![CDATA[
{
"fontFamily": "jquery-ui",
"license": "CC BY-SA 3.0",
"licenseURL": "https://creativecommons.org/licenses/by-sa/3.0/",
"description": "Modified Font for jQuery-UI\nFont generated by IcoMoon.",
"copyright": "Michael Keck",
"majorVersion": 1,
"minorVersion": 61,
"version": "Version 1.61",
"fontId": "jquery-ui",
"psName": "jquery-ui",
"subFamily": "Regular",
"fullName": "jquery-ui"
}
]]>
</json>
</metadata>
<defs>
<font id="jquery-ui" horiz-adv-x="1024">
<font-face units-per-em="1024" ascent="1024" descent="0" />
<missing-glyph horiz-adv-x="1024" />
<glyph unicode="&#x20;" horiz-adv-x="512" d="" />
<glyph unicode="&#xe600;" glyph-name="arrow-1-n" data-tags="arrow-1-n" d="M219.429 585.146c0.001 4.849 1.928 9.5 5.357 12.929l274.286 274.286c7.141 7.138 18.716 7.138 25.857 0l274.286-274.286c3.429-3.429 5.356-8.079 5.357-12.929v-128c-0.006-16.286-19.694-24.441-31.214-12.929l-188.214 188.214v-449.575c0-20.261-16.311-36.571-36.571-36.571h-73.143c-20.261 0-36.571 16.311-36.571 36.571v449.575l-188.214-188.214c-11.52-11.512-31.208-3.357-31.214 12.929z" />
<glyph unicode="&#xe601;" glyph-name="arrow-1-ne" data-tags="arrow-1-ne" d="M799.017 385.276c3.428 3.43 5.354 8.081 5.354 12.93v387.899c-0.002 10.097-8.187 18.282-18.284 18.284h-387.899c-4.85 0-9.5-1.925-12.93-5.354l-90.51-90.51c-11.511-11.52-3.356-31.208 12.93-31.214h266.175l-317.897-317.897c-14.326-14.326-14.326-37.393 0-51.72l51.72-51.72c14.326-14.326 37.393-14.326 51.72 0l317.897 317.898v-266.175c0.006-16.286 19.693-24.441 31.214-12.93z" />
<glyph unicode="&#xe602;" glyph-name="arrow-1-e" data-tags="arrow-1-e" d="M585.146 219.429c4.849 0.001 9.5 1.928 12.929 5.357l274.286 274.286c7.138 7.141 7.138 18.716 0 25.857l-274.286 274.286c-3.429 3.429-8.079 5.356-12.929 5.357h-128c-16.286-0.006-24.441-19.694-12.929-31.214l188.214-188.214h-449.575c-20.261 0-36.571-16.311-36.571-36.571v-73.143c0-20.261 16.311-36.571 36.571-36.571h449.575l-188.214-188.214c-11.512-11.52-3.357-31.208 12.929-31.214z" />
<glyph unicode="&#xe603;" glyph-name="arrow-1-se" data-tags="arrow-1-se" d="M799.017 638.541c3.428-3.43 5.354-8.081 5.354-12.93v-387.899c-0.002-10.097-8.187-18.282-18.284-18.284h-387.899c-4.85 0-9.5 1.925-12.93 5.354l-90.51 90.51c-11.511 11.52-3.356 31.208 12.93 31.214h266.175l-317.897 317.897c-14.326 14.326-14.326 37.393 0 51.72l51.72 51.72c14.326 14.326 37.393 14.326 51.72 0l317.897-317.898v266.175c0.006 16.286 19.693 24.441 31.214 12.93z" />
<glyph unicode="&#xe604;" glyph-name="arrow-1-s" data-tags="arrow-1-s" d="M804.571 438.854c-0.001-4.849-1.928-9.5-5.357-12.929l-274.286-274.286c-7.141-7.138-18.716-7.138-25.857 0l-274.286 274.286c-3.429 3.429-5.356 8.079-5.357 12.929v128c0.006 16.286 19.694 24.441 31.214 12.929l188.214-188.214v449.575c0 20.261 16.311 36.571 36.571 36.571h73.143c20.261 0 36.571-16.311 36.571-36.571v-449.575l188.214 188.214c11.52 11.512 31.208 3.357 31.214-12.929z" />
<glyph unicode="&#xe605;" glyph-name="arrow-1-sw" data-tags="arrow-1-sw" d="M224.782 638.541c-3.428-3.43-5.354-8.081-5.354-12.93v-387.899c0.002-10.097 8.187-18.282 18.284-18.284h387.899c4.85 0 9.5 1.925 12.93 5.354l90.51 90.51c11.511 11.52 3.356 31.208-12.93 31.214h-266.175l317.897 317.897c14.326 14.326 14.326 37.393 0 51.72l-51.72 51.72c-14.326 14.326-37.393 14.326-51.72 0l-317.897-317.898v266.175c-0.006 16.286-19.693 24.441-31.214 12.93z" />
<glyph unicode="&#xe606;" glyph-name="arrow-1-w" data-tags="arrow-1-w" d="M438.854 219.429c-4.849 0.001-9.5 1.928-12.929 5.357l-274.286 274.286c-7.138 7.141-7.138 18.716 0 25.857l274.286 274.286c3.429 3.429 8.079 5.356 12.929 5.357h128c16.286-0.006 24.441-19.694 12.929-31.214l-188.214-188.214h449.575c20.261 0 36.571-16.311 36.571-36.571v-73.143c0-20.261-16.311-36.571-36.571-36.571h-449.575l188.214-188.214c11.512-11.52 3.357-31.208-12.929-31.214z" />
<glyph unicode="&#xe607;" glyph-name="arrow-1-nw" data-tags="arrow-1-nw" d="M224.782 385.276c-3.428 3.43-5.354 8.081-5.354 12.93v387.899c0.002 10.097 8.187 18.282 18.284 18.284h387.899c4.85 0 9.5-1.925 12.93-5.354l90.51-90.51c11.511-11.52 3.356-31.208-12.93-31.214h-266.175l317.897-317.897c14.326-14.326 14.326-37.393 0-51.72l-51.72-51.72c-14.326-14.326-37.393-14.326-51.72 0l-317.897 317.898v-266.175c-0.006-16.286-19.693-24.441-31.214-12.93z" />
<glyph unicode="&#xe608;" glyph-name="arrowstop-1-n" data-tags="arrowstop-1-n" d="M146.286 841.143c0-20.261 16.311-36.571 36.571-36.571h658.286c20.261 0 36.571 16.311 36.571 36.571v73.143c0 20.261-16.311 36.571-36.571 36.571h-658.286c-20.261 0-36.571-16.311-36.571-36.571v-73.143zM512 804.571c-4.679 0-9.358-1.788-12.929-5.357l-274.286-274.286c-3.429-3.429-5.356-8.079-5.357-12.929v-128c0.006-16.286 19.694-24.44 31.214-12.929l188.214 188.214v-449.571c0-20.261 16.311-36.571 36.571-36.571h73.143c20.261 0 36.571 16.311 36.571 36.571v449.571l188.214-188.214c11.52-11.512 31.208-3.357 31.214 12.929v128c-0.001 4.849-1.928 9.5-5.357 12.929l-274.286 274.286c-3.571 3.569-8.25 5.357-12.929 5.357z" />
<glyph unicode="&#xe609;" glyph-name="arrowstop-1-e" data-tags="arrowstop-1-e" d="M841.143 877.714c-20.261 0-36.571-16.311-36.571-36.571v-658.286c0-20.261 16.311-36.571 36.571-36.571h73.143c20.261 0 36.571 16.311 36.571 36.571v658.286c0 20.261-16.311 36.571-36.571 36.571h-73.143zM804.571 512c0 4.679-1.788 9.358-5.357 12.929l-274.286 274.286c-3.429 3.429-8.079 5.356-12.929 5.357h-128c-16.286-0.006-24.44-19.694-12.929-31.214l188.214-188.214h-449.571c-20.261 0-36.571-16.311-36.571-36.571v-73.143c0-20.261 16.311-36.571 36.571-36.571h449.571l-188.214-188.214c-11.512-11.52-3.357-31.208 12.929-31.214h128c4.849 0.001 9.5 1.928 12.929 5.357l274.286 274.286c3.569 3.571 5.357 8.25 5.357 12.929z" />
<glyph unicode="&#xe60a;" glyph-name="arrowstop-1-s" data-tags="arrowstop-1-s" d="M877.714 182.857c0 20.261-16.311 36.571-36.571 36.571h-658.286c-20.261 0-36.571-16.311-36.571-36.571v-73.143c0-20.261 16.311-36.571 36.571-36.571h658.286c20.261 0 36.571 16.311 36.571 36.571v73.143zM512 219.429c4.679 0 9.358 1.788 12.929 5.357l274.286 274.286c3.429 3.429 5.356 8.079 5.357 12.929v128c-0.006 16.286-19.694 24.44-31.214 12.929l-188.214-188.214v449.571c0 20.261-16.311 36.571-36.571 36.571h-73.143c-20.261 0-36.571-16.311-36.571-36.571v-449.571l-188.214 188.214c-11.52 11.512-31.208 3.357-31.214-12.929v-128c0.001-4.849 1.928-9.5 5.357-12.929l274.286-274.286c3.571-3.569 8.25-5.357 12.929-5.357z" />
<glyph unicode="&#xe60b;" glyph-name="arrowstop-1-w" data-tags="arrowstop-1-w" d="M182.857 146.286c20.261 0 36.571 16.311 36.571 36.571v658.286c0 20.261-16.311 36.571-36.571 36.571h-73.143c-20.261 0-36.571-16.311-36.571-36.571v-658.286c0-20.261 16.311-36.571 36.571-36.571h73.143zM219.429 512c0-4.679 1.788-9.358 5.357-12.929l274.286-274.286c3.429-3.429 8.079-5.356 12.929-5.357h128c16.286 0.006 24.44 19.694 12.929 31.214l-188.214 188.214h449.571c20.261 0 36.571 16.311 36.571 36.571v73.143c0 20.261-16.311 36.571-36.571 36.571h-449.571l188.214 188.214c11.512 11.52 3.357 31.208-12.929 31.214h-128c-4.849-0.001-9.5-1.928-12.929-5.357l-274.286-274.286c-3.569-3.571-5.357-8.25-5.357-12.929z" />
<glyph unicode="&#xe60c;" glyph-name="arrowreturn-1-n" data-tags="arrowreturn-1-n" d="M804.571 457.145c-0.006-16.286-19.694-24.44-31.214-12.929l-188.214 188.214v-193.571c0-160.716-131.855-292.571-292.571-292.571-36.571 0-73.143 0-73.143 36.571v73.143c0 36.571 36.571 36.571 73.143 36.571 81.658 0 146.286 64.628 146.286 146.286v193.571l-188.214-188.214c-11.52-11.512-31.208-3.357-31.214 12.929v128c0.001 4.849 1.928 9.5 5.357 12.929l274.286 274.286c7.141 7.138 18.716 7.138 25.857 0l274.286-274.286c3.429-3.429 5.356-8.079 5.357-12.929z" />
<glyph unicode="&#xe60d;" glyph-name="arrowreturn-1-e" data-tags="arrowreturn-1-e" d="M457.145 804.571c-16.286-0.006-24.44-19.694-12.929-31.214l188.214-188.214h-193.571c-160.716 0-292.571-131.855-292.571-292.571 0-36.571 0-73.143 36.571-73.143h73.143c36.571 0 36.571 36.571 36.571 73.143 0 81.658 64.628 146.286 146.286 146.286h193.571l-188.214-188.214c-11.512-11.52-3.357-31.208 12.929-31.214h128c4.849 0.001 9.5 1.928 12.929 5.357l274.286 274.286c7.138 7.141 7.138 18.716 0 25.857l-274.286 274.286c-3.429 3.429-8.079 5.356-12.929 5.357z" />
<glyph unicode="&#xe60e;" glyph-name="arrowreturn-1-s" data-tags="arrowreturn-1-s" d="M219.429 566.855c0.006 16.286 19.694 24.44 31.214 12.929l188.214-188.214v193.571c0 160.716 131.855 292.571 292.571 292.571 36.571 0 73.143 0 73.143-36.571v-73.143c0-36.571-36.571-36.571-73.143-36.571-81.658 0-146.286-64.628-146.286-146.286v-193.571l188.214 188.214c11.52 11.512 31.208 3.357 31.214-12.929v-128c-0.001-4.849-1.928-9.5-5.357-12.929l-274.286-274.286c-7.141-7.138-18.716-7.138-25.857 0l-274.286 274.286c-3.429 3.429-5.356 8.079-5.357 12.929z" />
<glyph unicode="&#xe60f;" glyph-name="arrowreturn-1-w" data-tags="arrowreturn-1-w" d="M566.855 804.571c16.286-0.006 24.44-19.694 12.929-31.214l-188.214-188.214h193.571c160.716 0 292.571-131.855 292.571-292.571 0-36.571 0-73.143-36.571-73.143h-73.143c-36.571 0-36.571 36.571-36.571 73.143 0 81.658-64.628 146.286-146.286 146.286h-193.571l188.214-188.214c11.512-11.52 3.357-31.208-12.929-31.214h-128c-4.849 0.001-9.5 1.928-12.929 5.357l-274.286 274.286c-7.138 7.141-7.138 18.716 0 25.857l274.286 274.286c3.429 3.429 8.079 5.356 12.929 5.357z" />
<glyph unicode="&#xe610;" glyph-name="arrowrefresh-1-n" data-tags="arrowrefresh-1-n" d="M475.429 950.857c20.261 0 36.571-16.311 36.571-36.571v-73.143c0-20.261-16.311-36.571-36.571-36.571h-36.571c-161.583 0-292.571-130.989-292.571-292.571s130.989-292.571 292.571-292.571c161.583 0 292.571 130.989 292.571 292.571v47.286l-115.071-115.071c-3.309-3.307-7.879-5.352-12.927-5.352-10.097 0-18.283 8.184-18.288 18.28v128c0.001 5.050 2.049 9.621 5.358 12.93l201.142 201.142c3.31 3.311 7.883 5.359 12.934 5.359 0.098 0 0.197-0.001 0.295-0.002 4.981-0.082 9.478-2.155 12.728-5.458l201.043-201.042c3.309-3.309 5.357-7.881 5.357-12.93v-127.998c-0.004-10.097-8.19-18.28-18.288-18.28-5.048 0-9.618 2.045-12.927 5.352l-115.071 115.071v-47.286c0-242.374-196.483-438.857-438.857-438.857s-438.857 196.483-438.857 438.857c0 242.374 196.483 438.857 438.857 438.857h36.571z" />
<glyph unicode="&#xe611;" glyph-name="arrowrefresh-1-e" data-tags="arrowrefresh-1-e" d="M950.857 475.429c0 20.261-16.311 36.571-36.571 36.571h-73.143c-20.261 0-36.571-16.311-36.571-36.571v-36.571c0-161.583-130.989-292.571-292.571-292.571s-292.571 130.989-292.571 292.571c0 161.583 130.989 292.571 292.571 292.571h47.286l-115.071-115.071c-3.307-3.309-5.352-7.879-5.352-12.927 0-10.097 8.184-18.283 18.28-18.288h128c5.050 0.001 9.621 2.049 12.93 5.358l201.142 201.142c3.311 3.31 5.359 7.883 5.359 12.934 0 0.098-0.001 0.197-0.002 0.295-0.082 4.981-2.155 9.478-5.458 12.728l-201.042 201.043c-3.309 3.309-7.881 5.357-12.93 5.357h-127.998c-10.097-0.004-18.28-8.19-18.28-18.288 0-5.048 2.045-9.618 5.352-12.927l115.071-115.071h-47.286c-242.374 0-438.857-196.483-438.857-438.857s196.483-438.857 438.857-438.857c242.374 0 438.857 196.483 438.857 438.857v36.571z" />
<glyph unicode="&#xe612;" glyph-name="arrowrefresh-1-s" data-tags="arrowrefresh-1-s" d="M548.571 73.143c-20.261 0-36.571 16.311-36.571 36.571v73.143c0 20.261 16.311 36.571 36.571 36.571h36.571c161.583 0 292.571 130.989 292.571 292.571s-130.989 292.571-292.571 292.571c-161.583 0-292.571-130.989-292.571-292.571v-47.286l115.071 115.071c3.309 3.307 7.879 5.352 12.927 5.352 10.097 0 18.283-8.184 18.288-18.28v-128c-0.001-5.050-2.049-9.621-5.358-12.93l-201.142-201.142c-3.31-3.311-7.883-5.359-12.934-5.359-0.098 0-0.197 0.001-0.295 0.002-4.981 0.082-9.478 2.155-12.728 5.458l-201.043 201.042c-3.309 3.309-5.357 7.881-5.357 12.93v127.998c0.004 10.097 8.19 18.28 18.288 18.28 5.048 0 9.618-2.045 12.927-5.352l115.071-115.071v47.286c0 242.374 196.483 438.857 438.857 438.857s438.857-196.483 438.857-438.857c0-242.374-196.483-438.857-438.857-438.857h-36.571z" />
<glyph unicode="&#xe613;" glyph-name="arrowrefresh-1-w" data-tags="arrowrefresh-1-w" d="M73.143 475.429c0 20.261 16.311 36.571 36.571 36.571h73.143c20.261 0 36.571-16.311 36.571-36.571v-36.571c0-161.583 130.989-292.571 292.571-292.571s292.571 130.989 292.571 292.571c0 161.583-130.989 292.571-292.571 292.571h-47.286l115.071-115.071c3.307-3.309 5.352-7.879 5.352-12.927 0-10.097-8.184-18.283-18.28-18.288h-128c-5.050 0.001-9.621 2.049-12.93 5.358l-201.142 201.142c-3.311 3.31-5.359 7.883-5.359 12.934 0 0.098 0.001 0.197 0.002 0.295 0.082 4.981 2.155 9.478 5.458 12.728l201.042 201.043c3.309 3.309 7.881 5.357 12.93 5.357h127.998c10.097-0.004 18.28-8.19 18.28-18.288 0-5.048-2.045-9.618-5.352-12.927l-115.071-115.071h47.286c242.374 0 438.857-196.483 438.857-438.857s-196.483-438.857-438.857-438.857c-242.374 0-438.857 196.483-438.857 438.857v36.571z" />
<glyph unicode="&#xe614;" glyph-name="arrow-2-n-s" data-tags="arrow-2-n-s" d="M804.571 731.429c-0.001 4.849-1.928 9.5-5.357 12.929l-274.286 274.286c-7.141 7.138-18.716 7.138-25.857 0l-274.286-274.286c-3.429-3.429-5.356-8.079-5.357-12.929v-128c0.006-16.286 19.694-24.441 31.214-12.929l188.214 188.214v-533.429l-188.214 188.214c-11.52 11.512-31.208 3.357-31.214-12.929v-128c0.001-4.849 1.928-9.5 5.357-12.929l274.286-274.286c7.141-7.138 18.716-7.138 25.857 0l274.286 274.286c3.429 3.429 5.356 8.079 5.357 12.929v128c-0.006 16.286-19.694 24.44-31.214 12.929l-188.214-188.214v533.429l188.214-188.214c11.52-11.512 31.208-3.357 31.214 12.929z" />
<glyph unicode="&#xe615;" glyph-name="arrow-2-ne-sw" data-tags="arrow-2-ne-sw" d="M471.452 877.714c-4.851 0-9.502-1.929-12.932-5.359l-90.598-90.527c-11.515-11.524-3.358-31.218 12.932-31.223h266.292l-373.752-373.752v266.292c-0.006 16.291-19.7 24.447-31.223 12.932l-90.527-90.527c-3.429-3.431-5.359-8.081-5.359-12.932v-388.042c0.002-10.1 8.191-18.289 18.291-18.291h388.042c4.851 0 9.502 1.93 12.932 5.359l90.527 90.527c11.515 11.524 3.358 31.218-12.932 31.223h-266.292l373.752 373.752v-266.292c0.006-16.291 19.7-24.447 31.223-12.932l90.527 90.598c3.429 3.431 5.359 8.081 5.359 12.932v387.971c-0.002 10.1-8.191 18.289-18.291 18.291z" />
<glyph unicode="&#xe616;" glyph-name="arrow-2-e-w" data-tags="arrow-2-e-w" d="M292.571 804.571c-4.849-0.001-9.5-1.928-12.929-5.357l-274.286-274.286c-7.138-7.141-7.138-18.716 0-25.857l274.286-274.286c3.429-3.429 8.079-5.356 12.929-5.357h128c16.286 0.006 24.441 19.694 12.929 31.214l-188.214 188.214h533.429l-188.214-188.214c-11.512-11.52-3.357-31.208 12.929-31.214h128c4.849 0.001 9.5 1.928 12.929 5.357l274.286 274.286c7.138 7.141 7.138 18.716 0 25.857l-274.286 274.286c-3.429 3.429-8.079 5.356-12.929 5.357h-128c-16.286-0.006-24.44-19.694-12.929-31.214l188.214-188.214h-533.429l188.214 188.214c11.512 11.52 3.357 31.208-12.929 31.214z" />
<glyph unicode="&#xe617;" glyph-name="arrow-2-se-nw" data-tags="arrow-2-se-nw" d="M877.714 552.548c0 4.851-1.93 9.502-5.359 12.932l-90.527 90.598c-11.524 11.515-31.218 3.358-31.223-12.932v-266.292l-373.752 373.752h266.292c16.291 0.006 24.447 19.7 12.932 31.223l-90.527 90.527c-3.431 3.429-8.081 5.359-12.932 5.359h-388.042c-10.1-0.002-18.289-8.191-18.291-18.291v-388.042c0-4.851 1.93-9.502 5.359-12.932l90.527-90.527c11.524-11.515 31.218-3.358 31.223 12.932v266.292l373.752-373.752h-266.292c-16.291-0.006-24.447-19.7-12.932-31.223l90.598-90.527c3.431-3.429 8.081-5.359 12.932-5.359h387.971c10.1 0.002 18.289 8.191 18.291 18.291z" />
<glyph unicode="&#xe618;" glyph-name="arrow-4" data-tags="arrow-4" d="M511.714 1024c-4.996-0.082-9.493-2.155-12.743-5.458l-182.757-182.756c-3.307-3.309-5.352-7.879-5.352-12.927 0-10.097 8.184-18.283 18.28-18.288h109.715v-219.429h-219.429v109.714c-0.004 10.097-8.19 18.28-18.288 18.28-5.048 0-9.618-2.045-12.927-5.352l-182.857-182.857c-3.308-3.309-5.354-7.88-5.354-12.929s2.046-9.619 5.354-12.929l182.857-182.857c3.309-3.307 7.879-5.352 12.927-5.352 10.097 0 18.283 8.184 18.288 18.28v109.715h219.429v-219.429h-109.714c-10.097-0.004-18.28-8.19-18.28-18.288 0-5.048 2.045-9.618 5.352-12.927l182.857-182.857c3.309-3.308 7.88-5.354 12.929-5.354s9.619 2.046 12.929 5.354l182.857 182.857c3.307 3.309 5.352 7.879 5.352 12.927 0 10.097-8.184 18.283-18.28 18.288h-109.715v219.429h219.429v-109.714c0.004-10.097 8.19-18.28 18.288-18.28 5.048 0 9.618 2.045 12.927 5.352l182.857 182.857c3.308 3.309 5.354 7.88 5.354 12.929s-2.046 9.619-5.354 12.929l-182.857 182.857c-3.309 3.307-7.879 5.352-12.927 5.352-10.097 0-18.283-8.184-18.288-18.28v-109.715h-219.429v219.429h109.714c10.097 0.004 18.28 8.19 18.28 18.288 0 5.048-2.045 9.618-5.352 12.927l-182.857 182.857c-3.31 3.311-7.883 5.359-12.934 5.359-0.098 0-0.197-0.001-0.295-0.002z" />
<glyph unicode="&#xe619;" glyph-name="arrow-4-diag" data-tags="arrow-4-diag" d="M18.286 1024c-10.099-0.001-18.285-8.187-18.286-18.286v-310.857c0.004-10.097 8.19-18.28 18.288-18.28 5.048 0 9.618 2.045 12.927 5.352l96.786 96.786 266.714-266.714-266.714-266.714-96.786 96.786c-3.309 3.307-7.879 5.352-12.927 5.352-10.097 0-18.283-8.184-18.288-18.28v-310.858c0.001-10.099 8.187-18.285 18.286-18.286h310.857c10.097 0.004 18.28 8.19 18.28 18.288 0 5.048-2.045 9.618-5.352 12.927l-96.786 96.786 266.714 266.714 266.714-266.714-96.786-96.786c-3.307-3.309-5.352-7.879-5.352-12.927 0-10.097 8.184-18.283 18.28-18.288h310.858c10.099 0.001 18.285 8.187 18.286 18.286v310.857c-0.004 10.097-8.19 18.28-18.288 18.28-5.048 0-9.618-2.045-12.927-5.352l-96.786-96.786-266.786 266.786 263.429 266.786 100.357-97.143c3.286-3.181 7.77-5.141 12.712-5.141 10.099 0 18.286 8.186 18.288 18.284v310.857c-0.001 10.099-8.187 18.285-18.286 18.286h-310.857c-10.097-0.004-18.28-8.19-18.28-18.288 0-5.048 2.045-9.618 5.352-12.927l96.786-96.786-266.714-266.714-266.714 266.714 96.786 96.786c3.307 3.309 5.352 7.879 5.352 12.927 0 10.097-8.184 18.283-18.28 18.288h-310.858z" />
<glyph unicode="&#xe61a;" glyph-name="arrowthick-1-n" data-tags="arrowthick-1-n" d="M804.571 530.286c0-10.13-8.155-18.286-18.286-18.286h-128v-329.143c0-20.261-16.311-36.571-36.571-36.571h-219.429c-20.261 0-36.571 16.311-36.571 36.571v329.143h-128c-10.13 0-18.286 8.155-18.286 18.286v19.214h0.216c0.238 4.497 1.942 8.8 5.143 12l274.286 274.286c7.141 7.138 18.716 7.138 25.857 0l274.284-274.286c3.199-3.2 4.904-7.503 5.143-12h0.216v-19.214z" />
<glyph unicode="&#xe61b;" glyph-name="arrowthick-1-ne" data-tags="arrowthick-1-ne" d="M372.403 786.161c-7.163-7.163-7.163-18.697 0-25.86l90.51-90.51-232.739-232.739c-14.326-14.326-14.326-37.393 0-51.72l155.159-155.159c14.326-14.326 37.393-14.326 51.72 0l232.739 232.739 90.51-90.51c7.163-7.163 18.697-7.163 25.86 0l13.586 13.586-0.154 0.154c3.012 3.348 4.849 7.596 4.849 12.122v387.899c-0.002 10.097-8.187 18.282-18.284 18.284l-387.897-0.001c-4.525-0.001-8.773-1.838-12.122-4.849l-0.154 0.154-13.586-13.586z" />
<glyph unicode="&#xe61c;" glyph-name="arrowthick-1-e" data-tags="arrowthick-1-e" d="M530.286 804.571c-10.13 0-18.286-8.155-18.286-18.286v-128h-329.143c-20.261 0-36.571-16.311-36.571-36.571v-219.429c0-20.261 16.311-36.571 36.571-36.571h329.143v-128c0-10.13 8.155-18.286 18.286-18.286h19.214v0.214c4.497 0.238 8.8 1.942 12 5.143l274.286 274.286c7.138 7.141 7.138 18.716 0 25.857l-274.286 274.286c-3.2 3.199-7.503 4.904-12 5.143v0.214h-19.214z" />
<glyph unicode="&#xe61d;" glyph-name="arrowthick-1-se" data-tags="arrowthick-1-se" d="M786.159 651.471c-7.163 7.163-18.697 7.163-25.86 0l-90.51-90.51-232.739 232.739c-14.326 14.326-37.393 14.326-51.72 0l-155.159-155.159c-14.326-14.326-14.326-37.393 0-51.72l232.739-232.739-90.51-90.51c-7.163-7.163-7.163-18.697 0-25.86l13.586-13.586 0.154 0.154c3.348-3.012 7.596-4.849 12.122-4.849h387.899c10.097 0.002 18.282 8.187 18.284 18.284l-0.001 387.897c-0.001 4.525-1.838 8.773-4.849 12.122l0.154 0.154-13.586 13.586z" />
<glyph unicode="&#xe61e;" glyph-name="arrowthick-1-s" data-tags="arrowthick-1-s" d="M804.571 493.711c0 10.13-8.155 18.286-18.286 18.286h-128v329.143c0 20.261-16.311 36.571-36.571 36.571h-219.429c-20.261 0-36.571-16.311-36.571-36.571v-329.143h-128c-10.13 0-18.286-8.155-18.286-18.286v-19.214h0.216c0.238-4.497 1.942-8.8 5.143-12l274.286-274.286c7.141-7.138 18.716-7.138 25.857 0l274.284 274.286c3.199 3.2 4.904 7.503 5.143 12h0.216v19.214z" />
<glyph unicode="&#xe61f;" glyph-name="arrowthick-1-sw" data-tags="arrowthick-1-sw" d="M651.47 237.714c7.163 7.163 7.163 18.697 0 25.86l-90.51 90.51 232.739 232.739c14.326 14.326 14.326 37.393 0 51.72l-155.159 155.159c-14.326 14.326-37.393 14.326-51.72 0l-232.739-232.739-90.51 90.51c-7.163 7.163-18.697 7.163-25.86 0l-13.587-13.586 0.153-0.154c-3.012-3.348-4.849-7.596-4.849-12.122v-387.899c0.002-10.097 8.187-18.282 18.284-18.284l387.897 0.001c4.525 0.001 8.773 1.838 12.122 4.849l0.154-0.154 13.586 13.586z" />
<glyph unicode="&#xe620;" glyph-name="arrowthick-1-w" data-tags="arrowthick-1-w" d="M493.711 804.571c10.13 0 18.286-8.155 18.286-18.286v-128h329.143c20.261 0 36.571-16.311 36.571-36.571v-219.429c0-20.261-16.311-36.571-36.571-36.571h-329.143v-128c0-10.13-8.155-18.286-18.286-18.286h-19.214v0.216c-4.497 0.238-8.8 1.942-12 5.143l-274.286 274.286c-7.138 7.141-7.138 18.716 0 25.857l274.286 274.284c3.2 3.199 7.503 4.904 12 5.143v0.214h19.214z" />
<glyph unicode="&#xe621;" glyph-name="arrowthick-1-nw" data-tags="arrowthick-1-nw" d="M651.47 786.161c7.163-7.163 7.163-18.697 0-25.86l-90.51-90.51 232.739-232.739c14.326-14.326 14.326-37.393 0-51.72l-155.159-155.159c-14.326-14.326-37.393-14.326-51.72 0l-232.739 232.739-90.51-90.51c-7.163-7.163-18.697-7.163-25.86 0l-13.587 13.586 0.153 0.154c-3.012 3.348-4.849 7.596-4.849 12.122v387.899c0.002 10.097 8.187 18.282 18.284 18.284l387.897-0.001c4.525-0.001 8.773-1.838 12.122-4.849l0.154 0.154 13.586-13.586z" />
<glyph unicode="&#xe622;" glyph-name="arrowthickstop-1-n" data-tags="arrowthickstop-1-n" d="M877.714 841.143c0-20.261-16.311-36.571-36.571-36.571h-658.286c-20.261 0-36.571 16.311-36.571 36.571v73.143c0 20.261 16.311 36.571 36.571 36.571h658.286c20.261 0 36.571-16.311 36.571-36.571v-73.143zM804.571 457.143c0-10.13-8.155-18.286-18.286-18.286h-128v-329.143c0-20.261-16.311-36.571-36.571-36.571h-219.429c-20.261 0-36.571 16.311-36.571 36.571v329.143h-128c-10.13 0-18.286 8.155-18.286 18.286v19.214h0.216c0.238 4.497 1.942 8.8 5.143 12l274.286 274.286c7.141 7.138 18.716 7.138 25.857 0l274.286-274.286c3.197-3.2 4.904-7.503 5.143-12h0.213v-19.214z" />
<glyph unicode="&#xe623;" glyph-name="arrowthickstop-1-e" data-tags="arrowthickstop-1-e" d="M841.143 877.714c-20.261 0-36.571-16.311-36.571-36.571v-658.286c0-20.261 16.311-36.571 36.571-36.571h73.143c20.261 0 36.571 16.311 36.571 36.571v658.286c0 20.261-16.311 36.571-36.571 36.571h-73.143zM457.143 804.571c-10.13 0-18.286-8.155-18.286-18.286v-128h-329.143c-20.261 0-36.571-16.311-36.571-36.571v-219.429c0-20.261 16.311-36.571 36.571-36.571h329.143v-128c0-10.13 8.155-18.286 18.286-18.286h19.214v0.214c4.497 0.238 8.8 1.942 12 5.143l274.286 274.286c7.138 7.141 7.138 18.716 0 25.857l-274.286 274.286c-3.2 3.198-7.503 4.904-12 5.143v0.214h-19.214z" />
<glyph unicode="&#xe624;" glyph-name="arrowthickstop-1-s" data-tags="arrowthickstop-1-s" d="M877.714 182.857c0 20.261-16.311 36.571-36.571 36.571h-658.286c-20.261 0-36.571-16.311-36.571-36.571v-73.143c0-20.261 16.311-36.571 36.571-36.571h658.286c20.261 0 36.571 16.311 36.571 36.571v73.143zM804.571 566.857c0 10.13-8.155 18.286-18.286 18.286h-128v329.143c0 20.261-16.311 36.571-36.571 36.571h-219.429c-20.261 0-36.571-16.311-36.571-36.571v-329.143h-128c-10.13 0-18.286-8.155-18.286-18.286v-19.214h0.216c0.238-4.497 1.942-8.8 5.143-12l274.286-274.286c7.141-7.138 18.716-7.138 25.857 0l274.286 274.286c3.197 3.2 4.904 7.503 5.143 12h0.213v19.214z" />
<glyph unicode="&#xe625;" glyph-name="arrowthickstop-1-w" data-tags="arrowthickstop-1-w" d="M182.857 877.714c20.261 0 36.571-16.311 36.571-36.571v-658.286c0-20.261-16.311-36.571-36.571-36.571h-73.143c-20.261 0-36.571 16.311-36.571 36.571v658.286c0 20.261 16.311 36.571 36.571 36.571h73.143zM566.857 804.571c10.13 0 18.286-8.155 18.286-18.286v-128h329.143c20.261 0 36.571-16.311 36.571-36.571v-219.429c0-20.261-16.311-36.571-36.571-36.571h-329.143v-128c0-10.13-8.155-18.286-18.286-18.286h-19.214v0.216c-4.497 0.238-8.8 1.942-12 5.143l-274.286 274.286c-7.138 7.141-7.138 18.716 0 25.857l274.286 274.286c3.2 3.198 7.503 4.904 12 5.143v0.213h19.214z" />
<glyph unicode="&#xe626;" glyph-name="arrowreturnthick-1-n" data-tags="arrowreturnthick-1-n" d="M950.857 603.429c0-10.13-8.155-18.286-18.286-18.286h-128v-36.571c0-262.572-212.857-475.429-475.429-475.429 0 0 0 0 0 0h-219.429c-20.261 0-36.571 16.311-36.571 36.571v219.429c0 20.261 16.311 36.571 36.571 36.571h219.429c0 0 0 0 0 0 100.989 0 182.857 81.868 182.857 182.857 0 0 0 0 0 0v36.571h-128c-10.13 0-18.286 8.155-18.286 18.286v19.214h0.216c0.238 4.497 1.942 8.8 5.143 12l274.286 274.286c7.141 7.138 18.716 7.138 25.857 0l274.286-274.286c3.197-3.2 4.904-7.503 5.143-12h0.216v-19.214z" />
<glyph unicode="&#xe627;" glyph-name="arrowreturnthick-1-e" data-tags="arrowreturnthick-1-e" d="M603.429 950.857c-10.13 0-18.286-8.155-18.286-18.286v-128h-36.571c-262.572 0-475.429-212.857-475.429-475.429v-219.429c0-20.261 16.311-36.571 36.571-36.571h219.429c20.261 0 36.571 16.311 36.571 36.571v219.429c0 100.989 81.868 182.857 182.857 182.857h36.571v-128c0-10.13 8.155-18.286 18.286-18.286h19.214v0.214c4.497 0.238 8.8 1.942 12 5.143l274.286 274.286c7.138 7.141 7.138 18.716 0 25.857l-274.286 274.286c-3.2 3.198-7.503 4.904-12 5.143v0.214h-19.214z" />
<glyph unicode="&#xe628;" glyph-name="arrowreturnthick-1-s" data-tags="arrowreturnthick-1-s" d="M73.146 420.568c0 10.13 8.155 18.286 18.286 18.286h128v36.571c0 0 0 0 0 0 0 262.572 212.857 475.429 475.429 475.429 0 0 0 0 0 0h219.429c20.261 0 36.571-16.311 36.571-36.571v-219.429c0-20.261-16.311-36.571-36.571-36.571h-219.429c-100.989 0-182.857-81.868-182.857-182.857v-36.571h128c10.13 0 18.286-8.155 18.286-18.286v-19.214h-0.216c-0.238-4.497-1.942-8.8-5.143-12l-274.286-274.286c-7.141-7.138-18.716-7.138-25.857 0l-274.286 274.286c-3.197 3.2-4.904 7.503-5.143 12h-0.216v19.214z" />
<glyph unicode="&#xe629;" glyph-name="arrowreturnthick-1-w" data-tags="arrowreturnthick-1-w" d="M420.568 950.857c10.13 0 18.286-8.155 18.286-18.286v-128h36.571c262.572 0 475.429-212.857 475.429-475.429v-219.429c0-20.261-16.311-36.571-36.571-36.571h-219.429c-20.261 0-36.571 16.311-36.571 36.571v219.429c0 100.989-81.868 182.857-182.857 182.857h-36.571v-128c0-10.13-8.155-18.286-18.286-18.286h-19.214v0.216c-4.497 0.238-8.8 1.942-12 5.143l-274.286 274.286c-7.138 7.141-7.138 18.716 0 25.857l274.286 274.286c3.2 3.198 7.503 4.904 12 5.143v0.214h19.214z" />
<glyph unicode="&#xe62a;" glyph-name="arrowthick-2-n-s" data-tags="arrowthick-2-n-s" d="M512 987.429c-4.679 0-9.358-1.788-12.929-5.357l-274.286-274.286c-3.201-3.2-4.905-7.503-5.143-12h-0.214v-19.214c0-10.13 8.155-18.286 18.286-18.286h128v-292.571h-128c-10.13 0-18.286-8.155-18.286-18.286v-19.214h0.214c0.238-4.497 1.942-8.8 5.143-12l274.286-274.286c7.141-7.138 18.716-7.138 25.857 0l274.286 274.286c3.197 3.2 4.904 7.503 5.143 12h0.216l-0.002 0.929v18.286c0 10.13-8.155 18.286-18.286 18.286h-128v292.571h128c10.13 0 18.286 8.155 18.286 18.286v19.214h-0.216c-0.238 4.497-1.945 8.8-5.143 12l-274.286 274.286c-3.569 3.569-8.248 5.357-12.927 5.357z" />
<glyph unicode="&#xe62b;" glyph-name="arrowthick-2-ne-sw" data-tags="arrowthick-2-ne-sw" d="M544.571 950.714c-4.526 0-8.795-1.846-12.143-4.857l-0.143 0.214-0.643-0.714-12.929-12.929c-7.163-7.163-7.163-18.694 0-25.857l90.5-90.5-401.429-401.429-90.5 90.571c-7.163 7.163-18.694 7.163-25.857 0l-12.929-12.929-0.643-0.714 0.143-0.143c-3.012-3.348-4.858-7.546-4.857-12.072v-387.929c0.002-10.096 8.189-18.284 18.286-18.286h387.929c4.524 0.002 8.723 1.846 12.071 4.857l0.143-0.143 0.714 0.643 12.929 12.928c7.163 7.163 7.163 18.694 0 25.857l-90.571 90.5 401.429 401.429 90.5-90.5c7.163-7.163 18.694-7.163 25.857 0l13.571 13.571-0.143 0.143c3.011 3.349 4.855 7.619 4.857 12.143v387.857c-0.002 10.097-8.189 18.284-18.286 18.286z" />
<glyph unicode="&#xe62c;" glyph-name="arrowthick-2-e-w" data-tags="arrowthick-2-e-w" d="M328.214 804.571v-0.214c-4.497-0.239-8.8-1.945-12-5.143l-274.286-274.286c-7.138-7.141-7.138-18.716 0-25.857l274.286-274.286c3.2-3.2 7.503-4.905 12-5.143v-0.216l0.929 0.002h18.286c10.13 0 18.286 8.155 18.286 18.286v128h292.571v-128c0-10.13 8.155-18.286 18.286-18.286h19.214v0.216c4.497 0.238 8.8 1.942 12 5.143l274.286 274.286c7.138 7.141 7.138 18.716 0 25.857l-274.286 274.286c-3.2 3.196-7.503 4.903-12 5.141v0.214h-19.214c-10.13 0-18.286-8.155-18.286-18.286v-128h-292.571v128c0 10.13-8.155 18.286-18.286 18.286h-18.286z" />
<glyph unicode="&#xe62d;" glyph-name="arrowthick-2-se-nw" data-tags="arrowthick-2-se-nw" d="M91.429 950.714c-10.097-0.002-18.284-8.19-18.286-18.286v-387.857c0-4.526 1.845-8.795 4.857-12.143l-0.143-0.143 13.572-13.572c7.163-7.163 18.694-7.163 25.857 0l90.5 90.5 401.429-401.429-90.5-90.5c-7.163-7.163-7.163-18.694 0-25.857l13.571-13.572 0.143 0.143c3.348-3.012 7.617-4.857 12.143-4.857h387.857c10.097 0.002 18.284 8.189 18.286 18.286v387.929c-0.002 4.524-1.846 8.723-4.857 12.071l0.143 0.143-0.643 0.714-12.929 12.929c-7.163 7.163-18.694 7.163-25.857 0l-90.5-90.571-401.429 401.429 90.571 90.5c7.163 7.163 7.163 18.694 0 25.857l-12.929 12.929-0.714 0.643-0.143-0.143c-3.349 3.011-7.548 4.856-12.072 4.857z" />
<glyph unicode="&#xe62e;" glyph-name="circle-arrow-n" data-tags="circle-arrow-n" d="M0 512c0-282.77 229.23-512 512-512s512 229.23 512 512c0 282.77-229.23 512-512 512s-512-229.23-512-512zM219.429 384v128c0.001 4.849 1.928 9.5 5.357 12.929l274.286 274.286c7.141 7.138 18.716 7.138 25.857 0l274.286-274.286c3.429-3.429 5.356-8.079 5.357-12.929v-128c-0.006-16.286-19.694-24.44-31.214-12.929l-188.214 188.214v-303.286c0-20.261-16.311-36.571-36.571-36.571h-73.143c-20.261 0-36.571 16.311-36.571 36.571v303.286l-188.214-188.214c-11.52-11.512-31.208-3.357-31.214 12.929z" />
<glyph unicode="&#xe62f;" glyph-name="circle-arrow-e" data-tags="circle-arrow-e" d="M512 1024c-282.77 0-512-229.23-512-512s229.23-512 512-512c282.77 0 512 229.23 512 512s-229.23 512-512 512zM384 804.571h128c4.849-0.001 9.5-1.928 12.929-5.357l274.286-274.286c7.138-7.141 7.138-18.716 0-25.857l-274.286-274.286c-3.429-3.429-8.079-5.356-12.929-5.357h-128c-16.286 0.006-24.44 19.694-12.929 31.214l188.214 188.214h-303.286c-20.261 0-36.571 16.311-36.571 36.571v73.143c0 20.261 16.311 36.571 36.571 36.571h303.286l-188.214 188.214c-11.512 11.52-3.357 31.208 12.929 31.214z" />
<glyph unicode="&#xe630;" glyph-name="circle-arrow-s" data-tags="circle-arrow-s" d="M1024 512c0 282.77-229.23 512-512 512s-512-229.23-512-512c0-282.77 229.23-512 512-512s512 229.23 512 512zM804.571 640v-128c-0.001-4.849-1.928-9.5-5.357-12.929l-274.286-274.286c-7.141-7.138-18.716-7.138-25.857 0l-274.286 274.286c-3.429 3.429-5.356 8.079-5.357 12.929v128c0.006 16.286 19.694 24.44 31.214 12.929l188.214-188.214v303.286c0 20.261 16.311 36.571 36.571 36.571h73.143c20.261 0 36.571-16.311 36.571-36.571v-303.286l188.214 188.214c11.52 11.512 31.208 3.357 31.214-12.929z" />
<glyph unicode="&#xe631;" glyph-name="circle-arrow-w" data-tags="circle-arrow-w" d="M512 0c282.77 0 512 229.23 512 512s-229.23 512-512 512c-282.77 0-512-229.23-512-512s229.23-512 512-512zM640 219.429h-128c-4.849 0.001-9.5 1.928-12.929 5.357l-274.286 274.286c-7.138 7.141-7.138 18.716 0 25.857l274.286 274.286c3.429 3.429 8.079 5.356 12.929 5.357h128c16.286-0.006 24.44-19.694 12.929-31.214l-188.214-188.214h303.286c20.261 0 36.571-16.311 36.571-36.571v-73.143c0-20.261-16.311-36.571-36.571-36.571h-303.286l188.214-188.214c11.512-11.52 3.357-31.208-12.929-31.214z" />
<glyph unicode="&#xe632;" glyph-name="circle-b-arrow-n" data-tags="circle-b-arrow-n" d="M0 512c0-282.77 229.23-512 512-512s512 229.23 512 512c0 282.77-229.23 512-512 512s-512-229.23-512-512zM109.714 512c0 222.176 180.109 402.286 402.286 402.286s402.286-180.109 402.286-402.286c0-222.176-180.109-402.286-402.286-402.286s-402.286 180.109-402.286 402.286zM804.571 512.004c-0.001 4.849-1.928 9.5-5.357 12.929l-274.286 274.286c-7.141 7.138-18.716 7.138-25.857 0l-274.286-274.286c-3.429-3.429-5.356-8.079-5.357-12.929v-128c0.006-16.286 19.694-24.441 31.214-12.929l188.214 188.214v-303.289c0-20.261 16.311-36.571 36.571-36.571h73.143c20.261 0 36.571 16.311 36.571 36.571v303.289l188.214-188.214c11.52-11.512 31.208-3.357 31.214 12.929z" />
<glyph unicode="&#xe633;" glyph-name="circle-b-arrow-e" data-tags="circle-b-arrow-e" d="M512 1024c-282.77 0-512-229.23-512-512s229.23-512 512-512c282.77 0 512 229.23 512 512s-229.23 512-512 512zM512 914.286c222.176 0 402.286-180.109 402.286-402.286s-180.109-402.286-402.286-402.286c-222.176 0-402.286 180.109-402.286 402.286s180.109 402.286 402.286 402.286zM512.004 219.429c4.849 0.001 9.5 1.928 12.929 5.357l274.286 274.286c7.138 7.141 7.138 18.716 0 25.857l-274.286 274.286c-3.429 3.429-8.079 5.356-12.929 5.357h-128c-16.286-0.006-24.441-19.694-12.929-31.214l188.214-188.214h-303.289c-20.261 0-36.571-16.311-36.571-36.571v-73.143c0-20.261 16.311-36.571 36.571-36.571h303.289l-188.214-188.214c-11.512-11.52-3.357-31.208 12.929-31.214z" />
<glyph unicode="&#xe634;" glyph-name="circle-b-arrow-s" data-tags="circle-b-arrow-s" d="M1024 512c0 282.77-229.23 512-512 512s-512-229.23-512-512c0-282.77 229.23-512 512-512s512 229.23 512 512zM914.286 512c0-222.176-180.109-402.286-402.286-402.286s-402.286 180.109-402.286 402.286c0 222.176 180.109 402.286 402.286 402.286s402.286-180.109 402.286-402.286zM219.429 511.996c0.001-4.849 1.928-9.5 5.357-12.929l274.286-274.286c7.141-7.138 18.716-7.138 25.857 0l274.286 274.286c3.429 3.429 5.356 8.079 5.357 12.929v128c-0.006 16.286-19.694 24.44-31.214 12.929l-188.214-188.214v303.289c0 20.261-16.311 36.571-36.571 36.571h-73.143c-20.261 0-36.571-16.311-36.571-36.571v-303.289l-188.214 188.214c-11.52 11.512-31.208 3.357-31.214-12.929z" />
<glyph unicode="&#xe635;" glyph-name="circle-b-arrow-w" data-tags="circle-b-arrow-w" d="M512 0c282.77 0 512 229.23 512 512s-229.23 512-512 512c-282.77 0-512-229.23-512-512s229.23-512 512-512zM512 109.714c-222.176 0-402.286 180.109-402.286 402.286s180.109 402.286 402.286 402.286c222.176 0 402.286-180.109 402.286-402.286s-180.109-402.286-402.286-402.286zM511.996 804.571c-4.849-0.001-9.5-1.928-12.929-5.357l-274.286-274.286c-7.138-7.141-7.138-18.716 0-25.857l274.286-274.286c3.429-3.429 8.079-5.356 12.929-5.357h128c16.286 0.006 24.441 19.694 12.929 31.214l-188.214 188.214h303.289c20.261 0 36.571 16.311 36.571 36.571v73.143c0 20.261-16.311 36.571-36.571 36.571h-303.289l188.214 188.214c11.512 11.52 3.357 31.208-12.929 31.214z" />
<glyph unicode="&#xe636;" glyph-name="carat-1-n" data-tags="carat-1-n" d="M804.572 310.856c-0.004-10.097-8.19-18.28-18.288-18.28-5.048 0-9.618 2.045-12.927 5.352l-261.357 261.357-261.357-261.357c-3.309-3.307-7.879-5.352-12.927-5.352-10.097 0-18.283 8.184-18.288 18.28v128c0.001 5.050 2.049 9.621 5.358 12.93l274.285 274.285c3.309 3.308 7.88 5.354 12.929 5.354s9.619-2.046 12.929-5.354l274.286-274.286c3.309-3.309 5.357-7.881 5.357-12.93v-127.998z" />
<glyph unicode="&#xe637;" glyph-name="carat-1-ne" data-tags="carat-1-ne" d="M710.194 296.436c-3.309-3.306-7.879-5.351-12.926-5.351-10.098 0-18.284 8.184-18.288 18.281v369.615h-369.615c-10.097 0.004-18.281 8.19-18.281 18.288 0 5.047 2.045 9.617 5.351 12.926l90.51 90.51c3.309 3.308 7.88 5.354 12.929 5.354 0 0 0.001 0 0.001 0h387.899c10.097-0.002 18.282-8.187 18.284-18.284v-387.899c0 0 0-0.001 0-0.001 0-5.049-2.046-9.62-5.354-12.929l-90.51-90.51z" />
<glyph unicode="&#xe638;" glyph-name="carat-1-e" data-tags="carat-1-e" d="M310.857 804.571c-10.097-0.004-18.28-8.19-18.28-18.288 0-5.048 2.045-9.618 5.352-12.927l261.357-261.357-261.357-261.357c-3.307-3.309-5.352-7.879-5.352-12.927 0-10.097 8.184-18.283 18.28-18.288h128c5.050 0.001 9.621 2.049 12.93 5.358l274.285 274.285c3.308 3.309 5.354 7.88 5.354 12.929s-2.046 9.619-5.354 12.929l-274.286 274.286c-3.309 3.309-7.881 5.357-12.93 5.357h-127.998z" />
<glyph unicode="&#xe639;" glyph-name="carat-1-se" data-tags="carat-1-se" d="M710.195 727.564c-3.309 3.306-7.879 5.351-12.926 5.351-10.098 0-18.284-8.184-18.288-18.281v-369.615h-369.615c-10.097-0.004-18.281-8.19-18.281-18.288 0-5.047 2.045-9.617 5.351-12.926l90.51-90.51c3.309-3.308 7.88-5.354 12.929-5.354 0 0 0.001 0 0.001 0h387.899c10.097 0.002 18.282 8.187 18.284 18.284v387.899c0 0 0 0.001 0 0.001 0 5.049-2.046 9.62-5.354 12.929l-90.51 90.51z" />
<glyph unicode="&#xe63a;" glyph-name="carat-1-s" data-tags="carat-1-s" d="M804.572 713.144c-0.004 10.097-8.19 18.28-18.288 18.28-5.048 0-9.618-2.045-12.927-5.352l-261.357-261.357-261.357 261.357c-3.309 3.307-7.879 5.352-12.927 5.352-10.097 0-18.283-8.184-18.288-18.28v-128c0.001-5.050 2.049-9.621 5.358-12.93l274.285-274.285c3.309-3.308 7.88-5.354 12.929-5.354s9.619 2.046 12.929 5.354l274.286 274.286c3.309 3.309 5.357 7.881 5.357 12.93v127.998z" />
<glyph unicode="&#xe63b;" glyph-name="carat-1-sw" data-tags="carat-1-sw" d="M313.805 727.564c3.309 3.306 7.879 5.351 12.926 5.351 10.098 0 18.284-8.184 18.288-18.281v-369.615h369.615c10.097-0.004 18.281-8.19 18.281-18.288 0-5.047-2.045-9.617-5.351-12.926l-90.51-90.51c-3.309-3.308-7.88-5.354-12.929-5.354 0 0-0.001 0-0.001 0h-387.899c-10.097 0.002-18.282 8.187-18.284 18.284v387.899c0 0 0 0.001 0 0.001 0 5.049 2.046 9.62 5.354 12.929l90.51 90.51z" />
<glyph unicode="&#xe63c;" glyph-name="carat-1-w" data-tags="carat-1-w" d="M713.145 804.571c10.097-0.004 18.28-8.19 18.28-18.288 0-5.048-2.045-9.618-5.352-12.927l-261.357-261.357 261.357-261.357c3.307-3.309 5.352-7.879 5.352-12.927 0-10.097-8.184-18.283-18.28-18.288h-128c-5.050 0.001-9.621 2.049-12.93 5.358l-274.285 274.285c-3.308 3.309-5.354 7.88-5.354 12.929s2.046 9.619 5.354 12.929l274.286 274.286c3.309 3.309 7.881 5.357 12.93 5.357h127.998z" />
<glyph unicode="&#xe63d;" glyph-name="carat-1-nw" data-tags="carat-1-nw" d="M313.805 296.436c3.309-3.306 7.879-5.351 12.926-5.351 10.098 0 18.284 8.184 18.288 18.281v369.615h369.615c10.097 0.004 18.281 8.19 18.281 18.288 0 5.047-2.045 9.617-5.351 12.926l-90.51 90.51c-3.309 3.308-7.88 5.354-12.929 5.354 0 0-0.001 0-0.001 0h-387.899c-10.097-0.002-18.282-8.187-18.284-18.284v-387.899c0 0 0-0.001 0-0.001 0-5.049 2.046-9.62 5.354-12.929l90.51-90.51z" />
<glyph unicode="&#xe63e;" glyph-name="carat-2-n" data-tags="carat-2-n" d="M804.571 164.571c-0.004-10.097-8.19-18.28-18.288-18.28-5.048 0-9.618 2.045-12.927 5.352l-261.357 261.357-261.357-261.357c-3.309-3.307-7.879-5.352-12.927-5.352-10.097 0-18.283 8.184-18.288 18.28v128c0.001 5.050 2.049 9.621 5.358 12.93l274.285 274.285c3.309 3.308 7.88 5.354 12.929 5.354s9.619-2.046 12.929-5.354l274.286-274.286c3.309-3.309 5.357-7.881 5.357-12.93v-127.998zM804.571 457.142c-0.004-10.097-8.19-18.28-18.288-18.28-5.048 0-9.618 2.045-12.927 5.352l-261.357 261.357-261.357-261.357c-3.309-3.307-7.879-5.352-12.927-5.352-10.097 0-18.283 8.184-18.288 18.28v128c0.001 5.050 2.049 9.621 5.358 12.93l274.285 274.284c3.309 3.308 7.88 5.354 12.929 5.354s9.619-2.046 12.929-5.354l274.286-274.286c3.309-3.309 5.357-7.881 5.357-12.93v-127.998z" />
<glyph unicode="&#xe63f;" glyph-name="carat-2-e" data-tags="carat-2-e" d="M164.566 804.571c-10.097-0.004-18.28-8.19-18.28-18.288 0-5.048 2.045-9.618 5.352-12.927l261.357-261.357-261.357-261.357c-3.307-3.309-5.352-7.879-5.352-12.927 0-10.097 8.184-18.283 18.28-18.288h128c5.050 0.001 9.621 2.049 12.93 5.358l274.285 274.285c3.308 3.309 5.354 7.88 5.354 12.929s-2.046 9.619-5.354 12.929l-274.286 274.286c-3.309 3.309-7.881 5.357-12.93 5.357h-127.998zM457.146 804.571c-10.097-0.004-18.28-8.19-18.28-18.288 0-5.048 2.045-9.618 5.352-12.927l261.357-261.357-261.357-261.357c-3.307-3.309-5.352-7.879-5.352-12.927 0-10.097 8.184-18.283 18.28-18.288h128c5.050 0.001 9.621 2.049 12.93 5.358l274.284 274.285c3.308 3.309 5.354 7.88 5.354 12.929s-2.046 9.619-5.354 12.929l-274.286 274.286c-3.309 3.309-7.881 5.357-12.93 5.357h-127.998z" />
<glyph unicode="&#xe640;" glyph-name="carat-2-s" data-tags="carat-2-s" d="M804.571 859.429c-0.004 10.097-8.19 18.28-18.288 18.28-5.048 0-9.618-2.045-12.927-5.352l-261.357-261.357-261.357 261.357c-3.309 3.307-7.879 5.352-12.927 5.352-10.097 0-18.283-8.184-18.288-18.28v-128c0.001-5.050 2.049-9.621 5.358-12.93l274.285-274.285c3.309-3.308 7.88-5.354 12.929-5.354s9.619 2.046 12.929 5.354l274.286 274.286c3.309 3.309 5.357 7.881 5.357 12.93v127.998zM804.571 566.858c-0.004 10.097-8.19 18.28-18.288 18.28-5.048 0-9.618-2.045-12.927-5.352l-261.357-261.357-261.357 261.357c-3.309 3.307-7.879 5.352-12.927 5.352-10.097 0-18.283-8.184-18.288-18.28v-128c0.001-5.050 2.049-9.621 5.358-12.93l274.285-274.284c3.309-3.308 7.88-5.354 12.929-5.354s9.619 2.046 12.929 5.354l274.286 274.286c3.309 3.309 5.357 7.881 5.357 12.93v127.998z" />
<glyph unicode="&#xe641;" glyph-name="carat-2-w" data-tags="carat-2-w" d="M859.434 804.571c10.097-0.004 18.28-8.19 18.28-18.288 0-5.048-2.045-9.618-5.352-12.927l-261.357-261.357 261.357-261.357c3.307-3.309 5.352-7.879 5.352-12.927 0-10.097-8.184-18.283-18.28-18.288h-128c-5.050 0.001-9.621 2.049-12.93 5.358l-274.284 274.285c-3.308 3.309-5.354 7.88-5.354 12.929s2.046 9.619 5.354 12.929l274.286 274.286c3.309 3.309 7.881 5.357 12.93 5.357h127.998zM566.854 804.571c10.097-0.004 18.28-8.19 18.28-18.288 0-5.048-2.045-9.618-5.352-12.927l-261.357-261.357 261.357-261.357c3.307-3.309 5.352-7.879 5.352-12.927 0-10.097-8.184-18.283-18.28-18.288h-128c-5.050 0.001-9.621 2.049-12.93 5.358l-274.285 274.285c-3.308 3.309-5.354 7.88-5.354 12.929s2.046 9.619 5.354 12.929l274.286 274.286c3.309 3.309 7.881 5.357 12.93 5.357h127.998z" />
<glyph unicode="&#xe642;" glyph-name="carat-2-n-s" data-tags="carat-2-n-s" d="M219.429 566.856c0.004-10.097 8.19-18.28 18.288-18.28 5.048 0 9.618 2.045 12.927 5.352l261.357 261.357 261.357-261.357c3.309-3.307 7.879-5.352 12.927-5.352 10.097 0 18.283 8.184 18.288 18.28v128c-0.001 5.050-2.049 9.621-5.358 12.93l-274.285 274.285c-3.309 3.308-7.88 5.354-12.929 5.354s-9.619-2.046-12.929-5.354l-274.286-274.286c-3.309-3.309-5.357-7.881-5.357-12.93v-127.998zM219.429 457.144c0.004 10.097 8.19 18.28 18.288 18.28 5.048 0 9.618-2.045 12.927-5.352l261.357-261.357 261.357 261.357c3.309 3.307 7.879 5.352 12.927 5.352 10.097 0 18.283-8.184 18.288-18.28v-128c-0.001-5.050-2.049-9.621-5.358-12.93l-274.285-274.284c-3.309-3.308-7.88-5.354-12.929-5.354s-9.619 2.046-12.929 5.354l-274.286 274.286c-3.309 3.309-5.357 7.881-5.357 12.93v127.998z" />
<glyph unicode="&#xe643;" glyph-name="carat-2-e-w" data-tags="carat-2-e-w" d="M566.856 804.571c-10.097-0.004-18.28-8.19-18.28-18.288 0-5.048 2.045-9.618 5.352-12.927l261.357-261.357-261.357-261.357c-3.307-3.309-5.352-7.879-5.352-12.927 0-10.097 8.184-18.283 18.28-18.288h128c5.050 0.001 9.621 2.049 12.93 5.358l274.285 274.285c3.308 3.309 5.354 7.88 5.354 12.929s-2.046 9.619-5.354 12.929l-274.286 274.286c-3.309 3.309-7.881 5.357-12.93 5.357h-127.998zM457.144 804.571c10.097-0.004 18.28-8.19 18.28-18.288 0-5.048-2.045-9.618-5.352-12.927l-261.357-261.357 261.357-261.357c3.307-3.309 5.352-7.879 5.352-12.927 0-10.097-8.184-18.283-18.28-18.288h-128c-5.050 0.001-9.621 2.049-12.93 5.358l-274.284 274.285c-3.308 3.309-5.354 7.88-5.354 12.929s2.046 9.619 5.354 12.929l274.286 274.286c3.309 3.309 7.881 5.357 12.93 5.357h127.998z" />
<glyph unicode="&#xe644;" glyph-name="triangle-1-n" data-tags="triangle-1-n" d="M512 731.429c5.608-0.062 10.552-2.55 13.856-6.357l347.399-402.286c10.197-11.854 1.78-30.209-13.856-30.214h-694.798c-15.636 0.005-24.053 18.361-13.856 30.214l347.399 402.286c3.663 4.223 7.271 6.325 13.856 6.357z" />
<glyph unicode="&#xe645;" glyph-name="triangle-1-ne" data-tags="triangle-1-ne" d="M797.601 797.63c-4.13 4.039-9.542 7.279-14.721 6.913h-545.998c-16.060-1.206-23.297-20.706-11.914-32.097l547.464-547.478c11.391-11.384 30.89-4.146 32.097 11.914v546.026c0.408 5.744-2.157 9.902-6.928 14.722z" />
<glyph unicode="&#xe646;" glyph-name="triangle-1-e" data-tags="triangle-1-e" d="M731.429 512c-0.062 5.608-2.55 10.552-6.357 13.856l-402.286 347.399c-11.854 10.197-30.209 1.78-30.214-13.856v-694.798c0.005-15.636 18.361-24.053 30.214-13.856l402.286 347.399c4.223 3.663 6.325 7.271 6.357 13.856z" />
<glyph unicode="&#xe647;" glyph-name="triangle-1-se" data-tags="triangle-1-se" d="M797.63 226.399c4.039 4.13 7.279 9.542 6.913 14.721v545.998c-1.206 16.060-20.706 23.298-32.097 11.914l-547.478-547.464c-11.384-11.391-4.146-30.89 11.914-32.097h546.026c5.744-0.408 9.902 2.157 14.722 6.928z" />
<glyph unicode="&#xe648;" glyph-name="triangle-1-s" data-tags="triangle-1-s" d="M512 292.571c5.608 0.062 10.552 2.55 13.856 6.357l347.399 402.286c10.197 11.854 1.78 30.209-13.856 30.214h-694.798c-15.636-0.005-24.053-18.361-13.856-30.214l347.399-402.286c3.663-4.223 7.271-6.325 13.856-6.357z" />
<glyph unicode="&#xe649;" glyph-name="triangle-1-sw" data-tags="triangle-1-sw" d="M226.399 226.37c4.13-4.039 9.542-7.279 14.721-6.913h545.998c16.060 1.206 23.297 20.706 11.914 32.097l-547.464 547.478c-11.391 11.384-30.89 4.146-32.097-11.914v-546.026c-0.408-5.744 2.157-9.902 6.928-14.722z" />
<glyph unicode="&#xe64a;" glyph-name="triangle-1-w" data-tags="triangle-1-w" d="M292.571 512c0.062 5.608 2.55 10.552 6.357 13.856l402.286 347.399c11.854 10.197 30.209 1.78 30.214-13.856v-694.798c-0.005-15.636-18.361-24.053-30.214-13.856l-402.286 347.399c-4.223 3.663-6.325 7.271-6.357 13.856z" />
<glyph unicode="&#xe64b;" glyph-name="triangle-1-nw" data-tags="triangle-1-nw" d="M226.37 797.601c-4.039-4.13-7.279-9.542-6.913-14.721v-545.998c1.206-16.060 20.706-23.297 32.097-11.914l547.478 547.464c11.384 11.391 4.146 30.89-11.914 32.097h-546.026c-5.744 0.408-9.902-2.157-14.722-6.928z" />
<glyph unicode="&#xe64c;" glyph-name="triangle-1-n-stop" data-tags="triangle-1-n-stop" d="M877.714 768c0 20.261-16.311 36.571-36.571 36.571h-658.286c-20.261 0-36.571-16.311-36.571-36.571v-73.143c0-20.261 16.311-36.571 36.571-36.571h658.286c20.261 0 36.571 16.311 36.571 36.571v73.143zM512 658.286c-5.608-0.062-10.553-2.55-13.857-6.357l-347.429-402.286c-10.197-11.854-1.778-30.209 13.857-30.214h694.857c15.636 0.005 24.054 18.361 13.857 30.214l-347.429 402.286c-3.663 4.223-7.272 6.325-13.857 6.357z" />
<glyph unicode="&#xe64d;" glyph-name="triangle-1-e-stop" data-tags="triangle-1-e-stop" d="M768 146.286c20.261 0 36.571 16.311 36.571 36.571v658.286c0 20.261-16.311 36.571-36.571 36.571h-73.143c-20.261 0-36.571-16.311-36.571-36.571v-658.286c0-20.261 16.311-36.571 36.571-36.571h73.143zM658.286 512c-0.062 5.608-2.55 10.553-6.357 13.857l-402.286 347.429c-11.854 10.197-30.209 1.778-30.214-13.857v-694.857c0.005-15.636 18.361-24.054 30.214-13.857l402.286 347.429c4.223 3.663 6.325 7.272 6.357 13.857z" />
<glyph unicode="&#xe64e;" glyph-name="triangle-1-s-stop" data-tags="triangle-1-s-stop" d="M146.286 256c0-20.261 16.311-36.571 36.571-36.571h658.286c20.261 0 36.571 16.311 36.571 36.571v73.143c0 20.261-16.311 36.571-36.571 36.571h-658.286c-20.261 0-36.571-16.311-36.571-36.571v-73.143zM512 365.714c5.608 0.062 10.553 2.55 13.857 6.357l347.429 402.286c10.197 11.854 1.778 30.209-13.857 30.214h-694.857c-15.636-0.005-24.054-18.361-13.857-30.214l347.429-402.286c3.663-4.223 7.272-6.325 13.857-6.357z" />
<glyph unicode="&#xe64f;" glyph-name="triangle-1-w-stop" data-tags="triangle-1-w-stop" d="M256 877.714c-20.261 0-36.571-16.311-36.571-36.571v-658.286c0-20.261 16.311-36.571 36.571-36.571h73.143c20.261 0 36.571 16.311 36.571 36.571v658.286c0 20.261-16.311 36.571-36.571 36.571h-73.143zM365.714 512c0.062-5.608 2.55-10.553 6.357-13.857l402.286-347.429c11.854-10.197 30.209-1.778 30.214 13.857v694.857c-0.005 15.636-18.361 24.054-30.214 13.857l-402.286-347.429c-4.223-3.663-6.325-7.272-6.357-13.857z" />
<glyph unicode="&#xe650;" glyph-name="triangle-2-e" data-tags="triangle-2-e" d="M512 512c-0.062-5.608-2.55-10.552-6.357-13.856l-402.286-347.399c-11.854-10.197-30.209-1.78-30.214 13.856v694.798c0.005 15.636 18.361 24.053 30.214 13.856l402.286-347.399c4.223-3.663 6.325-7.271 6.357-13.856zM950.857 512c-0.062-5.608-2.55-10.552-6.357-13.856l-402.286-347.399c-11.854-10.197-30.209-1.78-30.214 13.856v694.798c0.005 15.636 18.361 24.053 30.214 13.856l402.286-347.399c4.223-3.663 6.325-7.271 6.357-13.856z" />
<glyph unicode="&#xe651;" glyph-name="triangle-2-w" data-tags="triangle-2-w" d="M512 512c0.062-5.608 2.55-10.552 6.357-13.856l402.286-347.399c11.854-10.197 30.209-1.78 30.214 13.856v694.798c-0.005 15.636-18.361 24.053-30.214 13.856l-402.286-347.399c-4.223-3.663-6.325-7.271-6.357-13.856zM73.143 512c0.062-5.608 2.55-10.552 6.357-13.856l402.286-347.399c11.854-10.197 30.209-1.78 30.214 13.856v694.798c-0.005 15.636-18.361 24.053-30.214 13.856l-402.286-347.399c-4.223-3.663-6.325-7.271-6.357-13.856z" />
<glyph unicode="&#xe652;" glyph-name="triangle-2-n-s" data-tags="triangle-2-n-s" d="M512 0c5.608 0.062 10.552 2.55 13.856 6.357l347.399 402.286c10.197 11.854 1.78 30.209-13.856 30.214h-694.798c-15.636-0.005-24.053-18.361-13.856-30.214l347.399-402.286c3.663-4.223 7.271-6.325 13.856-6.357zM512 1024c5.608-0.062 10.552-2.55 13.856-6.357l347.399-402.286c10.197-11.854 1.78-30.209-13.856-30.214h-694.798c-15.636 0.005-24.053 18.361-13.856 30.214l347.399 402.286c3.663 4.223 7.271 6.325 13.856 6.357z" />
<glyph unicode="&#xe653;" glyph-name="triangle-2-e-w" data-tags="triangle-2-e-w" d="M0 512c0.062-5.608 2.55-10.552 6.357-13.856l402.286-347.399c11.854-10.197 30.209-1.78 30.214 13.856v694.798c-0.005 15.636-18.361 24.053-30.214 13.856l-402.286-347.399c-4.223-3.663-6.325-7.271-6.357-13.856zM1024 512c-0.062-5.608-2.55-10.552-6.357-13.856l-402.286-347.399c-11.854-10.197-30.209-1.78-30.214 13.856v694.798c0.005 15.636 18.361 24.053 30.214 13.856l402.286-347.399c4.223-3.663 6.325-7.271 6.357-13.856z" />
<glyph unicode="&#xe654;" glyph-name="circle-triangle-n" data-tags="circle-triangle-n" d="M0 512c0-282.77 229.23-512 512-512s512 229.23 512 512c0 282.77-229.23 512-512 512s-512-229.23-512-512zM219.5 382.786c0.322 2.823 1.461 5.673 3.5 8.143l277.929 335.214c2.643 3.173 6.585 5.235 11.072 5.286 5.268-0.027 8.141-1.766 11.071-5.286l277.929-335.214c8.158-9.878 1.437-25.21-11.071-25.214h-555.857c-9.381 0.003-15.533 8.602-14.571 17.071z" />
<glyph unicode="&#xe655;" glyph-name="circle-triangle-e" data-tags="circle-triangle-e" d="M512 1024c-282.77 0-512-229.23-512-512s229.23-512 512-512c282.77 0 512 229.23 512 512s-229.23 512-512 512zM382.786 804.5c2.823-0.32 5.673-1.461 8.143-3.5l335.214-277.929c3.173-2.643 5.235-6.585 5.286-11.071-0.027-5.268-1.766-8.141-5.286-11.071l-335.214-277.929c-9.878-8.158-25.21-1.437-25.214 11.071v555.857c0.003 9.381 8.602 15.533 17.071 14.571z" />
<glyph unicode="&#xe656;" glyph-name="circle-triangle-s" data-tags="circle-triangle-s" d="M1024 512c0 282.77-229.23 512-512 512s-512-229.23-512-512c0-282.77 229.23-512 512-512s512 229.23 512 512zM804.5 641.214c-0.322-2.823-1.461-5.673-3.5-8.143l-277.929-335.214c-2.643-3.173-6.585-5.235-11.072-5.286-5.268 0.027-8.141 1.766-11.071 5.286l-277.929 335.214c-8.158 9.878-1.437 25.21 11.071 25.214h555.857c9.381-0.003 15.533-8.602 14.571-17.071z" />
<glyph unicode="&#xe657;" glyph-name="circle-triangle-w" data-tags="circle-triangle-w" d="M512 0c282.77 0 512 229.23 512 512s-229.23 512-512 512c-282.77 0-512-229.23-512-512s229.23-512 512-512zM641.214 219.5c-2.823 0.322-5.673 1.461-8.143 3.5l-335.214 277.929c-3.173 2.643-5.235 6.585-5.286 11.072 0.027 5.268 1.766 8.141 5.286 11.071l335.214 277.929c9.878 8.158 25.21 1.437 25.214-11.071v-555.857c-0.003-9.381-8.602-15.533-17.071-14.571z" />
<glyph unicode="&#xe658;" glyph-name="circle-b-triangle-n" data-tags="circle-b-triangle-n" d="M1024 512c0 282.77-229.23 512-512 512s-512-229.23-512-512c0-282.77 229.23-512 512-512s512 229.23 512 512zM914.286 512c0-222.176-180.109-402.286-402.286-402.286s-402.286 180.109-402.286 402.286c0 222.176 180.109 402.286 402.286 402.286s402.286-180.109 402.286-402.286zM731.357 415.929c-0.241 2.259-1.042 4.524-2.571 6.5l-208.5 268.214c-1.982 2.538-4.921 4.17-8.286 4.214-3.951-0.022-6.088-1.399-8.286-4.214l-208.5-268.214c-6.118-7.903-1.024-20.139 8.357-20.143h416.857c7.036 0.003 11.649 6.867 10.929 13.643z" />
<glyph unicode="&#xe659;" glyph-name="circle-b-triangle-e" data-tags="circle-b-triangle-e" d="M512 0c282.77 0 512 229.23 512 512s-229.23 512-512 512c-282.77 0-512-229.23-512-512s229.23-512 512-512zM512 109.714c-222.176 0-402.286 180.109-402.286 402.286s180.109 402.286 402.286 402.286c222.176 0 402.286-180.109 402.286-402.286s-180.109-402.286-402.286-402.286zM415.929 292.643c2.259 0.241 4.524 1.042 6.5 2.571l268.214 208.5c2.538 1.982 4.17 4.921 4.214 8.286-0.022 3.951-1.399 6.088-4.214 8.286l-268.214 208.5c-7.903 6.118-20.139 1.024-20.143-8.357v-416.857c0.003-7.036 6.867-11.649 13.643-10.929z" />
<glyph unicode="&#xe65a;" glyph-name="circle-b-triangle-s" data-tags="circle-b-triangle-s" d="M0 512c0-282.77 229.23-512 512-512s512 229.23 512 512c0 282.77-229.23 512-512 512s-512-229.23-512-512zM109.714 512c0 222.176 180.109 402.286 402.286 402.286s402.286-180.109 402.286-402.286c0-222.176-180.109-402.286-402.286-402.286s-402.286 180.109-402.286 402.286zM292.643 608.071c0.241-2.259 1.042-4.524 2.571-6.5l208.5-268.214c1.982-2.538 4.921-4.17 8.286-4.214 3.951 0.022 6.088 1.398 8.286 4.214l208.5 268.214c6.118 7.903 1.024 20.139-8.357 20.143h-416.857c-7.036-0.003-11.649-6.867-10.929-13.643z" />
<glyph unicode="&#xe65b;" glyph-name="circle-b-triangle-w" data-tags="circle-b-triangle-w" d="M512 1024c-282.77 0-512-229.23-512-512s229.23-512 512-512c282.77 0 512 229.23 512 512s-229.23 512-512 512zM512 914.286c222.176 0 402.286-180.109 402.286-402.286s-180.109-402.286-402.286-402.286c-222.176 0-402.286 180.109-402.286 402.286s180.109 402.286 402.286 402.286zM608.071 731.357c-2.259-0.24-4.524-1.042-6.5-2.571l-268.214-208.5c-2.538-1.982-4.17-4.921-4.214-8.286 0.022-3.951 1.399-6.088 4.214-8.286l268.214-208.5c7.903-6.118 20.139-1.024 20.143 8.357v416.857c-0.003 7.036-6.867 11.65-13.643 10.929z" />
<glyph unicode="&#xe65c;" glyph-name="bullet" data-tags="bullet" d="M731.429 512c0-121.187-98.242-219.429-219.429-219.429s-219.429 98.242-219.429 219.429c0 121.187 98.242 219.429 219.429 219.429s219.429-98.242 219.429-219.429z" />
<glyph unicode="&#xe65d;" glyph-name="circle" data-tags="circle" d="M512 1024c-282.77 0-512-229.23-512-512s229.23-512 512-512c282.77 0 512 229.23 512 512s-229.23 512-512 512zM512 914.286c222.176 0 402.286-180.109 402.286-402.286s-180.109-402.286-402.286-402.286c-222.176 0-402.286 180.109-402.286 402.286s180.109 402.286 402.286 402.286z" />
<glyph unicode="&#xe65e;" glyph-name="alert" data-tags="alert" d="M512.286 1024c-0.085 0.001-0.186 0.001-0.288 0.001-14.236 0-26.573-8.134-32.616-20.008l-475.525-951.065c-2.434-4.765-3.86-10.392-3.86-16.353 0-20.199 16.375-36.574 36.574-36.575h950.857c20.199 0.001 36.574 16.376 36.574 36.575 0 5.961-1.426 11.589-3.956 16.561l-475.333 950.649c-6.109 12.023-18.354 20.135-32.502 20.215zM475.429 731.429h73.143c20.261 0 36.571-16.311 36.571-36.571v-292.571c0-20.261-16.311-36.571-36.571-36.571h-73.143c-20.261 0-36.571 16.311-36.571 36.571v292.571c0 20.261 16.311 36.571 36.571 36.571zM475.429 256h73.143c20.261 0 36.571-16.311 36.571-36.571v-73.143c0-20.261-16.311-36.571-36.571-36.571h-73.143c-20.261 0-36.571 16.311-36.571 36.571v73.143c0 20.261 16.311 36.571 36.571 36.571z" />
<glyph unicode="&#xe65f;" glyph-name="alert-b" data-tags="alert-b" d="M512.286 1024c-0.085 0.001-0.186 0.001-0.288 0.001-14.236 0-26.573-8.134-32.616-20.008l-475.525-951.065c-2.434-4.765-3.86-10.392-3.86-16.353 0-20.199 16.375-36.574 36.574-36.575h950.857c20.199 0.001 36.574 16.376 36.574 36.575 0 5.961-1.426 11.589-3.956 16.561l-475.333 950.649c-6.109 12.023-18.354 20.135-32.502 20.215zM512 905.643l416.286-832.5h-832.571l416.286 832.5zM475.429 658.286h73.143c20.198 0 36.571-16.374 36.571-36.571v-219.429c0-20.198-16.374-36.571-36.571-36.571h-73.143c-20.198 0-36.571 16.374-36.571 36.571v219.429c0 20.198 16.374 36.571 36.571 36.571zM475.429 292.571h73.143c20.198 0 36.571-16.374 36.571-36.571v-71.96c0-20.198-16.374-36.571-36.571-36.571h-73.143c-20.198 0-36.571 16.374-36.571 36.571v71.96c0 20.198 16.374 36.571 36.571 36.571z" />
<glyph unicode="&#xe660;" glyph-name="help" data-tags="help" d="M520.143 1024c-113.024 0-219.968-28.274-320.786-84.786l73.929-148.5c86.803 44.306 164.114 66.429 231.929 66.429 38.88 0 69.156-7.629 90.857-23s32.571-37.757 32.571-67.143c0-26.222-7.7-49.966-23.071-71.214-14.919-21.249-46.101-48.807-93.571-82.714-49.279-36.168-83.178-70.33-101.714-102.429s-27.786-69.813-27.786-113.214v-50.214h179.714v40.714c0 27.126 5.626 49.058 16.929 65.786 11.754 16.728 39.313 41.115 82.714 73.214 63.294 45.21 106.252 85.904 128.857 122.071s33.929 79.126 33.929 128.857c0 74.596-27.63 134.242-82.786 179-54.704 44.758-128.582 67.143-221.714 67.143zM475.429 219.429c-60.594 0-109.714-49.121-109.714-109.714s49.121-109.714 109.714-109.714c60.594 0 109.714 49.121 109.714 109.714s-49.121 109.714-109.714 109.714z" />
<glyph unicode="&#xe661;" glyph-name="circle-help" data-tags="circle-help" d="M512 1024c-282.77 0-512-229.23-512-512s229.23-512 512-512c282.77 0 512 229.23 512 512s-229.23 512-512 512zM517.786 877.714c66.523 0 119.354-15.959 158.429-47.929 39.397-31.97 59.071-74.574 59.071-127.857 0-35.522-8.068-66.237-24.214-92.071s-46.79-54.922-92-87.214c-31.001-22.928-50.747-40.337-59.143-52.286-8.073-11.948-12.071-27.624-12.071-47v-29.071h-128.357v35.857c0 31.001 6.617 57.929 19.857 80.857s37.444 47.38 72.643 73.214c33.907 24.22 56.201 43.894 66.857 59.071 10.98 15.178 16.429 32.127 16.429 50.857 0 20.99-7.714 36.949-23.214 47.929s-37.157 16.429-64.929 16.429c-48.439 0-103.641-15.782-165.643-47.429l-52.786 106.071c72.013 40.366 148.34 60.571 229.071 60.571zM485.857 303c43.273-0.006 78.351-35.084 78.357-78.357-0.006-43.274-35.084-78.352-78.357-78.358-43.274 0.006-78.352 35.084-78.358 78.357 0.006 43.274 35.084 78.352 78.357 78.358z" />
<glyph unicode="&#xe662;" glyph-name="circle-b-help" data-tags="circle-b-help" d="M512 1024c-282.77 0-512-229.23-512-512s229.23-512 512-512c282.77 0 512 229.23 512 512s-229.23 512-512 512zM512 914.286c222.176 0 402.286-180.109 402.286-402.286s-180.109-402.286-402.286-402.286c-222.176 0-402.286 180.109-402.286 402.286s180.109 402.286 402.286 402.286zM516.653 804.571c-64.585 0-125.696-16.156-183.306-48.449l42.245-84.857c49.602 25.317 93.779 37.959 132.531 37.959 22.217 0 39.518-4.359 51.918-13.143s18.612-21.575 18.612-38.367c0-14.984-4.4-28.552-13.184-40.694-8.525-12.142-26.344-27.89-53.469-47.265-28.159-20.667-47.53-40.188-58.122-58.531s-15.878-39.893-15.878-64.694v-28.694h102.694v23.265c0 15.5 3.215 28.033 9.673 37.592 6.717 9.559 22.465 23.495 47.265 41.837 36.168 25.834 60.716 49.088 73.633 69.755s19.388 45.215 19.388 73.633c0 42.626-15.789 76.71-47.306 102.286-31.259 25.576-73.476 38.367-126.694 38.367zM491.102 344.816c-34.625 0-62.694-28.069-62.694-62.694 0 0 0 0 0 0 0-34.625 28.069-62.694 62.694-62.694s62.694 28.069 62.694 62.694c0 0 0 0 0 0 0 34.625-28.069 62.694-62.694 62.694z" />
<glyph unicode="&#xe663;" glyph-name="info" data-tags="info" d="M621.714 914.286c0 60.594-49.121 109.714-109.714 109.714s-109.714-49.121-109.714-109.714c0-60.594 49.121-109.714 109.714-109.714s109.714 49.121 109.714 109.714zM310.857 658.286c-10.13 0-18.286-8.155-18.286-18.286v-36.571c0-10.13 8.155-18.286 18.286-18.286h91.429v-512h-91.429c-10.13 0-18.286-8.155-18.286-18.286v-36.571c0-10.13 8.155-18.286 18.286-18.286h402.286c10.13 0 18.286 8.155 18.286 18.286v36.571c0 10.13-8.155 18.286-18.286 18.286h-91.429v512c0 40.521-32.622 73.143-73.143 73.143z" />
<glyph unicode="&#xe664;" glyph-name="circle-info" data-tags="circle-info" d="M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512c282.77 0 512-229.23 512-512s-229.23-512-512-512zM475.429 146.286h73.143c20.261 0 36.571 16.311 36.571 36.571v365.714c0 20.261-16.311 36.571-36.571 36.571h-73.143c-20.261 0-36.571-16.311-36.571-36.571v-365.714c0-20.261 16.311-36.571 36.571-36.571zM475.429 731.429h73.143c20.261 0 36.571 16.311 36.571 36.571v73.143c0 20.261-16.311 36.571-36.571 36.571h-73.143c-20.261 0-36.571-16.311-36.571-36.571v-73.143c0-20.261 16.311-36.571 36.571-36.571z" />
<glyph unicode="&#xe665;" glyph-name="circle-b-info" data-tags="circle-b-info" d="M512 1024c-282.77 0-512-229.23-512-512s229.23-512 512-512c282.77 0 512 229.23 512 512s-229.23 512-512 512zM512 914.286c222.176 0 402.286-180.109 402.286-402.286s-180.109-402.286-402.286-402.286c-222.176 0-402.286 180.109-402.286 402.286s180.109 402.286 402.286 402.286zM475.429 585.143h73.143c20.198 0 36.571-16.374 36.571-36.571v-292.571c0-20.198-16.374-36.571-36.571-36.571h-73.143c-20.198 0-36.571 16.374-36.571 36.571v292.571c0 20.198 16.374 36.571 36.571 36.571zM475.429 804.571h73.143c20.198 0 36.571-16.374 36.571-36.571v-73.143c0-20.198-16.374-36.571-36.571-36.571h-73.143c-20.198 0-36.571 16.374-36.571 36.571v73.143c0 20.198 16.374 36.571 36.571 36.571z" />
<glyph unicode="&#xe666;" glyph-name="notice" data-tags="notice" d="M621.714 109.714c0-60.594-49.121-109.714-109.714-109.714s-109.714 49.121-109.714 109.714c0 60.594 49.121 109.714 109.714 109.714s109.714-49.121 109.714-109.714zM475.429 1024h73.143c40.521 0 73.143-32.622 73.143-73.143v-512c0-40.521-32.622-73.143-73.143-73.143h-73.143c-40.521 0-73.143 32.622-73.143 73.143v512c0 40.521 32.622 73.143 73.143 73.143z" />
<glyph unicode="&#xe667;" glyph-name="circle-notice" data-tags="circle-notice" d="M512 1024c-282.77 0-512-229.23-512-512s229.23-512 512-512c282.77 0 512 229.23 512 512s-229.23 512-512 512zM475.429 877.714h73.143c20.261 0 36.571-16.311 36.571-36.571v-365.714c0-20.261-16.311-36.571-36.571-36.571h-73.143c-20.261 0-36.571 16.311-36.571 36.571v365.714c0 20.261 16.311 36.571 36.571 36.571zM475.429 292.571h73.143c20.261 0 36.571-16.311 36.571-36.571v-73.143c0-20.261-16.311-36.571-36.571-36.571h-73.143c-20.261 0-36.571 16.311-36.571 36.571v73.143c0 20.261 16.311 36.571 36.571 36.571z" />
<glyph unicode="&#xe668;" glyph-name="circle-b-notice" data-tags="circle-b-notice" d="M512 1024c-282.77 0-512-229.23-512-512s229.23-512 512-512c282.77 0 512 229.23 512 512s-229.23 512-512 512zM512 914.286c222.176 0 402.286-180.109 402.286-402.286s-180.109-402.286-402.286-402.286c-222.176 0-402.286 180.109-402.286 402.286s180.109 402.286 402.286 402.286zM475.429 438.857h73.143c20.198 0 36.571 16.374 36.571 36.571v292.571c0 20.198-16.374 36.571-36.571 36.571h-73.143c-20.198 0-36.571-16.374-36.571-36.571v-292.571c0-20.198 16.374-36.571 36.571-36.571zM475.429 219.429h73.143c20.198 0 36.571 16.374 36.571 36.571v73.143c0 20.198-16.374 36.571-36.571 36.571h-73.143c-20.198 0-36.571-16.374-36.571-36.571v-73.143c0-20.198 16.374-36.571 36.571-36.571z" />
<glyph unicode="&#xe669;" glyph-name="grip-diagonal-se" data-tags="grip-diagonal-se" d="M1024 624.357l-624.357-624.357h103.429l520.929 520.929v103.429zM1024 417.5l-417.5-417.5h103.571l313.929 313.929v103.571zM1024 210.5l-210.5-210.5h103.429l107.071 107.071v103.429z" />
<glyph unicode="&#xe66a;" glyph-name="gripsmall-diagonal-se" data-tags="gripsmall-diagonal-se" d="M1024 404.929l-404.929-404.929h103.429l301.5 301.5v103.429zM1024 198.071l-198.071-198.071h103.571l94.5 94.5v103.571z" />
<glyph unicode="&#xe66b;" glyph-name="grip-solid-horizontal" data-tags="grip-solid-horizontal" d="M877.714 694.857v-73.143c0-20.198-16.374-36.571-36.571-36.571h-658.286c-20.198 0-36.571 16.374-36.571 36.571v73.143c0 20.198 16.374 36.571 36.571 36.571h658.286c20.198 0 36.571-16.374 36.571-36.571zM877.714 402.286v-73.143c0-20.198-16.374-36.571-36.571-36.571h-658.286c-20.198 0-36.571 16.374-36.571 36.571v73.143c0 20.198 16.374 36.571 36.571 36.571h658.286c20.198 0 36.571-16.374 36.571-36.571z" />
<glyph unicode="&#xe66c;" glyph-name="grip-dotted-horizontal" data-tags="grip-dotted-horizontal" d="M841.143 292.571h-73.143c-20.198 0-36.571 16.374-36.571 36.571v73.143c0 20.198 16.374 36.571 36.571 36.571h73.143c20.198 0 36.571-16.374 36.571-36.571v-73.143c0-20.198-16.374-36.571-36.571-36.571zM548.571 292.571h-73.143c-20.198 0-36.571 16.374-36.571 36.571v73.143c0 20.198 16.374 36.571 36.571 36.571h73.143c20.198 0 36.571-16.374 36.571-36.571v-73.143c0-20.198-16.374-36.571-36.571-36.571zM256 292.571h-73.143c-20.198 0-36.571 16.374-36.571 36.571v73.143c0 20.198 16.374 36.571 36.571 36.571h73.143c20.198 0 36.571-16.374 36.571-36.571v-73.143c0-20.198-16.374-36.571-36.571-36.571zM841.143 585.143h-73.143c-20.198 0-36.571 16.374-36.571 36.571v73.143c0 20.198 16.374 36.571 36.571 36.571h73.143c20.198 0 36.571-16.374 36.571-36.571v-73.143c0-20.198-16.374-36.571-36.571-36.571zM548.571 585.143h-73.143c-20.198 0-36.571 16.374-36.571 36.571v73.143c0 20.198 16.374 36.571 36.571 36.571h73.143c20.198 0 36.571-16.374 36.571-36.571v-73.143c0-20.198-16.374-36.571-36.571-36.571zM256 585.143h-73.143c-20.198 0-36.571 16.374-36.571 36.571v73.143c0 20.198 16.374 36.571 36.571 36.571h73.143c20.198 0 36.571-16.374 36.571-36.571v-73.143c0-20.198-16.374-36.571-36.571-36.571z" />
<glyph unicode="&#xe66d;" glyph-name="grip-solid-vertical" data-tags="grip-solid-vertical" d="M621.714 877.714h73.143c20.198 0 36.571-16.374 36.571-36.571v-658.286c0-20.198-16.374-36.571-36.571-36.571h-73.143c-20.198 0-36.571 16.374-36.571 36.571v658.286c0 20.198 16.374 36.571 36.571 36.571zM329.143 877.714h73.143c20.198 0 36.571-16.374 36.571-36.571v-658.286c0-20.198-16.374-36.571-36.571-36.571h-73.143c-20.198 0-36.571 16.374-36.571 36.571v658.286c0 20.198 16.374 36.571 36.571 36.571z" />
<glyph unicode="&#xe66e;" glyph-name="grip-dotted-vertical" data-tags="grip-dotted-vertical" d="M292.571 182.857v73.143c0 20.198 16.374 36.571 36.571 36.571h73.143c20.198 0 36.571-16.374 36.571-36.571v-73.143c0-20.198-16.374-36.571-36.571-36.571h-73.143c-20.198 0-36.571 16.374-36.571 36.571zM292.571 475.429v73.143c0 20.198 16.374 36.571 36.571 36.571h73.143c20.198 0 36.571-16.374 36.571-36.571v-73.143c0-20.198-16.374-36.571-36.571-36.571h-73.143c-20.198 0-36.571 16.374-36.571 36.571zM292.571 768v73.143c0 20.198 16.374 36.571 36.571 36.571h73.143c20.198 0 36.571-16.374 36.571-36.571v-73.143c0-20.198-16.374-36.571-36.571-36.571h-73.143c-20.198 0-36.571 16.374-36.571 36.571zM585.143 182.857v73.143c0 20.198 16.374 36.571 36.571 36.571h73.143c20.198 0 36.571-16.374 36.571-36.571v-73.143c0-20.198-16.374-36.571-36.571-36.571h-73.143c-20.198 0-36.571 16.374-36.571 36.571zM585.143 475.429v73.143c0 20.198 16.374 36.571 36.571 36.571h73.143c20.198 0 36.571-16.374 36.571-36.571v-73.143c0-20.198-16.374-36.571-36.571-36.571h-73.143c-20.198 0-36.571 16.374-36.571 36.571zM585.143 768v73.143c0 20.198 16.374 36.571 36.571 36.571h73.143c20.198 0 36.571-16.374 36.571-36.571v-73.143c0-20.198-16.374-36.571-36.571-36.571h-73.143c-20.198 0-36.571 16.374-36.571 36.571z" />
<glyph unicode="&#xe66f;" glyph-name="check" data-tags="check" d="M804 877.714c-10.536-0.18-19.962-4.788-26.522-12.038l-376.335-410.534-155.857 155.857c-6.618 6.616-15.76 10.707-25.857 10.707s-19.239-4.092-25.857-10.707l-109.714-109.714c-6.616-6.618-10.707-15.76-10.707-25.857s4.092-19.239 10.707-25.857l292.571-292.571c6.616-6.603 15.75-10.687 25.837-10.687 10.541 0 20.041 4.459 26.716 11.595l512.019 548.592c6.090 6.516 9.83 15.295 9.83 24.949 0 10.087-4.084 19.221-10.688 25.838l-109.714 109.714c-6.619 6.622-15.766 10.719-25.868 10.719-0.197 0-0.394-0.002-0.59-0.005z" />
<glyph unicode="&#xe670;" glyph-name="circle-check" data-tags="circle-check" d="M519.5 1023.929c-2.255 0.036-4.915 0.056-7.581 0.056-141.361 0-269.342-57.288-361.992-149.914-92.672-92.656-149.993-220.669-149.993-362.070s57.321-269.414 149.993-362.071c92.658-92.674 220.671-149.995 362.072-149.995s269.414 57.321 362.071 149.993c92.674 92.658 149.995 220.671 149.995 362.072s-57.321 269.414-149.993 362.071c-91.795 91.77-218.272 148.852-358.081 149.897zM792.286 758.357c9.171 0 18.33-3.551 25.357-10.714l50.714-51.714c14.055-14.327 14.055-37.388 0-51.714l-405.857-413.786c-14.055-14.327-36.731-14.327-50.786 0l-253.714 258.571c-14.055 14.327-14.055 37.459 0 51.786l50.786 51.714c14.055 14.327 36.66 14.327 50.714 0l177.571-181.071 329.857 336.214c7.027 7.163 16.186 10.714 25.357 10.714z" />
<glyph unicode="&#xe671;" glyph-name="circle-b-check" data-tags="circle-b-check" d="M512 1024c-282.77 0-512-229.23-512-512s229.23-512 512-512c282.77 0 512 229.23 512 512s-229.23 512-512 512zM512 914.286c222.176 0 402.286-180.109 402.286-402.286s-180.109-402.286-402.286-402.286c-222.176 0-402.286 180.109-402.286 402.286s180.109 402.286 402.286 402.286zM230.173 488.772c-12.539-15.914-14.326-37.393 0-51.72l206.879-206.879c14.326-14.326 38.385-15.254 51.72 0l306.664 350.793c13.335 15.254 14.326 37.393 0 51.72l-51.72 51.72c-14.326 14.326-38.347 15.22-51.72 0l-240.052-273.213-129.299 129.3c-14.326 14.326-39.18 15.914-51.72 0z" />
<glyph unicode="&#xe672;" glyph-name="check-off" data-tags="check-off" d="M146.286 1024c-81.042 0-146.286-65.243-146.286-146.286v-731.429c0-81.042 65.243-146.286 146.286-146.286h731.429c81.042 0 146.286 65.243 146.286 146.286v731.429c0 81.042-65.243 146.286-146.286 146.286h-731.429zM152.357 943.571h719.286c39.846 0 71.929-32.083 71.929-71.929v-719.286c0-39.846-32.083-71.929-71.929-71.929h-719.286c-39.846 0-71.929 32.083-71.929 71.929v719.286c0 39.846 32.083 71.929 71.929 71.929z" />
<glyph unicode="&#xe673;" glyph-name="check-on" data-tags="check-on" d="M230.173 488.772c-12.539-15.914-14.326-37.393 0-51.72l206.879-206.879c14.326-14.326 38.385-15.254 51.72 0l306.664 350.793c13.335 15.254 14.326 37.393 0 51.72l-51.72 51.72c-14.326 14.326-38.347 15.22-51.72 0l-240.052-273.213-129.299 129.3c-14.326 14.326-39.18 15.914-51.72 0zM146.286 1024c-81.042 0-146.286-65.243-146.286-146.286v-731.429c0-81.042 65.243-146.286 146.286-146.286h731.429c81.042 0 146.286 65.243 146.286 146.286v731.429c0 81.042-65.243 146.286-146.286 146.286h-731.429zM152.357 943.571h719.286c39.846 0 71.929-32.083 71.929-71.929v-719.286c0-39.846-32.083-71.929-71.929-71.929h-719.286c-39.846 0-71.929 32.083-71.929 71.929v719.286c0 39.846 32.083 71.929 71.929 71.929z" />
<glyph unicode="&#xe674;" glyph-name="cancel" data-tags="cancel" d="M874.039 149.961c92.654 92.654 149.961 220.654 149.961 362.039s-57.308 269.385-149.961 362.039c-92.654 92.654-220.654 149.961-362.039 149.961s-269.385-57.308-362.039-149.961c-92.654-92.654-149.961-220.654-149.961-362.039s57.308-269.385 149.961-362.039c92.654-92.654 220.654-149.961 362.039-149.961s269.385 57.308 362.039 149.961zM770.599 253.401c-66.153-66.014-157.469-106.835-258.318-106.835-75.098 0-144.909 22.636-202.983 61.456l507.768 505.604c37.985-56.745 60.62-126.557 60.62-201.654 0-100.975-40.923-192.393-107.088-258.572zM713.374 816.814l-506.44-506.44c-37.985 56.745-60.62 126.557-60.62 201.654 0 100.975 40.923 192.393 107.088 258.572 66.153 66.013 157.468 106.834 258.318 106.834 75.098 0 144.909-22.636 202.983-61.456z" />
<glyph unicode="&#xe675;" glyph-name="close" data-tags="close" d="M255.429 877.709c-9.992-0.164-18.985-4.311-25.486-10.916l-72.942-72.941c-6.616-6.618-10.707-15.76-10.707-25.857s4.092-19.239 10.707-25.857l230.143-230.143-230.143-230.143c-6.616-6.618-10.707-15.76-10.707-25.857s4.092-19.239 10.707-25.857l73.143-73.143c6.618-6.616 15.76-10.707 25.857-10.707s19.239 4.092 25.857 10.707l230.143 230.143 230.143-230.143c6.618-6.616 15.76-10.707 25.857-10.707s19.239 4.092 25.857 10.707l73.143 73.143c6.616 6.618 10.707 15.76 10.707 25.857s-4.092 19.239-10.707 25.857l-230.143 230.143 230.143 230.143c6.616 6.618 10.707 15.76 10.707 25.857s-4.092 19.239-10.707 25.857l-73.143 73.143c-6.618 6.616-15.76 10.707-25.857 10.707s-19.239-4.092-25.857-10.707l-230.143-230.143-230.143 230.143c-6.619 6.622-15.766 10.719-25.868 10.719-0.197 0-0.394-0.002-0.59-0.005z" />
<glyph unicode="&#xe676;" glyph-name="circle-close" data-tags="circle-close" d="M149.961 874.039c-92.654-92.654-149.961-220.654-149.961-362.039s57.308-269.385 149.961-362.039c92.654-92.654 220.654-149.961 362.039-149.961s269.385 57.308 362.039 149.961c92.654 92.654 149.961 220.654 149.961 362.039s-57.308 269.385-149.961 362.039c-92.654 92.654-220.654 149.961-362.039 149.961s-269.385-57.308-362.039-149.961zM253.401 718.879l51.72 51.72c14.326 14.326 37.393 14.326 51.72 0l155.159-155.159 155.159 155.159c14.326 14.326 37.393 14.326 51.72 0l51.72-51.72c14.326-14.326 14.326-37.393 0-51.72l-155.159-155.159 155.159-155.159c14.326-14.326 14.326-37.393 0-51.72l-51.72-51.72c-14.326-14.326-37.393-14.326-51.72 0l-155.159 155.159-155.159-155.159c-14.326-14.326-37.393-14.326-51.72 0l-51.72 51.72c-14.326 14.326-14.326 37.393 0 51.72l155.159 155.159-155.159 155.159c-14.326 14.326-14.326 37.393 0 51.72z" />
<glyph unicode="&#xe677;" glyph-name="circle-b-close" data-tags="circle-b-close" d="M512 1024c-282.77 0-512-229.23-512-512s229.23-512 512-512c282.77 0 512 229.23 512 512s-229.23 512-512 512zM512 914.286c222.176 0 402.286-180.109 402.286-402.286s-180.109-402.286-402.286-402.286c-222.176 0-402.286 180.109-402.286 402.286s180.109 402.286 402.286 402.286zM279.261 382.7l362.039 362.039c14.282 14.282 37.438 14.282 51.72 0l51.72-51.72c14.282-14.282 14.282-37.438 0-51.72l-362.039-362.039c-14.282-14.282-37.438-14.282-51.72 0l-51.72 51.72c-14.282 14.282-14.282 37.438 0 51.72zM279.261 693.019l51.72 51.72c14.282 14.282 37.438 14.282 51.72 0l362.039-362.039c14.282-14.282 14.282-37.438 0-51.72l-51.72-51.72c-14.282-14.282-37.438-14.282-51.72 0l-362.039 362.039c-14.282 14.282-14.282 37.438 0 51.72z" />
<glyph unicode="&#xe678;" glyph-name="closethick" data-tags="closethick" d="M255.429 950.857c-9.992-0.164-18.985-4.311-25.486-10.916l-146.085-146.084c-6.616-6.618-10.707-15.76-10.707-25.857s4.092-19.239 10.707-25.857l230.143-230.143-230.143-230.143c-6.616-6.618-10.707-15.76-10.707-25.857s4.092-19.239 10.707-25.857l146.286-146.286c6.618-6.616 15.76-10.707 25.857-10.707s19.239 4.092 25.857 10.707l230.143 230.143 230.143-230.143c6.618-6.616 15.76-10.707 25.857-10.707s19.239 4.092 25.857 10.707l146.286 146.286c6.616 6.618 10.707 15.76 10.707 25.857s-4.092 19.239-10.707 25.857l-230.143 230.143 230.143 230.143c6.616 6.618 10.707 15.76 10.707 25.857s-4.092 19.239-10.707 25.857l-146.286 146.286c-6.618 6.616-15.76 10.707-25.857 10.707s-19.239-4.092-25.857-10.707l-230.143-230.143-230.143 230.143c-6.619 6.622-15.766 10.719-25.868 10.719-0.197 0-0.394-0.002-0.59-0.005z" />
<glyph unicode="&#xe679;" glyph-name="squaresmall-close" data-tags="squaresmall-close" d="M292.571 786.286c-30.075 0-54.857-24.783-54.857-54.857v-365.714c0-30.075 24.783-54.857 54.857-54.857h365.714c30.075 0 54.857 24.783 54.857 54.857v365.714c0 30.075-24.783 54.857-54.857 54.857h-365.714zM579.786 690c8.496-0.55 17.14-4.354 24.071-11.286l1.714-1.714c13.863-13.863 15.177-34.823 3-47l-81.429-81.429 77.571-77.571c14.326-14.326 16.035-35.68 3.857-47.857l-7.714-7.714c-12.177-12.177-33.531-10.469-47.857 3.857l-77.571 77.571-81.429-81.429c-12.177-12.177-33.137-10.863-47 3l-1.714 1.714c-13.863 13.863-15.177 34.823-3 47l81.429 81.429-77.571 77.571c-14.326 14.326-16.035 35.68-3.857 47.857l7.714 7.714c6.089 6.089 14.496 8.701 23.143 8s17.551-4.694 24.714-11.857l77.571-77.571 81.429 81.429c6.089 6.089 14.432 8.836 22.929 8.286z" />
<glyph unicode="&#xe67a;" glyph-name="circlesmall-close" data-tags="circlesmall-close" d="M292.571 786.286c-30.075 0-54.857-24.783-54.857-54.857v-365.714c0-30.075 24.783-54.857 54.857-54.857h365.714c30.075 0 54.857 24.783 54.857 54.857v365.714c0 30.075-24.783 54.857-54.857 54.857h-365.714zM292.571 749.714h365.714c10.447 0 18.286-7.839 18.286-18.286v-365.714c0-10.447-7.839-18.286-18.286-18.286h-365.714c-10.447 0-18.286 7.839-18.286 18.286v365.714c0 10.447 7.839 18.286 18.286 18.286zM397.849 677.871l206.879-206.879c14.282-14.282 16.019-35.701 3.879-47.841l-7.758-7.758c-12.14-12.14-33.559-10.403-47.841 3.879l-206.879 206.879c-14.282 14.282-16.019 35.701-3.879 47.841l7.758 7.758c12.14 12.14 33.559 10.403 47.841-3.879zM603.892 678.707l1.672-1.672c13.82-13.82 15.183-34.865 3.043-47.005l-214.637-214.637c-12.14-12.14-33.184-10.777-47.005 3.043l-1.672 1.672c-13.82 13.82-15.183 34.865-3.043 47.005l214.637 214.637c12.14 12.14 33.184 10.777 47.005-3.043z" />
<glyph unicode="&#xe67b;" glyph-name="minus" data-tags="minus" d="M182.857 585.143h658.286c20.198 0 36.571-16.374 36.571-36.571v-73.143c0-20.198-16.374-36.571-36.571-36.571h-658.286c-20.198 0-36.571 16.374-36.571 36.571v73.143c0 20.198 16.374 36.571 36.571 36.571z" />
<glyph unicode="&#xe67c;" glyph-name="circle-minus" data-tags="circle-minus" d="M512 1024c-282.77 0-512-229.23-512-512s229.23-512 512-512c282.77 0 512 229.23 512 512s-229.23 512-512 512zM219.429 585.143h585.143c20.261 0 36.571-16.311 36.571-36.571v-73.143c0-20.261-16.311-36.571-36.571-36.571h-585.143c-20.261 0-36.571 16.311-36.571 36.571v73.143c0 20.261 16.311 36.571 36.571 36.571z" />
<glyph unicode="&#xe67d;" glyph-name="circle-b-minus" data-tags="circle-b-minus" d="M512 1024c-282.77 0-512-229.23-512-512s229.23-512 512-512c282.77 0 512 229.23 512 512s-229.23 512-512 512zM512 914.286c222.176 0 402.286-180.109 402.286-402.286s-180.109-402.286-402.286-402.286c-222.176 0-402.286 180.109-402.286 402.286s180.109 402.286 402.286 402.286zM256 585.143h512c20.198 0 36.571-16.374 36.571-36.571v-73.143c0-20.198-16.374-36.571-36.571-36.571h-512c-20.198 0-36.571 16.374-36.571 36.571v73.143c0 20.198 16.374 36.571 36.571 36.571z" />
<glyph unicode="&#xe67e;" glyph-name="minusthick" data-tags="minusthick" d="M146.286 658.286h731.429c40.396 0 73.143-32.747 73.143-73.143v-146.286c0-40.396-32.747-73.143-73.143-73.143h-731.429c-40.396 0-73.143 32.747-73.143 73.143v146.286c0 40.396 32.747 73.143 73.143 73.143z" />
<glyph unicode="&#xe67f;" glyph-name="squaresmall-minus" data-tags="squaresmall-minus" d="M292.571 786.286c-30.075 0-54.857-24.783-54.857-54.857v-365.714c0-30.075 24.783-54.857 54.857-54.857h365.714c30.075 0 54.857 24.783 54.857 54.857v365.714c0 30.075-24.783 54.857-54.857 54.857h-365.714zM364.5 585.143h221.857c19.606 0 35.357-13.85 35.357-31.071v-11c0-17.221-15.752-31.071-35.357-31.071h-221.857c-19.605 0-35.357 13.85-35.357 31.071v11c0 17.221 15.752 31.071 35.357 31.071z" />
<glyph unicode="&#xe680;" glyph-name="circlesmall-minus" data-tags="circlesmall-minus" d="M292.571 786.286c-30.075 0-54.857-24.783-54.857-54.857v-365.714c0-30.075 24.783-54.857 54.857-54.857h365.714c30.075 0 54.857 24.783 54.857 54.857v365.714c0 30.075-24.783 54.857-54.857 54.857h-365.714zM292.571 749.714h365.714c10.447 0 18.286-7.839 18.286-18.286v-365.714c0-10.447-7.839-18.286-18.286-18.286h-365.714c-10.447 0-18.286 7.839-18.286 18.286v365.714c0 10.447 7.839 18.286 18.286 18.286zM365.714 585.143h219.429c20.198 0 36.571-13.918 36.571-31.086v-10.971c0-17.168-16.374-31.086-36.571-31.086h-219.429c-20.198 0-36.571 13.918-36.571 31.086v10.971c0 17.168 16.374 31.086 36.571 31.086z" />
<glyph unicode="&#xe681;" glyph-name="plus" data-tags="plus" d="M475.429 877.714c-20.261 0-36.571-16.311-36.571-36.571v-256h-256c-20.261 0-36.571-16.311-36.571-36.571v-73.143c0-20.261 16.311-36.571 36.571-36.571h256v-256c0-20.261 16.311-36.571 36.571-36.571h73.143c20.261 0 36.571 16.311 36.571 36.571v256h256c20.261 0 36.571 16.311 36.571 36.571v73.143c0 20.261-16.311 36.571-36.571 36.571h-256v256c0 20.261-16.311 36.571-36.571 36.571h-73.143z" />
<glyph unicode="&#xe682;" glyph-name="circle-plus" data-tags="circle-plus" d="M512 1024c-282.77 0-512-229.23-512-512s229.23-512 512-512c282.77 0 512 229.23 512 512s-229.23 512-512 512zM475.429 841.143h73.143c20.261 0 36.571-16.311 36.571-36.571v-219.429h219.429c20.261 0 36.571-16.311 36.571-36.571v-73.143c0-20.261-16.311-36.571-36.571-36.571h-219.429v-219.429c0-20.261-16.311-36.571-36.571-36.571h-73.143c-20.261 0-36.571 16.311-36.571 36.571v219.429h-219.429c-20.261 0-36.571 16.311-36.571 36.571v73.143c0 20.261 16.311 36.571 36.571 36.571h219.429v219.429c0 20.261 16.311 36.571 36.571 36.571z" />
<glyph unicode="&#xe683;" glyph-name="circle-b-plus" data-tags="circle-b-plus" d="M512 1024c-282.77 0-512-229.23-512-512s229.23-512 512-512c282.77 0 512 229.23 512 512s-229.23 512-512 512zM512 914.286c222.176 0 402.286-180.109 402.286-402.286s-180.109-402.286-402.286-402.286c-222.176 0-402.286 180.109-402.286 402.286s180.109 402.286 402.286 402.286zM256 585.143h512c20.198 0 36.571-16.374 36.571-36.571v-73.143c0-20.198-16.374-36.571-36.571-36.571h-512c-20.198 0-36.571 16.374-36.571 36.571v73.143c0 20.198 16.374 36.571 36.571 36.571zM475.429 804.571h73.143c20.198 0 36.571-16.374 36.571-36.571v-512c0-20.198-16.374-36.571-36.571-36.571h-73.143c-20.198 0-36.571 16.374-36.571 36.571v512c0 20.198 16.374 36.571 36.571 36.571z" />
<glyph unicode="&#xe684;" glyph-name="plusthick" data-tags="plusthick" d="M438.857 950.857c-40.521 0-73.143-32.622-73.143-73.143v-219.429h-219.429c-40.521 0-73.143-32.622-73.143-73.143v-146.286c0-40.521 32.622-73.143 73.143-73.143h219.429v-219.429c0-40.521 32.622-73.143 73.143-73.143h146.286c40.521 0 73.143 32.622 73.143 73.143v219.429h219.429c40.521 0 73.143 32.622 73.143 73.143v146.286c0 40.521-32.622 73.143-73.143 73.143h-219.429v219.429c0 40.521-32.622 73.143-73.143 73.143h-146.286z" />
<glyph unicode="&#xe685;" glyph-name="squaresmall-plus" data-tags="squaresmall-plus" d="M292.571 786.286c-30.075 0-54.857-24.783-54.857-54.857v-365.714c0-30.075 24.783-54.857 54.857-54.857h365.714c30.075 0 54.857 24.783 54.857 54.857v365.714c0 30.075-24.783 54.857-54.857 54.857h-365.714zM474.214 694.857h2.429c19.606 0 35.357-13.85 35.357-31.071v-78.643h74.357c19.606 0 35.357-13.85 35.357-31.071v-11c0-17.221-15.752-31.071-35.357-31.071h-74.357v-78.643c0-17.221-15.752-31.071-35.357-31.071h-2.429c-19.606 0-35.357 13.85-35.357 31.071v78.643h-74.357c-19.605 0-35.357 13.85-35.357 31.071v11c0 17.221 15.752 31.071 35.357 31.071h74.357v78.643c0 17.221 15.752 31.071 35.357 31.071z" />
<glyph unicode="&#xe686;" glyph-name="circlesmall-plus" data-tags="circlesmall-plus" d="M292.571 786.286c-30.075 0-54.857-24.783-54.857-54.857v-365.714c0-30.075 24.783-54.857 54.857-54.857h365.714c30.075 0 54.857 24.783 54.857 54.857v365.714c0 30.075-24.783 54.857-54.857 54.857h-365.714zM292.571 749.714h365.714c10.447 0 18.286-7.839 18.286-18.286v-365.714c0-10.447-7.839-18.286-18.286-18.286h-365.714c-10.447 0-18.286 7.839-18.286 18.286v365.714c0 10.447 7.839 18.286 18.286 18.286zM365.714 585.143h219.429c20.198 0 36.571-13.918 36.571-31.086v-10.971c0-17.168-16.374-31.086-36.571-31.086h-219.429c-20.198 0-36.571 13.918-36.571 31.086v10.971c0 17.168 16.374 31.086 36.571 31.086zM475.429 694.857c20.198 0 36.571-13.918 36.571-31.086v-230.4c0-17.168-16.374-31.086-36.571-31.086s-36.571 13.918-36.571 31.086v230.4c0 17.168 16.374 31.086 36.571 31.086z" />
<glyph unicode="&#xe687;" glyph-name="pencil" data-tags="pencil" d="M658.286 914.286l-73.143-73.143 256-256 73.143 73.143c48.943 51.287 48.157 100.39 0 146.286l-109.714 109.714c-46.636 46.636-97.775 48.511-146.286 0zM548.571 804.571l-475.429-475.429v-256l256 0.073 475.429 475.355zM566.857 713.143l36.571-36.571-329.143-329.143-36.571 36.571zM201.143 347.429c55.795-55.79 93.591-94.29 144.571-147.071l1.714 0.786-54.857-54.857h-73.143v73.143h-73.143v73.143z" />
<glyph unicode="&#xe688;" glyph-name="copy" data-tags="copy" d="M256 950.857c-20.261 0-36.571-16.311-36.571-36.571v-694.857h621.714c20.261 0 36.571 16.311 36.571 36.571v329.143h-292.571c-36.571 0-73.143 0-73.143 73.143v292.571zM585.143 950.857v-292.571h292.571zM109.714 804.571c-20.261 0-36.571-16.311-36.571-36.571v-658.286c0-20.261 16.311-36.571 36.571-36.571h585.143c20.261 0 36.571 16.311 36.571 36.571v36.571h-585.143v658.286h-36.571z" />
<glyph unicode="&#xe689;" glyph-name="scissors" data-tags="scissors" d="M974.75 309.003c-71.135 109.623-193.145 157.861-272.54 107.754-6.861-4.326-13.159-9.257-18.927-14.711l-84.754 130.712 195.688 302.931c16.009 29.169 21.931 63.909 14.148 98.851-7.441 33.393-26.146 61.468-51.303 81.245l-13.090 8.214-231.972-357.784-231.972 357.784-13.090-8.214c-25.156-19.76-43.879-47.835-51.303-81.245-7.782-34.942-1.86-69.682 14.148-98.851l195.688-302.931-84.754-130.712c-5.769 5.453-12.066 10.385-18.927 14.711-79.395 50.107-201.423 1.868-272.54-107.754s-64.427-239.090 14.968-289.197c79.395-50.107 201.423-1.868 272.54 107.754l175.242 271.271 175.242-271.271c71.135-109.623 193.145-157.861 272.54-107.754s86.085 179.591 14.968 289.197zM250.502 181.994c-32.017-49.333-73.097-73.351-100.882-79.36 0 0 0 0 0 0-9.062-1.969-21.641-3.164-30.208 2.239-9.489 5.992-15.787 21.83-16.845 42.365-1.724 33.292 10.291 72.409 32.956 107.334 32.017 49.35 73.097 73.351 100.865 79.36 9.062 1.969 21.658 3.164 30.225-2.239 9.489-5.992 15.787-21.83 16.845-42.365 1.724-33.292-10.274-72.425-32.939-107.334zM512 485.413c-18.859 0-34.134 15.064-34.134 33.663s15.275 33.663 34.134 33.663c18.859 0 34.134-15.064 34.134-33.663s-15.275-33.663-34.134-33.663zM921.45 147.237c-1.058-20.551-7.356-36.373-16.845-42.365-8.568-5.403-21.163-4.208-30.208-2.239 0 0 0 0 0 0-27.768 6.009-68.865 30.027-100.882 79.36-22.665 34.925-34.663 74.041-32.939 107.334 1.058 20.534 7.356 36.373 16.845 42.365 8.568 5.403 21.163 4.191 30.225 2.239 27.768-6.009 68.848-30.027 100.865-79.36 22.665-34.925 34.663-74.041 32.956-107.334z" />
<glyph unicode="&#xe68a;" glyph-name="clipboard" data-tags="clipboard" d="M914.286 658.286c20.261 0 36.571-16.311 36.571-36.571v-585.143c0-20.261-16.311-36.571-36.571-36.571h-512c-20.261 0-36.571 16.311-36.571 36.571v329.143h258.929c18.623 0 33.643 16.311 33.643 36.571v256zM585.143 658.286v-219.429h-219.429v0.285l219.143 219.143zM365.714 1024c-36.571 0-73.143-36.571-73.143-73.143h-146.286c-40.521 0-73.143-32.622-73.143-73.143v-694.857c0-40.521 32.622-36.571 73.143-36.571h146.286v347.429l237.714 237.714h274.286v146.286c0 40.521-32.622 73.143-73.143 73.143h-146.286c0 36.571-36.571 73.143-73.143 73.143zM402.286 950.857h73.143c20.261 0 36.571-16.311 36.571-36.571v-36.571h128c10.13 0 18.286-8.155 18.286-18.286v-36.571c0-10.13-8.155-18.286-18.286-18.286h-402.286c-10.13 0-18.286 8.155-18.286 18.286v36.571c0 10.13 8.155 18.286 18.286 18.286h128v36.571c0 20.261 16.311 36.571 36.571 36.571z" />
<glyph unicode="&#xe68b;" glyph-name="disk" data-tags="disk" d="M36.571 1024c-20.261 0-36.571-16.311-36.571-36.571v-950.857c0-20.261 16.311-36.571 36.571-36.571h109.714v438.857c0 40.521 32.622 73.143 73.143 73.143h585.143c40.521 0 73.143-32.622 73.143-73.143v-438.857h109.714c20.261 0 36.571 16.311 36.571 36.571v841.143l-146.286 146.286h-841.143zM219.429 950.857h585.143v-256c0-20.261-16.311-36.571-36.571-36.571h-512c-20.261 0-36.571 16.311-36.571 36.571v256zM585.143 914.286v-219.429h146.286v219.429h-146.286zM219.429 438.857v-73.143h585.143v73.143h-585.143zM219.429 292.571v-73.143h585.143v73.143h-585.143zM219.429 146.286v-73.143h585.143v73.143h-585.143z" />
<glyph unicode="&#xe68c;" glyph-name="undo" data-tags="undo" d="M764.5 146.286c-48.013 0-42.768 7.295-37.571 30.929 0.462 2.345 1.043 4.641 1.428 7 0.205 1.198 0.461 1.872 0.643 3.143h-0.358c1.554 10.443 2.755 20.976 2.787 31.571 0 121.187-98.242 219.429-219.429 219.429h-73.143v-146.286c0-0.002 0-0.005 0-0.007 0-10.1-8.188-18.288-18.288-18.288-0.2 0-0.4 0.003-0.599 0.010-4.913 0.162-9.336 2.262-12.528 5.56l-292.372 292.368c-3.308 3.309-5.354 7.88-5.354 12.929s2.046 9.619 5.354 12.929l292.571 292.571c3.309 3.307 7.879 5.352 12.927 5.352 10.097 0 18.283-8.184 18.288-18.28v-146.286h73.143c201.978 0 365.714-163.736 365.714-365.714-0.227-67.695-18.709-133.716-53.857-190.929-2.045-3.228-4.289-6.723-5.929-9.214-1.015-1.544-2.102-3.042-3.143-4.571-9.751-13.857-14.574-14.214-37.357-14.214h-12.929z" />
<glyph unicode="&#xe68d;" glyph-name="redo" data-tags="redo" d="M259.504 146.286c48.013 0 42.768 7.295 37.571 30.929-0.462 2.345-1.043 4.641-1.428 7-0.205 1.198-0.461 1.872-0.643 3.143h0.358c-1.554 10.443-2.755 20.976-2.787 31.571 0 121.187 98.242 219.429 219.429 219.429h73.143v-146.286c0-0.002 0-0.005 0-0.007 0-10.1 8.188-18.288 18.288-18.288 0.2 0 0.4 0.003 0.599 0.010 4.913 0.162 9.336 2.262 12.528 5.56l292.372 292.368c3.308 3.309 5.354 7.88 5.354 12.929s-2.046 9.619-5.354 12.929l-292.571 292.571c-3.309 3.307-7.879 5.352-12.927 5.352-10.097 0-18.283-8.184-18.288-18.28v-146.286h-73.143c-201.978 0-365.714-163.736-365.714-365.714 0.227-67.695 18.709-133.716 53.857-190.929 2.045-3.228 4.289-6.723 5.929-9.214 1.015-1.544 2.102-3.042 3.143-4.571 9.751-13.857 14.574-14.214 37.357-14.214h12.929z" />
<glyph unicode="&#xe68e;" glyph-name="rename" data-tags="rename" d="M36.571 804.571c-20.261 0-36.571-16.311-36.571-36.571v-512c0-20.261 16.311-36.571 36.571-36.571h512v73.143h-457.143c-10.13 0-18.286 8.155-18.286 18.286v402.286c0 10.13 8.155 18.286 18.286 18.286h457.143v73.143h-512zM585.143 804.571v-73.143h73.143v73.143h-73.143zM694.857 804.571v-73.143h237.714c10.13 0 18.286-8.155 18.286-18.286v-402.286c0-10.13-8.155-18.286-18.286-18.286h-237.714v-73.143h292.571c20.261 0 36.571 16.311 36.571 36.571v512c0 20.261-16.311 36.571-36.571 36.571h-292.571zM585.143 292.571v-73.143h73.143v73.143h-73.143zM164.571 658.286h36.571c10.099 0 18.286-8.187 18.286-18.286v-256c0-10.099-8.187-18.286-18.286-18.286h-36.571c-10.099 0-18.286 8.187-18.286 18.286v256c0 10.099 8.187 18.286 18.286 18.286zM457.143 950.857c-10.13 0-18.286-8.155-18.286-18.286v-36.571c0-10.13 8.155-18.286 18.286-18.286h128v-731.429h-128c-10.13 0-18.286-8.155-18.286-18.286v-36.571c0-10.13 8.155-18.286 18.286-18.286h329.143c10.13 0 18.286 8.155 18.286 18.286v36.571c0 10.13-8.155 18.286-18.286 18.286h-128v731.429h128c10.13 0 18.286 8.155 18.286 18.286v36.571c0 10.13-8.155 18.286-18.286 18.286h-329.143z" />
<glyph unicode="&#xe68f;" glyph-name="trash" data-tags="trash" d="M509.643 1024c-103.488 0.008-206.455-11.965-287.143-37.873-40.344-12.954-75.377-29.199-102.643-51.905-26.315-21.914-45.71-52.922-46.5-88.203-0.097-0.991-0.153-2.146-0.155-3.313 0.013 0.419-0.067-0.021-0.059-0.482 0.077-1.197 0.196-2.271 0.36-3.33-0.227 0.709-0.061-0.889 0.204-2.452 0.050-0.463 0.399-2.112 0.855-3.717l108.723-728.485c1.474-9.677 6.54-17.957 13.766-23.58 68.115-60.432 191.112-80.622 314.948-80.66 123.837-0.037 246.892 20.103 316.857 82.261 6.829 6.113 11.343 14.699 12.133 24.342l109.439 730.753c0.246 1.57 0.392 3.387 0.4 5.236 0.003-0.908 0.028-0.119 0.028 0.677 0 0.036 0 0.071 0 0.107-0.005 0.286-0.066 0.563-0.073 0.854-0.004 0.144 0.004 0.286 0 0.43-0.093 1.912-0.317 3.703-0.664 5.45-1.989 32.946-21.926 62.94-48.405 84.4-27.739 22.481-63.171 38.689-103.857 51.619-81.372 25.86-184.727 37.865-288.214 37.873zM509.643 950.688c97.66-0.007 195.797-12.103 266.071-34.436 35.137-11.167 63.149-25.075 80-38.732 9.538-7.73 15.004-14.383 18.214-20.762-65.907-53.327-195.174-87.272-334.5-87.272-139.868 0-287.557 32.441-388.286 91.353 3.142 5.232 7.912 10.72 15.5 17.039 16.141 13.441 43.452 27.307 78.143 38.446 69.382 22.278 167.197 34.372 264.857 34.365z" />
<glyph unicode="&#xe690;" glyph-name="print" data-tags="print" d="M256 1024c-20.197-0.002-36.569-16.374-36.571-36.571v-182.857h-36.571c-0.006 0-0.014 0-0.021 0-11.517 0-21.791-5.323-28.496-13.644l-146.341-182.927c-4.984-6.197-8-14.161-8-22.83 0-0.010 0-0.019 0-0.029v-329.141c0.002-20.197 16.374-36.569 36.571-36.571h168.643l-57.071-171.286c-1.19-3.452-1.877-7.43-1.877-11.568 0-20.2 16.375-36.575 36.575-36.575 0.006 0 0.012 0 0.018 0h658.285c0.005 0 0.011 0 0.017 0 20.2 0 36.575 16.375 36.575 36.575 0 4.138-0.687 8.116-1.954 11.825l-56.995 171.028h168.643c20.197 0.002 36.569 16.374 36.571 36.571v329.143c0 0.008 0 0.018 0 0.027 0 8.669-3.016 16.633-8.055 22.901l-146.23 182.786c-6.759 8.391-17.033 13.714-28.55 13.714-0.007 0-0.015 0-0.022 0h-36.57v182.857c-0.002 20.197-16.374 36.569-36.571 36.571h-512zM292.571 950.857h438.857v-219.429h-438.857v219.429zM822.857 585.143h109.714c4.448 0 8.337-1.807 11.5-4.429l5-6.214c0.087-0.189 0.276-0.308 0.357-0.5 0.923-2.189 1.429-4.61 1.429-7.143v-36.571c0-10.13-8.155-18.286-18.286-18.286h-109.714c-10.13 0-18.286 8.155-18.286 18.286v36.571c0 10.13 8.155 18.286 18.286 18.286zM355.5 438.857h313l121.857-365.714h-556.714l121.857 365.714zM448 365.714c-0.154 0.002-0.335 0.004-0.517 0.004-20.2 0-36.575-16.375-36.575-36.575s16.375-36.575 36.575-36.575c0.182 0 0.363 0.001 0.545 0.004h146.258c0.154-0.002 0.335-0.004 0.517-0.004 20.2 0 36.575 16.375 36.575 36.575s-16.375 36.575-36.575 36.575c-0.182 0-0.363-0.001-0.545-0.004h-146.258zM374.857 219.429c-0.154 0.002-0.335 0.004-0.517 0.004-20.2 0-36.575-16.375-36.575-36.575s16.375-36.575 36.575-36.575c0.182 0 0.363 0.001 0.545 0.004h274.258c0.154-0.002 0.335-0.004 0.517-0.004 20.2 0 36.575 16.375 36.575 36.575s-16.375 36.575-36.575 36.575c-0.182 0-0.363-0.001-0.545-0.004h-274.258z" />
<glyph unicode="&#xe691;" glyph-name="print-b" data-tags="print-b" d="M256 1024c-20.197-0.002-36.569-16.374-36.571-36.571v-182.857h-36.571c-11.113 0.006-21.626-5.040-28.571-13.714l-146.286-182.857c-5.185-6.49-8.006-14.551-8-22.857v-329.143c0.002-20.197 16.374-36.569 36.571-36.571h168.643l-57.071-171.286c-7.898-23.69 9.742-48.154 34.714-48.143h658.286c24.972-0.011 42.612 24.452 34.714 48.143l-57.071 171.286h168.643c20.197 0.002 36.569 16.374 36.571 36.571v329.143c0.006 8.306-2.815 16.368-8 22.857l-146.286 182.857c-6.946 8.675-17.459 13.721-28.571 13.714h-36.571v182.857c-0.002 20.197-16.374 36.569-36.571 36.571zM292.571 950.857h438.857v-219.429h-438.857zM200.429 731.429h19v-36.571c0.002-20.197 16.374-36.569 36.571-36.571h512c20.197 0.002 36.569 16.374 36.571 36.571v36.571h19l127.286-159.143v-279.714l-156.071-1.214-65.214 195.643c-4.983 14.937-18.968 25.008-34.714 25h-365.714c-15.747 0.008-29.731-10.063-34.714-25l-65.214-195.643-156.071 1.214v279.714zM355.5 438.857h313l121.857-365.714h-556.714zM448 365.714c-0.154 0.002-0.335 0.004-0.517 0.004-20.2 0-36.575-16.375-36.575-36.575s16.375-36.575 36.575-36.575c0.182 0 0.363 0.001 0.545 0.004h146.258c0.154-0.002 0.335-0.004 0.517-0.004 20.2 0 36.575 16.375 36.575 36.575s-16.375 36.575-36.575 36.575c-0.182 0-0.363-0.001-0.545-0.004h-146.258zM374.857 219.429c-0.154 0.002-0.335 0.004-0.517 0.004-20.2 0-36.575-16.375-36.575-36.575s16.375-36.575 36.575-36.575c0.182 0 0.363 0.001 0.545 0.004h274.258c0.154-0.002 0.335-0.004 0.517-0.004 20.2 0 36.575 16.375 36.575 36.575s-16.375 36.575-36.575 36.575c-0.182 0-0.363-0.001-0.545-0.004h-274.258zM841.143 585.143c20.198 0 36.571-16.374 36.571-36.571s-16.374-36.571-36.571-36.571c-20.198 0-36.571 16.374-36.571 36.571s16.374 36.571 36.571 36.571z" />
<glyph unicode="&#xe692;" glyph-name="note" data-tags="note" d="M182.857 1024c-20.261 0-36.571-16.311-36.571-36.571v-109.714h-73.143c-40.521 0-73.143-32.622-73.143-73.143s32.622-73.143 73.143-73.143h73.143v-146.286h-73.143c-40.521 0-73.143-32.622-73.143-73.143s32.622-73.143 73.143-73.143h73.143v-146.286h-73.143c-40.521 0-73.143-32.622-73.143-73.143s32.622-73.143 73.143-73.143h73.143v-109.714c0-20.261 16.311-36.571 36.571-36.571h804.571c20.261 0 36.571 16.311 36.571 36.571v950.857c0 20.261-16.311 36.571-36.571 36.571h-804.571zM256 950.857h73.143c20.261 0 36.571-16.311 36.571-36.571v-804.571c0-20.261-16.311-36.571-36.571-36.571h-73.143c-20.261 0-36.571 16.311-36.571 36.571v36.571c40.521 0 73.143 32.622 73.143 73.143s-32.622 73.143-73.143 73.143v146.286c40.521 0 73.143 32.622 73.143 73.143s-32.622 73.143-73.143 73.143v146.286c40.521 0 73.143 32.622 73.143 73.143s-32.622 73.143-73.143 73.143v36.571c0 20.261 16.311 36.571 36.571 36.571z" />
<glyph unicode="&#xe693;" glyph-name="table" data-tags="table" d="M73.143 950.857c-40.521 0-73.143-32.622-73.143-73.143v-731.429c0-40.521 32.622-73.143 73.143-73.143h877.714c40.521 0 73.143 32.622 73.143 73.143v731.429c0 40.521-32.622 73.143-73.143 73.143h-877.714zM73.143 731.429h292.571v-146.286h-292.571v146.286zM438.857 731.429h219.429v-146.286h-219.429v146.286zM731.429 731.429h219.429v-146.286h-219.429v146.286zM73.143 512h292.571v-146.286h-292.571v146.286zM438.857 512h219.429v-146.286h-219.429v146.286zM731.429 512h219.429v-146.286h-219.429v146.286zM73.143 292.571h292.571v-146.286h-292.571v146.286zM438.857 292.571h219.429v-146.286h-219.429v146.286zM731.429 292.571h219.429v-146.286h-219.429v146.286z" />
<glyph unicode="&#xe694;" glyph-name="tag" data-tags="tag" d="M914.279 950.857c20.197-0.002 36.569-16.374 36.571-36.571v-329.143c-0.002-10.099-4.097-19.242-10.717-25.86l-475.426-475.426c-6.618-6.616-15.76-10.707-25.857-10.707s-19.239 4.092-25.857 10.707l-329.143 329.143c-6.616 6.618-10.707 15.76-10.707 25.857s4.092 19.239 10.707 25.857l475.428 475.428c6.618 6.619 15.761 10.713 25.86 10.714h329.14zM749.707 841.143c-50.495 0-91.429-40.934-91.429-91.429s40.934-91.429 91.429-91.429c50.495 0 91.429 40.934 91.429 91.429s-40.934 91.429-91.429 91.429z" />
<glyph unicode="&#xe695;" glyph-name="ticket" data-tags="ticket" d="M576.014 704.001l127.997-128.001-255.994-256.002-127.997 128.001zM1001.525 726.498l-73.518 73.521-32.015-32.016c-16.384-16.384-39.007-26.512-63.999-26.512-49.983 0-90.51 40.528-90.51 90.513 0 25.008 10.144 47.632 26.527 64.017l31.983 31.984-73.518 73.521c-29.967 29.968-79.006 29.968-108.973 0l-595.026-595.045c-29.967-29.968-29.967-79.009 0-108.977l73.518-73.521 31.967 31.968c16.384 16.4 39.023 26.56 64.047 26.56 49.983 0 90.51-40.528 90.51-90.513 0-25.008-10.144-47.632-26.527-64.017l-31.983-31.984 73.518-73.521c29.967-29.968 79.006-29.968 108.973 0l595.026 595.045c29.967 29.968 29.967 79.025 0 108.977zM448.018 191.998l-255.994 256.002 383.991 384.003 255.994-256.002-383.991-384.003z" />
<glyph unicode="&#xe696;" glyph-name="folder-collapsed" data-tags="folder-collapsed" d="M164.571 950.857c-10.099-0.001-18.285-8.187-18.286-18.286v-128h731.429v54.857c-0.001 10.099-8.187 18.285-18.286 18.286h-394.714l-67.786 67.786c-3.429 3.429-8.079 5.356-12.929 5.357h-219.429zM18.286 731.429c-11.799-0.006-20.503-11.019-17.786-22.5l146.286-621.714c1.953-8.244 9.313-14.067 17.786-14.071h694.857c8.472 0.004 15.832 5.827 17.786 14.071l146.286 621.714c2.718 11.481-5.987 22.494-17.786 22.5h-987.429z" />
<glyph unicode="&#xe697;" glyph-name="folder-open" data-tags="folder-open" d="M164.571 950.857c-10.099-0.001-18.285-8.187-18.286-18.286v-274.286h731.429v201.143c-0.001 10.099-8.187 18.285-18.286 18.286h-394.714l-67.786 67.786c-3.429 3.429-8.079 5.356-12.929 5.357zM18.286 585.143c-11.799-0.006-20.503-11.010-17.786-22.491l146.286-475.437c1.953-8.244 9.313-14.067 17.786-14.071h694.857c8.472 0.004 15.832 5.827 17.786 14.071l146.286 475.437c2.718 11.481-5.987 22.485-17.786 22.491z" />
<glyph unicode="&#xe698;" glyph-name="document" data-tags="document" d="M146.286 1024c-40.521 0-73.143-32.622-73.143-73.143v-877.714c0-40.521 32.622-73.143 73.143-73.143h731.429c40.521 0 73.143 32.622 73.143 73.143v585.143h-329.143c-20.261 0-36.571 16.311-36.571 36.571v329.143h-438.857zM658.286 1024v-292.571h292.571l-292.571 292.571z" />
<glyph unicode="&#xe699;" glyph-name="document-b" data-tags="document-b" d="M1024 146.286c0-40.521-32.622-73.143-73.143-73.143h-877.714c-40.521 0-73.143 32.622-73.143 73.143v731.429c0 40.521 32.622 73.143 73.143 73.143h585.143v-329.143c0-20.261 16.311-36.571 36.571-36.571h329.143v-438.857zM1024 658.286h-292.571v292.571l292.571-292.571z" />
<glyph unicode="&#xe69a;" glyph-name="audio" data-tags="audio" d="M877.714 1024l-548.571-329.143v-109.714h0.071v-369.357c-11.174 2.306-24.005 3.635-37.249 3.645-80.114-0.002-145.608-49.122-145.608-109.716s65.494-109.714 146.286-109.714c80.791 0 146.286 49.121 146.286 109.714 0 0 0 0 0 0v475.429l329 189.786v-340.357c-11.174 2.306-24.005 3.635-37.249 3.645-80.114-0.002-145.608-49.122-145.608-109.716s65.494-109.714 146.286-109.714c80.791 0 146.286 49.121 146.286 109.714v475.429h-2.286l2.357 0.643v219.429z" />
<glyph unicode="&#xe69b;" glyph-name="film" data-tags="film" d="M73.143 950.857c-40.521 0-73.143-32.622-73.143-73.143v-731.429c0-40.521 32.622-73.143 73.143-73.143h877.714c40.521 0 73.143 32.622 73.143 73.143v731.429c0 40.521-32.622 73.143-73.143 73.143h-877.714zM109.714 877.714h73.143c20.261 0 36.571-16.311 36.571-36.571v-73.143c0-20.261-16.311-36.571-36.571-36.571h-73.143c-20.261 0-36.571 16.311-36.571 36.571v73.143c0 20.261 16.311 36.571 36.571 36.571zM329.143 877.714h365.714c20.261 0 36.571-16.311 36.571-36.571v-219.429c0-20.261-16.311-36.571-36.571-36.571h-365.714c-20.261 0-36.571 16.311-36.571 36.571v219.429c0 20.261 16.311 36.571 36.571 36.571zM841.143 877.714h73.143c20.261 0 36.571-16.311 36.571-36.571v-73.143c0-20.261-16.311-36.571-36.571-36.571h-73.143c-20.261 0-36.571 16.311-36.571 36.571v73.143c0 20.261 16.311 36.571 36.571 36.571zM109.714 585.143h73.143c20.261 0 36.571-16.311 36.571-36.571v-73.143c0-20.261-16.311-36.571-36.571-36.571h-73.143c-20.261 0-36.571 16.311-36.571 36.571v73.143c0 20.261 16.311 36.571 36.571 36.571zM841.143 585.143h73.143c20.261 0 36.571-16.311 36.571-36.571v-73.143c0-20.261-16.311-36.571-36.571-36.571h-73.143c-20.261 0-36.571 16.311-36.571 36.571v73.143c0 20.261 16.311 36.571 36.571 36.571zM329.143 438.857h365.714c20.261 0 36.571-16.311 36.571-36.571v-219.429c0-20.261-16.311-36.571-36.571-36.571h-365.714c-20.261 0-36.571 16.311-36.571 36.571v219.429c0 20.261 16.311 36.571 36.571 36.571zM109.714 292.571h73.143c20.261 0 36.571-16.311 36.571-36.571v-73.143c0-20.261-16.311-36.571-36.571-36.571h-73.143c-20.261 0-36.571 16.311-36.571 36.571v73.143c0 20.261 16.311 36.571 36.571 36.571zM841.143 292.571h73.143c20.261 0 36.571-16.311 36.571-36.571v-73.143c0-20.261-16.311-36.571-36.571-36.571h-73.143c-20.261 0-36.571 16.311-36.571 36.571v73.143c0 20.261 16.311 36.571 36.571 36.571z" />
<glyph unicode="&#xe69c;" glyph-name="video" data-tags="video" d="M109.714 804.571c-60.782 0-109.714-48.933-109.714-109.714v-365.714c0-60.782 48.933-109.714 109.714-109.714h438.857c60.782 0 109.714 48.933 109.714 109.714v81.714l310.357-186.214c5.363-3.261 11.847-5.191 18.782-5.191 20.19 0 36.56 16.36 36.575 36.547v512.001c0 0.004 0 0.008 0 0.012 0 20.2-16.375 36.575-36.575 36.575-0.375 0-0.75-0.006-1.122-0.017-6.776-0.217-13.083-2.276-18.442-5.691l-309.575-185.736v81.714c0 60.782-48.933 109.714-109.714 109.714h-438.857z" />
<glyph unicode="&#xe69d;" glyph-name="image" data-tags="image" d="M73.143 950.857c-40.521 0-73.143-32.622-73.143-73.143v-731.429c0-40.521 32.622-73.143 73.143-73.143h877.714c40.521 0 73.143 32.622 73.143 73.143v731.429c0 40.521-32.622 73.143-73.143 73.143h-877.714zM109.714 877.714h804.571c20.261 0 36.571-16.311 36.571-36.571v-658.286c0-20.261-16.311-36.571-36.571-36.571h-804.571c-20.261 0-36.571 16.311-36.571 36.571v658.286c0 20.261 16.311 36.571 36.571 36.571zM365.714 804.571l-219.429-365.714v-219.429h731.429v365.714l-146.286-219.429h-73.143l-292.571 438.857zM694.857 804.571c-60.594 0-109.714-49.121-109.714-109.714s49.121-109.714 109.714-109.714c60.594 0 109.714 49.121 109.714 109.714s-49.121 109.714-109.714 109.714z" />
<glyph unicode="&#xe69e;" glyph-name="script" data-tags="script" d="M146.286 1024c-40.521 0-73.143-32.622-73.143-73.143v-877.714c0-40.521 32.622-73.143 73.143-73.143h731.429c40.521 0 73.143 32.622 73.143 73.143v585.143h-329.143c-20.261 0-36.571 16.311-36.571 36.571v329.143h-438.857zM658.286 1024v-292.571h292.571l-292.571 292.571zM390.071 548.571h48.786v-109.714l-146.286-109.714 146.286-109.714v-109.714h-48.786l-243.786 182.857v73.143l243.786 182.857zM585.143 548.571h48.786l243.786-182.857v-73.143l-243.786-182.857h-48.786v109.714l146.286 109.714-146.286 109.714v109.714z" />
<glyph unicode="&#xe69f;" glyph-name="file-pdf" data-tags="file-pdf" d="M146.286 1024c-40.521 0-73.143-32.622-73.143-73.143v-877.714c0-40.521 32.622-73.143 73.143-73.143h731.429c40.521 0 73.143 32.622 73.143 73.143v585.143h-329.143c-20.261 0-36.571 16.311-36.571 36.571v329.143h-438.857zM658.286 1024v-292.571h292.571l-292.571 292.571zM472.571 731.357h12.571c8.753 0 15.416-2.795 20-8.5 6.851-7.997 8.556-20.962 5.143-38.857-0.756-2.292-1.506-3.816-2.286-4.571 0.39-1.146 0.571-2.67 0.571-4.571v-17.143c-0.756-46.86-3.417-83.432-8-109.714 20.943-62.464 48.759-107.791 83.429-136v0.071c12.581-9.899 28.593-20.565 48-32 22.479 2.658 44.768 4 66.857 4 56.003 0 89.708-9.396 101.143-28.071 6.095-8.387 6.482-18.233 1.143-29.643 0-0.39-0.18-0.777-0.571-1.143l-1.143-1.143v-0.571c-2.292-14.482-15.825-21.714-40.571-21.714-18.286 0-40.187 3.797-65.714 11.429s-50.295 17.73-74.286 30.286c-84.187-9.143-158.854-24.949-224-47.429-58.295-99.816-104.396-149.714-138.286-149.714-5.705 0-11.026 1.271-16 3.929l-13.714 6.857c-0.39 0.39-1.527 1.346-3.429 2.857-3.803 3.803-4.94 10.673-3.429 20.571 3.438 15.238 14.104 32.659 32 52.286s43.026 38.003 75.429 55.143c5.339 3.438 9.73 2.301 13.143-3.429 0.756-0.756 1.143-1.506 1.143-2.286 19.797 32.378 40.175 69.905 61.143 112.571 25.893 51.81 45.702 101.708 59.429 149.714-9.143 31.232-15.013 61.618-17.5 91.143s-1.188 53.744 3.786 72.786c4.194 15.238 12.2 22.857 24 22.857zM482.857 705.143c0-0.39-0.18-0.777-0.571-1.143v-1.143c-5.685-15.997-6.086-41.167-1.143-75.429 0.39 2.658 1.733 11.098 4 25.214 0 1.146 1.342 9.333 4 24.571 0.39 1.536 1.14 3.060 2.286 4.571-0.39 0.39-0.571 0.777-0.571 1.143s-0.092 0.591-0.286 0.786c-0.194 0.195-0.286 0.491-0.286 0.857-0.39 8.387-2.869 15.256-7.429 20.571zM484.643 485.214c-10.289-32.768-26.167-70.295-47.5-112.571-11.435-21.333-19.938-37.14-25.643-47.429 51.401 20.565 105.454 36.001 162.214 46.286-0.756 0.39-3.235 2.21-7.429 5.429s-7.241 5.788-9.143 7.714c-28.965 25.527-53.093 59.051-72.5 100.571zM700.571 348.071c28.965-10.679 52.596-16.071 70.857-16.071 5.339 0 8.703 0.252 10.214 0.643 0 0.39-0.316 0.958-1.071 1.714-9.143 9.143-35.797 13.714-80 13.714zM333.143 267.5c-19.432-15.238-36.103-31.226-50-48-13.866-16.737-23.185-30.817-28.143-42.214 19.783 9.21 45.807 39.265 78.143 90.214z" />
<glyph unicode="&#xe6a0;" glyph-name="file-rtf" data-tags="file-rtf" d="M146.286 1024c-40.521 0-73.143-32.622-73.143-73.143v-877.714c0-40.521 32.622-73.143 73.143-73.143h731.429c40.521 0 73.143 32.622 73.143 73.143v585.143h-329.143c-20.261 0-36.571 16.311-36.571 36.571v329.143h-438.857zM658.286 1024v-292.571h292.571l-292.571 292.571zM292.571 512h73.143c40.521 0 73.143-32.622 73.143-73.143v-73.143c0-40.521-32.622-73.143-73.143-73.143h-73.143c-40.521 0-73.143 32.622-73.143 73.143v73.143c0 40.521 32.622 73.143 73.143 73.143zM530.286 512h256c10.13 0 18.286-8.155 18.286-18.286v-36.571c0-10.13-8.155-18.286-18.286-18.286h-256c-10.13 0-18.286 8.155-18.286 18.286v36.571c0 10.13 8.155 18.286 18.286 18.286zM530.286 365.714h256c10.13 0 18.286-8.155 18.286-18.286v-36.571c0-10.13-8.155-18.286-18.286-18.286h-256c-10.13 0-18.286 8.155-18.286 18.286v36.571c0 10.13 8.155 18.286 18.286 18.286zM237.714 219.429h548.571c10.13 0 18.286-8.155 18.286-18.286v-36.571c0-10.13-8.155-18.286-18.286-18.286h-548.571c-10.13 0-18.286 8.155-18.286 18.286v36.571c0 10.13 8.155 18.286 18.286 18.286z" />
<glyph unicode="&#xe6a1;" glyph-name="file-spreadsheet" data-tags="file-spreadsheet" d="M146.286 1024c-40.521 0-73.143-32.622-73.143-73.143v-877.714c0-40.521 32.622-73.143 73.143-73.143h731.429c40.521 0 73.143 32.622 73.143 73.143v585.143h-329.143c-20.261 0-36.571 16.311-36.571 36.571v329.143h-438.857zM658.286 1024v-292.571h292.571l-292.571 292.571zM146.286 585.143h146.286v-73.143h-146.286v73.143zM365.714 585.143h219.429v-73.143h-219.429v73.143zM658.286 585.143h219.429v-73.143h-219.429v73.143zM146.286 438.857h146.286v-73.143h-146.286v73.143zM365.714 438.857h219.429v-73.143h-219.429v73.143zM658.286 438.857h219.429v-73.143h-219.429v73.143zM146.286 292.571h146.286v-73.143h-146.286v73.143zM365.714 292.571h219.429v-73.143h-219.429v73.143zM658.286 292.571h219.429v-73.143h-219.429v73.143zM146.286 146.286h146.286v-73.143h-146.286v73.143zM365.714 146.286h219.429v-73.143h-219.429v73.143zM658.286 146.286h219.429v-73.143h-219.429v73.143z" />
<glyph unicode="&#xe6a2;" glyph-name="file-txt" data-tags="file-txt" d="M146.286 1024c-40.521 0-73.143-32.622-73.143-73.143v-877.714c0-40.521 32.622-73.143 73.143-73.143h731.429c40.521 0 73.143 32.622 73.143 73.143v585.143h-329.143c-20.261 0-36.571 16.311-36.571 36.571v329.143h-438.857zM658.286 1024v-292.571h292.571l-292.571 292.571zM219.429 512h585.143v-73.143h-585.143v73.143zM219.429 365.714h585.143v-73.143h-585.143v73.143zM219.429 219.429h585.143v-73.143h-585.143v73.143z" />
<glyph unicode="&#xe6a3;" glyph-name="file-word" data-tags="file-word" d="M146.286 1024c-40.521 0-73.143-32.622-73.143-73.143v-877.714c0-40.521 32.622-73.143 73.143-73.143h731.429c40.521 0 73.143 32.622 73.143 73.143v585.143h-329.143c-20.261 0-36.571 16.311-36.571 36.571v329.143h-438.857zM658.286 1024v-292.571h292.571l-292.571 292.571zM256 512h109.714l36.571-219.429 73.143 219.429h73.143l73.143-182.857 36.571 182.857h109.714l-73.143-365.714h-109.714l-73.143 219.429-73.143-219.429h-109.714l-73.143 365.714z" />
<glyph unicode="&#xe6a4;" glyph-name="file-zip" data-tags="file-zip" d="M146.286 1024c-40.521 0-73.143-32.622-73.143-73.143v-877.714c0-40.521 32.622-73.143 73.143-73.143h731.429c40.521 0 73.143 32.622 73.143 73.143v585.143h-329.143c-20.261 0-36.571 16.311-36.571 36.571v329.143h-146.286v-73.143h73.143v-73.143h-73.143v-73.143h73.143v-73.143h-73.143v-73.143h73.143v-73.143h-73.143v-73.143h75.286l71-256c0-60.594-65.494-109.714-146.286-109.714s-146.286 49.121-146.286 109.714l73.143 256v73.143h73.143v73.143h-73.143v73.143h73.143v73.143h-73.143v73.143h73.143v73.143h-73.143v73.143h-219.429zM658.286 1024v-292.571h292.571l-292.571 292.571zM438.857 292.571c-40.396 0-73.143-16.374-73.143-36.571s32.747-36.571 73.143-36.571c40.396 0 73.143 16.374 73.143 36.571s-32.747 36.571-73.143 36.571z" />
<glyph unicode="&#xe6a5;" glyph-name="play" data-tags="play" d="M181.5 877.688c-19.606-0.753-35.214-16.828-35.214-36.548 0-0.008 0-0.015 0-0.023v-658.261c0.001-20.199 16.376-36.573 36.575-36.573 5.961 0 11.589 1.426 16.561 3.955l658.078 329.035c12.084 6.138 20.219 18.476 20.219 32.713s-8.136 26.575-20.012 32.617l-658.493 329.227c-4.775 2.447-10.418 3.881-16.396 3.881-0.464 0-0.925-0.009-1.385-0.026z" />
<glyph unicode="&#xe6a6;" glyph-name="pause" data-tags="pause" d="M219.429 877.714h73.143c40.396 0 73.143-32.747 73.143-73.143v-585.143c0-40.396-32.747-73.143-73.143-73.143h-73.143c-40.396 0-73.143 32.747-73.143 73.143v585.143c0 40.396 32.747 73.143 73.143 73.143zM731.429 877.714h73.143c40.396 0 73.143-32.747 73.143-73.143v-585.143c0-40.396-32.747-73.143-73.143-73.143h-73.143c-40.396 0-73.143 32.747-73.143 73.143v585.143c0 40.396 32.747 73.143 73.143 73.143z" />
<glyph unicode="&#xe6a7;" glyph-name="stop" data-tags="stop" d="M219.429 877.714h585.143c40.396 0 73.143-32.747 73.143-73.143v-585.143c0-40.396-32.747-73.143-73.143-73.143h-585.143c-40.396 0-73.143 32.747-73.143 73.143v585.143c0 40.396 32.747 73.143 73.143 73.143z" />
<glyph unicode="&#xe6a8;" glyph-name="volume-off" data-tags="volume-off" d="M493.143 877.714c-4.249-0.136-8.109-1.702-11.138-4.229l-269.005-215.2h-194.714c-10.099-0.001-18.285-8.187-18.286-18.286v-256c0.001-10.098 8.187-18.285 18.286-18.286h194.714l269.286-215.429c3.101-2.498 7.087-4.009 11.427-4.009 10.1 0 18.288 8.187 18.288 18.287 0 0.003 0 0.006 0 0.008v694.857c0 0.002 0 0.005 0 0.008 0 10.1-8.188 18.287-18.288 18.287-0.2 0-0.4-0.003-0.599-0.010zM767.643 658.643c-20.196-0.005-36.565-16.379-36.565-36.575 0-10.274 4.236-19.559 11.057-26.203l83.865-83.865-83.857-83.857c-6.936-6.667-11.244-16.022-11.244-26.384 0-20.2 16.375-36.575 36.575-36.575 10.362 0 19.717 4.309 26.372 11.232l83.869 83.869 83.857-83.857c6.667-6.936 16.022-11.244 26.384-11.244 20.2 0 36.575 16.375 36.575 36.575 0 10.362-4.309 19.717-11.232 26.372l-83.869 83.869 83.857 83.857c6.839 6.653 11.082 15.944 11.082 26.227 0 20.2-16.375 36.575-36.575 36.575-0.379 0-0.757-0.006-1.133-0.017-10.016-0.308-19.018-4.642-25.441-11.439l-83.504-83.488-83.857 83.857c-6.652 6.832-15.939 11.071-26.215 11.071z" />
<glyph unicode="&#xe6a9;" glyph-name="volume-on" data-tags="volume-on" d="M493.143 877.714c-4.249-0.136-8.109-1.702-11.138-4.229l-269.005-215.2h-194.714c-10.099-0.001-18.285-8.187-18.286-18.286v-256c0.001-10.098 8.187-18.285 18.286-18.286h194.714l269.286-215.429c3.101-2.498 7.087-4.009 11.427-4.009 10.1 0 18.288 8.187 18.288 18.287 0 0.003 0 0.006 0 0.008v694.857c0 0.002 0 0.005 0 0.008 0 10.1-8.188 18.287-18.288 18.287-0.2 0-0.4-0.003-0.599-0.010zM817.571 877.643c-0.312 0.010-0.679 0.015-1.048 0.015-20.2 0-36.575-16.375-36.575-36.575 0-12.508 6.279-23.55 15.857-30.145 97.3-68.607 155.035-179.957 155.052-298.866s-57.7-230.302-154.857-298.857c-9.608-6.686-15.818-17.675-15.818-30.115 0-20.2 16.375-36.575 36.575-36.575 8.031 0 15.458 2.589 21.491 6.977 116.416 82.145 185.772 215.962 185.752 358.57s-69.384 276.386-185.929 358.571c-5.849 4.303-13.171 6.919-21.1 7.012zM691.143 731.214c-20.107-0.122-36.36-16.45-36.36-36.574 0-10.383 4.327-19.756 11.275-26.413 41.952-41.385 65.512-97.816 65.37-156.727-0.143-58.911-23.934-115.258-66.071-156.429-7.064-6.683-11.461-16.123-11.461-26.59 0-20.2 16.375-36.575 36.575-36.575 10.147 0 19.329 4.132 25.955 10.805 56.16 54.871 87.956 130.060 88.145 208.574s-31.178 153.861-87.071 209c-6.64 6.748-15.87 10.93-26.078 10.93-0.098 0-0.196 0-0.294-0.001z" />
<glyph unicode="&#xe6aa;" glyph-name="volume-on-b" data-tags="volume-on-b" d="M493.143 877.714c-4.249-0.136-8.109-1.702-11.138-4.229l-269.005-215.2h-194.714c-10.099-0.001-18.285-8.187-18.286-18.286v-256c0.001-10.098 8.187-18.285 18.286-18.286h194.714l269.286-215.429c3.101-2.498 7.087-4.009 11.427-4.009 10.1 0 18.288 8.187 18.288 18.287 0 0.003 0 0.006 0 0.008v694.857c0 0.002 0 0.005 0 0.008 0 10.1-8.188 18.287-18.288 18.287-0.2 0-0.4-0.003-0.599-0.010zM691.143 731.214c-20.107-0.122-36.36-16.45-36.36-36.574 0-10.383 4.327-19.756 11.275-26.413 41.952-41.385 65.512-97.816 65.37-156.727-0.143-58.911-23.934-115.258-66.071-156.429-7.064-6.683-11.461-16.123-11.461-26.59 0-20.2 16.375-36.575 36.575-36.575 10.147 0 19.329 4.132 25.955 10.805 56.16 54.871 87.956 130.060 88.145 208.574s-31.178 153.861-87.071 209c-6.64 6.748-15.87 10.93-26.078 10.93-0.098 0-0.196 0-0.294-0.001z" />
<glyph unicode="&#xe6ab;" glyph-name="shuffle" data-tags="shuffle" d="M640 1024c-10.097-0.004-18.28-8.19-18.28-18.288 0-5.048 2.045-9.618 5.352-12.927l115.071-115.071h-120.429c-141.385 0-256-114.615-256-256v-73.143c0-60.594-49.121-109.714-109.714-109.714h-146.286c-20.261 0-36.571-16.311-36.571-36.571v-73.143c0-20.261 16.311-36.571 36.571-36.571h146.286c141.385 0 256 114.615 256 256v73.143c0 60.594 49.121 109.714 109.714 109.714h120.429l-115.071-115.071c-3.307-3.309-5.352-7.879-5.352-12.927 0-10.097 8.184-18.283 18.28-18.288h146.286c5.050 0.001 9.621 2.049 12.93 5.358l201.142 201.142c3.308 3.309 5.354 7.88 5.354 12.929s-2.046 9.619-5.354 12.929l-201.143 201.143c-3.309 3.309-7.881 5.357-12.93 5.357h-146.284zM109.714 731.429c-20.261 0-36.571-16.311-36.571-36.571v-73.143c0-20.261 16.311-36.571 36.571-36.571h146.286c12.886 0 25.085-2.634 36.571-6.714v43.286c0 36.302 6.211 71.192 17.214 103.929-17.36 3.716-35.316 5.786-53.786 5.786h-146.286zM639 438.857c-9.669-0.535-17.307-8.506-17.307-18.261 0-5.061 2.056-9.642 5.378-12.953l115.072-115.072h-120.429c-44.165 0-81.96 26.243-99.357 63.857-29.451-40.623-67.738-74.418-112.214-98.214 46.088-67.551 123.627-111.929 211.571-111.929h120.429l-115.071-115.071c-3.307-3.309-5.352-7.879-5.352-12.927 0-10.097 8.184-18.283 18.28-18.288h146.286c5.050 0.001 9.621 2.049 12.93 5.358l201.142 201.142c3.308 3.309 5.354 7.88 5.354 12.929s-2.046 9.619-5.354 12.929l-201.143 201.143c-3.309 3.309-7.881 5.357-12.93 5.357h-146.284c-0.149 0.004-0.324 0.007-0.5 0.007s-0.351-0.002-0.526-0.007z" />
<glyph unicode="&#xe6ac;" glyph-name="retweet" data-tags="retweet" d="M220.143 804.571c-4.793 0.171-9.462-1.547-13-4.786l-201.143-182.857c-12.301-11.244-4.38-31.738 12.286-31.786h128v-420.571c0.001-10.099 8.187-18.285 18.286-18.286h402.286c16.286 0.006 24.441 19.694 12.929 31.214l-109.714 109.714c-3.429 3.429-8.079 5.356-12.929 5.357h-164.571v292.571h128c16.665 0.048 24.587 20.542 12.286 31.786l-201.143 182.857c-3.174 2.907-7.271 4.602-11.571 4.786zM803.888 219.44c4.793-0.172 9.462 1.547 13 4.786l201.143 182.857c12.301 11.244 4.38 31.738-12.286 31.786h-128v420.571c-0.001 10.099-8.187 18.285-18.286 18.286h-402.286c-16.286-0.006-24.441-19.694-12.929-31.214l109.714-109.714c3.429-3.429 8.079-5.356 12.929-5.357h164.571v-292.571h-128c-16.665-0.048-24.587-20.542-12.286-31.786l201.143-182.857c3.174-2.907 7.271-4.602 11.571-4.786z" />
<glyph unicode="&#xe6ad;" glyph-name="eject" data-tags="eject" d="M513.429 877.701c-0.419 0.017-0.91 0.027-1.404 0.027-10.805 0-20.515-4.686-27.209-12.136l-329.101-365.677c-5.845-6.457-9.422-15.062-9.422-24.502 0-20.197 16.373-36.569 36.569-36.569 0.024 0 0.047 0 0.071 0h658.139c0.020 0 0.044 0 0.067 0 20.197 0 36.569 16.373 36.569 36.569 0 9.44-3.577 18.045-9.45 24.533l-329.044 365.612c-6.555 7.296-15.945 11.933-26.422 12.163zM182.857 292.558c-20.261 0-36.571-16.311-36.571-36.571v-73.143c0-20.261 16.311-36.571 36.571-36.571h658.286c20.261 0 36.571 16.311 36.571 36.571v73.143c0 20.261-16.311 36.571-36.571 36.571h-658.286z" />
<glyph unicode="&#xe6ae;" glyph-name="link" data-tags="link" d="M748.143 1023.429c-42.715 2.47-86.233-4.376-127.429-21.214-109.856-44.901-181.929-152.108-181.929-270.786 0-31.027 25.152-56.179 56.179-56.179s56.179 25.152 56.179 56.179c0 73.39 44.137 139.090 112.071 166.857s145.451 11.808 196.857-40.571c51.406-52.379 65.965-130.241 36.929-197.643s-95.622-110.305-169-108.929c-0.579 0.021-1.259 0.034-1.942 0.034-31.016 0-56.16-25.144-56.16-56.16 0-30.971 25.070-56.086 56.023-56.16 118.664-2.226 227.268 67.791 274.221 176.786s23.199 236.013-59.929 320.714c-51.954 52.938-120.88 82.955-192.071 87.071zM292.5 585.143c-118.678 0-225.956-72.001-270.857-181.857s-18.772-236.444 65.929-319.571c84.701-83.127 211.72-106.811 320.714-59.857s178.94 155.557 176.714 274.214c-0.119 30.926-25.217 55.951-56.159 55.951-31.016 0-56.16-25.144-56.16-56.16 0-0.68 0.012-1.357 0.036-2.032 1.374-73.28-41.529-139.795-108.931-168.831s-145.192-14.549-197.571 36.857c-52.379 51.406-68.339 128.994-40.571 196.929s93.467 112.071 166.857 112.071c0.41-0.011 0.892-0.017 1.376-0.017 31.016 0 56.16 25.144 56.16 56.16s-25.144 56.16-56.16 56.16c-0.484 0-0.966-0.006-1.447-0.018zM638.929 695.357c-15.096-0.454-28.594-6.938-38.235-17.113l-255.48-255.458c-10.403-10-16.866-24.032-16.866-39.574 0-30.3 24.563-54.863 54.863-54.863 15.542 0 29.575 6.463 39.557 16.848l256.017 256.018c10.236 9.976 16.585 23.898 16.585 39.303 0 30.3-24.563 54.863-54.863 54.863-0.555 0-1.109-0.008-1.66-0.025z" />
<glyph unicode="&#xe6af;" glyph-name="extlink" data-tags="extlink" d="M146.286 877.714c-40.521 0-73.143-32.622-73.143-73.143v-658.286c0-40.521 32.622-73.143 73.143-73.143h658.286c40.521 0 73.143 32.622 73.143 73.143v219.429c0 36.571-36.571 73.143-73.143 73.143s-73.143-36.571-73.143-73.143v-109.714c0-20.261-16.311-36.571-36.571-36.571h-438.857c-20.261 0-36.571 16.311-36.571 36.571v438.857c0 20.261 16.311 36.571 36.571 36.571h109.714c36.571 0 73.143 36.571 73.143 73.143s-36.571 73.143-73.143 73.143zM566.857 950.857c-16.286-0.006-24.44-19.694-12.929-31.214l133.357-133.357-316.214-316.214c-7.138-7.141-7.138-18.716 0-25.857l73.143-73.143c7.141-7.138 18.716-7.138 25.857 0l316.214 316.214 133.357-133.357c11.52-11.512 31.208-3.357 31.214 12.929v365.714c-0.001 10.099-8.187 18.285-18.286 18.286z" />
<glyph unicode="&#xe6b0;" glyph-name="link-broken" data-tags="link-broken" d="M271.214 1024.214c-29.066-1.554-52.045-25.501-52.045-54.814 0-6.225 1.036-12.208 2.946-17.786l36.457-109.328c7.264-22.368 27.921-38.253 52.288-38.253 0.728 0 1.452 0.014 2.173 0.042 29.321 1.106 52.755 25.228 52.755 54.823 0 6.486-1.126 12.71-3.192 18.486l-36.452 109.331c-7.479 22.015-27.965 37.574-52.086 37.574-1 0-1.994-0.027-2.981-0.080zM716 1023.5c-32.191-1.673-64.389-8.657-95.286-21.286-109.856-44.901-181.929-152.108-181.929-270.786 0-31.027 25.152-56.179 56.179-56.179s56.179 25.152 56.179 56.179c0 73.39 44.137 139.090 112.071 166.857s145.451 11.808 196.857-40.571c51.406-52.379 65.965-130.241 36.929-197.643s-95.622-110.305-169-108.929c-0.579 0.021-1.259 0.034-1.942 0.034-31.016 0-56.16-25.144-56.16-56.16 0-30.971 25.070-56.086 56.023-56.16 118.664-2.226 227.268 67.791 274.221 176.786s23.199 236.013-59.929 320.714c-51.954 52.938-120.88 82.955-192.071 87.071-10.679 0.617-21.413 0.629-32.143 0.071zM55.786 804.786c-0.322 0.007-0.702 0.011-1.082 0.011-30.314 0-54.888-24.574-54.888-54.888 0-24.082 15.509-44.542 37.084-51.936l110.1-36.686c5.236-1.877 11.277-2.983 17.57-3.029-0.813 0.005-0.092-0.009 0.632-0.009 30.3 0 54.863 24.563 54.863 54.863 0 24.403-15.932 45.085-37.963 52.21l-110.103 36.68c-5.092 1.749-10.96 2.771-17.063 2.796zM292.5 585.143c-118.678 0-225.956-72.001-270.857-181.857s-18.772-236.444 65.929-319.571c84.701-83.127 211.72-106.811 320.714-59.857s178.94 155.557 176.714 274.214c-0.119 30.926-25.217 55.951-56.159 55.951-31.016 0-56.16-25.144-56.16-56.16 0-0.68 0.012-1.357 0.036-2.032 1.374-73.28-41.529-139.795-108.931-168.831s-145.192-14.549-197.571 36.857c-52.379 51.406-68.339 128.994-40.571 196.929s93.467 112.071 166.857 112.071c0.41-0.011 0.892-0.017 1.376-0.017 31.016 0 56.16 25.144 56.16 56.16s-25.144 56.16-56.16 56.16c-0.484 0-0.966-0.006-1.447-0.018zM860.643 365.929c-0.614 0.025-1.335 0.039-2.060 0.039-30.3 0-54.863-24.563-54.863-54.863 0-24.403 15.932-45.085 37.963-52.21l110.103-36.68c5.181-1.787 11.152-2.819 17.364-2.819 30.314 0 54.888 24.574 54.888 54.888 0 24.107-15.541 44.584-37.152 51.959l-110.101 36.686c-5.236 1.877-11.277 2.983-17.57 3.029zM710.857 220.143c-29.425-1.109-52.858-25.231-52.858-54.826 0-6.486 1.126-12.71 3.192-18.486l36.452-109.331c7.489-21.997 27.967-37.538 52.074-37.538 30.314 0 54.888 24.574 54.888 54.888 0 6.212-1.032 12.183-2.934 17.75l-36.457 109.328c-7.264 22.368-27.921 38.253-52.288 38.253-0.728 0-1.452-0.014-2.173-0.042z" />
<glyph unicode="&#xe6b1;" glyph-name="locked" data-tags="locked" d="M512 950.857c-161.583 0-292.571-130.989-292.571-292.571v-146.286h-36.571c-20.261 0-36.571-16.311-36.571-36.571v-365.714c0-20.261 16.311-36.571 36.571-36.571h658.286c20.261 0 36.571 16.311 36.571 36.571v365.714c0 20.261-16.311 36.571-36.571 36.571h-36.571v146.286c0 161.583-130.989 292.571-292.571 292.571zM512 841.143c100.989 0 182.857-81.868 182.857-182.857v-146.286h-365.714v146.286c0 100.989 81.868 182.857 182.857 182.857z" />
<glyph unicode="&#xe6b2;" glyph-name="unlocked" data-tags="unlocked" d="M512 950.857c-161.583 0-292.571-130.989-292.571-292.571v-146.286h-36.571c-20.261 0-36.571-16.311-36.571-36.571v-365.714c0-20.261 16.311-36.571 36.571-36.571h658.286c20.261 0 36.571 16.311 36.571 36.571v365.714c0 20.261-16.311 36.571-36.571 36.571h-512v146.286c0 100.989 81.868 182.857 182.857 182.857 59.616 0 112.047-28.992 145.429-73.143h0.143c0-20.261 16.311-36.571 36.571-36.571h52.286c20.261 0 36.571 16.311 36.571 36.571h0.071c-43.429 107.163-148.329 182.857-271.071 182.857z" />
<glyph unicode="&#xe6b3;" glyph-name="window" data-tags="window" d="M73.143 950.857c-40.521 0-73.143-32.622-73.143-73.143v-731.429c0-40.521 32.622-73.143 73.143-73.143h877.714c40.521 0 73.143 32.622 73.143 73.143v731.429c0 40.521-32.622 73.143-73.143 73.143h-877.714zM731.429 877.714h73.143v-73.143h-73.143v73.143zM877.714 877.714h73.143v-73.143h-73.143v73.143zM109.714 731.429h804.571c20.261 0 36.571-16.311 36.571-36.571v-512c0-20.261-16.311-36.571-36.571-36.571h-804.571c-20.261 0-36.571 16.311-36.571 36.571v512c0 20.261 16.311 36.571 36.571 36.571z" />
<glyph unicode="&#xe6b4;" glyph-name="newwin" data-tags="newwin" d="M365.714 950.857c-40.521 0-73.143-32.622-73.143-73.143v-512c0-40.521 32.622-73.143 73.143-73.143h585.143c40.521 0 73.143 32.622 73.143 73.143v512c0 40.521-32.622 73.143-73.143 73.143h-585.143zM731.429 877.714h73.143v-73.143h-73.143v73.143zM877.714 877.714h73.143v-73.143h-73.143v73.143zM73.143 731.429c-40.521 0-73.143-32.622-73.143-73.143v-512c0-40.521 32.622-73.143 73.143-73.143h585.143c40.521 0 73.143 32.622 73.143 73.143v73.143h-73.143v-36.571c0-20.261-16.311-36.571-36.571-36.571h-512c-20.261 0-36.571 16.311-36.571 36.571v292.571c0 20.261 16.311 36.571 36.571 36.571h109.714v219.429h-146.286zM402.286 731.429h512c20.261 0 36.571-16.311 36.571-36.571v-292.571c0-20.261-16.311-36.571-36.571-36.571h-512c-20.261 0-36.571 16.311-36.571 36.571v292.571c0 20.261 16.311 36.571 36.571 36.571z" />
<glyph unicode="&#xe6b5;" glyph-name="window-sidebar" data-tags="window-sidebar" d="M73.143 950.857c-40.521 0-73.143-32.622-73.143-73.143v-731.429c0-40.521 32.622-73.143 73.143-73.143h877.714c40.521 0 73.143 32.622 73.143 73.143v731.429c0 40.521-32.622 73.143-73.143 73.143h-877.714zM731.429 877.714h73.143v-73.143h-73.143v73.143zM877.714 877.714h73.143v-73.143h-73.143v73.143zM109.714 731.429h256v-585.143h-256c-20.261 0-36.571 16.311-36.571 36.571v512c0 20.261 16.311 36.571 36.571 36.571zM438.857 731.429h475.429c20.261 0 36.571-16.311 36.571-36.571v-512c0-20.261-16.311-36.571-36.571-36.571h-475.429v585.143zM146.286 658.286v-73.143h146.286v73.143h-146.286zM146.286 512v-73.143h146.286v73.143h-146.286zM146.286 365.714v-73.143h146.286v73.143h-146.286z" />
<glyph unicode="&#xe6b6;" glyph-name="menu" data-tags="menu" d="M146.286 877.714h731.429c40.396 0 73.143-32.747 73.143-73.143s-32.747-73.143-73.143-73.143h-731.429c-40.396 0-73.143 32.747-73.143 73.143s32.747 73.143 73.143 73.143zM146.286 292.571h731.429c40.396 0 73.143-32.747 73.143-73.143s-32.747-73.143-73.143-73.143h-731.429c-40.396 0-73.143 32.747-73.143 73.143s32.747 73.143 73.143 73.143zM146.286 585.143h731.429c40.396 0 73.143-32.747 73.143-73.143s-32.747-73.143-73.143-73.143h-731.429c-40.396 0-73.143 32.747-73.143 73.143s32.747 73.143 73.143 73.143z" />
<glyph unicode="&#xe6b7;" glyph-name="home" data-tags="home" d="M512 950.857l-512-512v-146.286l512 512 512-512v146.286zM512 694.857l-365.714-365.714v-256h256v256h219.429v-256h256v256z" />
<glyph unicode="&#xe6b8;" glyph-name="bookmark" data-tags="bookmark" d="M256 950.857c-20.197-0.002-36.569-16.375-36.571-36.573v-804.611c0.027-20.181 16.392-36.53 36.575-36.53 10.94 0 20.759 4.804 27.461 12.417l228.535 261.196 228.5-261.156c6.737-7.654 16.556-12.458 27.496-12.458 20.183 0 36.548 16.349 36.575 36.528v804.613c-0.002 20.198-16.374 36.571-36.571 36.573h-512z" />
<glyph unicode="&#xe6b9;" glyph-name="bookmark-b" data-tags="bookmark-b" d="M256 950.857c-20.197-0.002-36.569-16.375-36.571-36.573v-804.611c0.027-20.181 16.392-36.53 36.575-36.53 10.94 0 20.759 4.804 27.461 12.417l228.535 261.196 228.5-261.156c6.737-7.654 16.556-12.458 27.496-12.458 20.183 0 36.548 16.349 36.575 36.528v804.614c-0.002 20.198-16.374 36.571-36.571 36.573h-512zM292.571 877.711h438.857v-670.747l-191.929 219.368c-6.738 7.656-16.558 12.462-27.5 12.462s-20.762-4.805-27.465-12.421l-191.964-219.408v670.747z" />
<glyph unicode="&#xe6ba;" glyph-name="star" data-tags="star" d="M512.286 950.857c-0.077 0.001-0.169 0.001-0.26 0.001-15.58 0-28.884-9.741-34.155-23.465l-102.085-272.108-270.643-33.857c-18.128-2.359-31.986-17.704-31.986-36.286 0-11.251 5.080-21.316 13.072-28.025l201.842-168.26-67.571-270.286c-0.698-2.671-1.099-5.738-1.099-8.899 0-20.2 16.375-36.575 36.575-36.575 6.684 0 12.95 1.793 18.342 4.925l237.682 135.835 237.857-135.929c5.211-3.030 11.469-4.818 18.144-4.818 20.2 0 36.575 16.375 36.575 36.575 0 1.622-0.106 3.218-0.31 4.784l-34.337 274.601 170.214 170.214c6.618 6.619 10.711 15.762 10.711 25.861 0 18.383-13.562 33.599-31.227 36.187l-237.198 33.881-137.714 275.429c-6.109 12.023-18.354 20.135-32.502 20.215z" />
<glyph unicode="&#xe6bb;" glyph-name="star-b" data-tags="star-b" d="M512.286 950.857c-0.077 0.001-0.169 0.001-0.26 0.001-15.58 0-28.884-9.741-34.155-23.465l-102.085-272.108-270.643-33.857c-18.128-2.359-31.986-17.704-31.986-36.286 0-11.251 5.080-21.316 13.072-28.025l201.842-168.26-67.571-270.286c-0.698-2.671-1.099-5.738-1.099-8.899 0-20.2 16.375-36.575 36.575-36.575 6.684 0 12.95 1.793 18.342 4.925l237.682 135.835 237.857-135.929c5.211-3.030 11.469-4.818 18.144-4.818 20.2 0 36.575 16.375 36.575 36.575 0 1.622-0.106 3.218-0.31 4.784l-34.337 274.601 170.214 170.214c6.618 6.619 10.711 15.762 10.711 25.861 0 18.383-13.562 33.599-31.227 36.187l-237.198 33.881-137.714 275.429c-6.109 12.023-18.354 20.135-32.502 20.215zM516.786 822.929l108.786-217.571c5.596-11.018 16.311-18.729 28.927-20.027l182.216-26.045-131.143-131.143c-6.62-6.619-10.714-15.764-10.714-25.864 0-1.609 0.104-3.194 0.305-4.748l27.481-219.745-192.5 110c-5.211 3.029-11.468 4.817-18.143 4.817s-12.932-1.788-18.318-4.911l-181.396-103.692 52.357 209.429c0.688 2.653 1.083 5.698 1.083 8.836 0 11.263-5.091 21.337-13.098 28.047l-154.771 128.975 209 26.143c14.022 1.827 25.428 11.369 29.921 24.164l80.008 213.336z" />
<glyph unicode="&#xe6bc;" glyph-name="addon" data-tags="addon" d="M894.561 731.106h-133.414c-37.22 0.055-74.317 2.577-38.153 66.36 36.233 63.906 50.841 153.391-94.624 153.391s-130.857-89.485-94.625-153.391c36.164-63.783-0.919-66.305-38.153-66.36h-146.633c-30.966 0-56.281-25.318-56.283-56.257l-0.006-164.122c-0.001-37.272 10.121-74.557-53.814-38.341s-165.715 50.8-165.715-94.6c0-145.399 101.766-130.823 165.715-94.607s53.812-1.069 53.814-38.341l0.006-115.439c0.002-30.952 25.33-56.257 56.283-56.257h146.414c37.302 0 74.605 14.914 38.372 78.834s-50.854 153.391 94.625 153.391c145.465 0 130.856-89.485 94.624-153.391s1.070-78.834 38.372-78.834h133.194c30.966 0 56.296 25.318 56.296 56.257v545.449c0 30.939-25.33 56.257-56.296 56.257z" />
<glyph unicode="&#xe6bd;" glyph-name="plugin" data-tags="plugin" d="M73.143 731.429c-40.521 0-73.143-32.622-73.143-73.143v-438.857h1024v438.857c0 40.521-32.622 73.143-73.143 73.143zM182.857 877.714c-20.261 0-36.571-16.311-36.571-36.571v-54.857h219.429v54.857c0 20.261-16.311 36.571-36.571 36.571zM694.857 877.714c-20.261 0-36.571-16.311-36.571-36.571v-54.857h219.429v54.857c0 20.261-16.311 36.571-36.571 36.571z" />
<glyph unicode="&#xe6be;" glyph-name="package" data-tags="package" d="M146.286 950.857c-40.521 0-73.143-32.622-73.143-73.143v-731.429c0-40.521 32.622-73.143 73.143-73.143h731.429c40.521 0 73.143 32.622 73.143 73.143v731.429c0 40.521-32.622 73.143-73.143 73.143zM402.286 877.714h219.429v-252.343c0-20.261-18.271-45.264-36.571-36.571l-146.286 69.486c-18.301 8.693-36.571 16.311-36.571 36.571zM475 438.857c5.583 0.139 10.924-2.282 14.5-6.571l91.429-109.714c9.94-11.92 1.449-30.023-14.071-30h-54.857v-128c-0.001-10.099-8.187-18.285-18.286-18.286h-36.571c-10.099 0.001-18.285 8.187-18.286 18.286v128h-54.857c-15.52-0.023-24.012 18.080-14.071 30l91.429 109.714c3.384 4.059 8.359 6.455 13.643 6.571zM664.714 438.857h206.643c4.181-11.741 6.331-24.108 6.357-36.571-0.062-46.913-28.732-94.596-73.143-109.714v-73.143h36.571c20.261 0 36.571-16.311 36.571-36.571s-16.311-36.571-36.571-36.571h-146.286c-20.261 0-36.571 16.311-36.571 36.571s16.311 36.571 36.571 36.571h36.571v73.143c-44.41 15.119-73.081 62.801-73.143 109.714 0.051 12.467 2.224 24.835 6.429 36.571z" />
<glyph unicode="&#xe6bf;" glyph-name="power" data-tags="power" d="M270.214 877.714c-122.373-80.802-196.93-217.908-197.071-365.714 0-242.374 196.483-438.857 438.857-438.857s438.857 196.483 438.857 438.857c-0.213 147.873-74.906 284.985-197.429 365.714h-22v-172.714c47.017-53.312 73.017-121.917 73.143-193 0-161.583-130.989-292.571-292.571-292.571s-292.571 130.989-292.571 292.571c0.091 71.132 26.093 139.794 73.143 193.143v172.571h-22.357zM475.429 950.857h73.143c20.198 0 36.571-16.374 36.571-36.571v-438.857c0-20.198-16.374-36.571-36.571-36.571h-73.143c-20.198 0-36.571 16.374-36.571 36.571v438.857c0 20.198 16.374 36.571 36.571 36.571z" />
<glyph unicode="&#xe6c0;" glyph-name="refresh" data-tags="refresh" d="M645 927.929c-14.569-0.947-27.755-10.44-32.857-25.143l-24.571-70.786c-5.234-15.083-0.178-30.938 11.286-40.643 122.34-38.034 205.704-151.241 205.714-279.357-0.059-82.695-34.827-158.823-92-212.714v194.357c0 0.008 0 0.018 0 0.028 0 10.127-8.21 18.337-18.337 18.337-0.183 0-0.365-0.003-0.547-0.008-4.932-0.148-9.374-2.242-12.585-5.542l-90.603-90.6c-3.307-3.314-5.354-7.888-5.357-12.94v-311.418c0-0.006 0-0.013 0-0.020 0-10.127 8.21-18.337 18.337-18.337 0.007 0 0.014 0 0.021 0h311.427c5.052 0.007 9.625 2.056 12.937 5.366l90.777 90.777c3.308 3.317 5.353 7.894 5.353 12.949 0 10.127-8.21 18.337-18.337 18.337-0.006 0-0.012 0-0.017 0h-185.642c81.975 80.829 130.58 192.229 130.857 311.429-0.259 187.424-119.515 353.999-296.857 414.643-3.010 0.538-6.043 1.478-9 1.286zM109.071 950.857c-5.052-0.007-9.625-2.056-12.937-5.366l-90.777-90.777c-3.308-3.317-5.353-7.894-5.353-12.949 0-10.127 8.21-18.337 18.337-18.337 0.006 0 0.012 0 0.017 0h185.928c-82.146-80.851-130.866-192.378-131.143-311.714 0.26-187.424 119.515-353.999 296.857-414.643 3.010-0.538 6.043-1.478 9-1.286 14.569 0.947 27.755 10.44 32.857 25.143l24.571 70.786c5.234 15.083 0.179 30.938-11.286 40.643-122.34 38.034-205.704 151.241-205.714 279.357 0.059 82.694 34.829 158.823 92 212.714v-194.071c0-0.005 0-0.011 0-0.016 0-10.127 8.21-18.337 18.337-18.337 5.055 0 9.632 2.045 12.949 5.354l90.785 90.785c3.307 3.314 5.354 7.888 5.357 12.94v311.417c0 0.006 0 0.013 0 0.020 0 10.127-8.21 18.337-18.337 18.337-0.007 0-0.014 0-0.021 0h-311.427z" />
<glyph unicode="&#xe6c1;" glyph-name="group" data-tags="group" d="M402.286 1024c-201.143 0-201.143-134.095-201.143-301.714 0-100.571 60.218-207.54 134.071-249.143v-52.571c-227.442-18.589-335.214-67.048-335.214-201.143h290.714c42.729 19.054 92.5 30.768 147 39.571-56.336 65.068-90.286 152.321-90.286 243.857 0 83.809-4.051 166.556 31.857 244.357 17.954 38.9 49.29 75.508 91.571 98.214 35.604 19.121 77.142 28.521 124.143 31.143-15.265 88.179-59.717 147.429-192.714 147.429zM603.357 730.643c-30.96-1.792-51.362-7.63-63.357-14.071-14.29-7.674-20.668-15.067-27.857-30.643-14.378-31.151-18.429-99.262-18.429-183.071 0-3.962 0.745-8.15 1.072-12.214 61.722 49.433 108.643 142.949 108.643 231.643 0 2.867-0.069 5.51-0.073 8.357zM514.929 415.714c19.828-44.58 50.075-83.883 75.643-98.286 16.63-9.526 28.971-24.94 34.287-43.335 4.669 26.446 18.794 40.22 36.321 47.389 8.367 5.351 26.957 25.549 43.464 50.661-46.249 21.505-110.028 34.802-189.714 43.571zM688.762 201.143v52.565c73.853 41.62 134.095 148.578 134.095 249.149 0 167.619 0 301.714-201.143 301.714s-201.143-134.095-201.143-301.714c0-100.571 60.242-207.546 134.095-249.149v-52.565c-227.442-18.589-335.238-67.048-335.238-201.143h804.571c0 134.095-107.796 182.537-335.238 201.143z" />
<glyph unicode="&#xe6c2;" glyph-name="person" data-tags="person" d="M585.143 292.571v57.344c80.567 45.403 146.286 162.085 146.286 271.799 0 182.857 0 329.143-219.429 329.143s-219.429-146.286-219.429-329.143c0-109.714 65.719-226.414 146.286-271.799v-57.344c-248.119-20.279-365.714-73.143-365.714-219.429h877.714c0 146.286-117.595 199.131-365.714 219.429z" />
<glyph unicode="&#xe6c3;" glyph-name="heart" data-tags="heart" d="M274.286 950.857c-151.484 0-274.286-122.752-274.286-274.174 0.123-69.033 26.294-135.479 73.286-186.067 138.208-139.005 280.891-282.276 407.643-402.479 18.768-20.664 42.608-19.215 62.143 0 139.187 138.647 286.714 276.909 407.643 402.479 46.991 50.588 73.162 117.034 73.285 186.067 0 151.422-122.802 274.174-274.286 274.174-91.429 0-164.571-73.143-237.643-137.944-73.214 64.801-146.357 137.944-237.786 137.944z" />
<glyph unicode="&#xe6c4;" glyph-name="heart-b" data-tags="heart-b" d="M274.286 950.857c-151.484 0-274.286-122.721-274.286-274.143 0.123-69.033 26.294-135.483 73.286-186.071 138.208-139.005 280.891-282.297 407.643-402.5 18.768-20.664 42.608-19.215 62.143 0 139.187 138.647 286.714 276.93 407.643 402.5 46.991 50.588 73.162 117.038 73.286 186.071 0 151.422-122.802 274.143-274.286 274.143-91.429 0-164.571-73.128-237.643-137.929-73.214 64.801-146.357 137.929-237.786 137.929zM274.286 876.407c91.713 0.59 164.664-93.806 237.714-144.979 75.392 50.772 145.931 147.72 237.714 146.286 127.947 2.571 201.143-90.927 201.143-211.214 1.187-84.416-58.741-139.657-73.286-156.786-108.418-106.547-218.877-216.557-365.571-363.429-146.568 145.992-256.705 256.364-365.571 363.5-14.545 17.128-71.606 68.785-73.286 156.786 0.25 120.681 74.437 210.625 201.143 209.836z" />
<glyph unicode="&#xe6c5;" glyph-name="heart-beat" data-tags="heart-beat" d="M274.286 950.857c-151.484 0-274.286-122.721-274.286-274.143 0.107-59.697 19.744-117.468 55.429-164.714h245.357l66.143 264.857c4.080 15.972 18.294 27.61 35.243 27.714 0.055 0 0.153 0.001 0.252 0.001 16.608 0 30.63-11.075 35.083-26.243l111.922-392.116 73.714 246c4.662 15.199 18.572 26.059 35.019 26.059 14.228 0 26.558-8.128 32.6-19.994l63.024-126.279h214.786c35.684 47.246 55.322 105.017 55.429 164.714 0 151.422-122.802 274.143-274.286 274.143-98.207-0.139-188.846-52.737-237.643-137.929l-0.071 0.143-0.071-0.143c-48.795 85.192-139.436 137.79-237.643 137.929zM404.714 626.5l-39.929-159.929c-4.096-16.030-18.401-27.696-35.433-27.714h-204.281c121.719-122.278 244.867-245.459 355.857-350.714 10.565-10.337 20.978-14.993 31.071-15 10.093 0.007 20.507 4.663 31.071 15 120.484 120.017 246.179 239.257 356.5 350.714h-168.357c-0.004 0-0.008 0-0.013 0-14.233 0-26.567 8.134-32.606 20.007l-31.953 63.922-83.071-277.286c-4.634-15.244-18.566-26.147-35.045-26.147-16.636 0-30.676 11.111-35.105 26.317l-108.707 380.83z" />
<glyph unicode="&#xe6c6;" glyph-name="key" data-tags="key" d="M713.143 1024c-171.682 0-310.857-139.175-310.857-310.857 0-0.034 0-0.074 0-0.114 0-32.586 5.014-64.002 14.313-93.516l-416.598-473.227c0-73.143 0-146.286 73.143-146.286h146.286v146.286h146.286v146.286h146.286v109.714h109.714l10.643 10.786c24.323-6.843 52.255-10.78 81.106-10.786 171.361 0 310.537 139.176 310.537 310.857s-139.175 310.857-310.857 310.857zM786.286 914.286c70.692 0 128-57.308 128-128s-57.308-128-128-128c-70.692 0-128 57.308-128 128s57.308 128 128 128z" />
<glyph unicode="&#xe6c7;" glyph-name="lightbulb" data-tags="lightbulb" d="M329.143 340.114c0-80.457 91.429-120.686 182.857-120.686s182.857 40.229 182.857 120.686c0 111.081 182.564 176.905 182.857 362.057s-163.73 321.829-365.714 321.829c-201.984 0-365.421-136.677-365.714-321.829s182.857-250.976 182.857-362.057zM365.714 182.857c109.714-51.38 182.857-51.38 292.571 0-34.995-244.964-254.423-244.964-292.571 0z" />
<glyph unicode="&#xe6c8;" glyph-name="cart" data-tags="cart" d="M365.714 109.714c0-60.594-49.121-109.714-109.714-109.714s-109.714 49.121-109.714 109.714c0 60.594 49.121 109.714 109.714 109.714s109.714-49.121 109.714-109.714zM950.857 109.714c0-60.594-49.121-109.714-109.714-109.714s-109.714 49.121-109.714 109.714c0 60.594 49.121 109.714 109.714 109.714s109.714-49.121 109.714-109.714zM73.143 1024c-40.396 0-73.143-32.747-73.143-73.143s32.747-73.143 73.143-73.143h71.764l72.736-320.714-138.357-207.571c-16.195-24.304 1.223-56.851 30.429-56.857h877.714c49.456-0.699 49.456 73.842 0 73.143h-809.357l97.5 146.286h561.929c14.85-0.004 28.229 8.972 33.857 22.714l149.929 365.714c9.849 24.066-7.854 50.434-33.857 50.429h-768c0 40.396-32.747 73.143-73.143 73.143z" />
<glyph unicode="&#xe6c9;" glyph-name="cart-b" data-tags="cart-b" d="M365.714 109.714c0-60.594-49.121-109.714-109.714-109.714s-109.714 49.121-109.714 109.714c0 60.594 49.121 109.714 109.714 109.714s109.714-49.121 109.714-109.714zM950.857 109.714c0-60.594-49.121-109.714-109.714-109.714s-109.714 49.121-109.714 109.714c0 60.594 49.121 109.714 109.714 109.714s109.714-49.121 109.714-109.714zM73.143 1024c-40.396 0-73.143-32.747-73.143-73.143s32.747-73.143 73.143-73.143c31.238 0 40.526 0 71.764 0l72.736-320.714-138.357-207.571c-16.195-24.304 1.223-56.851 30.429-56.857h877.714c49.456-0.699 49.456 73.842 0 73.143h-809.357l97.5 146.286h561.929c14.85-0.004 28.229 8.972 33.857 22.714l149.929 365.714c9.849 24.066-7.854 50.434-33.857 50.429h-768c0 40.396-32.747 73.143-73.143 73.143zM218.979 877.714h713.95l-120-292.571h-525.643z" />
<glyph unicode="&#xe6ca;" glyph-name="clock" data-tags="clock" d="M512 1024c-282.77 0-512-229.23-512-512s229.23-512 512-512c282.77 0 512 229.23 512 512s-229.23 512-512 512zM253.429 763.071c4.674 0 9.347-1.847 12.929-5.429l245.643-245.643 142.214 142.214c3.581 3.581 8.254 5.357 12.929 5.357s9.347-1.776 12.929-5.357l25.857-25.857c7.163-7.163 7.163-18.694 0-25.857l-181-181c-7.163-7.163-18.694-7.163-25.857 0l-284.429 284.429c-7.163 7.163-7.163 18.694 0 25.857l25.857 25.857c3.582 3.582 8.254 5.429 12.929 5.429z" />
<glyph unicode="&#xe6cb;" glyph-name="clock-b" data-tags="clock-b" d="M149.961 874.039c92.654 92.654 220.654 149.961 362.039 149.961s269.385-57.308 362.039-149.961c92.654-92.654 149.961-220.654 149.961-362.039s-57.308-269.385-149.961-362.039c-92.654-92.654-220.654-149.961-362.039-149.961s-269.385 57.308-362.039 149.961c-92.654 92.654-149.961 220.654-149.961 362.039s57.308 269.385 149.961 362.039zM227.541 796.459c-72.799-72.799-117.827-173.371-117.827-284.459s45.027-211.66 117.827-284.459c72.799-72.799 173.371-117.827 284.459-117.827s211.66 45.027 284.459 117.827c72.799 72.799 117.827 173.371 117.827 284.459s-45.027 211.66-117.827 284.459c-72.799 72.799-173.371 117.827-284.459 117.827s-211.66-45.027-284.459-117.827zM292.191 705.949c7.163 7.163 18.697 7.163 25.86 0l193.949-193.949 90.51 90.51c7.163 7.163 18.697 7.163 25.86 0l25.86-25.86c7.163-7.163 7.163-18.697 0-25.86l-129.3-129.3c-7.163-7.163-18.697-7.163-25.86 0l-232.739 232.739c-7.163 7.163-7.163 18.697 0 25.86z" />
<glyph unicode="&#xe6cc;" glyph-name="cloud" data-tags="cloud" d="M574.357 877.429c-30.107-1.48-60.095-9.2-87.929-23.429-52.983-27.085-91.465-74.308-109.357-129.571-23.734 6.467-48.238 8.617-72.214 5.429-38.886-5.17-76.076-22.763-105.214-51.929-45.030-45.071-61.979-109.355-48.5-169.214-31.323-5.531-61.404-18.712-86.714-40.214-58.575-49.761-79.786-131.219-52.929-203.214 25.82-69.214 98.066-116.077 171.357-119h585.143c109.611 4.244 213.686 77.605 245.286 182.929 32.633 108.764-11.074 226.297-106.857 287.929-31.618 20.345-66.575 32.374-102.214 37.643 0.069 69.433-31.535 136.050-87.643 178.643-33.243 25.236-72.196 39.855-112.143 43.429-9.987 0.893-20.036 1.065-30.071 0.571z" />
<glyph unicode="&#xe6cd;" glyph-name="cloud-b" data-tags="cloud-b" d="M574.357 877.429c-30.107-1.48-60.095-9.2-87.929-23.429-52.983-27.085-91.465-74.308-109.357-129.571-23.734 6.467-48.238 8.617-72.214 5.429-38.886-5.17-76.076-22.763-105.214-51.929-45.030-45.071-61.979-109.355-48.5-169.214-31.323-5.531-61.404-18.712-86.714-40.214-58.575-49.761-79.786-131.219-52.929-203.214 25.82-69.214 98.066-116.077 171.357-119h585.143c109.611 4.244 213.686 77.605 245.286 182.929 32.633 108.764-11.074 226.297-106.857 287.929-31.618 20.345-66.575 32.374-102.214 37.643 0.069 69.433-31.535 136.050-87.643 178.643-33.243 25.236-72.196 39.855-112.143 43.429-9.987 0.893-20.036 1.065-30.071 0.571zM578.071 804c33.042 1.668 66.247-8.272 93.929-29.286 37.342-28.347 58.641-72.912 58.643-119.643-47.681-6.58-93.791-25.621-132.214-58.286-37.676-31.527 10.172-87.819 47.357-55.714 62.298 52.961 152.192 58.892 221.071 14.571s99.769-127.631 76.429-205.429c-23.341-77.797-93.056-131.007-175.286-130.786h-585.143c-46.367-0.397-86.612 28.072-102.786 71.429s-3.519 91.865 31.786 121.857c35.304 29.992 85.294 34.707 125.571 11.786 42.905-26.11 80.554 39.981 36.214 63.571-14.394 8.192-29.657 13.88-45.214 17.857-17.546 40.763-9.184 88.287 22.857 120.357 30.481 30.509 75.101 39.813 114.571 25.643 4.113-46.701 73.274-43.881 73.571 3-0.044 56.714 31.301 108.241 80.571 133.429 18.476 9.445 38.246 14.642 58.071 15.643z" />
<glyph unicode="&#xe6ce;" glyph-name="cloud-download" data-tags="cloud-download" d="M574.357 877.429c-30.107-1.48-60.095-9.2-87.929-23.429-52.983-27.085-91.465-74.308-109.357-129.571-23.734 6.467-48.238 8.617-72.214 5.429-38.886-5.17-76.076-22.763-105.214-51.929-45.030-45.071-61.979-109.355-48.5-169.214-31.323-5.531-61.404-18.712-86.714-40.214-58.575-49.761-79.786-131.219-52.929-203.214 25.82-69.214 98.066-116.077 171.357-119h285l-206.5 206.5c-3.429 3.429-5.356 8.079-5.357 12.929v128c0.006 16.286 19.694 24.44 31.214 12.929l151.643-151.643v266.714c0 20.261 16.311 36.571 36.571 36.571h73.143c20.261 0 36.571-16.311 36.571-36.571v-266.714l151.643 151.643c11.52 11.512 31.208 3.357 31.214-12.929v-128c-0.001-4.849-1.928-9.5-5.357-12.929l-206.5-206.5h211.857c109.611 4.244 213.686 77.605 245.286 182.929 32.633 108.764-11.074 226.297-106.857 287.929-31.618 20.345-66.575 32.374-102.214 37.643 0.069 69.433-31.535 136.050-87.643 178.643-33.243 25.236-72.196 39.855-112.143 43.429-9.987 0.893-20.036 1.065-30.071 0.571z" />
<glyph unicode="&#xe6cf;" glyph-name="cloud-upload" data-tags="cloud-upload" d="M574.357 877.429c-30.107-1.48-60.095-9.2-87.929-23.429-52.983-27.085-91.465-74.308-109.357-129.571-23.734 6.467-48.238 8.617-72.214 5.429-38.886-5.17-76.076-22.763-105.214-51.929-45.030-45.071-61.979-109.355-48.5-169.214-31.323-5.531-61.404-18.712-86.714-40.214-58.575-49.761-79.786-131.219-52.929-203.214 25.82-69.214 98.066-116.077 171.357-119h256v270.357l-151.643-151.643c-11.52-11.512-31.208-3.357-31.214 12.929v128c0.001 4.849 1.928 9.5 5.357 12.929l237.714 237.714c7.141 7.138 18.716 7.138 25.857 0l237.714-237.714c3.429-3.429 5.356-8.079 5.357-12.929v-128c-0.006-16.286-19.694-24.44-31.214-12.929l-151.643 151.643v-270.357h182.857c109.611 4.244 213.686 77.605 245.286 182.929 32.633 108.764-11.074 226.297-106.857 287.929-31.618 20.345-66.575 32.374-102.214 37.643 0.069 69.433-31.535 136.050-87.643 178.643-33.243 25.236-72.196 39.855-112.143 43.429-9.987 0.893-20.036 1.065-30.071 0.571z" />
<glyph unicode="&#xe6d0;" glyph-name="comment" data-tags="comment" d="M109.714 950.857c-60.782 0-109.714-48.933-109.714-109.714v-365.714c0-60.782 48.933-109.714 109.714-109.714h109.714v-292.571l365.714 292.571h329.143c60.782 0 109.714 48.933 109.714 109.714v365.714c0 60.782-48.933 109.714-109.714 109.714zM146.286 804.571h731.429v-73.143h-731.429zM146.286 658.286h512v-73.143h-512z" />
<glyph unicode="&#xe6d1;" glyph-name="comments" data-tags="comments" d="M73.143 1024c-36.571 0-73.143-36.571-73.143-73.143v-292.571c0-36.571 36.571-73.143 73.143-73.143h73.143v-292.571l292.571 292.571h219.429c36.571 0 73.143 36.571 73.143 73.143v292.571c0 36.571-36.571 73.143-73.143 73.143zM804.571 731.429v-146.286c0-36.571-36.571-73.143-73.143-73.143h-219.429l-196.571-196.571c13.714-13.714 32-22.857 50.286-22.857h219.429l292.571-292.571v292.571h73.143c36.571 0 73.143 36.571 73.143 73.143v292.571c0 36.571-36.571 73.143-73.143 73.143h-146.286z" />
<glyph unicode="&#xe6d2;" glyph-name="globe" data-tags="globe" d="M512 950.857c-242.373 0-438.857-196.485-438.857-438.857s196.485-438.857 438.857-438.857c242.373 0 438.857 196.485 438.857 438.857s-196.485 438.857-438.857 438.857zM374.857 870.752v-29.609l-137.143-137.143h-58.327c43.817 75.758 112.786 135.127 195.47 166.752zM512 402.286l-196.018-220.526c-7.995 4.759-15.799 9.792-23.41 15.099v177.998l-109.714 82.286v137.143c0 15.154 12.288 27.429 27.429 27.429h82.286c0 0 82.286-109.714 219.429-137.143v-82.286zM843.858 530.213c-13.563 45.627-25.289 50.071-85.001 70.368v0c-20.421 6.405-39.648 17.678-55.831 33.861-53.554 53.554-53.554 140.393 0 193.947 3.607 3.593 7.365 6.926 11.246 10.039 109.083-67.735 181.728-188.599 181.728-326.441 0-71.095-19.351-137.678-53.033-194.784 14.126 91.282 8.914 164.421 0.891 212.997z" />
<glyph unicode="&#xe6d3;" glyph-name="globe-b" data-tags="globe-b" d="M512 950.857c-242.373 0-438.857-196.485-438.857-438.857s196.485-438.857 438.857-438.857c242.373 0 438.857 196.485 438.857 438.857s-196.485 438.857-438.857 438.857zM512 128c-53.966 0-105.326 11.15-151.913 31.241l199.845 224.818c4.457 5.019 6.926 11.506 6.926 18.226v82.286c0 15.154-12.274 27.429-27.429 27.429-96.85 0-199.035 100.677-200.037 101.678-5.143 5.143-12.123 8.037-19.392 8.037h-109.714c-15.141 0-27.429-12.274-27.429-27.429v-164.571c0-10.395 5.87-19.886 15.168-24.535l94.546-47.273v-161.047c-99.47 69.394-164.571 184.663-164.571 315.141 0 58.903 13.275 114.693 36.974 164.571h100.169c7.269 0 14.249 2.894 19.392 8.037l109.714 109.714c5.143 5.143 8.037 12.123 8.037 19.392v66.35c34.766 10.354 71.589 15.936 109.714 15.936 60.343 0 117.435-13.934 168.247-38.743-3.552-3.003-7.008-6.144-10.327-9.463-31.090-31.090-48.206-72.411-48.206-116.366s17.115-85.289 48.206-116.366c31.227-31.227 73.042-48.233 116.256-48.219 2.715 0 5.431 0.069 8.16 0.205 11.835-44.407 33.216-159.991-7.2-319.145-0.384-1.494-0.603-2.989-0.727-4.484-69.71-71.218-166.889-115.419-274.409-115.419z" />
<glyph unicode="&#xe6d4;" glyph-name="location" data-tags="location" d="M512 1024c-201.984 0-365.714-163.73-365.714-365.714 0-365.714 365.714-658.286 365.714-658.286s365.714 292.571 365.714 658.286c0 201.984-163.73 365.714-365.714 365.714zM512 438.857c-121.198 0-219.429 98.231-219.429 219.429s98.231 219.429 219.429 219.429c121.179 0 219.429-98.231 219.429-219.429s-98.249-219.429-219.429-219.429z" />
<glyph unicode="&#xe6d5;" glyph-name="navigation" data-tags="navigation" d="M932.857 950.857c-0.076 0.001-0.167 0.002-0.257 0.002-2.867 0-5.579-0.66-7.994-1.835l-841.034-402.238c-6.2-3.015-10.398-9.266-10.398-16.498 0-10.089 8.169-18.269 18.253-18.288h420.573v-420.571c0.018-10.086 8.199-18.255 18.288-18.255 7.232 0 13.483 4.198 16.451 10.29l402.333 841.251c1.12 2.299 1.774 5.002 1.774 7.858 0 9.995-8.018 18.117-17.973 18.285z" />
<glyph unicode="&#xe6d6;" glyph-name="gear" data-tags="gear" d="M658.28 512.037q0 60.567-42.86 103.433t-103.42 42.865-103.42-42.865-42.86-103.433 42.86-103.433 103.42-42.865 103.42 42.865 42.86 103.433zM950.839 574.323v-126.877q0-6.839-4.571-13.13t-11.446-7.425l-105.724-16.020q-10.861-30.869-22.271-52.009 20.004-28.565 61.145-78.855 5.705-6.839 5.705-14.301t-5.156-13.13q-15.433-21.14-56.574-61.701t-53.721-40.561q-6.839 0-14.847 5.157l-78.845 61.701q-25.16-13.13-52.002-21.725-9.142-77.721-16.566-106.285-3.986-16.020-20.552-16.020h-126.861q-8.009 0-14.006 4.864t-6.583 12.289l-16.018 105.152q-28.013 9.144-51.417 21.14l-80.563-61.153q-5.705-5.157-14.299-5.157-8.009 0-14.299 6.291-72.006 65.139-94.277 96.008-3.986 5.706-3.986 13.13 0 6.839 4.571 13.13 8.557 11.996 29.146 38.001t30.865 40.305q-15.432 28.565-23.441 56.581l-104.553 15.434q-7.424 1.134-11.995 7.132t-4.571 13.423v126.877q0 6.839 4.571 13.13t10.861 7.425l106.272 16.020q8.009 26.297 22.271 52.558-22.856 32.588-61.145 78.855-5.705 6.839-5.705 13.715 0 5.706 5.156 13.13 14.847 20.555 56.281 61.445t54.014 40.854q7.424 0 14.847-5.706l78.845-61.153q25.16 13.13 52.002 21.725 9.142 77.721 16.566 106.285 3.986 15.983 20.552 15.983h126.861q8.009 0 14.006-4.864t6.583-12.289l16.018-105.152q28.013-9.144 51.417-21.14l81.149 61.153q5.156 5.157 13.714 5.157 7.424 0 14.299-5.706 73.725-67.992 94.277-97.142 3.986-4.572 3.986-12.582 0-6.839-4.571-13.13-8.557-11.996-29.146-38.001t-30.865-40.305q14.847-28.565 23.441-55.996l104.553-16.020q7.424-1.134 11.995-7.132t4.571-13.423z" />
<glyph unicode="&#xe6d7;" glyph-name="gears" data-tags="gears" d="M250.033 585.143c-7.021 0-11.587-3.657-13.713-10.97-3.647-14.023-7.159-37.492-10.513-70.393-13.106-4.271-24.841-9.147-35.197-14.627l-52.566 41.139c-3.042 2.126-6.245 3.143-9.599 3.143-5.792 0-17.837-8.987-36.111-26.969s-30.773-31.535-37.482-40.682c-2.126-2.457-3.143-5.495-3.143-9.142 0-2.75 1.017-5.787 3.143-9.142 17.065-20.419 30.783-37.939 41.139-52.566-6.397-12.501-11.273-24.129-14.627-34.797l-70.85-10.97c-2.75-0.293-5.188-1.894-7.314-4.8s-3.2-5.871-3.2-8.913v-84.563c-0.020-3.374 1.054-6.339 3.2-8.913s4.728-4.030 7.771-4.342l69.479-10.97c3.667-11.565 9.054-24.064 16.056-37.482-4.856-6.709-12.025-16.006-21.484-27.883s-15.699-19.955-18.741-24.226c-2.126-3.042-3.2-5.935-3.2-8.685 0-8.23 21.941-32.609 65.822-73.136 3.042-2.438 6.245-3.657 9.599-3.657 3.979 0 7.016 1.074 9.142 3.2l53.938 40.682c12.501-6.397 23.926-11.128 34.282-14.17l10.513-69.936c0.293-3.042 1.821-5.717 4.571-7.999s5.787-3.371 9.142-3.371h85.020c7.021 0 11.587 3.657 13.713 10.97 3.647 14.335 7.159 37.949 10.513 70.85 12.189 3.647 23.924 8.321 35.197 14.113l52.566-41.082c3.042-2.126 6.245-3.2 9.599-3.2 5.792 0.020 17.745 9.079 35.882 27.197s30.709 31.763 37.711 40.91c2.126 2.145 3.2 5.038 3.2 8.685 0 3.062-1.074 6.099-3.2 9.142-17.065 20.419-30.783 37.939-41.139 52.566 6.397 12.501 11.273 24.071 14.627 34.739l70.85 10.97c2.75 0.293 5.188 1.894 7.314 4.8s3.2 5.871 3.2 8.913v84.62h-0.057c0.020 3.354-0.997 6.32-3.143 8.913s-4.785 4.195-7.828 4.8l-69.479 10.513c-3.354 10.356-8.483 22.798-15.484 37.425 4.564 6.709 11.423 15.898 20.569 27.483s15.494 19.808 19.141 24.683c2.126 3.042 3.2 5.935 3.2 8.685 0 8.23-21.941 32.609-65.822 73.136-3.042 2.438-6.245 3.657-9.599 3.657-3.667 0-6.704-1.074-9.142-3.2l-53.938-40.682c-12.501 6.397-23.926 11.128-34.282 14.17l-10.513 69.936c-0.293 3.042-1.821 5.717-4.571 7.999s-5.787 3.428-9.142 3.428h-85.020zM526.634 495.266v-0.629c0-0.035 0.112-0.079 0.114-0.114-1.266 7.689-2.059 16.652-2.192 25.767zM292.6 409.617c32.297 0 59.877-11.425 82.735-34.282s34.282-50.438 34.282-82.735c0-32.297-11.425-59.877-34.282-82.735s-50.438-34.282-82.735-34.282c-32.297 0-59.877 11.425-82.735 34.282s-34.282 50.438-34.282 82.735c0 32.297 11.425 59.877 34.282 82.735s50.438 34.282 82.735 34.282zM580.166 985.451c-6.487-2.687-9.306-7.813-8.471-15.383 1.997-14.351 7.734-37.377 17.225-69.058-10.474-8.961-19.449-17.957-26.92-26.983l-64.308 17.891c-3.624 0.8-6.972 0.514-10.071-0.77-5.351-2.217-13.040-15.129-23.041-38.735s-16.363-40.911-19.061-51.929c-1.024-3.084-0.801-6.279 0.595-9.649 1.052-2.541 3.154-4.958 6.402-7.243 23.58-12.335 42.958-23.271 58.124-32.822-1.126-13.998-1.181-26.606-0.198-37.745l-61.259-37.248c-2.429-1.323-4.068-3.735-4.92-7.233s-0.709-6.649 0.455-9.459l32.361-78.126c1.273-3.125 3.4-5.453 6.367-7.010s5.911-1.914 8.841-1.038l68.388 16.453c7.813-9.282 17.574-18.767 29.177-28.485-1.919-8.057-4.984-19.389-9.178-33.982s-6.867-24.444-8.043-29.554c-0.8-3.624-0.685-6.708 0.367-9.248 3.15-7.604 32.749-21.73 88.8-42.379 3.744-1.088 7.169-0.989 10.268 0.295 3.676 1.523 6.071 3.677 7.222 6.455l34.264 58.226c13.998-1.126 26.363-1.124 37.095 0.028l36.476-60.589c1.435-2.699 3.87-4.585 7.284-5.641s6.637-0.9 9.736 0.384l78.548 32.536c6.487 2.687 9.306 7.813 8.471 15.383-2.116 14.639-7.909 37.8-17.4 69.48 9.866 8.034 18.919 16.842 27.117 26.508l64.286-17.838c3.624-0.8 6.994-0.566 10.093 0.717 5.344 2.235 12.919 15.179 22.743 38.859s16.216 41.097 19.184 52.227c1.143 2.796 1.028 5.879-0.367 9.248-1.172 2.829-3.326 5.224-6.455 7.222-23.58 12.335-42.958 23.271-58.124 32.822 1.126 13.998 1.203 26.553 0.22 37.693l61.259 37.248c2.429 1.323 4.068 3.735 4.92 7.233s0.709 6.648-0.455 9.459l-32.383 78.179-0.053-0.022c-1.266 3.107-3.34 5.457-6.314 7.032s-6.026 2.044-9.069 1.439l-68.213-16.875c-7.062 8.284-16.561 17.816-28.627 28.651 1.649 7.945 4.469 19.059 8.486 33.263s6.734 24.229 8.238 30.129c0.8 3.624 0.685 6.708-0.367 9.248-3.15 7.604-32.749 21.73-88.8 42.38-3.744 1.088-7.169 0.989-10.268-0.295-3.387-1.403-5.783-3.558-7.222-6.455l-34.264-58.226c-13.998 1.126-26.363 1.124-37.095-0.028l-36.476 60.589c-1.435 2.699-3.87 4.585-7.284 5.641s-6.659 0.953-9.758-0.331l-78.549-32.536zM870.107 1008.266l0.241-0.581c0.013-0.032 0.134-0.031 0.149-0.062-4.112 6.619-8.274 14.596-11.885 22.966zM686.664 839.576c29.838 12.359 59.692 12.359 89.556-0.012s50.975-33.479 63.334-63.318c12.359-29.838 12.359-59.692-0.012-89.556s-33.479-50.975-63.318-63.334c-29.838-12.359-59.692-12.359-89.556 0.012s-50.975 33.479-63.334 63.318c-12.359 29.838-12.359 59.692 0.012 89.556s33.479 50.975 63.318 63.334z" />
<glyph unicode="&#xe6d8;" glyph-name="camera" data-tags="camera" d="M365.714 950.857c-73.143-36.571-73.143-109.714-73.143-146.286h-256c-20.261 0-36.571-16.311-36.571-36.571v-658.286c0-20.261 16.311-36.571 36.571-36.571h950.857c20.261 0 36.571 16.311 36.571 36.571v658.286c0 20.261-16.311 36.571-36.571 36.571h-256c0 36.571 0 109.714-73.143 146.286h-292.571zM512 731.429c161.583 0 292.571-130.989 292.571-292.571s-130.989-292.571-292.571-292.571c-161.583 0-292.571 130.989-292.571 292.571s130.989 292.571 292.571 292.571zM822.857 731.429h109.714c10.13 0 18.286-8.155 18.286-18.286v-36.571c0-10.13-8.155-18.286-18.286-18.286h-109.714c-10.13 0-18.286 8.155-18.286 18.286v36.571c0 10.13 8.155 18.286 18.286 18.286zM512 621.714c-100.989 0-182.857-81.868-182.857-182.857s81.868-182.857 182.857-182.857c100.989 0 182.857 81.868 182.857 182.857s-81.868 182.857-182.857 182.857z" />
<glyph unicode="&#xe6d9;" glyph-name="flag" data-tags="flag" d="M109.714 1024c-20.261 0-36.571-16.311-36.571-36.571v-950.857c0-20.261 16.311-36.571 36.571-36.571h73.143c20.261 0 36.571 16.311 36.571 36.571v950.857c0 20.261-16.311 36.571-36.571 36.571h-73.143zM310.857 950.857c-10.099-0.001-18.285-8.187-18.286-18.286v-475.429c0.001-10.099 8.187-18.285 18.286-18.286h621.714c17.393 0.023 24.936 22.025 11.214 32.714l-288.571 223.286 288.571 223.286c13.721 10.689 6.179 32.691-11.214 32.714h-621.714z" />
<glyph unicode="&#xe6da;" glyph-name="eye" data-tags="eye" d="M511.214 804.571c-214.928-0.057-403.853-112.958-437.357-279.929-1.085-4.366-0.895-20.191 0-25.286 33.504-166.971 222.429-279.871 437.357-279.929 215.986-0.059 405.844 113.769 438.143 282.071 0.282 0.966 0.515 1.943 0.714 2.929 0.018 0.099 0.053 0.187 0.071 0.286l0.071 0.286c0.187 1.017 0.329 2.042 0.429 3.071l0.071 0.571c0.091 1.021 0.139 2.046 0.143 3.071v0.286c0.004 1.121-0.044 2.241-0.143 3.357l-0.071 0.571c-0.099 1.029-0.241 2.054-0.429 3.071l-0.071 0.286c-0.017 0.099-0.053 0.187-0.071 0.286-0.197 0.986-0.433 1.962-0.714 2.929-31.99 166.694-218.587 279.762-432 281.857-2.685 0.119-5.84 0.189-9.011 0.19 3.912-0.046 3.397 0.024 2.869 0.024zM408.214 707.071c0.172 0.006 0.374 0.009 0.577 0.009 10.1 0 18.288-8.188 18.288-18.288 0-5.16-2.137-9.82-5.574-13.145-26.767-26.767-40.304-63.944-37.005-101.648 0.064-0.572 0.1-1.236 0.1-1.908 0-10.1-8.188-18.288-18.288-18.288-9.64 0-17.538 7.459-18.237 16.921-4.242 48.509 13.178 96.385 47.568 130.775 2.631 2.71 6.087 4.605 9.963 5.281-1.004-0.083 1.008 0.285 3.105 0.302zM321.571 694.071c-18.214-31.292-28.966-68.872-28.966-108.963 0-20.183 2.725-39.73 7.827-58.292 25.555-92.861 110.604-161.073 211.585-161.073 20.189 0 39.742 2.727 58.309 7.832 92.861 25.554 161.073 110.604 161.073 211.584 0 20.189-2.727 39.742-7.832 58.309-8.592 30.673-23.672 58.628-43.671 82.292 115.139-72.074 180.373-139.17 196.247-213.761-25.398-119.345-177.018-219.479-364.929-219.429-187.795 0.051-339.23 100.172-364.643 219.429 15.971 74.949 81.749 142.329 175 182.071z" />
<glyph unicode="&#xe6db;" glyph-name="box" data-tags="box" d="M512 1024l-475.429-256 475.429-256 475.429 256zM0 694.857v-438.857l475.429-256v438.857zM1024 694.857l-475.429-256v-438.857l475.429 256z" />
<glyph unicode="&#xe6dc;" glyph-name="transfer-e-w" data-tags="transfer-e-w" d="M603.429 950.857c-10.097-0.004-18.28-8.19-18.28-18.288 0-5.048 2.045-9.618 5.352-12.927l115.071-115.071h-522.714c-20.261 0-36.571-16.311-36.571-36.571v-73.143c0-20.261 16.311-36.571 36.571-36.571h522.714l-115.071-115.071c-3.307-3.309-5.352-7.879-5.352-12.927 0-10.097 8.184-18.283 18.28-18.288h146.286c5.050 0.001 9.621 2.049 12.93 5.358l201.142 201.142c3.308 3.309 5.354 7.88 5.354 12.929s-2.046 9.619-5.354 12.929l-201.143 201.143c-3.309 3.309-7.881 5.357-12.93 5.357h-146.284zM274.286 512c-5.050-0.001-9.621-2.049-12.93-5.358l-201.142-201.142c-3.308-3.309-5.354-7.88-5.354-12.929s2.046-9.619 5.354-12.929l201.143-201.143c3.309-3.309 7.881-5.357 12.93-5.357h146.284c10.097 0.004 18.28 8.19 18.28 18.288 0 5.048-2.045 9.618-5.352 12.927l-115.071 115.071h522.714c20.261 0 36.571 16.311 36.571 36.571v73.143c0 20.261-16.311 36.571-36.571 36.571h-522.714l115.071 115.071c3.307 3.309 5.352 7.879 5.352 12.927 0 10.097-8.184 18.283-18.28 18.288h-146.286z" />
<glyph unicode="&#xe6dd;" glyph-name="transferthick-e-w" data-tags="transferthick-e-w" d="M713.143 1024c-10.13 0-18.286-8.155-18.286-18.286v-128h-219.429c-20.261 0-36.571-16.311-36.571-36.571v-219.429c0-20.261 16.311-36.571 36.571-36.571h219.429v-128c0-10.13 8.155-18.286 18.286-18.286h19.214v0.216c4.497 0.238 8.8 1.942 12 5.143l274.286 274.286c7.138 7.141 7.138 18.716 0 25.857l-274.286 274.286c-3.2 3.198-7.503 4.903-12 5.141v0.214h-0.929zM310.854 585.143c10.13 0 18.286-8.155 18.286-18.286v-128h219.429c20.261 0 36.571-16.311 36.571-36.571v-219.429c0-20.261-16.311-36.571-36.571-36.571h-219.429v-128c0-10.13-8.155-18.286-18.286-18.286h-19.214v0.216c-4.497 0.238-8.8 1.942-12 5.143l-274.286 274.286c-7.138 7.141-7.138 18.716 0 25.857l274.286 274.286c3.2 3.197 7.503 4.903 12 5.141v0.216h0.929z" />
<glyph unicode="&#xe6de;" glyph-name="sign-in" data-tags="sign-in" d="M383.714 859.429c-9.975-0.162-18-8.286-18-18.285 0 0 0 0 0 0v-182.857h-274.286c-10.099-0.001-18.285-8.187-18.286-18.286v-256c0.001-10.099 8.187-18.285 18.286-18.286h274.286v-182.857c0.004-10.097 8.19-18.28 18.288-18.28 5.048 0 9.618 2.045 12.927 5.352l329.143 329.143c3.308 3.309 5.354 7.88 5.354 12.929s-2.046 9.619-5.354 12.929l-329.143 329.143c-3.31 3.311-7.883 5.359-12.934 5.359-0.098 0-0.197-0.001-0.295-0.002zM513.286 877.714l73.143-73.143h218.143c40.521 0 73.143-32.622 73.143-73.143v-438.857c0-40.521-32.622-73.143-73.143-73.143h-218.143l-73.143-73.143h291.286c81.042 0 146.286 65.243 146.286 146.286v438.857c0 81.042-65.243 146.286-146.286 146.286h-291.286z" />
<glyph unicode="&#xe6df;" glyph-name="sign-out" data-tags="sign-out" d="M603.146 859.429c-9.975-0.162-18-8.286-18-18.285 0 0 0 0 0 0v-182.857h-274.286c-10.099-0.001-18.285-8.187-18.286-18.286v-256c0.001-10.099 8.187-18.285 18.286-18.286h274.286v-182.857c0.004-10.097 8.19-18.28 18.288-18.28 5.048 0 9.618 2.045 12.927 5.352l329.143 329.143c3.308 3.309 5.354 7.88 5.354 12.929s-2.046 9.619-5.354 12.929l-329.143 329.143c-3.31 3.311-7.883 5.359-12.934 5.359-0.098 0-0.197-0.001-0.295-0.002zM219.429 877.714c-81.042 0-146.286-65.243-146.286-146.286v-438.857c0-81.042 65.243-146.286 146.286-146.286h219.429v71.857l-1.286 1.286h-218.143c-40.521 0-73.143 32.622-73.143 73.143v438.857c0 40.521 32.622 73.143 73.143 73.143h218.143l1.286 1.286v71.857h-219.429z" />
<glyph unicode="&#xe6e0;" glyph-name="toggle-off" data-tags="toggle-off" d="M292.571 804.571c-161.583 0-292.571-130.989-292.571-292.571s130.989-292.571 292.571-292.571h438.857c161.583 0 292.571 130.989 292.571 292.571s-130.989 292.571-292.571 292.571h-438.857zM292.571 731.429c121.187 0 219.429-98.242 219.429-219.429s-98.242-219.429-219.429-219.429c-121.187 0-219.429 98.242-219.429 219.429s98.242 219.429 219.429 219.429zM485.571 731.429h245.857c121.187 0 219.429-98.242 219.429-219.429s-98.242-219.429-219.429-219.429h-245.714c61.050 53.848 99.374 132.233 99.429 219.57-0.141 87.243-38.57 165.625-99.404 219.144z" />
<glyph unicode="&#xe6e1;" glyph-name="toggle-on" data-tags="toggle-on" d="M731.429 804.571c161.583 0 292.571-130.989 292.571-292.571s-130.989-292.571-292.571-292.571h-438.857c-161.583 0-292.571 130.989-292.571 292.571s130.989 292.571 292.571 292.571zM731.429 731.429c-121.187 0-219.429-98.242-219.429-219.429s98.242-219.429 219.429-219.429c121.187 0 219.429 98.242 219.429 219.429s-98.242 219.429-219.429 219.429z" />
<glyph unicode="&#xe6e2;" glyph-name="search" data-tags="search" d="M365.714 1024c-201.978 0-365.714-163.736-365.714-365.714s163.736-365.714 365.714-365.714c86.262 0.156 165.488 30.153 227.936 80.215l292.35-359.358c6.758-8.211 16.923-13.406 28.301-13.406 10.090 0 19.225 4.086 25.842 10.692l73.142 73.142c6.607 6.617 10.692 15.752 10.692 25.842 0 11.378-5.195 21.542-13.343 28.251l-358.277 293.122c49.278 61.762 79.071 140.961 79.071 227.118 0 0.034 0 0.067 0 0.101 0 201.973-163.736 365.709-365.714 365.709zM365.714 914.286c141.385 0 256-114.615 256-256s-114.615-256-256-256c-141.385 0-256 114.615-256 256s114.615 256 256 256z" />
<glyph unicode="&#xe6e3;" glyph-name="wrench" data-tags="wrench" d="M366 521.143l-344.5-344.5c-28.653-28.653-28.653-74.776 0-103.429l51.714-51.714c28.653-28.653 74.776-28.653 103.429 0l344.714 344.714c-67.161 33.506-121.665 87.861-155.357 154.929zM128 182.857c30.297 0 54.857-24.56 54.857-54.857s-24.56-54.857-54.857-54.857c-30.297 0-54.857 24.56-54.857 54.857s24.56 54.857 54.857 54.857zM717.806 1023.968c-1.322 0.020-2.881 0.032-4.444 0.032-85.92 0-163.704-34.817-219.996-91.104-56.275-56.254-91.081-133.961-91.081-219.792s34.805-163.538 91.080-219.792c56.285-56.241 134.037-91.026 219.918-91.026s163.633 34.785 219.919 91.027c56.105 56.224 90.797 133.817 90.797 219.508 0 6.080-0.175 12.119-0.519 18.112-5.8 39.948-42.014 51.242-82.786 14.012l-105.234-105.106-156.4 39.061-39.083 156.309 105.167 105.173c37.251 40.748 25.951 76.942-14.85 82.776-7.642 0.69-16.567 1.096-25.582 1.118z" />
<glyph unicode="&#xe6e4;" glyph-name="settings" data-tags="settings" d="M146.286 1024h146.286c40.396 0 73.143-32.747 73.143-73.143v-146.286c0-40.396-32.747-73.143-73.143-73.143h-146.286c-40.396 0-73.143 32.747-73.143 73.143v146.286c0 40.396 32.747 73.143 73.143 73.143zM438.857 936.229h512v-117.029h-512v117.029zM292.571 292.571h146.286c40.396 0 73.143-32.747 73.143-73.143v-146.286c0-40.396-32.747-73.143-73.143-73.143h-146.286c-40.396 0-73.143 32.747-73.143 73.143v146.286c0 40.396 32.747 73.143 73.143 73.143zM877.714 658.286h-146.286c-40.396 0-73.143-32.747-73.143-73.143v-146.286c0-40.396 32.747-73.143 73.143-73.143h146.286c40.396 0 73.143 32.747 73.143 73.143v146.286c0 40.396-32.747 73.143-73.143 73.143zM585.143 570.514h-512v-117.029h512v117.029zM73.143 204.8h73.143v-117.029h-73.143v117.029zM585.143 204.8h365.714v-117.029h-365.714v117.029z" />
<glyph unicode="&#xe6e5;" glyph-name="radio-on" data-tags="radio-on" d="M512 1024c-282.77 0-512-229.23-512-512s229.23-512 512-512c282.77 0 512 229.23 512 512s-229.23 512-512 512zM512 914.286c222.176 0 402.286-180.109 402.286-402.286s-180.109-402.286-402.286-402.286c-222.176 0-402.286 180.109-402.286 402.286s180.109 402.286 402.286 402.286zM731.429 512c0-121.187-98.242-219.429-219.429-219.429s-219.429 98.242-219.429 219.429c0 121.187 98.242 219.429 219.429 219.429s219.429-98.242 219.429-219.429z" />
<glyph unicode="&#xe6e6;" glyph-name="selectbox" data-tags="selectbox" d="M512 73.157c-5.608 0.062-10.552 2.55-13.856 6.357l-274.272 329.129c-10.197 11.854-1.78 30.209 13.856 30.214h548.543c15.636-0.005 24.053-18.361 13.856-30.214l-274.272-329.129c-3.663-4.223-7.271-6.325-13.856-6.357zM512 950.843c-5.608-0.062-10.552-2.55-13.856-6.357l-274.272-329.129c-10.197-11.854-1.78-30.209 13.856-30.214h548.543c15.636 0.005 24.053 18.361 13.856 30.214l-274.272 329.129c-3.663 4.223-7.271 6.325-13.856 6.357z" />
<glyph unicode="&#xe6e7;" glyph-name="suitcase" data-tags="suitcase" d="M329.143 950.857c-20.261 0-36.571-16.311-36.571-36.571v-109.714h-73.143v-731.429h585.143v731.429h-73.143v109.714c0 20.261-16.311 36.571-36.571 36.571h-365.714zM365.714 877.714h292.571v-73.143h-292.571v73.143zM73.143 804.571c-40.521 0-73.143-32.622-73.143-73.143v-585.143c0-40.521 32.622-73.143 73.143-73.143h73.143v731.429h-73.143zM877.714 804.571v-731.429h73.143c40.521 0 73.143 32.622 73.143 73.143v585.143c0 40.521-32.622 73.143-73.143 73.143h-73.143z" />
<glyph unicode="&#xe6e8;" glyph-name="truck" data-tags="truck" d="M365.714 877.714c-20.261 0-36.571-16.311-36.571-36.571v-109.714h-109.714c-36.571 0-36.571 0-73.143-36.571l-73.143-73.143c-36.571-36.571-36.571-36.571-36.571-73.143v-182.857c-20.261 0-36.571-16.311-36.571-36.571s16.311-36.571 36.571-36.571h73.143c0-80.791 65.494-146.286 146.286-146.286s146.286 65.494 146.286 146.286h219.429c0-80.791 65.494-146.286 146.286-146.286s146.286 65.494 146.286 146.286h36.571c20.261 0 36.571 16.311 36.571 36.571v512c0 20.261-16.311 36.571-36.571 36.571h-585.143zM256 658.286h73.143v-146.286h-219.429c0 36.571 3.643 29.286 40.214 65.857l36.571 36.571c36.571 36.571 32.929 43.857 69.5 43.857zM256 365.714c40.396 0 73.143-32.747 73.143-73.143s-32.747-73.143-73.143-73.143c-40.396 0-73.143 32.747-73.143 73.143s32.747 73.143 73.143 73.143zM768 365.714c40.396 0 73.143-32.747 73.143-73.143s-32.747-73.143-73.143-73.143c-40.396 0-73.143 32.747-73.143 73.143s32.747 73.143 73.143 73.143z" />
<glyph unicode="&#xe6e9;" glyph-name="database" data-tags="database" d="M512 950.857c-201.978 0-365.714-65.494-365.714-146.286s163.736-146.286 365.714-146.286c201.978 0 365.714 65.494 365.714 146.286s-163.736 146.286-365.714 146.286zM146.286 731.429v-219.429c0-80.791 163.736-146.286 365.714-146.286s365.714 65.494 365.714 146.286v219.429c0-80.791-163.736-146.286-365.714-146.286s-365.714 65.494-365.714 146.286zM146.286 438.857v-219.429c0-80.791 163.736-146.286 365.714-146.286s365.714 65.494 365.714 146.286v219.429c0-80.791-163.736-146.286-365.714-146.286s-365.714 65.494-365.714 146.286z" />
<glyph unicode="&#xe6ea;" glyph-name="databases" data-tags="databases" d="M658.286 1024c-135.528-0.077-253.756-29.631-316.783-73.489 7.58-0.446 15.641 0.347 24.211 0.347 108.895 0 207.693-16.834 285.786-48.071 39.046-15.619 73.257-34.644 101.429-61.286 25.58-24.191 47.080-58.263 50.857-97.929 130.633 23.076 220.162 74.434 220.214 134.158 0 80.777-163.736 146.271-365.714 146.271zM1024 804.571c-0.302-59.539-89.478-110.716-217.273-133.446l-2.156-12.84v-207.143c130.205 23.146 219.372 74.415 219.429 134.016v219.412zM1024 512c-0.302-59.539-89.478-110.716-217.273-133.446l-2.156-12.84v-207.143c130.205 23.146 219.372 74.415 219.429 134.016v219.412zM365.714 877.714c-201.978 0-365.714-65.494-365.714-146.286 0 0 0 0 0 0 0-80.791 163.736-146.286 365.714-146.286s365.714 65.494 365.714 146.286c0 0 0 0 0 0 0 80.791-163.736 146.286-365.714 146.286zM0 658.286v-219.429c0-80.791 163.736-146.286 365.714-146.286s365.714 65.494 365.714 146.286v219.429c0 0 0 0 0 0 0-80.791-163.736-146.286-365.714-146.286s-365.714 65.494-365.714 146.286c0 0 0 0 0 0zM0 365.714v-219.429c0-80.791 163.736-146.286 365.714-146.286s365.714 65.494 365.714 146.286v219.429c0-80.791-163.736-146.286-365.714-146.286s-365.714 65.494-365.714 146.286z" />
<glyph unicode="&#xe6eb;" glyph-name="book" data-tags="book" d="M219.429 1024c-81.042 0-146.286-65.243-146.286-146.286v-731.429c0-81.042 65.243-146.286 146.286-146.286h731.429v877.714h-73.143v-804.571h-621.714c-60.782 0-109.714 48.933-109.714 109.714s48.933 109.714 109.714 109.714h548.571v731.429zM256 219.429c-20.261 0-36.571-16.311-36.571-36.571s16.311-36.571 36.571-36.571h548.571v73.143z" />
<glyph unicode="&#xe6ec;" glyph-name="book-b" data-tags="book-b" d="M219.429 1024c-81.042 0-146.286-65.243-146.286-146.286v-731.429c0-81.042 65.243-146.286 146.286-146.286h731.429v877.714h-73.143v-804.571h-621.714c-60.782 0-109.714 48.933-109.714 109.714s48.933 109.714 109.714 109.714h548.571v731.429h-146.286v-438.857l-146.286 146.286-146.286-146.286v438.857h-146.286zM256 219.429c-20.261 0-36.571-16.311-36.571-36.571s16.311-36.571 36.571-36.571h548.571v73.143h-548.571z" />
<glyph unicode="&#xe6ed;" glyph-name="calculator" data-tags="calculator" d="M73.143 1024c-40.521 0-73.143-32.622-73.143-73.143v-877.714c0-40.521 32.622-73.143 73.143-73.143h877.714c40.521 0 73.143 32.622 73.143 73.143v877.714c0 40.521-32.622 73.143-73.143 73.143h-877.714zM109.714 950.857h804.571c20.261 0 36.571-16.311 36.571-36.571v-146.286c0-20.261-16.311-36.571-36.571-36.571h-804.571c-20.261 0-36.571 16.311-36.571 36.571v146.286c0 20.261 16.311 36.571 36.571 36.571zM109.714 658.286h73.143c20.261 0 36.571-16.311 36.571-36.571v-73.143c0-20.261-16.311-36.571-36.571-36.571h-73.143c-20.261 0-36.571 16.311-36.571 36.571v73.143c0 20.261 16.311 36.571 36.571 36.571zM329.143 658.286h73.143c20.261 0 36.571-16.311 36.571-36.571v-73.143c0-20.261-16.311-36.571-36.571-36.571h-73.143c-20.261 0-36.571 16.311-36.571 36.571v73.143c0 20.261 16.311 36.571 36.571 36.571zM548.571 658.286h73.143c20.261 0 36.571-16.311 36.571-36.571v-73.143c0-20.261-16.311-36.571-36.571-36.571h-73.143c-20.261 0-36.571 16.311-36.571 36.571v73.143c0 20.261 16.311 36.571 36.571 36.571zM768 658.286h146.286c20.261 0 36.571-16.311 36.571-36.571v-73.143c0-20.261-16.311-36.571-36.571-36.571h-146.286c-20.261 0-36.571 16.311-36.571 36.571v73.143c0 20.261 16.311 36.571 36.571 36.571zM109.714 438.857h73.143c20.261 0 36.571-16.311 36.571-36.571v-73.143c0-20.261-16.311-36.571-36.571-36.571h-73.143c-20.261 0-36.571 16.311-36.571 36.571v73.143c0 20.261 16.311 36.571 36.571 36.571zM329.143 438.857h73.143c20.261 0 36.571-16.311 36.571-36.571v-73.143c0-20.261-16.311-36.571-36.571-36.571h-73.143c-20.261 0-36.571 16.311-36.571 36.571v73.143c0 20.261 16.311 36.571 36.571 36.571zM548.571 438.857h73.143c20.261 0 36.571-16.311 36.571-36.571v-73.143c0-20.261-16.311-36.571-36.571-36.571h-73.143c-20.261 0-36.571 16.311-36.571 36.571v73.143c0 20.261 16.311 36.571 36.571 36.571zM768 438.857h146.286c20.261 0 36.571-16.311 36.571-36.571v-292.571c0-20.261-16.311-36.571-36.571-36.571h-146.286c-20.261 0-36.571 16.311-36.571 36.571v292.571c0 20.261 16.311 36.571 36.571 36.571zM109.714 219.429h73.143c20.261 0 36.571-16.311 36.571-36.571v-73.143c0-20.261-16.311-36.571-36.571-36.571h-73.143c-20.261 0-36.571 16.311-36.571 36.571v73.143c0 20.261 16.311 36.571 36.571 36.571zM329.143 219.429h73.143c20.261 0 36.571-16.311 36.571-36.571v-73.143c0-20.261-16.311-36.571-36.571-36.571h-73.143c-20.261 0-36.571 16.311-36.571 36.571v73.143c0 20.261 16.311 36.571 36.571 36.571zM548.571 219.429h73.143c20.261 0 36.571-16.311 36.571-36.571v-73.143c0-20.261-16.311-36.571-36.571-36.571h-73.143c-20.261 0-36.571 16.311-36.571 36.571v73.143c0 20.261 16.311 36.571 36.571 36.571z" />
<glyph unicode="&#xe6ee;" glyph-name="calculator-b" data-tags="calculator-b" d="M164.571 804.571h182.857c10.099 0 18.286-8.187 18.286-18.286v-36.571c0-10.099-8.187-18.286-18.286-18.286h-182.857c-10.099 0-18.286 8.187-18.286 18.286v36.571c0 10.099 8.187 18.286 18.286 18.286zM237.714 365.714h36.571c10.099 0 18.286-8.187 18.286-18.286v-182.857c0-10.099-8.187-18.286-18.286-18.286h-36.571c-10.099 0-18.286 8.187-18.286 18.286v182.857c0 10.099 8.187 18.286 18.286 18.286zM164.571 292.571h182.857c10.099 0 18.286-8.187 18.286-18.286v-36.571c0-10.099-8.187-18.286-18.286-18.286h-182.857c-10.099 0-18.286 8.187-18.286 18.286v36.571c0 10.099 8.187 18.286 18.286 18.286zM676.571 365.714h182.857c10.099 0 18.286-8.187 18.286-18.286v-36.571c0-10.099-8.187-18.286-18.286-18.286h-182.857c-10.099 0-18.286 8.187-18.286 18.286v36.571c0 10.099 8.187 18.286 18.286 18.286zM676.571 219.429h182.857c10.099 0 18.286-8.187 18.286-18.286v-36.571c0-10.099-8.187-18.286-18.286-18.286h-182.857c-10.099 0-18.286 8.187-18.286 18.286v36.571c0 10.099 8.187 18.286 18.286 18.286zM73.143 1024c-40.521 0-73.143-32.622-73.143-73.143v-365.714c0-40.521 32.622-73.143 73.143-73.143-40.521 0-73.143-32.622-73.143-73.143v-365.714c0-40.521 32.622-73.143 73.143-73.143h365.714c40.521 0 73.143 32.622 73.143 73.143 0-40.521 32.622-73.143 73.143-73.143h365.714c40.521 0 73.143 32.622 73.143 73.143v365.714c0 40.521-32.622 73.143-73.143 73.143 40.521 0 73.143 32.622 73.143 73.143v365.714c0 40.521-32.622 73.143-73.143 73.143h-365.714c-40.521 0-73.143-32.622-73.143-73.143 0 40.521-32.622 73.143-73.143 73.143h-365.714zM125.357 950.857h261.286c28.944 0 52.214-23.271 52.214-52.214v-261.286c0-28.944-23.271-52.214-52.214-52.214h-261.286c-28.944 0-52.214 23.271-52.214 52.214v261.286c0 28.944 23.271 52.214 52.214 52.214zM637.357 950.857h261.286c28.944 0 52.214-23.271 52.214-52.214v-261.286c0-28.944-23.271-52.214-52.214-52.214h-261.286c-28.944 0-52.214 23.271-52.214 52.214v261.286c0 28.944 23.271 52.214 52.214 52.214zM512 585.143c0-40.521 32.622-73.143 73.143-73.143-40.521 0-73.143-32.622-73.143-73.143 0 40.521-32.622 73.143-73.143 73.143 40.521 0 73.143 32.622 73.143 73.143zM125.357 438.857h261.286c28.944 0 52.214-23.271 52.214-52.214v-261.286c0-28.944-23.271-52.214-52.214-52.214h-261.286c-28.944 0-52.214 23.271-52.214 52.214v261.286c0 28.944 23.271 52.214 52.214 52.214zM637.357 438.857h261.286c28.944 0 52.214-23.271 52.214-52.214v-261.286c0-28.944-23.271-52.214-52.214-52.214h-261.286c-28.944 0-52.214 23.271-52.214 52.214v261.286c0 28.944 23.271 52.214 52.214 52.214zM664.56 716.28l155.159 155.159c7.141 7.141 18.719 7.141 25.86 0l25.86-25.86c7.141-7.141 7.141-18.719 0-25.86l-155.159-155.159c-7.141-7.141-18.719-7.141-25.86 0l-25.86 25.86c-7.141 7.141-7.141 18.719 0 25.86zM664.56 845.58l25.86 25.86c7.141 7.141 18.719 7.141 25.86 0l155.159-155.159c7.141-7.141 7.141-18.719 0-25.86l-25.86-25.86c-7.141-7.141-18.719-7.141-25.86 0l-155.159 155.159c-7.141 7.141-7.141 18.719 0 25.86z" />
<glyph unicode="&#xe6ef;" glyph-name="calendar" data-tags="calendar" d="M256 1024c-60.782 0-109.714-48.933-109.714-109.714v-36.571h-73.143c-40.521 0-73.143-32.622-73.143-73.143v-146.286h1024v146.286c0 40.521-32.622 73.143-73.143 73.143h-73.143v36.571c0 60.782-48.933 109.714-109.714 109.714s-109.714-48.933-109.714-109.714v-36.571h-292.571v36.571c0 60.782-48.933 109.714-109.714 109.714zM256 950.857c20.261 0 36.571-16.311 36.571-36.571v-73.143c0-20.261-16.311-36.571-36.571-36.571s-36.571 16.311-36.571 36.571v73.143c0 20.261 16.311 36.571 36.571 36.571zM768 950.857c20.261 0 36.571-16.311 36.571-36.571v-73.143c0-20.261-16.311-36.571-36.571-36.571s-36.571 16.311-36.571 36.571v73.143c0 20.261 16.311 36.571 36.571 36.571zM36.571 585.143h73.143c20.198 0 36.571-16.374 36.571-36.571v-73.143c0-20.198-16.374-36.571-36.571-36.571h-73.143c-20.198 0-36.571 16.374-36.571 36.571v73.143c0 20.198 16.374 36.571 36.571 36.571zM36.571 365.714h73.143c20.198 0 36.571-16.374 36.571-36.571v-73.143c0-20.198-16.374-36.571-36.571-36.571h-73.143c-20.198 0-36.571 16.374-36.571 36.571v73.143c0 20.198 16.374 36.571 36.571 36.571zM36.571 146.286h73.143c20.198 0 36.571-16.374 36.571-36.571v-73.143c0-20.198-16.374-36.571-36.571-36.571h-73.143c-20.198 0-36.571 16.374-36.571 36.571v73.143c0 20.198 16.374 36.571 36.571 36.571zM256 585.143h73.143c20.198 0 36.571-16.374 36.571-36.571v-73.143c0-20.198-16.374-36.571-36.571-36.571h-73.143c-20.198 0-36.571 16.374-36.571 36.571v73.143c0 20.198 16.374 36.571 36.571 36.571zM475.429 585.143h73.143c20.198 0 36.571-16.374 36.571-36.571v-73.143c0-20.198-16.374-36.571-36.571-36.571h-73.143c-20.198 0-36.571 16.374-36.571 36.571v73.143c0 20.198 16.374 36.571 36.571 36.571zM694.857 585.143h73.143c20.198 0 36.571-16.374 36.571-36.571v-73.143c0-20.198-16.374-36.571-36.571-36.571h-73.143c-20.198 0-36.571 16.374-36.571 36.571v73.143c0 20.198 16.374 36.571 36.571 36.571zM914.286 585.143h73.143c20.198 0 36.571-16.374 36.571-36.571v-73.143c0-20.198-16.374-36.571-36.571-36.571h-73.143c-20.198 0-36.571 16.374-36.571 36.571v73.143c0 20.198 16.374 36.571 36.571 36.571zM256 365.714h73.143c20.198 0 36.571-16.374 36.571-36.571v-73.143c0-20.198-16.374-36.571-36.571-36.571h-73.143c-20.198 0-36.571 16.374-36.571 36.571v73.143c0 20.198 16.374 36.571 36.571 36.571zM475.429 365.714h73.143c20.198 0 36.571-16.374 36.571-36.571v-73.143c0-20.198-16.374-36.571-36.571-36.571h-73.143c-20.198 0-36.571 16.374-36.571 36.571v73.143c0 20.198 16.374 36.571 36.571 36.571zM694.857 365.714h73.143c20.198 0 36.571-16.374 36.571-36.571v-73.143c0-20.198-16.374-36.571-36.571-36.571h-73.143c-20.198 0-36.571 16.374-36.571 36.571v73.143c0 20.198 16.374 36.571 36.571 36.571zM914.286 365.714h73.143c20.198 0 36.571-16.374 36.571-36.571v-73.143c0-20.198-16.374-36.571-36.571-36.571h-73.143c-20.198 0-36.571 16.374-36.571 36.571v73.143c0 20.198 16.374 36.571 36.571 36.571zM256 146.286h73.143c20.198 0 36.571-16.374 36.571-36.571v-73.143c0-20.198-16.374-36.571-36.571-36.571h-73.143c-20.198 0-36.571 16.374-36.571 36.571v73.143c0 20.198 16.374 36.571 36.571 36.571zM475.429 146.286h73.143c20.198 0 36.571-16.374 36.571-36.571v-73.143c0-20.198-16.374-36.571-36.571-36.571h-73.143c-20.198 0-36.571 16.374-36.571 36.571v73.143c0 20.198 16.374 36.571 36.571 36.571zM694.857 146.286h73.143c20.198 0 36.571-16.374 36.571-36.571v-73.143c0-20.198-16.374-36.571-36.571-36.571h-73.143c-20.198 0-36.571 16.374-36.571 36.571v73.143c0 20.198 16.374 36.571 36.571 36.571zM914.286 146.286h73.143c20.198 0 36.571-16.374 36.571-36.571v-73.143c0-20.198-16.374-36.571-36.571-36.571h-73.143c-20.198 0-36.571 16.374-36.571 36.571v73.143c0 20.198 16.374 36.571 36.571 36.571z" />
<glyph unicode="&#xe6f0;" glyph-name="calendar-b" data-tags="calendar-b" d="M256 1024c-60.782 0-109.714-48.933-109.714-109.714v-36.571h-73.143c-40.521 0-73.143-32.622-73.143-73.143v-731.429c0-40.521 32.622-73.143 73.143-73.143h877.714c40.521 0 73.143 32.622 73.143 73.143v731.429c0 40.521-32.622 73.143-73.143 73.143h-73.143v36.571c0 60.782-48.933 109.714-109.714 109.714s-109.714-48.933-109.714-109.714v-36.571h-292.571v36.571c0 60.782-48.933 109.714-109.714 109.714zM256 950.857c20.261 0 36.571-16.311 36.571-36.571v-73.143c0-20.261-16.311-36.571-36.571-36.571s-36.571 16.311-36.571 36.571v73.143c0 20.261 16.311 36.571 36.571 36.571zM768 950.857c20.261 0 36.571-16.311 36.571-36.571v-73.143c0-20.261-16.311-36.571-36.571-36.571s-36.571 16.311-36.571 36.571v73.143c0 20.261 16.311 36.571 36.571 36.571zM73.143 658.286h877.714v-585.143h-877.714z" />
<glyph unicode="&#xe6f1;" glyph-name="calendar-day" data-tags="calendar-day" d="M256 1024c-60.782 0-109.714-48.933-109.714-109.714v-36.571h-73.143c-40.521 0-73.143-32.622-73.143-73.143v-731.429c0-40.521 32.622-73.143 73.143-73.143h877.714c40.521 0 73.143 32.622 73.143 73.143v731.429c0 40.521-32.622 73.143-73.143 73.143h-73.143v36.571c0 60.782-48.933 109.714-109.714 109.714s-109.714-48.933-109.714-109.714v-36.571h-292.571v36.571c0 60.782-48.933 109.714-109.714 109.714zM256 950.857c20.261 0 36.571-16.311 36.571-36.571v-73.143c0-20.261-16.311-36.571-36.571-36.571s-36.571 16.311-36.571 36.571v73.143c0 20.261 16.311 36.571 36.571 36.571zM768 950.857c20.261 0 36.571-16.311 36.571-36.571v-73.143c0-20.261-16.311-36.571-36.571-36.571s-36.571 16.311-36.571 36.571v73.143c0 20.261 16.311 36.571 36.571 36.571zM73.143 658.286h877.714v-585.143h-877.714zM219.429 585.143v-73.143h146.286v-109.714h-109.714v-73.143h109.714v-109.714h-146.286v-73.143h146.286c36.571 0 73.143 36.571 73.143 73.143v292.571c0 36.571-36.571 73.143-73.143 73.143zM731.429 585.143l-147.5-73.286 2.429-73.143 74.286 39-2.357-258.286h-73.143v-73.143h219.429v73.143h-73.143v292.571z" />
<glyph unicode="&#xe6f2;" glyph-name="address" data-tags="address" d="M36.571 877.714c-20.261 0-36.571-16.311-36.571-36.571v-658.286c0-20.261 16.311-36.571 36.571-36.571h950.857c20.261 0 36.571 16.311 36.571 36.571v658.286c0 20.261-16.311 36.571-36.571 36.571h-950.857zM768 804.571h146.286c20.261 0 36.571-16.311 36.571-36.571v-146.286c0-20.261-16.311-36.571-36.571-36.571h-146.286c-20.261 0-36.571 16.311-36.571 36.571v146.286c0 20.261 16.311 36.571 36.571 36.571zM164.571 512h402.286c10.13 0 18.286-8.155 18.286-18.286v-36.571c0-10.13-8.155-18.286-18.286-18.286h-402.286c-10.13 0-18.286 8.155-18.286 18.286v36.571c0 10.13 8.155 18.286 18.286 18.286zM164.571 365.714h402.286c10.13 0 18.286-8.155 18.286-18.286v-36.571c0-10.13-8.155-18.286-18.286-18.286h-402.286c-10.13 0-18.286 8.155-18.286 18.286v36.571c0 10.13 8.155 18.286 18.286 18.286z" />
<glyph unicode="&#xe6f3;" glyph-name="contact" data-tags="contact" d="M73.143 877.714c-40.521 0-73.143-32.622-73.143-73.143v-585.143c0-40.521 32.622-73.143 73.143-73.143h877.714c40.521 0 73.143 32.622 73.143 73.143v585.143c0 40.521-32.622 73.143-73.143 73.143h-877.714zM292.571 804.571c146.286 0 146.286-97.524 146.286-219.429 0-73.143-43.789-150.945-97.5-181.214v-38.214c170.667 0 170.643-73.143 170.643-146.286h-438.857c0 73.143-0.024 146.286 170.643 146.286v38.214c-53.711 30.257-97.5 108.071-97.5 181.214 0 121.905 0 219.429 146.286 219.429zM603.429 731.429h329.143c10.13 0 18.286-8.155 18.286-18.286v-36.571c0-10.13-8.155-18.286-18.286-18.286h-329.143c-10.13 0-18.286 8.155-18.286 18.286v36.571c0 10.13 8.155 18.286 18.286 18.286zM603.429 585.143h329.143c10.13 0 18.286-8.155 18.286-18.286v-36.571c0-10.13-8.155-18.286-18.286-18.286h-329.143c-10.13 0-18.286 8.155-18.286 18.286v36.571c0 10.13 8.155 18.286 18.286 18.286zM603.429 438.857h329.143c10.13 0 18.286-8.155 18.286-18.286v-36.571c0-10.13-8.155-18.286-18.286-18.286h-329.143c-10.13 0-18.286 8.155-18.286 18.286v36.571c0 10.13 8.155 18.286 18.286 18.286z" />
<glyph unicode="&#xe6f4;" glyph-name="phone" data-tags="phone" d="M716.8 424.229c-58.514-58.514-58.514-117.029-117.029-117.029s-117.029 58.514-175.543 117.029c-58.514 58.514-117.029 117.029-117.029 175.543s58.514 58.514 117.029 117.029c58.514 58.514-117.029 234.057-175.543 234.057s-175.543-175.543-175.543-175.543c0-117.029 120.232-354.289 234.057-468.114s351.086-234.057 468.114-234.057c0 0 175.543 117.029 175.543 175.543s-175.543 234.057-234.057 175.543z" />
<glyph unicode="&#xe6f5;" glyph-name="circle-phone" data-tags="circle-phone" d="M512 1024c-282.77 0-512-229.23-512-512s229.23-512 512-512c282.77 0 512 229.23 512 512s-229.23 512-512 512zM314.5 841.143c43.886 0 175.529-131.686 131.643-175.571s-87.714-43.829-87.714-87.714c0-43.886 43.829-87.829 87.714-131.714s87.829-87.714 131.714-87.714c43.886 0 43.829 43.829 87.714 87.714s175.571-87.757 175.571-131.643c0-43.886-131.643-131.643-131.643-131.643-87.771 0-265.703 90.203-351.071 175.571s-175.571 263.3-175.571 351.071c0 0 87.757 131.643 131.643 131.643z" />
<glyph unicode="&#xe6f6;" glyph-name="mail-closed" data-tags="mail-closed" d="M73.143 877.714c-40.521 0-73.143-32.622-73.143-73.143v-585.143c0-40.521 32.622-73.143 73.143-73.143h877.714c40.521 0 73.143 32.622 73.143 73.143v585.143c0 40.521-32.622 73.143-73.143 73.143h-877.714zM915.214 805.5c0.061 0 0.132 0.001 0.204 0.001 20.2 0 36.575-16.375 36.575-36.575 0-11.896-5.679-22.466-14.475-29.145l-402.376-329.209c-6.25-5.138-14.333-8.253-23.143-8.253s-16.893 3.115-23.206 8.304l-402.222 329.092c-8.456 6.759-13.826 17.072-13.826 28.639 0 20.188 16.355 36.555 36.538 36.575 9.020-0.010 17.272-3.283 23.643-8.701l379.074-310.085 379.143 310.143c6.403 5.7 14.881 9.19 24.175 9.215zM252.929 420.714l57.786-47.214-177.857-145.5c-37.8-31.243-84.433 25.825-46.286 56.643l166.357 136.071zM771.071 420.714l166.357-136.071c38.151-30.817-8.485-87.889-46.286-56.643l-177.857 145.5 57.786 47.214z" />
<glyph unicode="&#xe6f7;" glyph-name="mail-open" data-tags="mail-open" d="M73.143 731.429c-40.521 0-73.143-32.622-73.143-73.143v-585.143c0-40.521 32.622-73.143 73.143-73.143h877.714c40.521 0 73.143 32.622 73.143 73.143v585.143c0 40.521-32.622 73.143-73.143 73.143h-73.143v-92.429l13.429 11c6.403 5.7 14.881 9.19 24.175 9.215-0.042 0 0.029 0 0.101 0 20.2 0 36.575-16.375 36.575-36.575 0-11.896-5.679-22.466-14.475-29.145l-402.376-329.209c-6.25-5.138-14.333-8.253-23.143-8.253s-16.893 3.115-23.206 8.304l-402.222 329.092c-8.456 6.759-13.826 17.072-13.826 28.639 0 20.188 16.355 36.555 36.538 36.575 9.020-0.010 17.272-3.283 23.643-8.7l13.359-10.942v92.429h-73.143zM252.929 274.429l57.786-47.214-177.857-145.5c-37.8-31.243-84.433 25.825-46.286 56.643l166.357 136.071zM771.071 274.429l166.357-136.071c38.151-30.817-8.485-87.889-46.286-56.643l-177.857 145.5 57.786 47.214zM219.429 1024c-40.521 0-73.143-32.622-73.143-73.143v-512h73.143v512h585.143v-512h73.143v512c0 40.521-32.622 73.143-73.143 73.143z" />
<glyph unicode="&#xe6f8;" glyph-name="mail-reply" data-tags="mail-reply" d="M764.5 877.214c-48.013 0-42.768-7.295-37.571-30.929 0.462-2.345 1.043-4.641 1.429-7 0.207-1.198 0.461-1.872 0.643-3.143h-0.357c1.552-10.443 2.753-20.976 2.786-31.571 0-121.187-98.242-219.429-219.429-219.429h-73.143v146.286c0 0.002 0 0.005 0 0.007 0 10.1-8.188 18.288-18.288 18.288-0.2 0-0.4-0.003-0.599-0.010-4.913-0.162-9.336-2.262-12.528-5.56l-292.372-292.368c-3.308-3.309-5.354-7.88-5.354-12.929s2.046-9.619 5.354-12.929l292.571-292.571c3.309-3.307 7.879-5.352 12.927-5.352 10.097 0 18.283 8.184 18.288 18.28v146.286h73.143c201.978 0 365.714 163.736 365.714 365.714-0.228 67.695-18.709 133.716-53.857 190.929-2.045 3.228-4.289 6.723-5.929 9.214-1.015 1.544-2.102 3.042-3.143 4.571-9.751 13.857-14.574 14.214-37.357 14.214h-12.929z" />
<glyph unicode="&#xe6f9;" glyph-name="mail-replyall" data-tags="mail-replyall" d="M310.286 749.714c-4.651-0.148-9.070-2.064-12.357-5.357l-292.571-292.571c-7.138-7.141-7.138-18.716 0-25.857l292.571-292.571c11.52-11.512 31.208-3.357 31.214 12.929v97.714l-143.143 143.143c-28.092 28.103-28.092 75.325 0 103.429l143.143 143.143v97.714c0.004 10.326-8.536 18.607-18.857 18.286zM910.786 877.214c-48.013 0-42.768-7.295-37.571-30.929 0.462-2.345 1.043-4.641 1.428-7 0.205-1.198 0.461-1.872 0.643-3.143h-0.358c1.554-10.443 2.755-20.976 2.787-31.571 0-121.187-98.242-219.429-219.429-219.429h-73.143v146.286c0 0.002 0 0.005 0 0.007 0 10.1-8.188 18.288-18.288 18.288-0.2 0-0.4-0.003-0.599-0.010-4.913-0.162-9.336-2.262-12.528-5.56l-292.372-292.368c-3.308-3.309-5.354-7.88-5.354-12.929s2.046-9.619 5.354-12.929l292.571-292.571c3.309-3.307 7.879-5.352 12.927-5.352 10.097 0 18.283 8.184 18.288 18.28v146.286h73.143c201.978 0 365.714 163.736 365.714 365.714-0.227 67.695-18.709 133.716-53.857 190.929-2.045 3.228-4.289 6.723-5.929 9.214-1.015 1.544-2.102 3.042-3.143 4.571-9.751 13.857-14.574 14.214-37.357 14.214h-12.929z" />
<glyph unicode="&#xe6fa;" glyph-name="mail-forward" data-tags="mail-forward" d="M259.504 877.214c48.013 0 42.768-7.295 37.571-30.929-0.462-2.345-1.043-4.641-1.428-7-0.205-1.198-0.461-1.872-0.643-3.143h0.358c-1.554-10.443-2.755-20.976-2.787-31.571 0-121.187 98.242-219.429 219.429-219.429h73.143v146.286c0 0.002 0 0.005 0 0.007 0 10.1 8.188 18.288 18.288 18.288 0.2 0 0.4-0.003 0.599-0.010 4.913-0.162 9.336-2.262 12.528-5.56l292.372-292.368c3.308-3.309 5.354-7.88 5.354-12.929s-2.046-9.619-5.354-12.929l-292.571-292.571c-3.309-3.307-7.879-5.352-12.927-5.352-10.097 0-18.283 8.184-18.288 18.28v146.286h-73.143c-201.978 0-365.714 163.736-365.714 365.714 0.227 67.695 18.709 133.716 53.857 190.929 2.045 3.228 4.289 6.723 5.929 9.214 1.015 1.544 2.102 3.042 3.143 4.571 9.751 13.857 14.574 14.214 37.357 14.214h12.929z" />
<glyph unicode="&#xe6fb;" glyph-name="mail-send" data-tags="mail-send" d="M1008.038 1017.673q18.87-13.714 15.432-36.571l-146.279-877.714q-2.853-16.567-18.285-25.71-8.009-4.571-17.7-4.571-6.29 0-13.714 2.853l-258.842 105.728-138.271-168.558q-10.276-13.129-28.013-13.129-7.424 0-12.58 2.304-10.861 3.986-17.444 13.422t-6.583 20.846v199.424l493.693 605.147-610.826-528.567-225.709 92.562q-21.137 8.009-22.856 31.415-1.134 22.857 18.285 33.719l950.817 548.571q8.557 5.157 18.285 5.157 11.446 0 20.552-6.29z" />
<glyph unicode="&#xe6fc;" glyph-name="newspaper" data-tags="newspaper" d="M0 877.714v-658.286c0-40.521 32.622-73.143 73.143-73.143l841.143 0.286c73.143-0.285 109.714 72.857 109.714 146v438.857h-73.143v-475.429c0-20.261-16.311-36.571-36.571-36.571s-36.571 16.311-36.571 36.571v621.714h-877.714zM73.143 804.571h731.429v-585.143h-731.429v585.143zM146.286 731.429v-73.143h585.143v73.143h-585.143zM146.286 585.143v-292.571h219.429v292.571h-219.429zM438.857 585.143v-73.143h292.571v73.143h-292.571zM438.857 438.857v-73.143h219.429v73.143h-219.429z" />
<glyph unicode="&#xe6fd;" glyph-name="pin-s" data-tags="pin-s" d="M292.571 1024c-40.521 0-73.143-32.622-73.143-73.143s32.622-73.143 73.143-73.143v-292.571c-79.51-24.437-146.286-61.806-146.286-146.286 0-36.571 2.449-72.636 73.143-73.143h219.429l55.071-350.286c3.203-20.646 32.94-20.646 36.143 0l55.071 350.286h219.429c70.693 0.507 73.143 36.571 73.143 73.143 0 84.48-66.776 121.848-146.286 146.286v292.571c40.521 0 73.143 32.622 73.143 73.143s-32.622 73.143-73.143 73.143h-438.857zM384 877.714c10.13 0 18.286-8.155 18.286-18.286v-256c0-10.13-8.155-18.286-18.286-18.286s-18.286 8.155-18.286 18.286v256c0 10.13 8.155 18.286 18.286 18.286z" />
<glyph unicode="&#xe6fe;" glyph-name="pin-w" data-tags="pin-w" d="M1024.028 731.401c0 40.521-32.622 73.143-73.143 73.143s-73.143-32.622-73.143-73.143h-292.571c-24.437 79.51-61.806 146.286-146.286 146.286-36.571 0-72.636-2.449-73.143-73.143v-219.429l-350.286-55.071c-20.646-3.203-20.646-32.94 0-36.143l350.286-55.071v-219.429c0.507-70.693 36.571-73.143 73.143-73.143 84.48 0 121.848 66.776 146.286 146.286h292.571c0-40.521 32.622-73.143 73.143-73.143s73.143 32.622 73.143 73.143v438.857zM877.742 639.972c0-10.13-8.155-18.286-18.286-18.286h-256c-10.13 0-18.286 8.155-18.286 18.286s8.155 18.286 18.286 18.286h256c10.13 0 18.286-8.155 18.286-18.286z" />
<glyph unicode="&#xe6ff;" glyph-name="zoomin" data-tags="zoomin" d="M621.693 1024c222.176 0 402.286-180.109 402.286-402.286s-180.109-402.286-402.286-402.286c-96.486 0.103-184.998 34.158-254.253 90.858l-228.89-296.144c-6.755-8.628-17.172-14.121-28.872-14.121-10.090 0-19.226 4.086-25.843 10.693l-73.142 73.142c-6.607 6.617-10.693 15.753-10.693 25.843 0 11.7 5.493 22.116 14.041 28.811l295.437 229.775c-56.063 68.573-90.044 157.102-90.072 253.568 0 222.037 180.11 402.147 402.286 402.147zM621.693 914.286c-161.583 0-292.571-130.989-292.571-292.571 0 0 0 0 0 0 0-161.583 130.989-292.571 292.571-292.571s292.571 130.989 292.571 292.571c0 161.583-130.989 292.571-292.571 292.571zM475.429 658.286h292.571c20.198 0 36.571-16.374 36.571-36.571s-16.374-36.571-36.571-36.571h-292.571c-20.198 0-36.571 16.374-36.571 36.571s16.374 36.571 36.571 36.571zM621.714 804.571c20.198 0 36.571-16.374 36.571-36.571v-292.571c0-20.198-16.374-36.571-36.571-36.571s-36.571 16.374-36.571 36.571v292.571c0 20.198 16.374 36.571 36.571 36.571z" />
<glyph unicode="&#xe700;" glyph-name="circle-zoomin" data-tags="circle-zoomin" d="M621.714 1024c-222.176 0-402.286-180.109-402.286-402.286 0.063-96.471 34.074-184.986 90.732-254.258l-296.017-228.884c-8.628-6.755-14.121-17.172-14.121-28.872 0-10.090 4.086-19.226 10.693-25.843l73.142-73.142c6.617-6.607 15.753-10.693 25.843-10.693 11.7 0 22.116 5.493 28.811 14.041l229.846 295.509c68.57-56.092 157.105-90.098 253.582-90.143 221.951 0 402.060 180.11 402.060 402.286s-180.109 402.286-402.286 402.286zM621.714 950.857c181.781 0 329.143-147.362 329.143-329.143s-147.362-329.143-329.143-329.143c-181.781 0-329.143 147.362-329.143 329.143s147.362 329.143 329.143 329.143zM621.714 877.714c-141.385 0-256-114.615-256-256s114.615-256 256-256c141.385 0 256 114.615 256 256s-114.615 256-256 256zM620.5 768h2.429c19.606 0 35.357-13.85 35.357-31.071v-78.643h74.357c19.606 0 35.357-13.85 35.357-31.071v-11c0-17.221-15.752-31.071-35.357-31.071h-74.357v-78.643c0-17.221-15.752-31.071-35.357-31.071h-2.429c-19.606 0-35.357 13.85-35.357 31.071v78.643h-74.357c-19.606 0-35.357 13.85-35.357 31.071v11c0 17.221 15.752 31.071 35.357 31.071h74.357v78.643c0 17.221 15.752 31.071 35.357 31.071z" />
<glyph unicode="&#xe701;" glyph-name="zoomout" data-tags="zoomout" d="M621.693 1024c222.176 0 402.286-180.109 402.286-402.286s-180.109-402.286-402.286-402.286c-96.486 0.103-184.998 34.158-254.253 90.858l-228.89-296.144c-6.755-8.628-17.172-14.121-28.872-14.121-10.090 0-19.226 4.086-25.843 10.693l-73.142 73.142c-6.607 6.617-10.693 15.753-10.693 25.843 0 11.7 5.493 22.116 14.041 28.811l295.437 229.775c-56.063 68.573-90.044 157.102-90.072 253.568 0 222.037 180.11 402.147 402.286 402.147zM621.693 914.286c-161.583 0-292.571-130.989-292.571-292.571 0 0 0 0 0 0 0-161.583 130.989-292.571 292.571-292.571s292.571 130.989 292.571 292.571c0 161.583-130.989 292.571-292.571 292.571zM475.429 658.286h292.571c20.198 0 36.571-16.374 36.571-36.571s-16.374-36.571-36.571-36.571h-292.571c-20.198 0-36.571 16.374-36.571 36.571s16.374 36.571 36.571 36.571z" />
<glyph unicode="&#xe702;" glyph-name="circle-zoomout" data-tags="circle-zoomout" d="M621.714 1024c-222.176 0-402.286-180.109-402.286-402.286 0.063-96.471 34.074-184.986 90.732-254.258l-296.017-228.884c-8.628-6.755-14.121-17.172-14.121-28.872 0-10.090 4.086-19.226 10.693-25.843l73.142-73.142c6.617-6.607 15.753-10.693 25.843-10.693 11.7 0 22.116 5.493 28.811 14.041l229.846 295.509c68.57-56.092 157.105-90.098 253.582-90.143 221.951 0 402.060 180.11 402.060 402.286s-180.109 402.286-402.286 402.286zM621.714 950.857c181.781 0 329.143-147.362 329.143-329.143s-147.362-329.143-329.143-329.143c-181.781 0-329.143 147.362-329.143 329.143s147.362 329.143 329.143 329.143zM621.714 877.714c-141.385 0-256-114.615-256-256s114.615-256 256-256c141.385 0 256 114.615 256 256s-114.615 256-256 256zM510.786 658.286h221.857c19.606 0 35.357-13.85 35.357-31.071v-11c0-17.221-15.752-31.071-35.357-31.071h-221.857c-19.606 0-35.357 13.85-35.357 31.071v11c0 17.221 15.752 31.071 35.357 31.071z" />
<glyph unicode="&#xe703;" glyph-name="screen-display" data-tags="screen-display" d="M36.571 950.857c-20.261 0-36.571-16.311-36.571-36.571v-512c0-20.261 16.311-36.571 36.571-36.571h950.857c20.261 0 36.571 16.311 36.571 36.571v512c0 20.261-16.311 36.571-36.571 36.571h-950.857zM73.143 877.714h877.714v-438.857h-877.714v438.857zM329.143 292.571c-0.009 0-0.021 0-0.032 0-9.040 0-16.548-6.559-18.024-15.177l-17.301-104.037-69-69c-3.307-3.309-5.352-7.879-5.352-12.927 0-10.097 8.184-18.283 18.28-18.288h548.572c10.097 0.004 18.28 8.19 18.28 18.288 0 5.048-2.045 9.618-5.352 12.927l-69 69-17.286 103.929c-1.492 8.727-9 15.286-18.039 15.286-0.011 0-0.022 0-0.034 0h-365.713z" />
<glyph unicode="&#xe704;" glyph-name="screen-laptop" data-tags="screen-laptop" d="M219.429 877.714c-40.521 0-73.143-32.622-73.143-73.143v-365.714c0-40.521 32.622-73.143 73.143-73.143h585.143c40.521 0 73.143 32.622 73.143 73.143v365.714c0 40.521-32.622 73.143-73.143 73.143zM256 804.571h512c20.261 0 36.571-16.311 36.571-36.571v-292.571c0-20.261-16.311-36.571-36.571-36.571h-512c-20.261 0-36.571 16.311-36.571 36.571v292.571c0 20.261 16.311 36.571 36.571 36.571zM0 292.571v-91.429c0-30.297 49.121-54.857 109.714-54.857h804.571c60.594 0 109.714 24.56 109.714 54.857v91.429h-1024zM438.857 256h146.286v-36.571h-146.286v36.571z" />
<glyph unicode="&#xe705;" glyph-name="screen-mobile" data-tags="screen-mobile" d="M292.571 1024c-40.521 0-73.143-32.622-73.143-73.143v-877.714c0-40.521 32.622-73.143 73.143-73.143h438.857c40.521 0 73.143 32.622 73.143 73.143v877.714c0 40.521-32.622 73.143-73.143 73.143h-438.857zM365.714 943.571h292.571v-58.571h-292.571v58.571zM281.571 815.571h460.857v-534h-460.857v534zM512 204.786c0.008 0 0.019 0 0.029 0 36.341 0 65.804-29.448 65.829-65.783 0-0.011 0-0.021 0-0.031 0-36.356-29.472-65.829-65.829-65.829-0.010 0-0.020 0-0.030 0-0.007 0-0.017 0-0.027 0-36.356 0-65.829 29.472-65.829 65.829 0 0.010 0 0.020 0 0.030 0.024 36.336 29.488 65.784 65.829 65.784 0.010 0 0.020 0 0.030 0z" />
<glyph unicode="&#xe706;" glyph-name="view-icons" data-tags="view-icons" d="M73.143 1024h292.571c40.396 0 73.143-32.747 73.143-73.143v-292.571c0-40.396-32.747-73.143-73.143-73.143h-292.571c-40.396 0-73.143 32.747-73.143 73.143v292.571c0 40.396 32.747 73.143 73.143 73.143zM658.286 1024h292.571c40.396 0 73.143-32.747 73.143-73.143v-292.571c0-40.396-32.747-73.143-73.143-73.143h-292.571c-40.396 0-73.143 32.747-73.143 73.143v292.571c0 40.396 32.747 73.143 73.143 73.143zM73.143 438.857h292.571c40.396 0 73.143-32.747 73.143-73.143v-292.571c0-40.396-32.747-73.143-73.143-73.143h-292.571c-40.396 0-73.143 32.747-73.143 73.143v292.571c0 40.396 32.747 73.143 73.143 73.143zM658.286 438.857h292.571c40.396 0 73.143-32.747 73.143-73.143v-292.571c0-40.396-32.747-73.143-73.143-73.143h-292.571c-40.396 0-73.143 32.747-73.143 73.143v292.571c0 40.396 32.747 73.143 73.143 73.143z" />
<glyph unicode="&#xe707;" glyph-name="view-icons-b" data-tags="view-icons-b" d="M804.571 1024h146.286c40.396 0 73.143-32.747 73.143-73.143v-146.286c0-40.396-32.747-73.143-73.143-73.143h-146.286c-40.396 0-73.143 32.747-73.143 73.143v146.286c0 40.396 32.747 73.143 73.143 73.143zM438.857 1024h146.286c40.396 0 73.143-32.747 73.143-73.143v-146.286c0-40.396-32.747-73.143-73.143-73.143h-146.286c-40.396 0-73.143 32.747-73.143 73.143v146.286c0 40.396 32.747 73.143 73.143 73.143zM73.143 1024h146.286c40.396 0 73.143-32.747 73.143-73.143v-146.286c0-40.396-32.747-73.143-73.143-73.143h-146.286c-40.396 0-73.143 32.747-73.143 73.143v146.286c0 40.396 32.747 73.143 73.143 73.143zM73.143 658.286h146.286c40.396 0 73.143-32.747 73.143-73.143v-146.286c0-40.396-32.747-73.143-73.143-73.143h-146.286c-40.396 0-73.143 32.747-73.143 73.143v146.286c0 40.396 32.747 73.143 73.143 73.143zM438.857 658.286h146.286c40.396 0 73.143-32.747 73.143-73.143v-146.286c0-40.396-32.747-73.143-73.143-73.143h-146.286c-40.396 0-73.143 32.747-73.143 73.143v146.286c0 40.396 32.747 73.143 73.143 73.143zM804.571 658.286h146.286c40.396 0 73.143-32.747 73.143-73.143v-146.286c0-40.396-32.747-73.143-73.143-73.143h-146.286c-40.396 0-73.143 32.747-73.143 73.143v146.286c0 40.396 32.747 73.143 73.143 73.143zM804.571 292.571h146.286c40.396 0 73.143-32.747 73.143-73.143v-146.286c0-40.396-32.747-73.143-73.143-73.143h-146.286c-40.396 0-73.143 32.747-73.143 73.143v146.286c0 40.396 32.747 73.143 73.143 73.143zM438.857 292.571h146.286c40.396 0 73.143-32.747 73.143-73.143v-146.286c0-40.396-32.747-73.143-73.143-73.143h-146.286c-40.396 0-73.143 32.747-73.143 73.143v146.286c0 40.396 32.747 73.143 73.143 73.143zM73.143 292.571h146.286c40.396 0 73.143-32.747 73.143-73.143v-146.286c0-40.396-32.747-73.143-73.143-73.143h-146.286c-40.396 0-73.143 32.747-73.143 73.143v146.286c0 40.396 32.747 73.143 73.143 73.143z" />
<glyph unicode="&#xe708;" glyph-name="view-list" data-tags="view-list" d="M73.143 1024h146.286c40.396 0 73.143-32.747 73.143-73.143v-146.286c0-40.396-32.747-73.143-73.143-73.143h-146.286c-40.396 0-73.143 32.747-73.143 73.143v146.286c0 40.396 32.747 73.143 73.143 73.143zM73.143 658.286h146.286c40.396 0 73.143-32.747 73.143-73.143v-146.286c0-40.396-32.747-73.143-73.143-73.143h-146.286c-40.396 0-73.143 32.747-73.143 73.143v146.286c0 40.396 32.747 73.143 73.143 73.143zM73.143 292.571h146.286c40.396 0 73.143-32.747 73.143-73.143v-146.286c0-40.396-32.747-73.143-73.143-73.143h-146.286c-40.396 0-73.143 32.747-73.143 73.143v146.286c0 40.396 32.747 73.143 73.143 73.143zM512 950.857h438.857c40.396 0 73.143-32.747 73.143-73.143s-32.747-73.143-73.143-73.143h-438.857c-40.396 0-73.143 32.747-73.143 73.143s32.747 73.143 73.143 73.143zM512 585.143h438.857c40.396 0 73.143-32.747 73.143-73.143s-32.747-73.143-73.143-73.143h-438.857c-40.396 0-73.143 32.747-73.143 73.143s32.747 73.143 73.143 73.143zM512 219.429h438.857c40.396 0 73.143-32.747 73.143-73.143s-32.747-73.143-73.143-73.143h-438.857c-40.396 0-73.143 32.747-73.143 73.143s32.747 73.143 73.143 73.143z" />
<glyph unicode="&#xe709;" glyph-name="sorting" data-tags="sorting" d="M512 73.157c-5.608 0.062-10.552 2.55-13.856 6.357l-274.272 329.129c-10.197 11.854-1.78 30.209 13.856 30.214h548.543c15.636-0.005 24.053-18.361 13.856-30.214l-274.272-329.129c-3.663-4.223-7.271-6.325-13.856-6.357zM512 156.585l162.067 209.129h-324.134zM512 950.843c-5.608-0.062-10.552-2.55-13.856-6.357l-274.272-329.129c-10.197-11.854-1.78-30.209 13.856-30.214h548.543c15.636 0.005 24.053 18.361 13.856 30.214l-274.272 329.129c-3.663 4.223-7.271 6.325-13.856 6.357zM512 867.415l162.067-209.129h-324.134z" />
<glyph unicode="&#xe70a;" glyph-name="sorting-asc" data-tags="sorting-asc" d="M512 73.157c-5.608 0.062-10.552 2.55-13.856 6.357l-274.272 329.129c-10.197 11.854-1.78 30.209 13.856 30.214h548.543c15.636-0.005 24.053-18.361 13.856-30.214l-274.272-329.129c-3.663-4.223-7.271-6.325-13.856-6.357zM512 156.585l162.067 209.129h-324.134zM512 950.843c-5.608-0.062-10.552-2.55-13.856-6.357l-274.272-329.129c-10.197-11.854-1.78-30.209 13.856-30.214h548.543c15.636 0.005 24.053 18.361 13.856 30.214l-274.272 329.129c-3.663 4.223-7.271 6.325-13.856 6.357z" />
<glyph unicode="&#xe70b;" glyph-name="sorting-desc" data-tags="sorting-desc" d="M512 73.157c-5.608 0.062-10.552 2.55-13.856 6.357l-274.272 329.129c-10.197 11.854-1.78 30.209 13.856 30.214h548.543c15.636-0.005 24.053-18.361 13.856-30.214l-274.272-329.129c-3.663-4.223-7.271-6.325-13.856-6.357zM512 950.843c-5.608-0.062-10.552-2.55-13.856-6.357l-274.272-329.129c-10.197-11.854-1.78-30.209 13.856-30.214h548.543c15.636 0.005 24.053 18.361 13.856 30.214l-274.272 329.129c-3.663 4.223-7.271 6.325-13.856 6.357zM512 867.415l162.067-209.129h-324.134z" />
<glyph unicode="&#xe70c;" glyph-name="battery-0" data-tags="battery-0" d="M73.143 804.571c-40.521 0-73.143-32.622-73.143-73.143v-438.857c0-40.521 32.622-73.143 73.143-73.143h731.429c40.521 0 73.143 32.622 73.143 73.143v73.143h36.571c60.782 0 109.714 48.933 109.714 109.714v73.143c0 60.782-48.933 109.714-109.714 109.714h-36.571v73.143c0 40.521-32.622 73.143-73.143 73.143h-731.429zM109.714 731.429h658.286c20.261 0 36.571-16.311 36.571-36.571v-109.714h109.714c20.261 0 36.571-16.311 36.571-36.571v-73.143c0-20.261-16.311-36.571-36.571-36.571h-109.714v-109.714c0-20.261-16.311-36.571-36.571-36.571h-658.286c-20.261 0-36.571 16.311-36.571 36.571v365.714c0 20.261 16.311 36.571 36.571 36.571z" />
<glyph unicode="&#xe70d;" glyph-name="battery-1" data-tags="battery-1" d="M73.143 804.571c-40.521 0-73.143-32.622-73.143-73.143v-438.857c0-40.521 32.622-73.143 73.143-73.143h731.429c40.521 0 73.143 32.622 73.143 73.143v73.143h36.571c60.782 0 109.714 48.933 109.714 109.714v73.143c0 60.782-48.933 109.714-109.714 109.714h-36.571v73.143c0 40.521-32.622 73.143-73.143 73.143h-731.429zM109.714 731.429h658.286c20.261 0 36.571-16.311 36.571-36.571v-109.714h109.714c20.261 0 36.571-16.311 36.571-36.571v-73.143c0-20.261-16.311-36.571-36.571-36.571h-109.714v-109.714c0-20.261-16.311-36.571-36.571-36.571h-658.286c-20.261 0-36.571 16.311-36.571 36.571v365.714c0 20.261 16.311 36.571 36.571 36.571zM182.857 658.286h73.143c20.198 0 36.571-16.374 36.571-36.571v-219.429c0-20.198-16.374-36.571-36.571-36.571h-73.143c-20.198 0-36.571 16.374-36.571 36.571v219.429c0 20.198 16.374 36.571 36.571 36.571z" />
<glyph unicode="&#xe70e;" glyph-name="battery-2" data-tags="battery-2" d="M73.143 804.571c-40.521 0-73.143-32.622-73.143-73.143v-438.857c0-40.521 32.622-73.143 73.143-73.143h731.429c40.521 0 73.143 32.622 73.143 73.143v73.143h36.571c60.782 0 109.714 48.933 109.714 109.714v73.143c0 60.782-48.933 109.714-109.714 109.714h-36.571v73.143c0 40.521-32.622 73.143-73.143 73.143h-731.429zM109.714 731.429h658.286c20.261 0 36.571-16.311 36.571-36.571v-109.714h109.714c20.261 0 36.571-16.311 36.571-36.571v-73.143c0-20.261-16.311-36.571-36.571-36.571h-109.714v-109.714c0-20.261-16.311-36.571-36.571-36.571h-658.286c-20.261 0-36.571 16.311-36.571 36.571v365.714c0 20.261 16.311 36.571 36.571 36.571zM182.857 658.286h73.143c20.198 0 36.571-16.374 36.571-36.571v-219.429c0-20.198-16.374-36.571-36.571-36.571h-73.143c-20.198 0-36.571 16.374-36.571 36.571v219.429c0 20.198 16.374 36.571 36.571 36.571zM402.286 658.286h73.143c20.198 0 36.571-16.374 36.571-36.571v-219.429c0-20.198-16.374-36.571-36.571-36.571h-73.143c-20.198 0-36.571 16.374-36.571 36.571v219.429c0 20.198 16.374 36.571 36.571 36.571z" />
<glyph unicode="&#xe70f;" glyph-name="battery-3" data-tags="battery-3" d="M73.143 804.571c-40.521 0-73.143-32.622-73.143-73.143v-438.857c0-40.521 32.622-73.143 73.143-73.143h731.429c40.521 0 73.143 32.622 73.143 73.143v73.143h36.571c60.782 0 109.714 48.933 109.714 109.714v73.143c0 60.782-48.933 109.714-109.714 109.714h-36.571v73.143c0 40.521-32.622 73.143-73.143 73.143h-731.429zM109.714 731.429h658.286c20.261 0 36.571-16.311 36.571-36.571v-109.714h109.714c20.261 0 36.571-16.311 36.571-36.571v-73.143c0-20.261-16.311-36.571-36.571-36.571h-109.714v-109.714c0-20.261-16.311-36.571-36.571-36.571h-658.286c-20.261 0-36.571 16.311-36.571 36.571v365.714c0 20.261 16.311 36.571 36.571 36.571zM182.857 658.286h73.143c20.198 0 36.571-16.374 36.571-36.571v-219.429c0-20.198-16.374-36.571-36.571-36.571h-73.143c-20.198 0-36.571 16.374-36.571 36.571v219.429c0 20.198 16.374 36.571 36.571 36.571zM402.286 658.286h73.143c20.198 0 36.571-16.374 36.571-36.571v-219.429c0-20.198-16.374-36.571-36.571-36.571h-73.143c-20.198 0-36.571 16.374-36.571 36.571v219.429c0 20.198 16.374 36.571 36.571 36.571zM621.714 658.286h73.143c20.198 0 36.571-16.374 36.571-36.571v-219.429c0-20.198-16.374-36.571-36.571-36.571h-73.143c-20.198 0-36.571 16.374-36.571 36.571v219.429c0 20.198 16.374 36.571 36.571 36.571z" />
<glyph unicode="&#xe710;" glyph-name="signal" data-tags="signal" d="M182.857 292.571h73.143c20.198 0 36.571-16.374 36.571-36.571v-146.286c0-20.198-16.374-36.571-36.571-36.571h-73.143c-20.198 0-36.571 16.374-36.571 36.571v146.286c0 20.198 16.374 36.571 36.571 36.571zM402.286 512h73.143c20.198 0 36.571-16.374 36.571-36.571v-365.714c0-20.198-16.374-36.571-36.571-36.571h-73.143c-20.198 0-36.571 16.374-36.571 36.571v365.714c0 20.198 16.374 36.571 36.571 36.571zM841.143 950.857h73.143c20.198 0 36.571-16.374 36.571-36.571v-804.571c0-20.198-16.374-36.571-36.571-36.571h-73.143c-20.198 0-36.571 16.374-36.571 36.571v804.571c0 20.198 16.374 36.571 36.571 36.571zM621.714 731.429h73.143c20.198 0 36.571-16.374 36.571-36.571v-585.143c0-20.198-16.374-36.571-36.571-36.571h-73.143c-20.198 0-36.571 16.374-36.571 36.571v585.143c0 20.198 16.374 36.571 36.571 36.571z" />
<glyph unicode="&#xe711;" glyph-name="signal-diag" data-tags="signal-diag" d="M0 1023.5v-146.714c480.161-10.355 866.7-396.881 877.060-876.060l146.011-0.726c-10.336 560.984-462.322 1013.046-1022.299 1023.489zM0 657.857v-146.786c278.322-10.069 501.37-233.16 511.345-510.561l146.012-0.51c-10.104 359.13-298.572 647.661-656.729 657.845zM292.571 146.286c0-80.791-65.494-146.286-146.286-146.286s-146.286 65.494-146.286 146.286c0 80.791 65.494 146.286 146.286 146.286s146.286-65.494 146.286-146.286z" />
<glyph unicode="&#xe712;" glyph-name="throbber-balls" data-tags="throbber-balls" d="M566.16 949.409c36.715 68.698 122.181 94.629 190.879 57.914s94.629-122.181 57.914-190.879c-36.715-68.698-122.181-94.629-190.879-57.914s-94.629 122.181-57.914 190.879zM762.246 364.831c0 0 0 0 0 0 30.125 56.367 100.225 77.636 156.592 47.511s77.636-100.225 47.511-156.592c0 0 0 0 0 0-30.125-56.367-100.225-77.636-156.592-47.511s-77.636 100.225-47.511 156.592zM521.523 154.217c27.283 51.049 90.774 70.313 141.823 43.030s70.313-90.774 43.030-141.823c-27.283-51.049-90.774-70.313-141.823-43.030s-70.313 90.774-43.030 141.823zM207.942 181.292c24.707 46.229 82.217 63.691 128.462 38.976s63.691-82.217 38.976-128.462c-24.707-46.229-82.217-63.691-128.462-38.976s-63.691 82.217-38.976 128.462zM10.363 427.402c22.38 41.875 74.466 57.678 116.341 35.298s57.678-74.466 35.298-116.341c-22.38-41.875-74.466-57.678-116.341-35.298s-57.678 74.466-35.298 116.341zM49.253 745.884c20.269 37.925 67.44 52.237 105.365 31.968s52.237-67.44 31.968-105.365c-20.269-37.925-67.44-52.237-105.365-31.968s-52.237 67.44-31.968 105.365zM306.061 947.881c0 0 0 0 0 0 18.358 34.349 61.091 47.314 95.439 28.957s47.314-61.091 28.957-95.439c0 0 0 0 0 0-18.358-34.349-61.091-47.314-95.439-28.957s-47.314 61.091-28.957 95.439zM1008.698 572.362c-33.25-62.214-110.659-85.713-172.889-52.455s-85.713 110.659-52.455 172.889c33.258 62.229 110.675 85.705 172.889 52.455s85.713-110.659 52.455-172.889z" />
<glyph unicode="&#xe713;" glyph-name="throbber-circle" data-tags="throbber-circle" d="M511.969 1023.975c-206.938 0-393.825-124.903-473.017-316.088s-35.383-411.664 110.944-557.991c146.327-146.327 366.806-190.135 557.992-110.943s316.089 266.079 316.089 473.016c0.016 0.487 0.024 1.060 0.024 1.635 0 30.3-24.563 54.864-54.864 54.864s-54.864-24.563-54.864-54.864c0-0.575 0.009-1.148 0.026-1.719-0.002-162.793-97.9-309.258-248.379-371.588s-323.246-27.964-438.417 87.207c-115.171 115.171-149.537 287.938-87.207 438.416s208.795 248.376 371.672 248.376c0.487-0.016 1.060-0.024 1.635-0.024 30.3 0 54.864 24.563 54.864 54.864s-24.563 54.864-54.864 54.864c-0.575 0-1.148-0.009-1.718-0.026z" />
<glyph unicode="&#xe714;" glyph-name="throbber-comet" data-tags="throbber-comet" d="M1024 495.482c-1.321 69.012-16.283 137.809-43.944 200.711-27.562 62.968-67.559 119.99-116.671 167.121-49.079 47.164-107.275 84.452-170.292 109.042-62.968 24.688-130.658 36.479-197.54 35.059-66.898-1.321-133.482-15.87-194.386-42.689-60.953-26.736-116.159-65.511-161.771-113.088-45.645-47.56-81.695-103.939-105.475-164.925-23.863-60.953-35.224-126.447-33.804-191.215 1.321-64.768 15.441-129.172 41.417-188.061 25.894-58.938 63.447-112.328 109.521-156.42 46.041-44.125 100.603-78.97 159.574-101.891 58.955-23.020 122.253-33.953 184.89-32.532 62.654 1.338 124.845 15.028 181.736 40.162 56.924 25.068 108.497 61.399 151.070 105.937 42.606 44.522 76.212 97.267 98.308 154.224 13.459 34.531 22.575 70.597 27.397 107.126 1.288-0.083 2.576-0.132 3.881-0.132 36.479 0 66.056 29.576 66.056 66.056 0 1.85-0.099 3.683-0.248 5.499h0.248zM919.037 320.071c-24.226-54.909-59.335-104.649-102.37-145.719-43.002-41.087-93.931-73.471-148.873-94.741-54.942-21.336-113.831-31.426-172.241-30.022-58.426 1.338-116.209 14.169-169.086 37.652-52.894 23.4-100.818 57.27-140.369 98.786-39.567 41.483-70.729 90.579-91.157 143.523-20.51 52.927-30.171 109.62-28.767 165.916 1.338 56.313 13.756 111.899 36.38 162.762 22.558 50.879 55.223 96.986 95.203 135.018 39.98 38.048 87.243 67.988 138.172 87.574 50.929 19.668 105.409 28.899 159.591 27.496 54.182-1.354 107.572-13.327 156.437-35.125 48.865-21.732 93.155-53.158 129.668-91.636 36.529-38.461 65.247-83.907 84.006-132.822 18.842-48.914 27.644-101.214 26.241-153.266h0.248c-0.149-1.817-0.248-3.65-0.248-5.499 0-34.068 25.795-62.109 58.922-65.676-6.424-35.934-17.059-71.026-31.773-104.236z" />
<glyph unicode="&#xe715;" glyph-name="throbber-lines" data-tags="throbber-lines" d="M493.714 1024c-10.099-0.001-18.285-8.187-18.286-18.286v-54.857c0.001-10.099 8.187-18.285 18.286-18.286h36.572c10.099 0.001 18.285 8.187 18.286 18.286v54.857c-0.001 10.099-8.187 18.285-18.286 18.286h-36.572zM280 967c-3.255-0.186-6.24-1.195-8.795-2.821l-31.062-17.893c-5.488-3.225-9.114-9.099-9.114-15.82 0-3.381 0.918-6.548 2.518-9.265l127.953-221.629c3.222-5.501 9.103-9.136 15.833-9.136 3.347 0 6.484 0.899 9.183 2.469l31.627 18.239c5.488 3.225 9.114 9.099 9.114 15.82 0 3.381-0.918 6.548-2.518 9.265l-127.953 221.629c-3.218 5.518-9.108 9.167-15.851 9.167-0.329 0-0.656-0.009-0.98-0.026zM743.429 967c-0.112 0.002-0.243 0.004-0.375 0.004-6.734 0-12.619-3.64-15.792-9.060l-36.618-63.443c-1.553-2.632-2.471-5.799-2.471-9.18 0-6.721 3.626-12.595 9.028-15.774l31.8-18.332c2.611-1.523 5.748-2.422 9.095-2.422 6.73 0 12.611 3.636 15.787 9.050l36.618 63.443c1.553 2.632 2.471 5.799 2.471 9.18 0 6.721-3.626 12.595-9.028 15.774l-31.8 18.332c-2.578 1.508-5.672 2.408-8.974 2.432zM94 793c-0.133 0.003-0.289 0.005-0.446 0.005-6.735 0-12.62-3.641-15.793-9.062l-18.332-31.801c-1.523-2.611-2.422-5.748-2.422-9.095 0-6.73 3.636-12.611 9.050-15.787l205.943-118.904c2.632-1.553 5.799-2.471 9.18-2.471 6.721 0 12.595 3.626 15.774 9.028l18.332 31.8c1.523 2.611 2.422 5.748 2.422 9.095 0 6.73-3.636 12.611-9.050 15.787l-205.943 118.904c-2.596 1.546-5.719 2.473-9.055 2.507zM929.429 792.929c-3.255-0.186-6.24-1.195-8.795-2.821l-78.562-45.322c-5.471-3.229-9.083-9.094-9.083-15.802 0-3.36 0.906-6.508 2.487-9.213l18.239-31.628c3.229-5.471 9.094-9.083 15.802-9.083 3.36 0 6.508 0.906 9.213 2.487l79.128 45.668c5.501 3.222 9.136 9.103 9.136 15.833 0 3.347-0.899 6.484-2.469 9.183l-18.239 31.627c-3.226 5.481-9.097 9.101-15.813 9.101-0.367 0-0.732-0.011-1.094-0.032zM18.286 548.571c-10.099-0.001-18.285-8.187-18.286-18.286v-36.572c0.001-10.099 8.187-18.285 18.286-18.286h219.429c10.099 0.001 18.285 8.187 18.286 18.286v36.572c-0.001 10.099-8.187 18.285-18.286 18.286h-219.429zM896 548.571c-10.099-0.001-18.285-8.187-18.286-18.286v-36.572c0.001-10.099 8.187-18.285 18.286-18.286h109.714c10.099 0.001 18.285 8.187 18.286 18.286v36.572c-0.001 10.099-8.187 18.285-18.286 18.286h-109.714zM248.5 399.786c-3.255-0.186-6.24-1.195-8.795-2.821l-173.562-100.179c-5.501-3.222-9.136-9.103-9.136-15.833 0-3.347 0.899-6.484 2.469-9.183l18.239-31.627c3.225-5.488 9.099-9.114 15.82-9.114 3.381 0 6.548 0.918 9.265 2.518l174.129 100.525c5.471 3.229 9.083 9.094 9.083 15.802 0 3.36-0.906 6.508-2.487 9.213l-18.239 31.628c-3.227 5.479-9.096 9.097-15.811 9.097-0.343 0-0.684-0.009-1.022-0.028zM838.286 363.286c-0.133 0.003-0.289 0.005-0.446 0.005-6.735 0-12.62-3.641-15.793-9.062l-18.332-31.801c-1.523-2.611-2.422-5.748-2.422-9.095 0-6.73 3.636-12.611 9.050-15.787l110.943-64.047c2.632-1.553 5.799-2.471 9.18-2.471 6.721 0 12.595 3.626 15.774 9.028l18.332 31.8c1.523 2.611 2.422 5.748 2.422 9.095 0 6.73-3.636 12.611-9.050 15.787l-110.943 64.047c-2.596 1.546-5.719 2.473-9.055 2.507zM341.143 270.214c-0.112 0.002-0.243 0.004-0.375 0.004-6.734 0-12.619-3.64-15.792-9.060l-91.475-158.443c-1.553-2.632-2.471-5.799-2.471-9.18 0-6.721 3.626-12.595 9.028-15.774l31.8-18.332c2.611-1.523 5.748-2.422 9.095-2.422 6.73 0 12.611 3.636 15.787 9.050l91.475 158.443c1.553 2.632 2.471 5.799 2.471 9.18 0 6.721-3.626 12.595-9.028 15.774l-31.8 18.332c-2.578 1.508-5.672 2.408-8.974 2.432zM700.571 238.5c-3.255-0.186-6.24-1.195-8.795-2.821l-31.062-17.893c-5.471-3.229-9.083-9.094-9.083-15.802 0-3.36 0.906-6.508 2.487-9.213l73.096-126.628c3.222-5.501 9.103-9.136 15.833-9.136 3.347 0 6.484 0.899 9.183 2.469l31.627 18.239c5.488 3.225 9.114 9.099 9.114 15.82 0 3.381-0.918 6.548-2.518 9.265l-73.096 126.629c-3.227 5.479-9.096 9.097-15.811 9.097-0.343 0-0.684-0.009-1.022-0.028zM493.714 201.143c-10.099-0.001-18.285-8.187-18.286-18.286v-164.572c0.001-10.099 8.187-18.285 18.286-18.286h36.572c10.099 0.001 18.285 8.187 18.286 18.286v164.572c-0.001 10.099-8.187 18.285-18.286 18.286h-36.572z" />
<glyph unicode="&#xe716;" glyph-name="throbber-planet" data-tags="throbber-planet" d="M512 950.857c-242.374 0-438.857-196.483-438.857-438.857s196.483-438.857 438.857-438.857c242.374 0 438.857 196.483 438.857 438.857-0.129 19.567-1.519 38.684-4.091 57.423-38.239-33.413-85.929-52.133-137.709-56.469 32.097 0.112 32.228-5.182 32.233-10.506-0.148-172.228-147.51-319.591-329.291-319.591s-329.143 147.362-329.143 329.143c0 181.781 147.362 329.143 329.143 329.143 7.632-0.355 14.465-0.894 21.237-1.638-5.059 52.956 19.034 97.769 52.624 133.564-38.31-23.539-57.827-22.208-77.651-22.192zM950.857 786.286c0-90.89-73.681-164.571-164.571-164.571s-164.571 73.681-164.571 164.571c0 90.89 73.681 164.571 164.571 164.571s164.571-73.681 164.571-164.571z" />
<glyph unicode="&#xe717;" glyph-name="window-minimize" data-tags="window-minimize" d="M73.143 292.571c-40.521 0-73.143-32.622-73.143-73.143v-73.143c0-40.521 32.622-73.143 73.143-73.143h877.714c40.521 0 73.143 32.622 73.143 73.143v73.143c0 40.521-32.622 73.143-73.143 73.143zM731.429 219.429h73.143v-73.143h-73.143zM877.714 219.429h73.143v-73.143h-73.143z" />
<glyph unicode="&#xe900;" glyph-name="pivot-columns" data-tags="pivot-columns" d="M146.286 877.714h146.286v-731.429h-146.286v731.429zM438.857 877.714h146.286v-731.429h-146.286v731.429zM731.429 877.714h146.286v-731.429h-146.286v731.429z" />
<glyph unicode="&#xe901;" glyph-name="pivot-filters" data-tags="pivot-filters" d="M950.857 877.714h-877.714l292.571-512v-219.429h292.571v219.429z" />
<glyph unicode="&#xe902;" glyph-name="pivot-measures" data-tags="pivot-measures" d="M731.429 731.429h146.286v-585.143h-146.286v585.143zM438.857 877.714h146.286v-731.429h-146.286v731.429zM146.286 585.143h146.286v-438.857h-146.286v438.857z" />
<glyph unicode="&#xe903;" glyph-name="pivot-rows" data-tags="pivot-rows" d="M146.286 877.714h731.429v-146.286h-731.429v146.286zM146.286 585.143h731.429v-146.286h-731.429v146.286zM146.286 292.571h731.429v-146.286h-731.429v146.286z" />
<glyph unicode="&#xe904;" glyph-name="pivot-smallfilter" data-tags="pivot-smallfilter" d="M804.571 731.429h-585.143l219.429-292.571v-146.286h146.286v146.286z" />
<glyph unicode="&#xe905;" glyph-name="add-column" data-tags="add-column" d="M599.771 365.714v219.429h95.086l-182.857 204.8-182.857-204.8h95.086v-219.429zM1024 1024h-292.571v-365.714h292.571v365.714zM292.571 1024h-292.571v-365.714h292.571v365.714zM658.286 365.714h-292.571v-365.714h292.571v365.714z" />
<glyph unicode="&#xe906;" glyph-name="add-link" data-tags="add-link" d="M548.571 746.057c-14.629-7.314-21.943-7.314-36.571-21.943l-219.429-212.114c-7.314-14.629-14.629-21.943-14.629-36.571 0-29.257 21.943-43.886 43.886-43.886s29.257 0 43.886 7.314l219.429 219.429c7.314 7.314 14.629 21.943 14.629 36.571-7.314 29.257-21.943 51.2-51.2 51.2 0 0 0 0 0 0v0zM248.686 650.971c-102.4 0-190.171-65.829-226.743-160.914-43.886-95.086-21.943-197.486 51.2-270.629s182.857-95.086 277.943-51.2c95.086 43.886 153.6 131.657 153.6 234.057 0 29.257-21.943 51.2-51.2 51.2s-51.2-21.943-51.2-51.2c0 0 0 0 0 0 0-65.829-36.571-117.029-95.086-146.286-58.514-21.943-124.343-14.629-168.229 29.257s-58.514 109.714-29.257 168.229c21.943 58.514 80.457 95.086 146.286 95.086 0 0 0 0 0 0 29.257 0 51.2 21.943 51.2 51.2-7.314 29.257-29.257 51.2-58.514 51.2 0 0 0 0 0 0v0zM643.657 1024c-36.571 0-73.143-7.314-109.714-14.629-95.086-43.886-160.914-131.657-160.914-234.057 0-29.257 21.943-51.2 51.2-51.2s51.2 21.943 51.2 51.2c0 65.829 36.571 117.029 95.086 146.286 58.514 21.943 124.343 7.314 168.229-36.571s58.514-109.714 29.257-168.229c-21.943-58.514-80.457-95.086-146.286-95.086 0 0 0 0 0 0-29.257 0-51.2-21.943-51.2-51.2s21.943-51.2 51.2-51.2c102.4 0 197.486 58.514 234.057 153.6 43.886 95.086 21.943 204.8-51.2 277.943-43.886 43.886-102.4 65.829-160.914 73.143zM585.143 292.571h438.857v-146.286h-438.857v146.286zM877.678 439.11v-438.857h-146.286v438.857h146.286z" />
<glyph unicode="&#xe907;" glyph-name="add-row" data-tags="add-row" d="M658.286 599.771h-219.429v95.086l-204.8-182.857 204.8-182.857v95.086h219.429zM365.714 1024h-365.714v-292.571h365.714v292.571zM365.714 292.571h-365.714v-292.571h365.714v292.571zM1024 658.286h-365.714v-292.571h365.714v292.571z" />
<glyph unicode="&#xe908;" glyph-name="add-source" data-tags="add-source" d="M0 950.857h73.143v-365.714h-73.143v365.714zM73.143 877.714h146.286v-73.143h-146.286v73.143zM146.286 804.571h73.143v-219.429h-73.143v219.429zM438.857 804.571v73.143h-73.143v73.143h-73.143v-365.714h146.286v73.143h-73.143v146.286zM512 877.714v-292.571h73.143v219.429h73.143v-219.429h73.143v219.429h73.143v-219.429h73.143v292.571zM950.857 950.857h73.143v-365.714h-73.143v365.714zM585.143 292.571h438.857v-146.286h-438.857v146.286zM876.72 440.069v-438.857h-146.286v438.857h146.286z" />
<glyph unicode="&#xe909;" glyph-name="bold" data-tags="bold" d="M760.686 804.571c21.943-29.257 36.571-65.829 36.571-109.714s-14.629-80.457-36.571-109.714c-7.314-21.943-29.257-29.257-51.2-43.886 36.571-14.629 65.829-36.571 87.771-65.829s29.257-65.829 29.257-109.714c0-43.886-7.314-80.457-29.257-117.029-14.629-21.943-29.257-43.886-51.2-58.514s-51.2-29.257-80.457-36.571c-43.886 0-80.457-7.314-117.029-7.314h-329.143v731.429h351.086c95.086 0 153.6-29.257 190.171-73.143zM365.714 753.371v-160.914h175.543c29.257 0 58.514 7.314 80.457 14.629 21.943 14.629 29.257 36.571 29.257 65.829 0 36.571-14.629 58.514-36.571 65.829s-51.2 14.629-87.771 14.629h-160.914zM365.714 468.114v-197.486h175.543c29.257 0 58.514 7.314 73.143 14.629 29.257 14.629 51.2 43.886 51.2 87.771 0 36.571-14.629 65.829-43.886 80.457-14.629 7.314-43.886 14.629-73.143 14.629h-182.857z" />
<glyph unicode="&#xe90a;" glyph-name="bullets" data-tags="bullets" d="M438.857 950.857h512v-73.143h-512v73.143zM438.857 585.143h512v-73.143h-512v73.143zM438.857 219.429h512v-73.143h-512v73.143zM73.143 1024h219.429v-219.429h-219.429v219.429zM73.143 658.286h219.429v-219.429h-219.429v219.429zM73.143 292.571h219.429v-219.429h-219.429v219.429z" />
<glyph unicode="&#xe90b;" glyph-name="decrease-indent" data-tags="decrease-indent" d="M292.571 1024h731.429v-146.286h-731.429v146.286zM658.286 438.857h365.714v-146.286h-365.714v146.286zM658.286 731.429h365.714v-146.286h-365.714v146.286zM292.571 146.286h731.429v-146.286h-731.429v146.286zM292.571 585.143v146.286h-73.143v-73.143h-73.143v-73.143h-73.143v-36.571h-73.143v-73.143h73.143v-36.571h73.143v-73.143h73.143v-73.143h73.143v146.286h219.429v146.286z" />
<glyph unicode="&#xe90c;" glyph-name="del-source" data-tags="del-source" d="M0 950.857h73.143v-365.714h-73.143v365.714zM73.143 877.714h146.286v-73.143h-146.286v73.143zM146.286 804.571h73.143v-219.429h-73.143v219.429zM438.857 804.571v73.143h-73.143v73.143h-73.143v-365.714h146.286v73.143h-73.143v146.286zM512 877.714v-292.571h73.143v219.429h73.143v-219.429h73.143v219.429h73.143v-219.429h73.143v292.571zM950.857 950.857h73.143v-365.714h-73.143v365.714zM592.457 380.343l43.886 43.886c21.943 14.629 36.571 14.629 51.2 7.314l329.143-329.143c14.629-14.629 14.629-36.571 0-43.886l-43.886-43.886c-14.629-14.629-36.571-14.629-43.886 0l-336.457 321.829c-7.314 14.629-7.314 29.257 0 43.886zM592.457 102.4l329.143 329.143c14.629 14.629 36.571 14.629 43.886 0l43.886-43.886c14.629-21.943 14.629-36.571 7.314-51.2l-329.143-329.143c-14.629-7.314-29.257-7.314-43.886 0l-43.886 43.886c-14.629 14.629-14.629 36.571-7.314 51.2z" />
<glyph unicode="&#xe90d;" glyph-name="font-color" data-tags="font-color" d="M424.229 950.857h175.543l256-731.429h-160.914l-51.2 153.6h-270.629l-51.2-153.6h-153.6l256 731.429zM416.914 497.371h190.171l-95.086 285.257-95.086-285.257z" />
<glyph unicode="&#xe90e;" glyph-name="increase-indent" data-tags="increase-indent" d="M292.571 1024h731.429v-146.286h-731.429v146.286zM658.286 438.857h365.714v-146.286h-365.714v146.286zM658.286 731.429h365.714v-146.286h-365.714v146.286zM292.571 146.286h731.429v-146.286h-731.429v146.286zM438.857 548.571v36.571h-73.143v73.143h-73.143v73.143h-73.143v-146.286h-219.429v-146.286h219.429v-146.286h73.143v73.143h73.143v73.143h73.143v36.571h73.143v73.143z" />
<glyph unicode="&#xe90f;" glyph-name="italic" data-tags="italic" d="M270.629 175.543c29.257 0 43.886 7.314 58.514 21.943 14.629 7.314 21.943 29.257 29.257 58.514l131.657 490.057c7.314 14.629 7.314 21.943 7.314 36.571 0 7.314 0 14.629 0 21.943 0 21.943-7.314 29.257-14.629 36.571 0 0-21.943 7.314-58.514 7.314v29.257h329.143v-29.257c-29.257 0-43.886-7.314-58.514-21.943-14.629-7.314-21.943-21.943-29.257-58.514l-131.657-490.057-7.314-36.571c0 0 0-7.314 0-7.314 0-7.314 0-7.314 0-7.314 0-21.943 7.314-29.257 14.629-36.571s29.257-7.314 65.829-14.629v-29.257h-336.457v29.257z" />
<glyph unicode="&#xe910;" glyph-name="justifycenter" data-tags="justifycenter" d="M292.571 658.286h438.857v-73.143h-438.857v73.143zM146.286 877.714h731.429v-73.143h-731.429v73.143zM146.286 438.857h731.429v-73.143h-731.429v73.143zM292.571 219.429h438.857v-73.143h-438.857v73.143z" />
<glyph unicode="&#xe911;" glyph-name="justifyfull" data-tags="justifyfull" d="M146.286 658.286h731.429v-73.143h-731.429v73.143zM146.286 877.714h731.429v-73.143h-731.429v73.143zM146.286 438.857h731.429v-73.143h-731.429v73.143zM146.286 219.429h731.429v-73.143h-731.429v73.143z" />
<glyph unicode="&#xe912;" glyph-name="justifyleft" data-tags="justifyleft" d="M146.286 877.714h438.857v-73.143h-438.857v73.143zM146.286 658.286h731.429v-73.143h-731.429v73.143zM146.286 438.857h438.857v-73.143h-438.857v73.143zM146.286 219.429h731.429v-73.143h-731.429v73.143z" />
<glyph unicode="&#xe913;" glyph-name="justifyright" data-tags="justifyright" d="M146.286 658.286h731.429v-73.143h-731.429v73.143zM438.857 877.714h438.857v-73.143h-438.857v73.143zM438.857 438.857h438.857v-73.143h-438.857v73.143zM146.286 219.429h731.429v-73.143h-731.429v73.143z" />
<glyph unicode="&#xe914;" glyph-name="numbering" data-tags="numbering" d="M438.857 585.143h512v-73.143h-512v73.143zM109.714 387.657c0 29.257 14.629 65.829 36.571 87.771 29.257 14.629 51.2 29.257 73.143 36.571 21.943 14.629 36.571 21.943 36.571 43.886s-14.629 29.257-36.571 29.257c-36.571 0-43.886-21.943-43.886-51.2h-58.514c0 65.829 36.571 109.714 102.4 109.714 51.2 0 95.086-29.257 95.086-80.457s-36.571-65.829-73.143-87.771c-21.943-14.629-29.257-21.943-51.2-36.571h124.343v-51.2h-204.8zM190.171 160.914c7.314 0 14.629 0 14.629 0 14.629 0 43.886 7.314 43.886 29.257 0 14.629-14.629 29.257-36.571 29.257s-36.571-14.629-36.571-36.571h-58.514c0 58.514 43.886 87.771 95.086 87.771 43.886 0 95.086-21.943 95.086-73.143 0-21.943-14.629-43.886-36.571-51.2v0c29.257-7.314 43.886-29.257 43.886-58.514 0-58.514-51.2-80.457-102.4-80.457-58.514 0-109.714 29.257-102.4 95.086h58.514c0-29.257 14.629-43.886 43.886-43.886 21.943 0 43.886 7.314 43.886 29.257 0 29.257-21.943 36.571-43.886 36.571-7.314 0-14.629 0-14.629 0v36.571zM438.857 950.857h512v-73.143h-512v73.143zM138.971 928.914v43.886c36.571 0 73.143 14.629 73.143 51.2h51.2v-256h-65.829v160.914h-58.514zM438.857 219.429h512v-73.143h-512v73.143z" />
<glyph unicode="&#xe915;" glyph-name="ok-source" data-tags="ok-source" d="M0 950.857h73.143v-365.714h-73.143v365.714zM73.143 877.714h146.286v-73.143h-146.286v73.143zM146.286 804.571h73.143v-219.429h-73.143v219.429zM438.857 804.571v73.143h-73.143v73.143h-73.143v-365.714h146.286v73.143h-73.143v146.286zM512 877.714v-292.571h73.143v219.429h73.143v-219.429h73.143v219.429h73.143v-219.429h73.143v292.571zM950.857 950.857h73.143v-365.714h-73.143v365.714zM497.371 248.686c-14.629-14.629-14.629-36.571 0-43.886l190.171-190.171c14.629-14.629 36.571-14.629 43.886 0l277.943 321.829c14.629 7.314 14.629 29.257 7.314 43.886l-43.886 43.886c-21.943 14.629-43.886 14.629-51.2 0l-219.429-248.686-117.029 117.029c-14.629 14.629-36.571 14.629-43.886 0l-43.886-43.886z" />
<glyph unicode="&#xe916;" glyph-name="ok" data-tags="ok" d="M87.771 555.886c-14.629-21.943-21.943-51.2 0-73.143l307.2-307.2c21.943-21.943 58.514-21.943 80.457 0l460.8 526.629c21.943 21.943 21.943 58.514 0 80.457l-80.457 80.457c-21.943 21.943-58.514 21.943-80.457 0l-351.086-416.914-197.486 190.171c-21.943 21.943-58.514 21.943-80.457 0l-58.514-80.457z" />
<glyph unicode="&#xe917;" glyph-name="remove-column" data-tags="remove-column" d="M424.229 402.286v-197.486h-95.086l182.857-204.8 182.857 204.8h-95.086v197.486zM1024 1024h-365.714v-453.486h365.714v453.486zM365.714 1024h-365.714v-460.8h365.714v460.8zM658.286 950.857h-292.571v-548.571h292.571v548.571z" />
<glyph unicode="&#xe918;" glyph-name="remove-row" data-tags="remove-row" d="M621.714 424.229h197.486v-95.086l204.8 182.857-204.8 182.857v-95.086h-197.486zM453.486 1024h-453.486v-365.714h453.486v365.714zM460.8 365.714h-460.8v-365.714h460.8v365.714zM621.714 658.286h-548.571v-292.571h548.571v292.571z" />
<glyph unicode="&#xe919;" glyph-name="size-down" data-tags="size-down" d="M658.286 855.771h292.571v-95.086h-292.571v95.086zM336.457 877.714h175.543l256-731.429h-168.229l-43.886 146.286h-270.629l-51.2-146.286h-160.914l263.314 731.429zM321.829 424.229h190.171l-95.086 285.257-95.086-285.257z" />
<glyph unicode="&#xe91a;" glyph-name="size-up" data-tags="size-up" d="M731.429 855.771h292.571v-95.086h-292.571v95.086zM927.685 951.069v-292.571h-95.086v292.571h95.086zM314.514 950.857h204.8l307.2-877.714h-197.486l-58.514 182.857h-321.829l-58.514-182.857h-190.171l314.514 877.714zM299.886 402.286h226.743l-109.714 351.086-117.029-351.086z" />
<glyph unicode="&#xe91b;" glyph-name="source" data-tags="source" d="M0 694.857h73.143v-365.714h-73.143v365.714zM73.143 621.714h146.286v-73.143h-146.286v73.143zM146.286 548.571h73.143v-219.429h-73.143v219.429zM438.857 548.571v73.143h-73.143v73.143h-73.143v-365.714h146.286v73.143h-73.143v146.286zM512 621.714v-292.571h73.143v219.429h73.143v-219.429h73.143v219.429h73.143v-219.429h73.143v292.571zM950.857 694.857h73.143v-365.714h-73.143v365.714z" />
<glyph unicode="&#xe91c;" glyph-name="space-after-p" data-tags="space-after-p" d="M146.286 877.714h731.429v-73.143h-731.429v73.143zM146.286 731.429h731.429v-73.143h-731.429v73.143zM146.286 585.143h731.429v-73.143h-731.429v73.143zM146.286 438.857h512v-73.143h-512v73.143zM73.143 292.571h877.714v-146.286h-877.714v146.286z" />
<glyph unicode="&#xe91d;" glyph-name="strikethrough" data-tags="strikethrough" d="M146.286 512h731.429v-109.714h-731.429v109.714zM153.6 497.371c14.629 0 29.257 7.314 36.571 7.314 7.314 7.314 14.629 14.629 14.629 21.943 0 14.629-7.314 21.943-14.629 29.257s-21.943 7.314-43.886 7.314c-21.943 0-36.571-7.314-43.886-14.629 0-7.314-7.314-14.629-7.314-29.257h-87.771c0 29.257 7.314 51.2 21.943 73.143 21.943 29.257 58.514 43.886 117.029 43.886 36.571 0 65.829-7.314 95.086-21.943 36.571-14.629 51.2-43.886 51.2-87.771v-153.6c0-7.314 0-14.629 0-29.257s0-21.943 0-21.943 7.314-7.314 14.629-7.314v-21.943h-95.086c0 7.314-7.314 14.629-7.314 21.943s0 14.629 0 21.943c-7.314-14.629-21.943-29.257-36.571-36.571-21.943-7.314-43.886-14.629-65.829-14.629-29.257 0-51.2 7.314-73.143 21.943-21.943 21.943-29.257 43.886-29.257 73.143 0 43.886 14.629 73.143 43.886 87.771 14.629 7.314 43.886 14.629 73.143 21.943l36.571 7.314zM204.8 453.486c-7.314 0-14.629-7.314-14.629-7.314-7.314 0-14.629 0-21.943-7.314h-21.943c-21.943 0-29.257-7.314-36.571-14.629-14.629-7.314-21.943-14.629-21.943-36.571 0-14.629 7.314-21.943 14.629-29.257s14.629-7.314 29.257-7.314c14.629 0 29.257 0 51.2 14.629 14.629 7.314 21.943 29.257 21.943 58.514v29.257zM643.657 585.143c21.943-29.257 36.571-73.143 36.571-117.029 0-51.2-14.629-95.086-36.571-124.343-21.943-36.571-58.514-58.514-102.4-58.514-29.257 0-51.2 7.314-65.829 14.629-7.314 7.314-14.629 21.943-29.257 36.571v-43.886h-80.457v446.171h87.771v-160.914c7.314 14.629 21.943 29.257 36.571 36.571s36.571 14.629 58.514 14.629c36.571 0 73.143-14.629 95.086-43.886zM570.514 387.657c14.629 14.629 21.943 43.886 21.943 73.143 0 21.943 0 43.886-7.314 58.514-14.629 21.943-36.571 36.571-65.829 36.571s-51.2-14.629-65.829-43.886c-7.314-14.629-7.314-29.257-7.314-58.514s7.314-51.2 21.943-73.143c7.314-14.629 29.257-21.943 51.2-21.943s43.886 7.314 51.2 29.257zM936.229 504.686c0 14.629-7.314 21.943-14.629 36.571s-21.943 21.943-43.886 21.943c-29.257 0-51.2-14.629-58.514-43.886-7.314-14.629-7.314-36.571-7.314-58.514s0-43.886 7.314-58.514c7.314-29.257 29.257-43.886 58.514-43.886 21.943 0 36.571 7.314 43.886 14.629s14.629 21.943 14.629 43.886h87.771c0-29.257-14.629-51.2-29.257-73.143-29.257-36.571-65.829-58.514-117.029-58.514s-95.086 14.629-117.029 43.886-36.571 73.143-36.571 124.343c0 58.514 14.629 102.4 43.886 131.657s65.829 43.886 117.029 43.886c43.886 0 73.143-7.314 102.4-29.257 14.629-14.629 36.571-43.886 36.571-95.086h-87.771z" />
<glyph unicode="&#xe91e;" glyph-name="text-hl-color" data-tags="text-hl-color" d="M409.6 416.914h197.486l-95.086 307.2zM0 1024v-1024h1024v1024h-1024zM702.171 124.343l-51.2 160.914h-285.257l-51.2-160.914h-168.229l277.943 775.314h182.857l270.629-775.314h-175.543z" />
<glyph unicode="&#xe91f;" glyph-name="underline" data-tags="underline" d="M219.429 877.714h153.6v-292.571c0-51.2 7.314-87.771 14.629-109.714 21.943-36.571 65.829-58.514 124.343-58.514s102.4 21.943 117.029 58.514c14.629 21.943 21.943 58.514 21.943 109.714v292.571h153.6v-292.571c0-80.457-14.629-138.971-36.571-182.857-43.886-73.143-131.657-117.029-256-117.029s-212.114 43.886-256 117.029c-21.943 43.886-36.571 109.714-36.571 182.857v292.571zM219.429 219.429h585.143v-73.143h-585.143v73.143z" />
<glyph unicode="&#xe920;" glyph-name="view-source" data-tags="view-source" d="M0 950.857h73.143v-365.714h-73.143v365.714zM73.143 877.714h146.286v-73.143h-146.286v73.143zM146.286 804.571h73.143v-219.429h-73.143v219.429zM438.857 804.571v73.143h-73.143v73.143h-73.143v-365.714h146.286v73.143h-73.143v146.286zM512 877.714v-292.571h73.143v219.429h73.143v-219.429h73.143v219.429h73.143v-219.429h73.143v292.571zM950.857 950.857h73.143v-365.714h-73.143v365.714zM950.857 292.571v73.143h-73.143v73.143h-73.143v-146.286h-219.429v-146.286h219.429v-146.286h73.143v73.143h73.143v73.143h73.143v146.286z" />
<glyph unicode="&#xe921;" glyph-name="arrows-r" data-tags="arrows-r" d="M548.571 72.411h256v-72.411l186.514 183.589-186.514 183.589v-75.337h-256v-219.429zM109.714 438.126h73.143v-73.143h-73.143v73.143zM109.714 291.84h73.143v-73.143h-73.143v73.143zM109.714 145.554h73.143v-73.143h-73.143v73.143zM256 145.554h73.143v-73.143h-73.143v73.143zM402.286 145.554h73.143v-73.143h-73.143v73.143zM329.874 547.84v256h72.411l-182.857 186.514-183.589-186.514h74.606v-256h219.429z" />
<glyph unicode="&#xe922;" glyph-name="lm" data-tags="lm" d="M290.377 1024h585.143v-256.731h-585.143v256.731zM438.857 638.537h585.143v-257.463h-585.143v257.463zM0 255.269h585.143v-255.269h-585.143v255.269z" />
<glyph unicode="&#xe923;" glyph-name="cal-day1" data-tags="cal-day1" d="M292.571 950.857c0.221 0.002 0.482 0.003 0.743 0.003 51.706 0 93.623-41.916 93.623-93.623 0-0.515-0.004-1.030-0.012-1.543l0.001 0.077v-30.72h250.149v30.72c0 52.11 42.244 94.354 94.354 94.354s94.354-42.244 94.354-94.354v0-30.72h62.903c34.74 0 62.903-28.163 62.903-62.903v-627.566c0-34.74-28.163-62.903-62.903-62.903v0h-752.64c-0.227-0.003-0.495-0.005-0.764-0.005-16.919 0-32.202 7.006-43.106 18.274l-0.016 0.016c-11.285 10.92-18.291 26.203-18.291 43.122 0 0.269 0.002 0.537 0.005 0.805v-0.041 628.297c0 0.007 0 0.016 0 0.025 0 16.556 6.708 31.545 17.555 42.398v0c10.92 11.285 26.203 18.291 43.122 18.291 0.269 0 0.537-0.002 0.805-0.005h62.862v32.914c-0.007 0.436-0.011 0.95-0.011 1.466 0 51.706 41.916 93.623 93.623 93.623 0.261 0 0.522-0.001 0.783-0.003h-0.040zM136.046 134.583h752.64v501.76h-752.64zM292.571 887.223c-17.207-0.399-31.052-14.244-31.451-31.414l-0.001-0.038v-62.903c-0.001-0.105-0.002-0.23-0.002-0.354 0-8.537 3.657-16.22 9.489-21.569l0.022-0.020c5.776-5.561 13.642-8.987 22.309-8.987s16.533 3.426 22.319 8.996l-0.010-0.010c5.854 5.368 9.511 13.051 9.511 21.588 0 0.125-0.001 0.249-0.002 0.373v-0.019 62.903c-0.409 17.457-14.658 31.451-32.175 31.451-0.003 0-0.006 0-0.009 0v0zM731.429 887.223c-17.207-0.399-31.052-14.244-31.451-31.414l-0.001-0.038v-62.903c-0.001-0.105-0.002-0.23-0.002-0.354 0-8.537 3.657-16.22 9.489-21.569l0.022-0.020c5.776-5.561 13.642-8.987 22.309-8.987s16.533 3.426 22.319 8.996l-0.010-0.010c5.854 5.368 9.511 13.051 9.511 21.588 0 0.125-0.001 0.249-0.002 0.373v-0.019 62.903c-0.409 17.457-14.658 31.451-32.175 31.451-0.003 0-0.006 0-0.009 0v0zM475.429 584.411h109.714v-365.714h-109.714v365.714zM402.286 547.84h146.286v-73.143h-146.286v73.143zM402.286 291.84h256v-73.143h-256v73.143z" />
<glyph unicode="&#xe924;" glyph-name="cal-day2" data-tags="cal-day2" d="M292.571 950.857c0.221 0.002 0.482 0.003 0.743 0.003 51.706 0 93.623-41.916 93.623-93.623 0-0.515-0.004-1.030-0.012-1.543l0.001 0.077v-30.72h250.149v30.72c0 52.11 42.244 94.354 94.354 94.354s94.354-42.244 94.354-94.354v0-30.72h62.903c34.74 0 62.903-28.163 62.903-62.903v-627.566c0-34.74-28.163-62.903-62.903-62.903v0h-752.64c-0.227-0.003-0.495-0.005-0.764-0.005-16.919 0-32.202 7.006-43.106 18.274l-0.016 0.016c-11.285 10.92-18.291 26.203-18.291 43.122 0 0.269 0.002 0.537 0.005 0.805v-0.041 628.297c0 0.007 0 0.016 0 0.025 0 16.556 6.708 31.545 17.555 42.398v0c10.92 11.285 26.203 18.291 43.122 18.291 0.269 0 0.537-0.002 0.805-0.005h62.862v32.914c-0.007 0.436-0.011 0.95-0.011 1.466 0 51.706 41.916 93.623 93.623 93.623 0.261 0 0.522-0.001 0.783-0.003h-0.040zM136.046 134.583h752.64v501.76h-752.64zM292.571 887.223c-17.207-0.399-31.052-14.244-31.451-31.414l-0.001-0.038v-62.903c-0.001-0.105-0.002-0.23-0.002-0.354 0-8.537 3.657-16.22 9.489-21.569l0.022-0.020c5.776-5.561 13.642-8.987 22.309-8.987s16.533 3.426 22.319 8.996l-0.010-0.010c5.854 5.368 9.511 13.051 9.511 21.588 0 0.125-0.001 0.249-0.002 0.373v-0.019 62.903c-0.409 17.457-14.658 31.451-32.175 31.451-0.003 0-0.006 0-0.009 0v0zM731.429 887.223c-17.207-0.399-31.052-14.244-31.451-31.414l-0.001-0.038v-62.903c-0.001-0.105-0.002-0.23-0.002-0.354 0-8.537 3.657-16.22 9.489-21.569l0.022-0.020c5.776-5.561 13.642-8.987 22.309-8.987s16.533 3.426 22.319 8.996l-0.010-0.010c5.854 5.368 9.511 13.051 9.511 21.588 0 0.125-0.001 0.249-0.002 0.373v-0.019 62.903c-0.409 17.457-14.658 31.451-32.175 31.451-0.003 0-0.006 0-0.009 0v0zM365.714 292.571h292.571v-73.143h-292.571v73.143zM365.714 438.857h292.571v-73.143h-292.571v73.143zM365.714 585.143h292.571v-73.143h-292.571v73.143zM658.286 585.874v-219.429h-73.143v219.429h73.143zM438.857 435.2v-215.040h-73.143v215.040h73.143z" />
<glyph unicode="&#xe925;" glyph-name="cal-day3" data-tags="cal-day3" d="M292.571 950.857c0.221 0.002 0.482 0.003 0.743 0.003 51.706 0 93.623-41.916 93.623-93.623 0-0.515-0.004-1.030-0.012-1.543l0.001 0.077v-30.72h250.149v30.72c0 52.11 42.244 94.354 94.354 94.354s94.354-42.244 94.354-94.354v0-30.72h62.903c34.74 0 62.903-28.163 62.903-62.903v-627.566c0-34.74-28.163-62.903-62.903-62.903v0h-752.64c-0.227-0.003-0.495-0.005-0.764-0.005-16.919 0-32.202 7.006-43.106 18.274l-0.016 0.016c-11.285 10.92-18.291 26.203-18.291 43.122 0 0.269 0.002 0.537 0.005 0.805v-0.041 628.297c0 0.007 0 0.016 0 0.025 0 16.556 6.708 31.545 17.555 42.398v0c10.92 11.285 26.203 18.291 43.122 18.291 0.269 0 0.537-0.002 0.805-0.005h62.862v32.914c-0.007 0.436-0.011 0.95-0.011 1.466 0 51.706 41.916 93.623 93.623 93.623 0.261 0 0.522-0.001 0.783-0.003h-0.040zM136.046 134.583h752.64v501.76h-752.64zM292.571 887.223c-17.207-0.399-31.052-14.244-31.451-31.414l-0.001-0.038v-62.903c-0.001-0.105-0.002-0.23-0.002-0.354 0-8.537 3.657-16.22 9.489-21.569l0.022-0.020c5.776-5.561 13.642-8.987 22.309-8.987s16.533 3.426 22.319 8.996l-0.010-0.010c5.854 5.368 9.511 13.051 9.511 21.588 0 0.125-0.001 0.249-0.002 0.373v-0.019 62.903c-0.409 17.457-14.658 31.451-32.175 31.451-0.003 0-0.006 0-0.009 0v0zM731.429 887.223c-17.207-0.399-31.052-14.244-31.451-31.414l-0.001-0.038v-62.903c-0.001-0.105-0.002-0.23-0.002-0.354 0-8.537 3.657-16.22 9.489-21.569l0.022-0.020c5.776-5.561 13.642-8.987 22.309-8.987s16.533 3.426 22.319 8.996l-0.010-0.010c5.854 5.368 9.511 13.051 9.511 21.588 0 0.125-0.001 0.249-0.002 0.373v-0.019 62.903c-0.409 17.457-14.658 31.451-32.175 31.451-0.003 0-0.006 0-0.009 0v0zM365.714 292.571h292.571v-73.143h-292.571v73.143zM402.286 438.857h256v-73.143h-256v73.143zM365.714 585.143h292.571v-73.143h-292.571v73.143zM658.286 585.874v-365.714h-73.143v365.714h73.143z" />
<glyph unicode="&#xe926;" glyph-name="cal-day4" data-tags="cal-day4" d="M292.571 950.857c0.221 0.002 0.482 0.003 0.743 0.003 51.706 0 93.623-41.916 93.623-93.623 0-0.515-0.004-1.030-0.012-1.543l0.001 0.077v-30.72h250.149v30.72c0 52.11 42.244 94.354 94.354 94.354s94.354-42.244 94.354-94.354v0-30.72h62.903c34.74 0 62.903-28.163 62.903-62.903v-627.566c0-34.74-28.163-62.903-62.903-62.903v0h-752.64c-0.227-0.003-0.495-0.005-0.764-0.005-16.919 0-32.202 7.006-43.106 18.274l-0.016 0.016c-11.285 10.92-18.291 26.203-18.291 43.122 0 0.269 0.002 0.537 0.005 0.805v-0.041 628.297c0 0.007 0 0.016 0 0.025 0 16.556 6.708 31.545 17.555 42.398v0c10.92 11.285 26.203 18.291 43.122 18.291 0.269 0 0.537-0.002 0.805-0.005h62.862v32.914c-0.007 0.436-0.011 0.95-0.011 1.466 0 51.706 41.916 93.623 93.623 93.623 0.261 0 0.522-0.001 0.783-0.003h-0.040zM136.046 134.583h752.64v501.76h-752.64zM292.571 887.223c-17.207-0.399-31.052-14.244-31.451-31.414l-0.001-0.038v-62.903c-0.001-0.105-0.002-0.23-0.002-0.354 0-8.537 3.657-16.22 9.489-21.569l0.022-0.020c5.776-5.561 13.642-8.987 22.309-8.987s16.533 3.426 22.319 8.996l-0.010-0.010c5.854 5.368 9.511 13.051 9.511 21.588 0 0.125-0.001 0.249-0.002 0.373v-0.019 62.903c-0.409 17.457-14.658 31.451-32.175 31.451-0.003 0-0.006 0-0.009 0v0zM731.429 887.223c-17.207-0.399-31.052-14.244-31.451-31.414l-0.001-0.038v-62.903c-0.001-0.105-0.002-0.23-0.002-0.354 0-8.537 3.657-16.22 9.489-21.569l0.022-0.020c5.776-5.561 13.642-8.987 22.309-8.987s16.533 3.426 22.319 8.996l-0.010-0.010c5.854 5.368 9.511 13.051 9.511 21.588 0 0.125-0.001 0.249-0.002 0.373v-0.019 62.903c-0.409 17.457-14.658 31.451-32.175 31.451-0.003 0-0.006 0-0.009 0v0zM640 585.143v-365.714h-91.429v365.714h91.429zM457.874 585.143v-228.206h-91.429v228.206h91.429zM686.080 356.937h-319.634v91.429h319.634v-91.429z" />
<glyph unicode="&#xe927;" glyph-name="cal-day5" data-tags="cal-day5" d="M292.571 950.857c0.221 0.002 0.482 0.003 0.743 0.003 51.706 0 93.623-41.916 93.623-93.623 0-0.515-0.004-1.030-0.012-1.543l0.001 0.077v-30.72h250.149v30.72c0 52.11 42.244 94.354 94.354 94.354s94.354-42.244 94.354-94.354v0-30.72h62.903c34.74 0 62.903-28.163 62.903-62.903v-627.566c0-34.74-28.163-62.903-62.903-62.903v0h-752.64c-0.227-0.003-0.495-0.005-0.764-0.005-16.919 0-32.202 7.006-43.106 18.274l-0.016 0.016c-11.285 10.92-18.291 26.203-18.291 43.122 0 0.269 0.002 0.537 0.005 0.805v-0.041 628.297c0 0.007 0 0.016 0 0.025 0 16.556 6.708 31.545 17.555 42.398v0c10.92 11.285 26.203 18.291 43.122 18.291 0.269 0 0.537-0.002 0.805-0.005h62.862v32.914c-0.007 0.436-0.011 0.95-0.011 1.466 0 51.706 41.916 93.623 93.623 93.623 0.261 0 0.522-0.001 0.783-0.003h-0.040zM136.046 134.583h752.64v501.76h-752.64zM292.571 887.223c-17.207-0.399-31.052-14.244-31.451-31.414l-0.001-0.038v-62.903c-0.001-0.105-0.002-0.23-0.002-0.354 0-8.537 3.657-16.22 9.489-21.569l0.022-0.020c5.776-5.561 13.642-8.987 22.309-8.987s16.533 3.426 22.319 8.996l-0.010-0.010c5.854 5.368 9.511 13.051 9.511 21.588 0 0.125-0.001 0.249-0.002 0.373v-0.019 62.903c-0.409 17.457-14.658 31.451-32.175 31.451-0.003 0-0.006 0-0.009 0v0zM731.429 887.223c-17.207-0.399-31.052-14.244-31.451-31.414l-0.001-0.038v-62.903c-0.001-0.105-0.002-0.23-0.002-0.354 0-8.537 3.657-16.22 9.489-21.569l0.022-0.020c5.776-5.561 13.642-8.987 22.309-8.987s16.533 3.426 22.319 8.996l-0.010-0.010c5.854 5.368 9.511 13.051 9.511 21.588 0 0.125-0.001 0.249-0.002 0.373v-0.019 62.903c-0.409 17.457-14.658 31.451-32.175 31.451-0.003 0-0.006 0-0.009 0v0zM659.017 220.16h-292.571v73.143h292.571v-73.143zM659.017 366.446h-292.571v73.143h292.571v-73.143zM659.017 512.731h-292.571v73.143h292.571v-73.143zM438.857 585.874v-219.429h-73.143v219.429h73.143zM658.286 435.2v-215.040h-73.143v215.040h73.143z" />
<glyph unicode="&#xe928;" glyph-name="i6" data-tags="i6" d="M404.48 511.269v512.731h217.966v-512.731h-217.966zM806.766 291.109v366.446h217.966v-366.446h-217.966zM404.48 0v364.983h217.966v-364.983h-217.966zM0 365.714v219.429h217.966v-219.429h-217.966zM0 0v219.429h217.966v-219.429h-217.966zM806.766 0v182.126h217.966v-182.126h-217.966z" />
<glyph unicode="&#xe929;" glyph-name="sm-arrow" data-tags="sm-arrow" d="M841.143 328.411v256h-256v111.909h146.286v327.68h-182.857v-182.126h73.143v-36.571h-36.571v-36.571h-36.571v-36.571h-18.286v-35.84h-36.571v35.84h-19.017v36.571h-36.571v36.571h-35.84v36.571h73.143v182.126h-182.126v-327.68h145.554v-111.909h-256v-256h-182.857v-328.411h438.857v328.411h-109.714v109.714h365.714v-109.714h-109.714v-328.411h438.857v328.411h-182.857z" />
<glyph unicode="&#xe92a;" glyph-name="sm-key" data-tags="sm-key" d="M642.194 640.731c32.561 31.937 77.213 51.649 126.47 51.649 99.777 0 180.663-80.886 180.663-180.663s-80.886-180.663-180.663-180.663c-27.864 0-54.255 6.308-77.822 17.574l1.089-0.469-33.646-30.72h-62.903v-64.366h-64.366v-64.366h-64.366v-64.366l-32.183-32.183h-84.846v85.577l257.463 257.463c-11.149 22.791-17.668 49.595-17.668 77.922 0 49.82 20.166 94.93 52.78 127.613l-0.003-0.003zM775.314 518.583c10.814-10.628 25.655-17.189 42.029-17.189 33.124 0 59.977 26.853 59.977 59.977s-26.853 59.977-59.977 59.977c-16.373 0-31.214-6.561-42.037-17.197l0.009 0.008c-11.081-10.89-17.949-26.037-17.949-42.789s6.867-31.898 17.94-42.78l0.009-0.008zM585.874 694.857h146.286v328.411h-438.857v-328.411h146.286v-111.177h-256v-255.269h-182.857v-329.143h328.411v0.731h73.143v73.143h-73.143v181.394h73.143v73.874h-72.411v108.983h256v257.463zM694.857 328.411v-73.143h-73.143v-73.143h-35.84v-182.857h438.126v329.143h-329.143z" />
<glyph unicode="&#xe92b;" glyph-name="sm" data-tags="sm" d="M841.874 327.68v256h-256v111.177h146.286v328.411h-438.857v-328.411h146.286v-111.177h-256v-256h-183.589v-328.411h439.589v328.411h-109.714v109.714h365.714v-109.714h-109.714v-328.411h438.126v328.411h-182.126z" />
<glyph unicode="&#xe92c;" glyph-name="sm2" data-tags="sm2" d="M841.143 255.269v402.286h-109.714v146.286h36.571v219.429h-510.537v-219.429h35.109v-146.286h-109.714v-402.286h-182.857v-256h256v402.286h182.857v256h-73.143v146.286h292.571v-146.286h-73.143v-256h-145.554v-146.286h-55.589v-256h256v256h-54.126v146.286h182.126v-402.286h256v256h-182.857z" />
<glyph unicode="&#xe92d;" glyph-name="jquery-icons-351" data-tags="jquery-icons-351" d="M185.051 729.234h177.006v-623.177h-177.006v623.177zM423.497 796.526h177.006v-758.491h-177.006v758.491zM662.674 729.234h177.006v-623.177h-177.006v623.177zM768 924.526l-117.76 64.366v-33.646h-276.48v33.646l-117.76-63.634 117.76-64.366v32.183h276.48v-32.183l117.76 63.634z" />
<glyph unicode="&#xe92e;" glyph-name="jquery-icons-352" data-tags="jquery-icons-352" d="M182.857 294.034h73.143v-73.143h-73.143v73.143zM329.143 294.034h73.143v-73.143h-73.143v73.143zM475.429 294.034h73.143v-73.143h-73.143v73.143zM621.714 294.034h73.143v-73.143h-73.143v73.143zM329.143 586.606h73.143v-73.143h-73.143v73.143zM475.429 586.606h73.143v-73.143h-73.143v73.143zM621.714 586.606h73.143v-73.143h-73.143v73.143zM768 586.606h73.143v-73.143h-73.143v73.143zM182.857 440.32h73.143v-73.143h-73.143v73.143zM329.143 440.32h73.143v-73.143h-73.143v73.143zM475.429 440.32h73.143v-73.143h-73.143v73.143zM621.714 440.32h73.143v-73.143h-73.143v73.143zM768 440.32h73.143v-73.143h-73.143v73.143zM292.571 950.857c0.218 0.002 0.476 0.003 0.734 0.003 51.706 0 93.623-41.916 93.623-93.623 0-0.258-0.001-0.516-0.003-0.774v0.040-30.72h250.149v30.72c0 52.11 42.244 94.354 94.354 94.354s94.354-42.244 94.354-94.354v0-30.72h62.903c34.74 0 62.903-28.163 62.903-62.903v-627.566c0-34.74-28.163-62.903-62.903-62.903v0h-752.64c-0.227-0.003-0.495-0.005-0.764-0.005-16.919 0-32.202 7.006-43.106 18.274l-0.016 0.016c-11.285 10.92-18.291 26.203-18.291 43.122 0 0.269 0.002 0.537 0.005 0.805v-0.041 628.297c0.199 16.299 6.869 31.002 17.555 41.692v0c10.92 11.285 26.203 18.291 43.122 18.291 0.269 0 0.537-0.002 0.805-0.005h62.862v33.646c-0.002 0.218-0.003 0.476-0.003 0.734 0 51.706 41.916 93.623 93.623 93.623 0.258 0 0.516-0.001 0.774-0.003h-0.040zM136.046 136.046h751.909v501.029h-751.909zM292.571 887.954c-17.207-0.399-31.052-14.244-31.451-31.414l-0.001-0.038v-62.903c-0.001-0.105-0.002-0.23-0.002-0.354 0-8.537 3.657-16.22 9.489-21.569l0.022-0.020c5.776-5.561 13.642-8.987 22.309-8.987s16.533 3.426 22.319 8.996l-0.010-0.010c5.854 5.368 9.511 13.051 9.511 21.588 0 0.125-0.001 0.249-0.002 0.373v-0.019 62.903c-0.409 17.457-14.658 31.451-32.175 31.451-0.003 0-0.006 0-0.009 0v0zM731.429 887.954c-17.207-0.399-31.052-14.244-31.451-31.414l-0.001-0.038v-62.903c-0.001-0.105-0.002-0.23-0.002-0.354 0-8.537 3.657-16.22 9.489-21.569l0.022-0.020c5.776-5.561 13.642-8.987 22.309-8.987s16.533 3.426 22.319 8.996l-0.010-0.010c5.854 5.368 9.511 13.051 9.511 21.588 0 0.125-0.001 0.249-0.002 0.373v-0.019 62.903c-0.409 17.457-14.658 31.451-32.175 31.451-0.003 0-0.006 0-0.009 0v0z" />
<glyph unicode="&#xe92f;" glyph-name="BarIcon" data-tags="BarIcon" d="M192 832v-320h-192v-128h192v-192h128v384h192v128h-192v128h-128zM640 960v-640h-192v-128h192v-192h128v640h192v128h-192v192h-128z" />
<glyph unicode="&#xe930;" glyph-name="CalendarIcon" data-tags="CalendarIcon" d="M128 704h768v-576h-768v576zM0 960v-960h1024v960h-128v-128h-256v128h-256v-128h-256v128h-128zM448 384v-128h128v128h-128zM256 384v-128h128v128h-128zM448 576v-128h128v128h-128zM256 576v-128h128v128h-128zM640 384v-128h128v128h-128zM640 576v-128h128v128h-128zM704 1024v-128h128v128h-128zM192 1024v-128h128v128h-128z" />
<glyph unicode="&#xe931;" glyph-name="jquery-icons-346" data-tags="jquery-icons-346" d="M109.714 879.177h146.286v-146.286h-146.286v146.286zM329.143 879.177h585.143v-146.286h-585.143v146.286zM219.429 586.606h146.286v-146.286h-146.286v146.286zM438.857 586.606h585.143v-146.286h-585.143v146.286zM219.429 294.034h146.286v-146.286h-146.286v146.286zM438.857 294.034h585.143v-146.286h-585.143v146.286z" />
<glyph unicode="&#xe932;" glyph-name="jquery-icons-347" data-tags="jquery-icons-347" d="M731.429 952.32v-676.571h-73.143l108.983-201.143 110.446 201.143h-73.143v676.571h-73.143zM285.989 950.857h56.32l133.12-365.714h-54.126l-38.034 109.714h-146.286l-38.034-109.714h-52.663zM365.714 731.429l-53.394 165.303-59.246-165.303zM151.406 113.371l226.011 282.331h-209.189v43.154h270.629v-42.423l-224.549-280.137h224.549v-43.154h-292.571z" />
<glyph unicode="&#xe933;" glyph-name="jquery-icons-348" data-tags="jquery-icons-348" d="M731.429 952.32v-676.571h-73.143l108.983-201.143 110.446 201.143h-73.143v676.571h-73.143zM285.989 438.857h56.32l133.12-365.714h-54.126l-38.034 109.714h-146.286l-38.034-109.714h-52.663zM368.64 219.429l-56.32 167.497-58.514-162.377zM151.406 626.103l226.011 282.331h-209.189v42.423h270.629v-42.423l-224.549-279.406h224.549v-43.886h-292.571z" />
<glyph unicode="&#xe934;" glyph-name="jquery-icons-349" data-tags="jquery-icons-349" d="M731.429 952.32v-676.571h-73.143l108.983-201.143 110.446 201.143h-73.143v676.571h-73.143zM219.429 952.32v-676.571h-73.143l108.983-201.143 110.446 201.143h-73.143v676.571h-73.143zM548.571 74.606v676.571h73.143l-108.983 201.143-110.446-201.143h73.143v-676.571h73.143z" />
<glyph unicode="&#xe935;" glyph-name="jquery-icons-350" data-tags="jquery-icons-350" d="M295.83 512.125l328.938 328.938 164.469-164.469-328.938-328.938-164.469 164.469zM131.049 347.636l123.61 123.61 164.469-164.469-123.61-123.61-164.469 164.469zM892.343 182.857h-521.509l37.303 37.303h484.206v-37.303z" />
<glyph unicode="&#xe936;" glyph-name="jquery-icons-339" data-tags="jquery-icons-339" d="M863.086 557.349h-245.029l173.349 173.349-62.171 62.171-102.4-102.4 152.137 299.154-37.303 19.749-185.783-364.251v219.429h-87.771v-245.029l-173.349 173.349-62.171-62.171 173.349-173.349h-245.029v-87.771h245.029l-173.349-173.349 62.171-62.171 106.057 106.057-155.794-305.737 37.303-19.749 185.783 364.251v-216.503h87.771v245.029l173.349-173.349 62.171 62.171-173.349 173.349h245.029v87.771zM807.638 977.573l-499.79-977.516-82.057 41.954 499.79 977.516 82.057-41.954z" />
<glyph unicode="&#xe937;" glyph-name="jquery-icons-340" data-tags="jquery-icons-340" d="M219.429 548.571h585.143v-73.143h-585.143v73.143zM329.143 512c0-60.594-49.121-109.714-109.714-109.714s-109.714 49.121-109.714 109.714c0 60.594 49.121 109.714 109.714 109.714s109.714-49.121 109.714-109.714zM914.286 512c0-60.594-49.121-109.714-109.714-109.714s-109.714 49.121-109.714 109.714c0 60.594 49.121 109.714 109.714 109.714s109.714-49.121 109.714-109.714z" />
<glyph unicode="&#xe938;" glyph-name="jquery-icons-341" data-tags="jquery-icons-341" d="M402.286 548.571h219.429v-73.143h-219.429v73.143zM329.143 512c0-60.594-49.121-109.714-109.714-109.714s-109.714 49.121-109.714 109.714c0 60.594 49.121 109.714 109.714 109.714s109.714-49.121 109.714-109.714zM914.286 512c0-60.594-49.121-109.714-109.714-109.714s-109.714 49.121-109.714 109.714c0 60.594 49.121 109.714 109.714 109.714s109.714-49.121 109.714-109.714z" />
<glyph unicode="&#xe939;" glyph-name="jquery-icons-342" data-tags="jquery-icons-342" d="M397.897 788.48c29.351-28.598 47.558-68.51 47.558-112.676 0-0.759-0.005-1.517-0.016-2.273l0.001 0.115c0.012-0.733 0.019-1.597 0.019-2.463 0-44.071-18.213-83.887-47.523-112.333l-0.039-0.038c-28.421-28.921-67.952-46.843-111.67-46.843-1.113 0-2.223 0.012-3.33 0.035l0.165-0.003c-0.942-0.020-2.052-0.032-3.165-0.032-43.717 0-83.249 17.923-111.648 46.821l-0.022 0.022c-29.349 28.484-47.562 68.301-47.562 112.371 0 0.866 0.007 1.731 0.021 2.593l-0.002-0.13c-0.009 0.642-0.015 1.4-0.015 2.158 0 44.165 18.207 84.078 47.524 112.643l0.034 0.033c28.37 29.347 68.090 47.567 112.066 47.567 0.973 0 1.944-0.009 2.913-0.027l-0.145 0.002c0.733 0.012 1.597 0.019 2.463 0.019 44.071 0 83.887-18.213 112.333-47.523l0.038-0.039zM351.086 605.623c17.501 17.366 28.335 41.429 28.335 68.023s-10.834 50.657-28.329 68.017l-0.006 0.006c-16.929 17.599-40.679 28.532-66.982 28.532-0.366 0-0.731-0.002-1.096-0.006l0.056 0.001c-0.001 0-0.002 0-0.003 0-52.918 0-95.817-42.899-95.817-95.817 0-0.257 0.001-0.514 0.003-0.771v0.039c0-0.001 0-0.002 0-0.003 0-53.065 42.81-96.131 95.778-96.546h0.039c0.309-0.004 0.675-0.006 1.041-0.006 26.303 0 50.053 10.932 66.953 28.501l0.029 0.030zM672.914 853.577h51.931l-373.029-683.154h-51.931zM855.040 465.92c29.394-29.386 47.575-69.987 47.575-114.834s-18.181-85.448-47.575-114.834v0c-29.386-29.394-69.987-47.575-114.834-47.575s-85.448 18.181-114.834 47.575v0c-29.394 29.386-47.575 69.987-47.575 114.834s18.181 85.448 47.575 114.834v0c29.386 29.394 69.987 47.575 114.834 47.575s85.448-18.181 114.834-47.575v0zM808.229 283.063c17.066 17.292 27.606 41.061 27.606 67.291 0 52.918-42.899 95.817-95.817 95.817s-95.817-42.899-95.817-95.817c0-52.918 42.899-95.817 95.817-95.817 0.066 0 0.133 0 0.199 0h-0.010c0.524-0.011 1.142-0.017 1.762-0.017 26.309 0 50.063 10.937 66.964 28.512l0.029 0.030zM692.663 986.697l-180.663-180.663-180.663 180.663h361.326z" />
<glyph unicode="&#xe93a;" glyph-name="jquery-icons-343" data-tags="jquery-icons-343" d="M397.897 788.48c29.351-28.598 47.558-68.51 47.558-112.676 0-0.759-0.005-1.517-0.016-2.273l0.001 0.115c0.012-0.733 0.019-1.597 0.019-2.463 0-44.071-18.213-83.887-47.523-112.333l-0.039-0.038c-28.421-28.921-67.952-46.843-111.67-46.843-1.113 0-2.223 0.012-3.33 0.035l0.165-0.003c-0.942-0.020-2.052-0.032-3.165-0.032-43.717 0-83.249 17.923-111.648 46.821l-0.022 0.022c-29.349 28.484-47.562 68.301-47.562 112.371 0 0.866 0.007 1.731 0.021 2.593l-0.002-0.13c-0.009 0.642-0.015 1.4-0.015 2.158 0 44.165 18.207 84.078 47.524 112.643l0.034 0.033c28.37 29.347 68.090 47.567 112.066 47.567 0.973 0 1.944-0.009 2.913-0.027l-0.145 0.002c0.733 0.012 1.597 0.019 2.463 0.019 44.071 0 83.887-18.213 112.333-47.523l0.038-0.039zM351.086 605.623c17.501 17.366 28.335 41.429 28.335 68.023s-10.834 50.657-28.329 68.017l-0.006 0.006c-16.929 17.599-40.679 28.532-66.982 28.532-0.366 0-0.731-0.002-1.096-0.006l0.056 0.001c-0.001 0-0.002 0-0.003 0-52.918 0-95.817-42.899-95.817-95.817 0-0.257 0.001-0.514 0.003-0.771v0.039c0-0.001 0-0.002 0-0.003 0-53.065 42.81-96.131 95.778-96.546h0.039c0.309-0.004 0.675-0.006 1.041-0.006 26.303 0 50.053 10.932 66.953 28.501l0.029 0.030zM672.914 853.577h51.931l-373.029-683.154h-51.931zM855.040 465.92c29.394-29.386 47.575-69.987 47.575-114.834s-18.181-85.448-47.575-114.834v0c-29.386-29.394-69.987-47.575-114.834-47.575s-85.448 18.181-114.834 47.575v0c-29.394 29.386-47.575 69.987-47.575 114.834s18.181 85.448 47.575 114.834v0c29.386 29.394 69.987 47.575 114.834 47.575s85.448-18.181 114.834-47.575v0zM808.229 283.063c17.066 17.292 27.606 41.061 27.606 67.291 0 52.918-42.899 95.817-95.817 95.817s-95.817-42.899-95.817-95.817c0-52.918 42.899-95.817 95.817-95.817 0.066 0 0.133 0 0.199 0h-0.010c0.524-0.011 1.142-0.017 1.762-0.017 26.309 0 50.063 10.937 66.964 28.512l0.029 0.030zM331.337 39.497l180.663 181.394 180.663-181.394h-361.326z" />
<glyph unicode="&#xe93b;" glyph-name="jquery-icons-344" data-tags="jquery-icons-344" d="M512 841.143h6.583c0.974 0.006 2.125 0.009 3.277 0.009 60.041 0 118.085-8.551 172.98-24.502l-4.372 1.088c55.619-15.945 104.206-38.157 148.542-66.443l-2.256 1.346c42.583-27.17 78.652-60.213 108.262-98.504l0.721-0.97c27.573-36.12 47.56-79.526 56.738-126.791l0.314-1.94s0 0 0 0v0s0 0 0 0 0 0 0 0v-8.777c-9.52-49.537-29.778-93.211-58.31-130.173l0.527 0.71c-30.539-39.778-67.133-73.11-108.729-99.202l-1.716-1.004c-42.080-26.909-90.664-49.118-142.317-64.11l-3.969-0.987c-51.754-19.64-111.692-33.179-174.092-37.902l-2.182-0.133c-1.121-0.007-2.448-0.011-3.776-0.011-60.33 0-118.725 8.281-174.112 23.769l4.539-1.084c-55.605 15.733-104.215 37.964-148.455 66.402l2.169-1.305c-44.565 26.634-82.329 59.506-113.483 97.953l-0.62 0.79c-28.315 35.71-48.823 78.901-58.2 126.101l-0.315 1.899c-0.715 4.397-1.123 9.465-1.123 14.629s0.408 10.232 1.195 15.174l-0.072-0.545c9.779 49.084 30.274 92.258 58.997 128.634l-0.483-0.634c31.083 38.966 67.851 71.776 109.367 97.69l1.81 1.053c42.079 26.962 90.669 49.176 142.345 64.121l3.941 0.976c51.39 14.41 110.404 22.693 171.352 22.693 1.731 0 3.46-0.007 5.187-0.020l-0.265 0.002zM298.423 716.8c-50.954-21.468-94.44-51.118-130.911-87.756l-0.015-0.015c-31.622-31.136-54.71-70.852-65.49-115.375l-0.338-1.654c7.463-36.571 23.091-68.659 44.933-95.486l-0.316 0.4c25.761-30.807 55.96-56.814 89.835-77.365l1.593-0.898c35.771-22.493 77.142-40.771 121.137-52.657l3.205-0.737c43.036-12.541 92.473-19.755 143.595-19.755 0.946 0 1.892 0.002 2.837 0.007l-0.146-0.001c0.711-0.003 1.553-0.005 2.394-0.005 51.225 0 100.765 7.214 147.66 20.68l-3.769-0.926c47.233 12.895 88.566 30.893 126.53 53.893l-2.187-1.23c38.482 20.672 71.166 46.822 98.403 77.868l0.34 0.395c21.101 26.711 36.265 59.083 42.94 94.453l0.214 1.364c-11.966 47.859-36.015 88.998-68.734 121.397l-0.021 0.020c-44.321 44.872-93.984 84.297-148.004 117.292l-3.401 1.931c10.747-12.824 20.459-27.205 28.607-42.544l0.65-1.342c7.612-14.076 14.563-30.547 19.935-47.716l0.545-2.021q0-14.629 5.851-31.451c0.354-5.032 0.557-10.904 0.557-16.823s-0.202-11.791-0.6-17.609l0.043 0.786c0.017-1.046 0.026-2.28 0.026-3.517 0-55.823-19.301-107.138-51.595-147.636l0.368 0.478c-31.688-41.219-75.614-71.629-126.3-85.9l-1.7-0.409c-8.934-2.625-19.827-4.929-30.969-6.447l-1.213-0.135c-4.924-0.361-10.666-0.567-16.457-0.567s-11.534 0.206-17.221 0.61l0.764-0.044c-1.046-0.017-2.28-0.026-3.517-0.026-55.823 0-107.138 19.301-147.636 51.595l0.478-0.368c-41.788 32.349-72.671 76.981-87.345 128.446l-0.426 1.749c0 10.24-4.389 21.211-5.851 32.183-0.368 5.033-0.578 10.903-0.578 16.823s0.21 11.79 0.623 17.605l-0.045-0.782c-0.036 1.542-0.057 3.358-0.057 5.179 0 19.71 2.421 38.854 6.982 57.151l-0.342-1.622c5.439 22.167 13.735 41.677 24.647 59.404l-0.51-0.89zM396.434 731.429v0h-9.509c-2.183-0.87-3.949-2.4-5.094-4.341l-0.026-0.048c-19.444-18.62-34.487-41.674-43.519-67.548l-0.366-1.206c-6.962-18.572-10.991-40.036-10.991-62.44 0-5.829 0.273-11.593 0.806-17.282l-0.055 0.728c0.77-5.183 3.14-9.71 6.584-13.166l-0.001 0.001c3.296-3.547 7.963-5.78 13.153-5.851h0.013c9.754 1.351 17.323 9.17 18.279 18.93l0.007 0.087c-0.277 3.436-0.436 7.438-0.436 11.477 0 17.902 3.107 35.079 8.811 51.020l-0.33-1.057c7.474 20.772 19.239 38.422 34.309 52.599l0.069 0.064c1.649 1.574 2.909 3.542 3.629 5.753l0.028 0.098c0.37 1.316 0.583 2.828 0.583 4.389s-0.213 3.072-0.61 4.507l0.028-0.118c0.086 0.73 0.135 1.575 0.135 2.432 0 9.818-6.448 18.13-15.34 20.932l-0.155 0.042zM938.725 872.487l-787.693-787.693-66.719 66.719 787.693 787.693 66.719-66.719z" />
<glyph unicode="&#xe93c;" glyph-name="jquery-icons-345" data-tags="jquery-icons-345" d="M804.571 111.177h-613.669v16.823l312.32 384-312.32 383.269v17.554h595.383l12.434-157.257h-18.286q-12.434 122.149-116.297 122.149h-344.503l265.509-322.56-292.571-362.057h376.686c30.519 0.373 59.381 7.068 85.466 18.831l-1.351-0.545c33.642 20.509 56.732 55.467 60.668 96.032l0.041 0.517 18.286-3.657z" />
<glyph unicode="&#xe93d;" glyph-name="jquery-icons-332" data-tags="jquery-icons-332" d="M950.857 765.074v-141.897h-877.714v141.897zM950.857 403.749v-146.286h-877.714v146.286z" />
<glyph unicode="&#xe93e;" glyph-name="jquery-icons-333" data-tags="jquery-icons-333" d="M950.857 765.074v-141.897h-877.714v141.897zM950.857 403.749v-146.286h-877.714v146.286zM859.486 853.254l-624.023-743.418-71.709 60.192 624.023 743.418 71.709-60.192z" />
<glyph unicode="&#xe93f;" glyph-name="jquery-icons-334" data-tags="jquery-icons-334" d="M877.714 549.303l-731.429-292.571v115.566l597.577 232.594-597.577 231.131v114.834l731.429-292.571zM146.286 147.749h731.429v-73.143h-731.429v73.143z" />
<glyph unicode="&#xe940;" glyph-name="jquery-icons-335" data-tags="jquery-icons-335" d="M146.286 549.303l731.429-292.571v115.566l-597.577 231.863 597.577 231.863v114.834l-731.429-292.571zM146.286 147.749h731.429v-73.143h-731.429v73.143z" />
<glyph unicode="&#xe941;" glyph-name="jquery-icons-336" data-tags="jquery-icons-336" d="M877.714 457.143l-731.429-292.571v115.566l597.577 231.863-597.577 231.863v116.297l731.429-292.571z" />
<glyph unicode="&#xe942;" glyph-name="jquery-icons-337" data-tags="jquery-icons-337" d="M146.286 457.143l731.429-292.571v115.566l-597.577 231.863 597.577 231.863v116.297l-731.429-292.571z" />
<glyph unicode="&#xe943;" glyph-name="jquery-icons-338" data-tags="jquery-icons-338" d="M863.086 557.349h-245.029l173.349 173.349-62.171 62.171-173.349-173.349v245.029h-87.771v-245.029l-173.349 173.349-62.171-62.171 173.349-173.349h-245.029v-87.771h245.029l-173.349-173.349 62.171-62.171 173.349 173.349v-245.029h87.771v245.029l173.349-173.349 62.171 62.171-173.349 173.349h245.029v87.771z" />
<glyph unicode="&#xe944;" glyph-name="jquery-icons-331" data-tags="jquery-icons-331" d="M292.571 731.429h438.857v-438.857h-438.857v438.857zM182.857 73.143h73.143v-73.143h-73.143v73.143zM0 842.606h73.143v-73.143h-73.143v73.143zM0 550.034h73.143v-73.143h-73.143v73.143zM0 257.463h73.143v-73.143h-73.143v73.143zM0 403.749h73.143v-73.143h-73.143v73.143zM0 696.32h73.143v-73.143h-73.143v73.143zM621.714 1024h73.143v-73.143h-73.143v73.143zM768 1024h73.143v-73.143h-73.143v73.143zM475.429 1024h73.143v-73.143h-73.143v73.143zM182.857 1024h73.143v-73.143h-73.143v73.143zM329.143 1024h73.143v-73.143h-73.143v73.143zM914.286 950.857h36.571v-35.109h73.143v108.251h-109.714v-73.143zM73.143 915.749v35.109h36.571v73.143h-109.714v-108.251h73.143zM950.857 842.606h73.143v-73.143h-73.143v73.143zM950.857 696.32h73.143v-73.143h-73.143v73.143zM950.857 111.177v-38.034h-36.571v-73.143h109.714v111.177h-73.143zM950.857 550.034h73.143v-73.143h-73.143v73.143zM109.714 73.143h-36.571v38.034h-73.143v-111.177h109.714v73.143zM768 73.143h73.143v-73.143h-73.143v73.143zM475.429 73.143h73.143v-73.143h-73.143v73.143zM950.857 403.749h73.143v-73.143h-73.143v73.143zM621.714 73.143h73.143v-73.143h-73.143v73.143zM329.143 73.143h73.143v-73.143h-73.143v73.143zM950.857 257.463h73.143v-73.143h-73.143v73.143z" />
<glyph unicode="&#xe945;" glyph-name="jquery-icons-330" data-tags="jquery-icons-330" d="M0 1024v-1024h1024v1024zM950.857 73.143h-877.714v877.714h877.714zM292.571 731.429h438.857v-438.857h-438.857v438.857z" />
<glyph unicode="&#xe946;" glyph-name="Aa-striketrhorugh2" data-tags="Aa-striketrhorugh2" d="M475.429 189.44h548.571v-35.84h-548.571v35.84zM1022.736 863.123l-623.893-743.527-72.28 60.65 623.893 743.527 72.28-60.65zM471.771 253.074l228.206 617.326h98.743l219.429-616.594h-89.234l-64.366 185.051h-238.446l-68.023-185.783zM841.143 503.223l-92.891 270.629-102.4-270.629zM24.869 563.2c0.144 24.727 5.793 48.1 15.781 69.002l-0.421-0.979c9.116 18.318 21.986 33.528 37.694 45.109l0.34 0.239c16.222 11.496 35.352 20.128 56.014 24.677l1.038 0.192c20.398 4.677 43.822 7.358 67.872 7.358 1.853 0 3.703-0.016 5.549-0.048l-0.278 0.004c0.35 0.002 0.764 0.002 1.178 0.002 21.866 0 43.173-2.399 63.67-6.948l-1.945 0.362c20.438-4.172 38.572-11.53 54.834-21.621l-0.708 0.409c15.639-9.607 28.428-22.395 37.753-37.544l0.281-0.491c9.223-15.403 14.677-33.98 14.677-53.832 0-1.132-0.018-2.26-0.053-3.384l0.004 0.164v-256.731c-0.006-0.214-0.009-0.467-0.009-0.72 0-6.625 2.202-12.735 5.913-17.639l-0.053 0.073c4.042-4.584 9.927-7.461 16.485-7.461 0.892 0 1.772 0.053 2.636 0.157l-0.104-0.010h24.137v-52.663l-19.017-4.389c-3.291-0.365-7.107-0.573-10.971-0.573s-7.68 0.208-11.437 0.614l0.466-0.041c-5.158-0.617-11.132-0.969-17.189-0.969s-12.030 0.352-17.903 1.037l0.714-0.068c-9.228 1.974-17.343 5.796-24.286 11.080l0.149-0.109c-6.615 5.16-11.843 11.795-15.232 19.427l-0.128 0.322c-3.858 8.786-6.467 18.976-7.294 29.666l-0.020 0.323c-9.331-10.159-19.122-19.486-29.501-28.131l-0.488-0.395c-10.221-8.455-21.741-16.001-34.057-22.195l-1.051-0.479c-12.375-6.286-26.767-11.564-41.832-15.099l-1.322-0.261c-15.831-3.722-34.007-5.856-52.682-5.856-0.508 0-1.015 0.002-1.522 0.005h0.078c-0.2-0.001-0.436-0.001-0.673-0.001-17.559 0-34.429 2.946-50.144 8.371l1.079-0.324c-16.601 5.652-30.946 13.865-43.357 24.303l0.203-0.166c-12.726 10.76-23.065 23.905-30.407 38.794l-0.313 0.703c-8.767 16.653-13.912 36.389-13.912 57.328 0 0.674 0.005 1.347 0.016 2.019l-0.001-0.101c-0.023 0.95-0.036 2.069-0.036 3.19 0 20.28 4.321 39.551 12.093 56.942l-0.354-0.887c7.261 16.89 17.398 31.246 29.929 43.098l0.060 0.056c11.977 10.714 26.055 19.384 41.5 25.29l0.923 0.31c14.254 5.522 30.833 9.642 48.065 11.615l0.941 0.088 124.343 15.36c12.029 0.523 22.667 6.066 29.941 14.571l0.048 0.057c6.547 9.162 10.468 20.592 10.468 32.937 0 1.794-0.083 3.57-0.245 5.322l0.017-0.225c0.16 1.7 0.251 3.676 0.251 5.674 0 21.35-10.395 40.273-26.401 51.982l-0.181 0.127c-19.287 11.126-42.419 17.689-67.083 17.689-2.131 0-4.251-0.049-6.358-0.146l0.299 0.011c-2.041 0.131-4.427 0.206-6.829 0.206-24.905 0-47.934-8.030-66.639-21.643l0.325 0.225c-16.883-16.049-27.48-38.574-27.794-63.576l-0.001-0.058zM299.154 478.354c-6.502-4.606-14.032-8.346-22.115-10.824l-0.56-0.148-29.257-7.314-34.377-5.12-36.571-4.389c-14.735-3.273-27.444-7.298-39.655-12.289l1.621 0.586c-11.414-3.429-21.366-8.163-30.408-14.159l0.42 0.262c-8.132-5.512-14.768-12.616-19.585-20.907l-0.163-0.304c-4.603-8.106-7.316-17.807-7.316-28.141 0-0.135 0-0.271 0.001-0.406v0.021c-0.018-0.655-0.028-1.426-0.028-2.199 0-11.312 2.158-22.121 6.085-32.036l-0.206 0.589c4.118-9.432 9.797-17.455 16.792-24.108l0.031-0.029c7.084-6.517 15.651-11.54 25.128-14.502l0.472-0.127c9.443-3.251 20.325-5.128 31.645-5.128 0.446 0 0.892 0.003 1.336 0.009l-0.067-0.001c3.835-0.357 8.294-0.561 12.8-0.561s8.965 0.204 13.367 0.603l-0.567-0.041c12.217 4.227 22.602 8.92 32.475 14.421l-1.024-0.524c11.572 4.134 21.467 8.821 30.808 14.345l-0.819-0.448c10.055 5.826 18.711 12.619 26.302 20.449l0.030 0.031c6.784 7.73 12.442 16.673 16.579 26.416l0.244 0.647c4.62 9.988 7.315 21.677 7.315 33.996 0 0.134 0 0.268-0.001 0.402v-0.021z" />
<glyph unicode="&#xe947;" glyph-name="Aa2" data-tags="Aa2" d="M475.429 189.44h548.571v-35.84h-548.571v35.84zM471.771 253.074l228.206 617.326h98.743l219.429-616.594h-89.234l-64.366 185.051h-238.446l-68.023-185.783zM841.143 503.223l-92.891 270.629-102.4-270.629zM24.869 563.2c0.144 24.727 5.793 48.1 15.781 69.002l-0.421-0.979c9.116 18.318 21.986 33.528 37.694 45.109l0.34 0.239c16.222 11.496 35.352 20.128 56.014 24.677l1.038 0.192c20.398 4.677 43.822 7.358 67.872 7.358 1.853 0 3.703-0.016 5.549-0.048l-0.278 0.004c0.35 0.002 0.764 0.002 1.178 0.002 21.866 0 43.173-2.399 63.67-6.948l-1.945 0.362c20.438-4.172 38.572-11.53 54.834-21.621l-0.708 0.409c15.639-9.607 28.428-22.395 37.753-37.544l0.281-0.491c9.223-15.403 14.677-33.98 14.677-53.832 0-1.132-0.018-2.26-0.053-3.384l0.004 0.164v-256.731c-0.006-0.214-0.009-0.467-0.009-0.72 0-6.625 2.202-12.735 5.913-17.639l-0.053 0.073c4.042-4.584 9.927-7.461 16.485-7.461 0.892 0 1.772 0.053 2.636 0.157l-0.104-0.010h24.137v-52.663l-19.017-4.389c-3.291-0.365-7.107-0.573-10.971-0.573s-7.68 0.208-11.437 0.614l0.466-0.041c-5.158-0.617-11.132-0.969-17.189-0.969s-12.030 0.352-17.903 1.037l0.714-0.068c-9.228 1.974-17.343 5.796-24.286 11.080l0.149-0.109c-6.615 5.16-11.843 11.795-15.232 19.427l-0.128 0.322c-3.858 8.786-6.467 18.976-7.294 29.666l-0.020 0.323c-9.331-10.159-19.122-19.486-29.501-28.131l-0.488-0.395c-10.221-8.455-21.741-16.001-34.057-22.195l-1.051-0.479c-12.375-6.286-26.767-11.564-41.832-15.099l-1.322-0.261c-15.831-3.722-34.007-5.856-52.682-5.856-0.508 0-1.015 0.002-1.522 0.005h0.078c-0.2-0.001-0.436-0.001-0.673-0.001-17.559 0-34.429 2.946-50.144 8.371l1.079-0.324c-16.601 5.652-30.946 13.865-43.357 24.303l0.203-0.166c-12.726 10.76-23.065 23.905-30.407 38.794l-0.313 0.703c-8.767 16.653-13.912 36.389-13.912 57.328 0 0.674 0.005 1.347 0.016 2.019l-0.001-0.101c-0.023 0.95-0.036 2.069-0.036 3.19 0 20.28 4.321 39.551 12.093 56.942l-0.354-0.887c7.261 16.89 17.398 31.246 29.929 43.098l0.060 0.056c11.977 10.714 26.055 19.384 41.5 25.29l0.923 0.31c14.254 5.522 30.833 9.642 48.065 11.615l0.941 0.088 124.343 15.36c12.029 0.523 22.667 6.066 29.941 14.571l0.048 0.057c6.547 9.162 10.468 20.592 10.468 32.937 0 1.794-0.083 3.57-0.245 5.322l0.017-0.225c0.16 1.7 0.251 3.676 0.251 5.674 0 21.35-10.395 40.273-26.401 51.982l-0.181 0.127c-19.287 11.126-42.419 17.689-67.083 17.689-2.131 0-4.251-0.049-6.358-0.146l0.299 0.011c-2.041 0.131-4.427 0.206-6.829 0.206-24.905 0-47.934-8.030-66.639-21.643l0.325 0.225c-16.883-16.049-27.48-38.574-27.794-63.576l-0.001-0.058zM299.154 478.354c-6.502-4.606-14.032-8.346-22.115-10.824l-0.56-0.148-29.257-7.314-34.377-5.12-36.571-4.389c-14.735-3.273-27.444-7.298-39.655-12.289l1.621 0.586c-11.414-3.429-21.366-8.163-30.408-14.159l0.42 0.262c-8.132-5.512-14.768-12.616-19.585-20.907l-0.163-0.304c-4.603-8.106-7.316-17.807-7.316-28.141 0-0.135 0-0.271 0.001-0.406v0.021c-0.018-0.655-0.028-1.426-0.028-2.199 0-11.312 2.158-22.121 6.085-32.036l-0.206 0.589c4.118-9.432 9.797-17.455 16.792-24.108l0.031-0.029c7.084-6.517 15.651-11.54 25.128-14.502l0.472-0.127c9.443-3.251 20.325-5.128 31.645-5.128 0.446 0 0.892 0.003 1.336 0.009l-0.067-0.001c3.835-0.357 8.294-0.561 12.8-0.561s8.965 0.204 13.367 0.603l-0.567-0.041c12.217 4.227 22.602 8.92 32.475 14.421l-1.024-0.524c11.572 4.134 21.467 8.821 30.808 14.345l-0.819-0.448c10.055 5.826 18.711 12.619 26.302 20.449l0.030 0.031c6.784 7.73 12.442 16.673 16.579 26.416l0.244 0.647c4.62 9.988 7.315 21.677 7.315 33.996 0 0.134 0 0.268-0.001 0.402v-0.021z" />
<glyph unicode="&#xe948;" glyph-name="Aa-striketrhorugh" data-tags="Aa-striketrhorugh" d="M8.046 253.074l227.474 617.326h98.743l219.429-616.594h-89.234l-64.366 185.051h-238.446l-68.023-185.783zM377.417 503.954l-92.891 269.897-102.4-270.629zM621.714 563.2c0.144 24.727 5.793 48.1 15.781 69.002l-0.421-0.979c9.116 18.318 21.986 33.528 37.694 45.109l0.34 0.239c16.016 11.411 34.887 20.029 55.271 24.668l1.049 0.201c20.398 4.677 43.822 7.358 67.872 7.358 1.853 0 3.703-0.016 5.549-0.048l-0.278 0.004c0.35 0.002 0.764 0.002 1.178 0.002 21.866 0 43.173-2.399 63.67-6.948l-1.945 0.362c20.438-4.172 38.572-11.53 54.834-21.621l-0.708 0.409c15.639-9.607 28.428-22.395 37.753-37.544l0.281-0.491c9.223-15.403 14.677-33.98 14.677-53.832 0-1.132-0.018-2.26-0.053-3.384l0.004 0.164v-256.731c-0.006-0.214-0.009-0.467-0.009-0.72 0-6.625 2.202-12.735 5.913-17.639l-0.053 0.073c4.042-4.584 9.927-7.461 16.485-7.461 0.892 0 1.772 0.053 2.636 0.157l-0.104-0.010h24.137v-52.663l-19.017-4.389c-3.291-0.365-7.107-0.573-10.971-0.573s-7.68 0.208-11.437 0.614l0.466-0.041c-5.158-0.617-11.132-0.969-17.189-0.969s-12.030 0.352-17.903 1.037l0.714-0.068c-9.228 1.974-17.343 5.796-24.286 11.080l0.149-0.109c-6.615 5.16-11.843 11.795-15.232 19.427l-0.128 0.322c-3.858 8.786-6.467 18.976-7.294 29.666l-0.020 0.323c-9.331-10.159-19.122-19.486-29.501-28.131l-0.488-0.395c-10.221-8.455-21.741-16.001-34.057-22.195l-1.051-0.479c-12.375-6.286-26.767-11.564-41.832-15.099l-1.322-0.261c-15.831-3.722-34.007-5.856-52.682-5.856-0.508 0-1.015 0.002-1.522 0.005h0.078c-0.2-0.001-0.436-0.001-0.673-0.001-17.559 0-34.429 2.946-50.144 8.371l1.079-0.324c-16.601 5.652-30.946 13.865-43.357 24.303l0.203-0.166c-12.726 10.76-23.065 23.905-30.407 38.794l-0.313 0.703c-7.9 15.937-12.522 34.703-12.522 54.55 0 1.652 0.032 3.296 0.095 4.932l-0.007-0.236c-0.023 0.95-0.036 2.069-0.036 3.19 0 20.28 4.321 39.551 12.093 56.942l-0.354-0.887c7.425 16.318 17.532 30.172 29.904 41.614l0.085 0.078c11.977 10.714 26.055 19.384 41.5 25.29l0.923 0.31c14.254 5.522 30.833 9.642 48.065 11.615l0.941 0.088 124.343 15.36c11.11 0.936 20.859 6.099 27.757 13.855l0.037 0.042c6.547 9.162 10.468 20.592 10.468 32.937 0 1.794-0.083 3.57-0.245 5.322l0.017-0.225c0.16 1.7 0.251 3.676 0.251 5.674 0 21.35-10.395 40.273-26.401 51.982l-0.181 0.127c-19.287 11.126-42.419 17.689-67.083 17.689-2.131 0-4.251-0.049-6.358-0.146l0.299 0.011c-2.041 0.131-4.427 0.206-6.829 0.206-24.905 0-47.934-8.030-66.639-21.643l0.325 0.225c-16.883-16.049-27.48-38.574-27.794-63.576l-0.001-0.058zM896 478.354c-6.502-4.606-14.032-8.346-22.115-10.824l-0.56-0.148-29.257-7.314-34.377-5.12-36.571-4.389c-14.442-1.89-27.31-4.707-39.755-8.496l1.72 0.45c-11.414-3.429-21.366-8.163-30.408-14.159l0.42 0.262c-8.132-5.512-14.768-12.616-19.585-20.907l-0.163-0.304c-4.603-8.106-7.316-17.807-7.316-28.141 0-0.135 0-0.271 0.001-0.406v0.021c-0.018-0.655-0.028-1.426-0.028-2.199 0-11.312 2.158-22.121 6.085-32.036l-0.206 0.589c4.118-9.432 9.797-17.455 16.792-24.108l0.031-0.029c7.084-6.517 15.651-11.54 25.128-14.502l0.472-0.127c9.443-3.251 20.325-5.128 31.645-5.128 0.446 0 0.892 0.003 1.336 0.009l-0.067-0.001c3.835-0.357 8.294-0.561 12.8-0.561s8.965 0.204 13.367 0.603l-0.567-0.041c11.609 2.193 21.673 4.977 31.39 8.488l-1.401-0.442c11.572 4.134 21.467 8.821 30.808 14.345l-0.819-0.448c10.055 5.826 18.711 12.619 26.302 20.449l0.030 0.031c7.616 7.684 13.983 16.623 18.76 26.475l0.257 0.588c4.62 9.988 7.315 21.677 7.315 33.996 0 0.134 0 0.268-0.001 0.402v-0.021zM2.926 189.44h548.571v-35.84h-548.571v35.84zM696.096 863.477l-624.023-743.418-72.269 60.662 624.023 743.418 72.269-60.662z" />
<glyph unicode="&#xe949;" glyph-name="Aa" data-tags="Aa" d="M7.314 256l226.743 614.4h102.4l219.429-614.4h-95.086l-58.514 182.857h-241.371l-65.829-182.857h-87.771zM380.343 504.686l-95.086 270.629-102.4-270.629h197.486zM621.714 563.2c0 29.257 7.314 51.2 14.629 65.829 7.314 21.943 21.943 36.571 36.571 51.2s36.571 14.629 58.514 21.943 43.886 7.314 73.143 7.314c21.943 0 43.886 0 65.829-7.314s36.571-14.629 51.2-21.943c14.629-7.314 29.257-21.943 36.571-36.571s14.629-36.571 14.629-58.514v-256c0-7.314 0-14.629 7.314-21.943s7.314-7.314 21.943-7.314c7.314 0 7.314 0 14.629 0s7.314 0 14.629 0v-51.2c-7.314 0-14.629 0-21.943-7.314-7.314 0-14.629 0-21.943 0-14.629 0-21.943 0-36.571 0-7.314 0-14.629 7.314-21.943 14.629s-14.629 14.629-14.629 21.943-7.314 14.629-7.314 29.257c-7.314-7.314-21.943-21.943-29.257-29.257s-21.943-14.629-36.571-21.943c-14.629-7.314-29.257-14.629-43.886-14.629s-36.571-7.314-51.2-7.314c-14.629 0-36.571 0-51.2 7.314s-36.571 21.943-51.2 29.257c-14.629 7.314-21.943 21.943-29.257 36.571-7.314 21.943-14.629 36.571-14.629 58.514s7.314 43.886 14.629 58.514 14.629 29.257 29.257 43.886c14.629 14.629 29.257 21.943 43.886 29.257s29.257 7.314 51.2 14.629l124.343 14.629c14.629 0 21.943 7.314 29.257 14.629s7.314 21.943 7.314 36.571-7.314 43.886-29.257 58.514c-14.629 14.629-43.886 14.629-73.143 14.629-36.571 0-58.514-7.314-73.143-21.943-21.943-14.629-29.257-36.571-29.257-65.829h-73.143zM899.657 475.429c-7.314-7.314-14.629-7.314-21.943-7.314s-21.943-7.314-29.257-7.314-21.943 0-36.571-7.314-21.943 0-36.571-7.314c-14.629 0-29.257-7.314-36.571-7.314s-21.943-7.314-36.571-7.314-14.629-14.629-14.629-21.943c-7.314-7.314-7.314-21.943-7.314-29.257 0-14.629 0-21.943 7.314-36.571s7.314-14.629 14.629-21.943 14.629-14.629 21.943-14.629c7.314 0 21.943-7.314 29.257-7.314s14.629 0 29.257 0c7.314 0 21.943 7.314 29.257 7.314s21.943 7.314 29.257 14.629c7.314 7.314 21.943 14.629 29.257 21.943s14.629 14.629 21.943 29.257c7.314 7.314 7.314 21.943 7.314 36.571v65.829zM0 190.171h548.571v-36.571h-548.571v36.571z" />
<glyph unicode="&#xe94a;" glyph-name="CandleIcon" data-tags="CandleIcon" d="M576 832v-640h128v-192h128v192h128v640h-128v192h-128v-192h-128zM64 704v-448h128v-192h128v192h128v448h-128v192h-128v-192h-128z" />
<glyph unicode="&#xe94b;" glyph-name="ColumnIcon" data-tags="ColumnIcon" d="M0 0h192v320h-192v-320zM704 0v896h-192v-896h192zM960 0v768h-192v-768h192zM448 0v640h-192v-640h192z" />
<glyph unicode="&#xe94c;" glyph-name="IndicatorsIcon" data-tags="IndicatorsIcon" d="M29.728 504.237l90.509-90.509 295.763 295.712 194.003-196.442 331.437 337.562 82.56-82.56v256h-256l82.56-82.56-242.56-242.88-193.491 193.44-384.781-387.763zM128 252.998v-252.998h128v380.998l-128-128zM320 444.998v-444.998h128v508.678l-32 32.32-96-96zM512 443.718v-443.718h128v375.238l-29.997-30.682-98.003 99.162zM704 440.198v-440.198h128v570.438l-128-130.24zM896 635.718v-635.718h128v599.558l-82.56 82.566-45.44-46.406z" />
<glyph unicode="&#xe94d;" glyph-name="LineIcon" data-tags="LineIcon" d="M589.549 245.318l434.451 467.91-109.67 118.771-312.326-332-222.144 224.947-379.859-414.176 109.664-118.771 260.787 285.286 219.098-231.968z" />
<glyph unicode="&#xe94e;" glyph-name="SettingsIcon" data-tags="SettingsIcon" d="M984.627 590.816h-47.206c-21.645 0-44.685 16.845-51.13 37.587l-27.091 65.939c-10.285 19.104-5.997 47.226 9.146 62.592l33.702 33.466c15.328 15.366 15.328 40.41 0 55.782l-55.77 55.712c-15.418 15.309-40.326 15.309-55.763 0l-33.6-33.53c-15.258-15.328-43.494-19.482-62.637-9.274l-65.76 27.123c-20.691 6.349-37.606 29.376-37.606 51.117v47.187c0 21.613-17.773 39.482-39.488 39.482h-78.797c-21.594 0-39.424-17.869-39.424-39.482v-47.187c0-21.741-16.858-44.768-37.6-51.117l-65.946-27.123c-19.142-10.208-47.142-6.182-62.458 9.274l-33.715 33.53c-15.258 15.309-40.346 15.309-55.482 0l-55.776-55.712c-15.315-15.373-15.315-40.416 0-55.718l33.376-33.53c15.43-15.366 19.597-43.488 9.312-62.592l-27.085-65.984c-6.566-20.742-29.434-37.594-51.142-37.594l-47.264 0.051c-21.594 0-39.424-17.715-39.424-39.405v-78.829c0-21.626 17.83-39.354 39.424-39.354h47.264c21.709-0.122 44.576-16.973 51.021-37.67l27.206-65.946c10.285-19.066 6.118-47.354-9.312-62.656l-33.434-33.395c-15.258-15.398-15.258-40.442 0-55.866l55.834-55.674c15.136-15.296 40.224-15.296 55.482 0l33.715 33.613c15.2 15.2 43.315 19.418 62.336 9.088l66.067-27.072c20.742-6.528 37.6-29.44 37.6-51.142v-47.155c0-21.594 17.83-39.354 39.424-39.354h78.797c21.715 0 39.488 17.76 39.488 39.354v47.155c0 21.702 16.915 44.614 37.606 51.142l65.997 27.072c18.97 10.33 47.258 6.112 62.573-9.088l33.427-33.613c15.437-15.296 40.346-15.296 55.763 0l55.77 55.674c15.328 15.424 15.328 40.467 0 55.866l-33.702 33.395c-15.142 15.302-19.43 43.59-9.146 62.656l27.091 65.946c6.445 20.698 29.6 37.549 51.13 37.549h47.206c21.715 0 39.373 17.779 39.373 39.43v78.874c0 21.69-17.658 39.405-39.373 39.405v0zM740 512.026c0-125.843-101.888-227.821-227.776-227.821-125.997 0-228 101.978-228 227.821 0 125.818 102.003 227.827 228 227.827 125.888 0 227.776-102.010 227.776-227.827v0z" />
</font></defs></svg>

After

Width:  |  Height:  |  Size: 272 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 225 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 418 B

View File

@ -0,0 +1 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 55 55"><defs><style>.cls-1{fill:#0090ff;}.cls-2{fill:#777;}</style></defs><title>Artboard 2</title><rect class="cls-1" x="46.32" y="16.34" width="5.97" height="38.47"/><polygon class="cls-1" points="36.73 54.8 42.7 54.8 42.7 20.71 40.34 20.71 36.73 23.92 36.73 54.8"/><polygon class="cls-1" points="27.14 30.07 27.14 54.8 33.11 54.8 33.11 27.15 28.46 31.28 27.14 30.07"/><polygon class="cls-2" points="30.74 20.71 29.62 20.71 30.12 21.22 30.74 20.71"/><polygon class="cls-1" points="17.55 26.49 17.55 54.8 23.52 54.8 23.52 26.76 20.26 23.78 17.55 26.49"/><polygon class="cls-2" points="7.96 24.97 7.96 26.49 9.48 24.97 7.96 24.97"/><polygon class="cls-1" points="7.96 54.8 13.93 54.8 13.93 30.11 7.96 36.08 7.96 54.8"/><polygon class="cls-1" points="37.29 0.2 43.23 6.14 30.12 16.96 21.68 8.51 2.5 27.69 7.29 32.48 20.26 19.52 28.46 27.02 47.33 10.23 52.5 15.4 52.5 14.57 52.5 0.2 37.29 0.2"/></svg>

After

Width:  |  Height:  |  Size: 985 B

View File

@ -0,0 +1 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 55 55"><defs><style>.cls-1{fill:#777;}</style></defs><title>Artboard 2</title><rect class="cls-1" x="46.32" y="16.34" width="5.97" height="38.47"/><polygon class="cls-1" points="36.73 54.8 42.7 54.8 42.7 20.71 40.34 20.71 36.73 23.92 36.73 54.8"/><polygon class="cls-1" points="27.14 30.07 27.14 54.8 33.11 54.8 33.11 27.15 28.46 31.28 27.14 30.07"/><polygon class="cls-1" points="30.74 20.71 29.62 20.71 30.12 21.22 30.74 20.71"/><polygon class="cls-1" points="17.55 26.49 17.55 54.8 23.52 54.8 23.52 26.76 20.26 23.78 17.55 26.49"/><polygon class="cls-1" points="7.96 24.97 7.96 26.49 9.48 24.97 7.96 24.97"/><polygon class="cls-1" points="7.96 54.8 13.93 54.8 13.93 30.11 7.96 36.08 7.96 54.8"/><polygon class="cls-1" points="37.29 0.2 43.23 6.14 30.12 16.96 21.68 8.51 2.5 27.69 7.29 32.48 20.26 19.52 28.46 27.02 47.33 10.23 52.5 15.4 52.5 14.57 52.5 0.2 37.29 0.2"/></svg>

After

Width:  |  Height:  |  Size: 964 B

View File

@ -0,0 +1 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 55 55"><defs><style>.cls-1{fill:#0090ff;}</style></defs><title>Artboard 2 copy</title><polygon class="cls-1" points="27.5 45.87 8.96 36.2 0.63 40.54 27.5 54.56 54.38 40.54 46.04 36.2 27.5 45.87"/><polygon class="cls-1" points="27.5 32.83 8.96 23.15 0.63 27.5 27.5 41.52 54.38 27.5 46.04 23.15 27.5 32.83"/><polygon class="cls-1" points="27.5 28.48 0.63 14.46 27.5 0.44 54.38 14.46 27.5 28.48"/></svg>

After

Width:  |  Height:  |  Size: 486 B

View File

@ -0,0 +1 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 55 55"><defs><style>.cls-1{fill:#777;}</style></defs><title>Artboard 2 copy</title><polygon class="cls-1" points="27.5 45.87 8.96 36.2 0.63 40.54 27.5 54.56 54.38 40.54 46.04 36.2 27.5 45.87"/><polygon class="cls-1" points="27.5 32.83 8.96 23.15 0.63 27.5 27.5 41.52 54.38 27.5 46.04 23.15 27.5 32.83"/><polygon class="cls-1" points="27.5 28.48 0.63 14.46 27.5 0.44 54.38 14.46 27.5 28.48"/></svg>

After

Width:  |  Height:  |  Size: 483 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

@ -0,0 +1,56 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg id="touchUI-icons-sprite" viewBox="0 0 780 60" style="background-color:#ffffff00" version="1.1"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
x="0px" y="0px" width="780px" height="60px"
>
<path d="M 221 37.75 L 220.3333 37.75 C 219.875 39.166 219.3594 40.1289 218.6719 40.6387 C 217.9844 41.1484 217.0104 41.375 215.6927 41.375 L 203.7865 41.375 L 212.4063 29.5762 L 204.099 18.625 L 215.6927 18.625 C 217.0677 18.625 218.1563 18.9082 218.901 19.4746 C 219.6458 20.041 220.1042 20.9473 220.3333 22.25 L 221 22.25 L 220 15 L 199 15 L 199 16.5859 L 209.7969 29.5195 L 199 44.1504 L 199 45 L 220 45 L 221 36.75 L 221 37.75 Z" fill="#525252"/>
<path d="M 23.8125 15 L 22.1719 15 L 17 28 L 18.7656 28 L 20.1563 24 L 25.7813 24 L 27.25 28 L 29 28 L 23.8125 15 L 23.8125 15 ZM 20.5469 23 L 22.7188 16.9219 C 22.7969 16.7031 22.875 16.3906 22.9375 16 L 22.9844 16 C 23.0469 16.4219 23.1094 16.7344 23.2031 16.9219 L 25.3906 23 L 20.5469 23 L 20.5469 23 Z" fill="#525252"/>
<path d="M 28 32 L 19 32 L 19 33 L 25.6406 33 L 18 44.6875 L 18 45 L 28 45 L 28 44 L 20.2969 44 L 28 32.2656 L 28 32 L 28 32 Z" fill="#525252"/>
<path d="M 38 15 L 40 15 L 40 44 L 38 44 L 38 15 Z" fill="#525252"/>
<path d="M 34 37 L 39 45 L 44 37 L 39 40 L 34 37 Z" fill="#525252"/>
<path d="M 157 15 L 159 15 L 159 44 L 157 44 L 157 15 Z" fill="#525252"/>
<path d="M 153 37 L 158 45 L 163 37 L 158 40 L 153 37 Z" fill="#525252"/>
<path d="M 139 15 L 141 15 L 141 44 L 139 44 L 139 15 Z" fill="#525252"/>
<path d="M 135 37 L 140 45 L 145 37 L 140 40 L 135 37 Z" fill="#525252"/>
<path d="M 148 45 L 150 45 L 150 16 L 148 16 L 148 45 Z" fill="#525252"/>
<path d="M 144 23 L 149 15 L 154 23 L 149 20 L 144 23 Z" fill="#525252"/>
<path d="M 83.8125 32 L 82.1719 32 L 77 45 L 78.7656 45 L 80.1563 41 L 85.7813 41 L 87.25 45 L 89 45 L 83.8125 32 L 83.8125 32 ZM 80.5469 40 L 82.7188 33.9219 C 82.7969 33.7031 82.875 33.3906 82.9375 33 L 82.9844 33 C 83.0469 33.4219 83.1094 33.7344 83.2031 33.9219 L 85.3906 40 L 80.5469 40 L 80.5469 40 Z" fill="#525252"/>
<path d="M 88 15 L 79 15 L 79 16 L 85.6406 16 L 78 27.6875 L 78 28 L 88 28 L 88 27 L 80.2969 27 L 88 15.2656 L 88 15 L 88 15 Z" fill="#525252"/>
<path d="M 98 15 L 100 15 L 100 44 L 98 44 L 98 15 Z" fill="#525252"/>
<path d="M 94 37 L 99 45 L 104 37 L 99 40 L 94 37 Z" fill="#525252"/>
<path d="M 255 29 L 255 31 L 263 31 L 263 39 L 265 39 L 265 35 L 280 35 L 280 31 L 280 29 L 280 25 L 265 25 L 265 21 L 263 21 L 263 29 L 255 29 Z" fill="#525252"/>
<path d="M 329 43 L 331 43 L 331 35 L 339 35 L 339 33 L 335 33 L 335 18 L 331 18 L 329 18 L 325 18 L 325 33 L 321 33 L 321 35 L 329 35 L 329 43 Z" fill="#525252"/>
<rect y="15" x="375" width="9" height="5" fill="#525252"/>
<rect y="15" x="388" width="9" height="5" fill="#525252"/>
<rect y="17" x="383" width="6" height="1" fill="#525252"/>
<rect y="22" x="384" width="19" height="5" fill="#525252"/>
<rect y="32" x="384" width="19" height="5" fill="#525252"/>
<rect y="27" x="388" width="15" height="5" fill="#b4b4b4"/>
<rect y="37" x="388" width="15" height="5" fill="#b4b4b4"/>
<rect y="15" x="441" width="22" height="4" fill="#525252"/>
<path d="M 441 21 L 441 23 L 447 23 L 447 25 L 463 25 L 463 23 L 463 21 L 447 21 L 441 21 Z" fill="#525252"/>
<rect y="25" x="436" width="9" height="4" fill="#525252"/>
<rect y="31" x="436" width="9" height="4" fill="#525252"/>
<rect y="37" x="436" width="9" height="4" fill="#525252"/>
<path d="M 448 39 L 448 43 L 457 43 L 457 40 L 457 39 L 457 33 L 460 33 L 455 27 L 450 33 L 453 33 L 453 39 L 448 39 Z" fill="#525252"/>
<path d="M 463 27 L 457 27 L 461 31 L 463 31 L 463 27 ZM 449 31 L 453 27 L 447 27 L 447 31 L 449 31 Z" fill="#525252"/>
<rect y="15" x="509" width="2" height="30" fill="#525252"/>
<path d="M 498 29 L 522 29 L 522 31 L 498 31 L 498 29 Z" fill="#525252"/>
<path d="M 495 30 L 501 27 L 501 33 L 495 30 Z" fill="#525252"/>
<path d="M 525 30 L 519 27 L 519 33 L 525 30 Z" fill="#525252"/>
<rect y="26" x="566" width="8" height="18" fill="#525252"/>
<rect y="26" x="558" width="8" height="18" fill="#b4b4b4"/>
<rect y="26" x="574" width="8" height="18" fill="#b4b4b4"/>
<rect y="18" x="565" width="10" height="2" fill="#525252"/>
<path d="M 566 16 L 566 22 L 562 19 L 562 19 L 566 16 Z" fill="#525252"/>
<path d="M 574 16 L 574 22 L 578 19 L 578 19 L 574 16 Z" fill="#525252"/>
<path d="M 703 30.5 C 703 30.5 699.1 21 690 21 C 680.9 21 677 30.5 677 30.5 C 677 30.5 680.9 40 690 40 C 699.1 40 703 30.5 703 30.5 Z" fill="#525252"/>
<path id="Ellipse" d="M 683.0667 30.5 C 683.0667 26.6842 686.1708 23.5909 690 23.5909 C 693.8292 23.5909 696.9333 26.6842 696.9333 30.5 C 696.9333 34.3158 693.8292 37.4091 690 37.4091 C 686.1708 37.4091 683.0667 34.3158 683.0667 30.5 Z" fill="#b4b4b4"/>
<path id="Ellipse2" d="M 686.7645 30.5 C 686.7645 28.7193 688.213 27.2758 690 27.2758 C 691.787 27.2758 693.2355 28.7193 693.2355 30.5 C 693.2355 32.2807 691.787 33.7242 690 33.7242 C 688.213 33.7242 686.7645 32.2807 686.7645 30.5 Z" fill="#525252"/>
<path d="M 643 30.5 C 643 30.5 639.1 21 630 21 C 620.9 21 617 30.5 617 30.5 C 617 30.5 620.9 40 630 40 C 639.1 40 643 30.5 643 30.5 Z" fill="#525252"/>
<path id="Ellipse3" d="M 623.0667 30.5 C 623.0667 26.6842 626.1708 23.5909 630 23.5909 C 633.8292 23.5909 636.9333 26.6842 636.9333 30.5 C 636.9333 34.3158 633.8292 37.4091 630 37.4091 C 626.1708 37.4091 623.0667 34.3158 623.0667 30.5 Z" fill="#b4b4b4"/>
<path id="Ellipse4" d="M 626.7645 30.5 C 626.7645 28.7193 628.213 27.2758 630 27.2758 C 631.787 27.2758 633.2355 28.7193 633.2355 30.5 C 633.2355 32.2807 631.787 33.7242 630 33.7242 C 628.213 33.7242 626.7645 32.2807 626.7645 30.5 Z" fill="#525252"/>
<path id="Line" d="M 644.5 14.5 L 614.5 44.5 " stroke="#525252" stroke-width="2" fill="none"/>
<path d="M 740 23 L 760 23 L 760 25.75 L 753 31.9688 L 752.9844 39.9844 L 747 39.9844 L 747 32 L 740 25.75 L 740 23 Z" fill="#525252"/>
</svg>

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 999 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 993 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 986 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1011 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1009 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1017 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1010 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1006 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 995 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1010 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1006 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 976 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 958 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 965 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 965 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 980 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1016 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1013 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 978 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 638 B

Some files were not shown because too many files have changed in this diff Show More