Add Weather App Sample to showcase Jewel usages

This commit is contained in:
Nebojsa Vuksic 2025-08-08 14:28:26 +02:00 committed by GitHub
commit 2f75a29193
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
65 changed files with 5530 additions and 104 deletions

View File

@ -25,11 +25,16 @@ repositories {
intellijPlatform {
defaultRepositories()
}
// Needed for tests
google()
}
dependencies {
testImplementation(libs.junit)
testImplementation(libs.opentest4j)
testImplementation(libs.hamcrest)
testImplementation(libs.composeuitest)
testImplementation(libs.jewelstandalone)
intellijPlatform {
create(providers.gradleProperty("platformType"), providers.gradleProperty("platformVersion"))

View File

@ -11,7 +11,7 @@ pluginSinceBuild = 251
# IntelliJ Platform Properties -> https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html#configuration-intellij-extension
platformType = IC
platformVersion = 2025.1.1
platformVersion = 2025.1.4.1
# Plugin Dependencies -> https://plugins.jetbrains.com/docs/intellij/plugin-dependencies.html
# Example: platformPlugins = com.jetbrains.php:203.4449.22, org.intellij.scala:2023.3.27@EAP

View File

@ -2,15 +2,22 @@
# libraries
junit = "4.13.2"
opentest4j = "1.3.0"
hamcrest = "2.2"
# Has to be in sync with IntelliJ Platform
composeuitest="1.8.0-alpha04"
jewelstandalone="0.29.0-251.27828"
# plugins
changelog = "2.2.1"
intelliJPlatform = "2.5.0"
intelliJPlatform = "2.7.0"
kotlin = "2.1.20"
[libraries]
junit = { group = "junit", name = "junit", version.ref = "junit" }
opentest4j = { group = "org.opentest4j", name = "opentest4j", version.ref = "opentest4j" }
hamcrest = { group = "org.hamcrest", name = "hamcrest", version.ref = "hamcrest" }
composeuitest = { group = "org.jetbrains.compose.ui", name ="ui-test-junit4-desktop", version.ref="composeuitest" }
jewelstandalone = { group = "org.jetbrains.jewel", name ="jewel-int-ui-standalone", version.ref="jewelstandalone" }
[plugins]
changelog = { id = "org.jetbrains.changelog", version.ref = "changelog" }

View File

@ -0,0 +1,31 @@
package org.jetbrains.plugins.template
import com.intellij.openapi.components.Service
import com.intellij.openapi.components.Service.Level
import com.intellij.platform.util.coroutines.childScope
import kotlinx.coroutines.CoroutineScope
/**
* A service-level class that provides and manages coroutine scopes for a given project.
*
* @constructor Initializes the [CoroutineScopeHolder] with a project-wide coroutine scope.
* @param projectWideCoroutineScope A [CoroutineScope] defining the lifecycle of project-wide coroutines.
*/
@Service(Level.PROJECT)
class CoroutineScopeHolder(private val projectWideCoroutineScope: CoroutineScope) {
/**
* Creates a new coroutine scope as a child of the project-wide coroutine scope with the specified name.
*
* @param name The name for the newly created coroutine scope.
* @return a scope with a [Job] which parent is the [Job] of [projectWideCoroutineScope] scope.
*
* The returned scope can be completed only by cancellation.
* [projectWideCoroutineScope] scope will cancel the returned scope when canceled.
* If the child scope has a narrower lifecycle than [projectWideCoroutineScope] scope,
* then it should be canceled explicitly when not needed,
* otherwise, it will continue to live in the Job hierarchy until termination of the [CoroutineScopeHolder] service.
*/
@Suppress("UnstableApiUsage")
fun createScope(name: String): CoroutineScope = projectWideCoroutineScope.childScope(name)
}

View File

@ -0,0 +1,46 @@
package org.jetbrains.plugins.template.components
import androidx.compose.animation.core.*
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.TextUnit
import org.jetbrains.jewel.foundation.theme.JewelTheme
import org.jetbrains.jewel.ui.component.Text
@Composable
fun PulsingText(
text: String,
isLoading: Boolean,
modifier: Modifier = Modifier,
color: Color = Color.White,
fontSize: TextUnit = JewelTheme.defaultTextStyle.fontSize,
fontWeight: FontWeight? = JewelTheme.defaultTextStyle.fontWeight
) {
val alpha = if (isLoading) {
val infiniteTransition = rememberInfiniteTransition(label = "pulsing_text")
infiniteTransition.animateFloat(
initialValue = 0.3f,
targetValue = 1f,
animationSpec = infiniteRepeatable(
animation = tween(
durationMillis = 1000,
easing = FastOutSlowInEasing
),
repeatMode = RepeatMode.Reverse
),
label = "text_alpha"
).value
} else {
1f
}
Text(
text = text,
color = color.copy(alpha = alpha),
fontSize = fontSize,
fontWeight = fontWeight,
modifier = modifier
)
}

View File

@ -0,0 +1,310 @@
package org.jetbrains.plugins.template.components
import androidx.compose.foundation.clickable
import androidx.compose.foundation.interaction.HoverInteraction
import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.text.input.TextFieldState
import androidx.compose.foundation.text.input.setTextAndPlaceCursorAtEnd
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.input.key.*
import androidx.compose.ui.input.pointer.PointerIcon
import androidx.compose.ui.input.pointer.pointerHoverIcon
import androidx.compose.ui.layout.onSizeChanged
import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.semantics.Role
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.PopupProperties
import kotlinx.coroutines.flow.distinctUntilChanged
import org.jetbrains.jewel.foundation.ExperimentalJewelApi
import org.jetbrains.jewel.ui.component.Icon
import org.jetbrains.jewel.ui.component.PopupMenu
import org.jetbrains.jewel.ui.component.Text
import org.jetbrains.jewel.ui.component.TextField
import org.jetbrains.jewel.ui.icons.AllIconsKeys
import org.jetbrains.plugins.template.ComposeTemplateBundle
import org.jetbrains.plugins.template.weatherApp.model.PreviewableItem
import org.jetbrains.plugins.template.weatherApp.model.Searchable
import org.jetbrains.plugins.template.weatherApp.services.SearchAutoCompletionItemProvider
@OptIn(ExperimentalJewelApi::class)
@Composable
fun <T> SearchBarWithAutoCompletion(
modifier: Modifier = Modifier,
searchAutoCompletionItemProvider: SearchAutoCompletionItemProvider<T>,
textFieldState: TextFieldState,
searchFieldPlaceholder: String = "Type a place name...",
onClear: () -> Unit = {},
onSelectCompletion: (T) -> Unit = {},
) where T : Searchable, T : PreviewableItem {
val focusRequester = remember { FocusRequester() }
val popupController = remember {
CompletionPopupController(searchAutoCompletionItemProvider) { completionItem ->
textFieldState.setTextAndPlaceCursorAtEnd(completionItem.item.label)
onSelectCompletion(completionItem.item)
}
}
val isInputFieldEmpty by remember { derivedStateOf { textFieldState.text.isBlank() } }
LaunchedEffect(Unit) {
snapshotFlow { textFieldState.text.toString() }
.distinctUntilChanged()
.collect { searchTerm ->
if (searchTerm.isEmpty()) {
onClear()
}
popupController.onQueryChanged(searchTerm)
}
}
Box(
modifier = modifier
.padding(8.dp)
) {
var textFieldWidth by remember { mutableIntStateOf(-1) }
TextField(
state = textFieldState,
modifier = Modifier
.onSizeChanged { coordinates -> textFieldWidth = coordinates.width }
.fillMaxWidth()
.handlePopupCompletionKeyEvents(popupController)
.focusRequester(focusRequester),
placeholder = { Text(searchFieldPlaceholder) },
leadingIcon = {
Icon(AllIconsKeys.Actions.Find, contentDescription = null, Modifier.padding(end = 8.dp))
},
trailingIcon = {
if (!isInputFieldEmpty) {
CloseIconButton {
textFieldState.setTextAndPlaceCursorAtEnd("")
}
}
},
)
if (popupController.isVisible) {
PopupMenu(
onDismissRequest = {
popupController.reset()
true
},
horizontalAlignment = Alignment.Start,
modifier = Modifier
// Aligns PopupMenu with TextField
.width(with(LocalDensity.current) { textFieldWidth.toDp() }),
popupProperties = PopupProperties(focusable = false),
) {
popupController.completionItems.forEach { completionItem ->
selectableItem(
completionItem.isSelected,
onClick = {
popupController.onItemClicked(completionItem)
textFieldState.setTextAndPlaceCursorAtEnd(completionItem.item.label)
},
) {
Text(completionItem.item.label)
}
}
}
}
}
}
@Composable
fun CloseIconButton(onClick: () -> Unit) {
val interactionSource = remember { MutableInteractionSource() }
var hovered by remember { mutableStateOf(false) }
LaunchedEffect(interactionSource) {
interactionSource.interactions.collect {
when (it) {
is HoverInteraction.Enter -> hovered = true
is HoverInteraction.Exit -> hovered = false
}
}
}
Icon(
key = if (hovered) AllIconsKeys.Actions.CloseHovered else AllIconsKeys.Actions.Close,
contentDescription = ComposeTemplateBundle.message("weather.app.clear.button.content.description"),
modifier = Modifier
.pointerHoverIcon(PointerIcon.Default)
.clickable(
interactionSource = interactionSource,
indication = null,
role = Role.Button,
) { onClick() },
)
}
internal data class CompletionItem<T : Searchable>(
val item: T,
val isSelected: Boolean,
)
internal class CompletionPopupController<T : Searchable>(
private val itemsProvider: SearchAutoCompletionItemProvider<T>,
private val onSelectCompletion: (CompletionItem<T>) -> Unit = {},
) {
private var selectedItemIndex by mutableIntStateOf(-1)
/**
* Ensures a popup is not shown when the user autocompletes an item.
* Suppresses making popup once onQueryChanged is called after text to TextField is set after autocompletion.
*/
private var skipPopupShowing by mutableStateOf(false)
private val _filteredCompletionItems = mutableStateListOf<CompletionItem<T>>()
val completionItems: List<CompletionItem<T>> get() = _filteredCompletionItems
val selectedItem: CompletionItem<T>
get() = _filteredCompletionItems[selectedItemIndex]
var isVisible by mutableStateOf(false)
private set
fun onSelectionMovedDown() {
moveSelectionTo(normalizeIndex(selectedItemIndex + 1))
}
fun onSelectionMovedUp() {
moveSelectionTo(normalizeIndex(selectedItemIndex - 1))
}
fun onQueryChanged(searchTerm: String) {
if (skipPopupShowing) {
skipPopupShowing = false
return
}
if (searchTerm.isEmpty()) {
hidePopup()
return
}
val newItems = itemsProvider.provideSearchableItems(searchTerm)
.map { CompletionItem(it, false) }
updateFilteredItems(newItems)
moveSelectionToFirstItem()
if (completionItems.isNotEmpty()) {
showPopup()
} else {
hidePopup()
}
}
private fun showPopup() {
isVisible = true
}
private fun hidePopup() {
isVisible = false
}
fun reset() {
hidePopup()
moveSelectionToFirstItem()
clearFilteredItems()
}
fun onItemClicked(clickedItem: CompletionItem<T>) {
doCompleteSelection(clickedItem)
}
fun onSelectionConfirmed() {
doCompleteSelection(this.selectedItem)
}
private fun doCompleteSelection(selectedItem: CompletionItem<T>) {
if (!isVisible) return
skipPopupShowing = true
reset()
onSelectCompletion(selectedItem)
}
private fun updateFilteredItems(newItems: List<CompletionItem<T>>) {
// TODO Can be done in a more efficient way
clearFilteredItems()
_filteredCompletionItems.addAll(newItems)
}
private fun clearFilteredItems() {
_filteredCompletionItems.clear()
}
private fun moveSelectionToFirstItem() {
moveSelectionTo(0)
}
private fun moveSelectionTo(index: Int) {
if (index == selectedItemIndex) return
// Deselect previous item
val previousIndex = selectedItemIndex
if (previousIndex in _filteredCompletionItems.indices) {
_filteredCompletionItems[previousIndex] = _filteredCompletionItems[previousIndex].copy(isSelected = false)
}
// Select a new item
if (index in _filteredCompletionItems.indices) {
_filteredCompletionItems[index] = _filteredCompletionItems[index].copy(isSelected = true)
}
selectedItemIndex = index
}
private fun normalizeIndex(index: Int) = index.coerceIn(0..completionItems.lastIndex)
}
/**
* Handles navigation keyboard key events for the completion popup.
*/
private fun <T : Searchable> Modifier.handlePopupCompletionKeyEvents(
popupController: CompletionPopupController<T>
): Modifier {
return onPreviewKeyEvent { keyEvent ->
if (keyEvent.type != KeyEventType.KeyDown) return@onPreviewKeyEvent false
return@onPreviewKeyEvent when (keyEvent.key) {
Key.Tab, Key.Enter, Key.NumPadEnter -> {
popupController.onSelectionConfirmed()
true
}
Key.DirectionUp -> {
popupController.onSelectionMovedUp()
true
}
Key.DirectionDown -> {
popupController.onSelectionMovedDown()
true
}
Key.Escape -> {
popupController.reset()
true
}
else -> false
}
}
}

View File

@ -1,8 +0,0 @@
package org.jetbrains.plugins.template.services
import com.intellij.openapi.components.Service
@Service
class MyProjectService() {
fun getRandomNumber() = (1..100).random()
}

View File

@ -0,0 +1,54 @@
package org.jetbrains.plugins.template.toolWindow
import androidx.compose.runtime.DisposableEffect
import androidx.compose.runtime.remember
import com.intellij.openapi.components.service
import com.intellij.openapi.project.DumbAware
import com.intellij.openapi.project.Project
import com.intellij.openapi.wm.ToolWindow
import com.intellij.openapi.wm.ToolWindowFactory
import kotlinx.coroutines.Dispatchers
import org.jetbrains.jewel.bridge.addComposeTab
import org.jetbrains.plugins.template.CoroutineScopeHolder
import org.jetbrains.plugins.template.ui.ChatAppSample
import org.jetbrains.plugins.template.weatherApp.model.Location
import org.jetbrains.plugins.template.weatherApp.services.LocationsProvider
import org.jetbrains.plugins.template.weatherApp.ui.WeatherAppViewModel
import org.jetbrains.plugins.template.weatherApp.services.WeatherForecastService
import org.jetbrains.plugins.template.weatherApp.ui.WeatherAppSample
class ComposeSamplesToolWindowFactory : ToolWindowFactory, DumbAware {
override fun createToolWindowContent(project: Project, toolWindow: ToolWindow) {
val coroutineScopeHolder = project.service<CoroutineScopeHolder>()
toolWindow.addComposeTab("Weather App") {
val locationProviderApi = remember { service<LocationsProvider>() }
val viewModel = remember {
val weatherForecastServiceApi = WeatherForecastService(Dispatchers.IO)
WeatherAppViewModel(
listOf(Location("Munich", "Germany")),
coroutineScopeHolder
.createScope(WeatherAppViewModel::class.java.simpleName),
weatherForecastServiceApi
)
}
DisposableEffect(Unit) {
viewModel.onReloadWeatherForecast()
onDispose { viewModel.dispose() }
}
WeatherAppSample(
viewModel,
viewModel,
locationProviderApi
)
}
toolWindow.addComposeTab("Chat App") { ChatAppSample() }
}
override fun shouldBeAvailable(project: Project) = true
}

View File

@ -1,48 +0,0 @@
package org.jetbrains.plugins.template.toolWindow
import androidx.compose.foundation.layout.*
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import com.intellij.openapi.components.service
import com.intellij.openapi.project.DumbAware
import com.intellij.openapi.project.Project
import com.intellij.openapi.wm.ToolWindow
import com.intellij.openapi.wm.ToolWindowFactory
import com.intellij.ui.content.ContentFactory
import org.jetbrains.jewel.bridge.JewelComposePanel
import org.jetbrains.jewel.ui.component.DefaultButton
import org.jetbrains.jewel.ui.component.Text
import org.jetbrains.plugins.template.ComposeTemplateBundle
import org.jetbrains.plugins.template.services.MyProjectService
class MyToolWindowFactory : ToolWindowFactory, DumbAware {
override fun createToolWindowContent(project: Project, toolWindow: ToolWindow) {
val myToolWindow = MyToolWindow()
val content = ContentFactory.getInstance().createContent(myToolWindow.getContent(), null, false)
toolWindow.contentManager.addContent(content)
}
override fun shouldBeAvailable(project: Project) = true
class MyToolWindow() {
private val service = service<MyProjectService>()
fun getContent() = JewelComposePanel {
Column(Modifier.fillMaxWidth().padding(16.dp)) {
var param by remember { mutableStateOf("?") }
Text(ComposeTemplateBundle.message("randomLabel", param))
Spacer(Modifier.height(8.dp))
DefaultButton(onClick = {
param = service.getRandomNumber().toString()
}) {
Text(ComposeTemplateBundle.message("shuffle"))
}
}
}
}
}

View File

@ -0,0 +1,23 @@
package org.jetbrains.plugins.template.ui
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import org.jetbrains.jewel.foundation.theme.JewelTheme
import org.jetbrains.jewel.ui.component.Text
@Composable
fun ChatAppSample() {
Column(
Modifier
.fillMaxWidth()
.padding(16.dp),
verticalArrangement = Arrangement.Center
) {
Text("Not yet implemented.", style = JewelTheme.defaultTextStyle)
}
}

View File

@ -0,0 +1,12 @@
package org.jetbrains.plugins.template.weatherApp
import androidx.compose.ui.graphics.Color
object WeatherAppColors {
val nightWeatherColor = Color(0xFF1A237E)
val coldWeatherColor = Color(0xFF3F51B5)
val coolWeatherColor = Color(0xFF5E35B1)
val mildWeatherColor = Color(0xFF039BE5)
val warmWeatherColor = Color(0xFFFF9800)
val hotWeatherColor = Color(0xFFE91E63)
}

View File

@ -0,0 +1,43 @@
package org.jetbrains.plugins.template.weatherApp.model
import androidx.compose.runtime.Immutable
/**
* Represents a location with a name and associated country.
*
* @property name The name of the location.
* @property country The associated country of the location.
* @property label A textual representation of the location.
*/
@Immutable
data class Location(val name: String, val country: String) : PreviewableItem, Searchable {
override val label: String
get() {
if (country.isBlank()) {
return name.takeIf { it.isNotBlank() } ?: "-"
}
if (name.isBlank()) {
return country.takeIf { it.isNotBlank() } ?: "-"
}
return "$name, $country"
}
override fun matches(query: String): Boolean {
val applicableCandidates = listOf(
label,
name,
country,
name.split(" ").map { it.first() }.joinToString(""),
"${name.first()}${country.first()}",
"${country.first()}${name.first()}"
)
return applicableCandidates.any { it.contains(query, ignoreCase = true) }
}
}
@Immutable
data class SelectableLocation(val location: Location, val isSelected: Boolean)

View File

@ -0,0 +1,10 @@
package org.jetbrains.plugins.template.weatherApp.model
/**
* Represents an item that can be previewed with a label.
*
* @property label A textual representation of the item, often used for display purposes.
*/
interface PreviewableItem {
val label: String
}

View File

@ -0,0 +1,8 @@
package org.jetbrains.plugins.template.weatherApp.model
/**
* Represents an entity that can be filtered by a search query.
*/
interface Searchable {
fun matches(query: String): Boolean
}

View File

@ -0,0 +1,88 @@
package org.jetbrains.plugins.template.weatherApp.model
import org.jetbrains.jewel.ui.icon.IconKey
import org.jetbrains.plugins.template.weatherApp.ui.WeatherIcons
import java.time.LocalDateTime
/**
* Data class representing a daily weather forecast.
*/
data class DailyForecast(
val date: LocalDateTime,
val temperature: Float,
val weatherType: WeatherType,
val humidity: Int,
val windSpeed: Float,
val windDirection: WindDirection
)
/**
* Data class representing weather information to be displayed in the Weather Card.
*/
data class WeatherForecastData(
val location: Location,
val currentWeatherForecast: DailyForecast,
val dailyForecasts: List<DailyForecast> = emptyList()
) {
companion object Companion {
val EMPTY: WeatherForecastData = WeatherForecastData(
Location("", ""),
DailyForecast(
LocalDateTime.now(),
0f,
WeatherType.CLEAR,
0,
0f,
WindDirection.NORTH,
),
emptyList()
)
}
}
/**
* Enum representing different weather types.
*/
enum class WeatherType(val label: String, val dayIconKey: IconKey, val nightIconKey: IconKey) {
CLEAR("Sunny", WeatherIcons.dayClear, WeatherIcons.nightHalfMoonClear),
CLOUDY("Cloudy", dayIconKey = WeatherIcons.cloudy, nightIconKey = WeatherIcons.cloudy),
PARTLY_CLOUDY(
"Partly Cloudy",
dayIconKey = WeatherIcons.dayPartialCloud,
nightIconKey = WeatherIcons.nightHalfMoonPartialCloud
),
RAINY("Rainy", dayIconKey = WeatherIcons.dayRain, nightIconKey = WeatherIcons.nightHalfMoonRain),
RAINY_AND_THUNDER(
"Rainy and Thunder",
dayIconKey = WeatherIcons.dayRainThunder,
nightIconKey = WeatherIcons.nightHalfMoonRainThunder
),
THUNDER("Thunder", dayIconKey = WeatherIcons.thunder, nightIconKey = WeatherIcons.thunder),
SNOWY("Snowy", dayIconKey = WeatherIcons.daySnow, nightIconKey = WeatherIcons.nightHalfMoonSnow),
TORNADO("Stormy", dayIconKey = WeatherIcons.tornado, nightIconKey = WeatherIcons.tornado),
FOG("Fog", dayIconKey = WeatherIcons.fog, nightIconKey = WeatherIcons.fog),
MIST("Mist", dayIconKey = WeatherIcons.mist, nightIconKey = WeatherIcons.mist);
companion object {
fun random(): WeatherType = entries.toTypedArray().random()
}
}
/**
* Enum representing wind directions.
*/
enum class WindDirection(val label: String) {
NORTH(""),
NORTH_EAST(""),
EAST(""),
SOUTH_EAST(""),
SOUTH(""),
SOUTH_WEST(""),
WEST(""),
NORTH_WEST("");
companion object {
fun random(): WindDirection = entries.toTypedArray().random()
}
}

View File

@ -0,0 +1,32 @@
package org.jetbrains.plugins.template.weatherApp.services
import com.intellij.openapi.components.Service
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
import org.jetbrains.plugins.template.weatherApp.model.Location
@Service
class LocationsProvider : SearchAutoCompletionItemProvider<Location> {
private val locationStateFlow = MutableStateFlow(
listOf(
Location("Munich", "Germany"),
Location("Belgrade", "Serbia"),
Location("Berlin", "Germany"),
Location("Rome", "Italy"),
Location("Paris", "France"),
Location("Sydney", "Australia"),
Location("Moscow", "Russia"),
Location("Tokyo", "Japan"),
Location("New York", "USA"),
)
)
fun provideLocations(): StateFlow<List<Location>> = locationStateFlow.asStateFlow()
override fun provideSearchableItems(searchTerm: String): List<Location> {
return locationStateFlow
.value
.filter { it.matches(searchTerm) }
}
}

View File

@ -0,0 +1,16 @@
package org.jetbrains.plugins.template.weatherApp.services
import org.jetbrains.plugins.template.weatherApp.model.Searchable
/**
* Defines a provider interface for auto-completion items based on a search query.
*
* Implementations of this interface are responsible for supplying a filtered list of
* items that match the given search term. These items must conform to the [Searchable] interface,
* which ensures that they can be evaluated against the query.
*
* @param T The type of items provided by this interface, which must extend [Searchable].
*/
interface SearchAutoCompletionItemProvider<T : Searchable> {
fun provideSearchableItems(searchTerm: String): List<T>
}

View File

@ -0,0 +1,100 @@
package org.jetbrains.plugins.template.weatherApp.services
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.withContext
import kotlinx.coroutines.yield
import org.jetbrains.plugins.template.weatherApp.model.*
import java.time.LocalDate
import java.time.LocalDateTime
import java.time.LocalTime
import kotlin.coroutines.CoroutineContext
import kotlin.random.Random
interface WeatherForecastServiceApi {
/**
* Suspending function that returns Result<WeatherForecastData>.
* This allows callers to handle success/failure explicitly.
*
* @param location The location to get weather data for
* @return Result containing WeatherForecastData on success or exception on failure
*/
suspend fun loadWeatherForecastFor(location: Location): Result<WeatherForecastData>
}
class WeatherForecastService(
private val networkCoroutineContext: CoroutineContext = Dispatchers.IO,
) : WeatherForecastServiceApi {
/**
* Function that returns a weather forecast for provided [location] param.
*
* @param location The location to get weather data for
* @return Result containing WeatherForecastData on success or exception on failure
*/
override suspend fun loadWeatherForecastFor(location: Location): Result<WeatherForecastData> {
return withContext(networkCoroutineContext) {
runCatching { getWeatherData(location) }
}
}
/**
* Provides mock weather data for demonstration purposes.
* In a real application, this would fetch data from a weather API.
*/
private suspend fun getWeatherData(location: Location): WeatherForecastData {
val currentTime = LocalDateTime.of(LocalDate.now(), getRandomTime())
yield() // Check cancellation
// Generate 7-day forecast data
val dailyForecasts = generateDailyForecasts(currentTime)
// Simulates a network request and stops the execution in case the coroutine
// that launched the getWeatherData task is canceled
delay(3000)
return WeatherForecastData(
location = location,
dailyForecasts.first(),
dailyForecasts = dailyForecasts.drop(1)
)
}
/**
* Generates mock daily forecasts for 7 days starting from the given date.
*/
private fun generateDailyForecasts(startDate: LocalDateTime): List<DailyForecast> {
val forecasts = mutableListOf<DailyForecast>()
for (i in 0 until 8) {
val forecastDate = startDate.plusDays(i.toLong())
val temperature = (-10..40).random().toFloat()
val windSpeed = (0..30).random().toFloat()
val humidity = (30..90).random()
val weatherType = WeatherType.random()
val windDirection = WindDirection.random()
forecasts.add(
DailyForecast(
date = forecastDate,
temperature = temperature,
weatherType = weatherType,
humidity = humidity,
windSpeed = windSpeed,
windDirection = windDirection
)
)
}
return forecasts
}
private fun getRandomTime(): LocalTime {
val hour = Random.nextInt(0, 24)
val minute = Random.nextInt(0, 60)
val second = Random.nextInt(0, 60)
return LocalTime.of(hour, minute, second)
}
}

View File

@ -0,0 +1,200 @@
package org.jetbrains.plugins.template.weatherApp.ui
import androidx.compose.foundation.layout.*
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.collectAsState
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import org.jetbrains.jewel.foundation.lazy.SelectableLazyColumn
import org.jetbrains.jewel.foundation.lazy.SelectionMode
import org.jetbrains.jewel.foundation.lazy.itemsIndexed
import org.jetbrains.jewel.foundation.lazy.rememberSelectableLazyListState
import org.jetbrains.jewel.foundation.theme.JewelTheme
import org.jetbrains.jewel.ui.component.*
import org.jetbrains.jewel.ui.icon.IconKey
import org.jetbrains.jewel.ui.icons.AllIconsKeys
import org.jetbrains.plugins.template.ComposeTemplateBundle
import org.jetbrains.plugins.template.weatherApp.model.Location
import org.jetbrains.plugins.template.weatherApp.services.*
import org.jetbrains.plugins.template.weatherApp.ui.components.SearchToolbarMenu
import org.jetbrains.plugins.template.weatherApp.ui.components.WeatherDetailsCard
@Composable
fun WeatherAppSample(
myLocationViewModel: MyLocationsViewModelApi,
weatherViewModelApi: WeatherViewModelApi,
searchAutoCompletionItemProvider: SearchAutoCompletionItemProvider<Location>
) {
HorizontalSplitLayout(
first = {
LeftColumn(
myLocationViewModel,
modifier = Modifier
.fillMaxSize()
.padding(start = 8.dp, end = 8.dp)
)
},
second = {
RightColumn(
myLocationViewModel,
weatherViewModelApi,
searchAutoCompletionItemProvider,
modifier = Modifier
.fillMaxSize()
.padding(start = 8.dp, end = 8.dp)
)
},
modifier = Modifier
.fillMaxSize()
.padding(all = 8.dp),
firstPaneMinWidth = 100.dp,
secondPaneMinWidth = 300.dp,
state = rememberSplitLayoutState(.2f)
)
}
@Composable
private fun LeftColumn(
myLocationsViewModelApi: MyLocationsViewModelApi,
modifier: Modifier = Modifier,
) {
Column(modifier) {
GroupHeader(
ComposeTemplateBundle.message("weather.app.my.locations.header.text"),
modifier = Modifier
.wrapContentHeight()
.fillMaxWidth()
)
Spacer(modifier = Modifier.height(10.dp))
MyLocationsListWithEmptyListPlaceholder(Modifier.fillMaxSize(), myLocationsViewModelApi)
}
}
@Composable
fun MyLocationsListWithEmptyListPlaceholder(
modifier: Modifier = Modifier,
myLocationsViewModelApi: MyLocationsViewModelApi
) {
val myLocationsUIState =
myLocationsViewModelApi.myLocationsUIStateFlow.collectAsState(LocationsUIState.empty()).value
if (!myLocationsUIState.isEmpty) {
MyLocationList(myLocationsUIState, modifier, myLocationsViewModelApi)
} else {
EmptyListPlaceholder(modifier)
}
}
@Composable
private fun EmptyListPlaceholder(
modifier: Modifier,
placeholderText: String = ComposeTemplateBundle.message("weather.app.my.locations.empty.list.placeholder.text"),
placeholderIcon: IconKey = AllIconsKeys.Actions.AddList
) {
Column(
modifier = modifier.fillMaxSize().padding(16.dp),
verticalArrangement = Arrangement.Top,
horizontalAlignment = Alignment.CenterHorizontally
) {
Icon(
placeholderIcon,
contentDescription = ComposeTemplateBundle.message("weather.app.my.locations.empty.list.placeholder.icon.content.description"),
Modifier.size(32.dp),
tint = Color.White
)
Spacer(modifier = Modifier.height(8.dp))
Text(
text = placeholderText,
style = JewelTheme.defaultTextStyle,
textAlign = TextAlign.Center
)
}
}
@Composable
private fun MyLocationList(
myLocationsUIState: LocationsUIState,
modifier: Modifier,
myLocationsViewModelApi: MyLocationsViewModelApi
) {
val listState = rememberSelectableLazyListState()
// JEWEL-938 This will trigger on SelectableLazyColum's `onSelectedIndexesChange` callback
LaunchedEffect(myLocationsUIState) {
var lastActiveItemIndex = -1
val selectedItemKeys = mutableSetOf<String>()
myLocationsUIState.locations.forEachIndexed { index, location ->
if (index == myLocationsUIState.selectedIndex) {
if (lastActiveItemIndex == -1) {
// Only the first selected item should be active
lastActiveItemIndex = index
}
// Must match the key used in the `items()` call's `key` parameter to ensure correct item identity.
selectedItemKeys.add(location.label)
}
}
// Sets the first selected item as an active item to avoid triggering on click event when user clocks on it
listState.lastActiveItemIndex = lastActiveItemIndex
// Sets keys of selected items
listState.selectedKeys = selectedItemKeys
}
SelectableLazyColumn(
modifier = modifier,
selectionMode = SelectionMode.Single,
state = listState,
onSelectedIndexesChange = { indices ->
val selectedLocationIndex = indices.firstOrNull() ?: return@SelectableLazyColumn
myLocationsViewModelApi.onLocationSelected(selectedLocationIndex)
},
) {
itemsIndexed(
items = myLocationsUIState.locations,
key = { _, item -> item.label },
) { index, item ->
SimpleListItem(text = item.label, isSelected = myLocationsUIState.selectedIndex == index, isActive = isActive)
}
}
}
@Composable
private fun RightColumn(
myLocationViewModel: MyLocationsViewModelApi,
weatherViewModelApi: WeatherViewModelApi,
searchAutoCompletionItemProvider: SearchAutoCompletionItemProvider<Location>,
modifier: Modifier = Modifier,
) {
val weatherForecastData = weatherViewModelApi
.weatherForecastUIState
.collectAsState(WeatherForecastUIState.Empty).value
Column(modifier) {
SearchToolbarMenu(
searchAutoCompletionItemProvider = searchAutoCompletionItemProvider,
confirmButtonText = ComposeTemplateBundle.message("weather.app.search.toolbar.menu.add.button.text"),
onSearchPerformed = { place ->
weatherViewModelApi.onLoadWeatherForecast(place)
},
onSearchConfirmed = { place ->
myLocationViewModel.onAddLocation(place)
}
)
WeatherDetailsCard(
modifier = Modifier
.fillMaxWidth()
.align(Alignment.CenterHorizontally),
weatherForecastData
) { location ->
weatherViewModelApi.onLoadWeatherForecast(location)
}
}
}

View File

@ -0,0 +1,326 @@
package org.jetbrains.plugins.template.weatherApp.ui
import com.intellij.openapi.Disposable
import kotlinx.coroutines.*
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.asStateFlow
import org.jetbrains.plugins.template.weatherApp.model.Location
import org.jetbrains.plugins.template.weatherApp.model.SelectableLocation
import org.jetbrains.plugins.template.weatherApp.model.WeatherForecastData
import org.jetbrains.plugins.template.weatherApp.services.WeatherForecastServiceApi
/**
* Defines the contract for managing and observing location-related data in the application.
*
* This interface provides methods for adding, deleting, and selecting locations, as well as
* a flow to observe the list of selectable locations. Implementations are expected to handle
* location-related logic and state management.
*/
interface MyLocationsViewModelApi : Disposable {
fun onAddLocation(locationToAdd: Location)
fun onDeleteLocation(locationToDelete: Location)
fun onLocationSelected(selectedLocationIndex: Int)
val myLocationsUIStateFlow: Flow<LocationsUIState>
}
/**
* Interface representing a ViewModel for managing weather-related data
* and user interactions.
*/
interface WeatherViewModelApi : Disposable {
val weatherForecastUIState: Flow<WeatherForecastUIState>
fun onLoadWeatherForecast(location: Location)
fun onReloadWeatherForecast()
}
/**
* Represents the state of a weather data fetching process.
*
* This class is sealed, meaning it can have a fixed set of subclasses
* that represent each possible state of the process. It is designed to
* handle and encapsulate the different phases or outcomes when fetching
* weather information, such as loading, success, error, or empty state.
*
* Subclasses:
* - `Loading`: Indicates that the weather data is currently being fetched.
* - `Success`: Indicates that the weather data was successfully fetched and
* contains the loaded data of type `WeatherForecastData`.
* - `Error`: Indicates a failure in fetching the weather data, carrying the
* error message and optional cause details.
* - `Empty`: Indicates that no weather data is available, typically because
* no location has been selected.
*/
sealed class WeatherForecastUIState {
data class Loading(val location: Location) : WeatherForecastUIState()
data class Success(val weatherForecastData: WeatherForecastData) : WeatherForecastUIState()
data class Error(val message: String, val location: Location, val cause: Throwable? = null) :
WeatherForecastUIState()
object Empty : WeatherForecastUIState() // When no location is selected
fun getLocationOrNull(): Location? {
return when (this) {
Empty -> null
is Error -> location
is Loading -> location
is Success -> weatherForecastData.location
}
}
val isLoading: Boolean get() = this is Loading
}
/**
* UI state object for locations and selection
*/
class LocationsUIState private constructor(
val locations: List<Location>,
val selectedIndex: Int
) {
private constructor(locations: List<Location>) : this(locations, if (locations.isEmpty()) -1 else 0)
init {
if (locations.isEmpty()) {
require(selectedIndex == -1) {
"For an empty list, selected index has to be -1."
}
} else {
require(selectedIndex in locations.indices) {
"Selected index has to be in range from 0 to ${locations.lastIndex}."
}
}
}
/**
* Get the currently selected location
*/
val selectedLocation: Location?
get() = locations.getOrNull(selectedIndex)
val isEmpty: Boolean get() = locations.isEmpty()
/**
* Convert to UI representation with selection state
*/
fun toSelectableLocations(): List<SelectableLocation> {
return locations.mapIndexed { index, location ->
SelectableLocation(location, index == selectedIndex)
}
}
/**
* Create new state with a location added
*/
fun withLocationAdded(locationToAdd: Location): LocationsUIState {
val existingIndex = locations.indexOf(locationToAdd)
return if (existingIndex >= 0) {
// Location exists, just select it
LocationsUIState(locations = locations, selectedIndex = existingIndex)
} else {
// Add a new location and select it
val newLocations = locations + locationToAdd
LocationsUIState(
locations = newLocations,
selectedIndex = newLocations.lastIndex
)
}
}
/**
* Create a new state with a location removed
*/
fun withLocationDeleted(locationToRemove: Location): LocationsUIState {
val indexToDelete = locations.indexOf(locationToRemove)
if (indexToDelete < 0) return this // Location not found
val newLocations = locations - locationToRemove
val newSelectedIndex = when {
newLocations.isEmpty() -> -1
indexToDelete <= selectedIndex -> (selectedIndex - 1).coerceIn(0, newLocations.lastIndex)
else -> selectedIndex // Deleted item after selected, no change
}
return LocationsUIState(
locations = newLocations,
selectedIndex = newSelectedIndex
)
}
/**
* Create new state with different selection
*/
fun withItemAtIndexSelected(newIndex: Int): LocationsUIState {
if (newIndex == selectedIndex) return this
return LocationsUIState(locations = locations, selectedIndex = newIndex)
}
override fun equals(other: Any?): Boolean {
if (this === other) return true
if (javaClass != other?.javaClass) return false
other as LocationsUIState
if (selectedIndex != other.selectedIndex) return false
if (locations != other.locations) return false
return true
}
override fun hashCode(): Int {
var result = selectedIndex
result = 31 * result + locations.hashCode()
return result
}
companion object {
/**
* Initializes a `LocationsUIState` object with the given list of locations.
* The initial selection index is set to `-1` if the list is empty or `0` if it contains locations.
*
* @param locations The list of locations to initialize the state with.
* @return The initialized `LocationsUIState` containing the provided locations and selection state.
*/
fun initial(locations: List<Location>): LocationsUIState = LocationsUIState(locations = locations)
/**
* Creates an empty instance of `LocationsUIState` with no locations and a default selection state.
*
* @return A `LocationsUIState` initialized with an empty list of locations.
*/
fun empty(): LocationsUIState = initial(emptyList())
}
}
/**
* A ViewModel responsible for managing the user's locations and corresponding weather data.
*
* This class coordinates the interaction between the UI, locations, and weather data. It provides
* functionality to add, delete, select locations, and reload weather forecasts. Additionally, it
* supplies observable state flows for the list of selectable locations and the currently selected
* location's weather forecast.
*
* @property myInitialLocations The initial list of user-defined locations.
* @property viewModelScope The coroutine scope in which this ViewModel operates.
* @property weatherService The service responsible for fetching weather forecasts for given locations.
*/
class WeatherAppViewModel(
myInitialLocations: List<Location>,
private val viewModelScope: CoroutineScope,
private val weatherService: WeatherForecastServiceApi,
) : MyLocationsViewModelApi, WeatherViewModelApi {
private var currentWeatherJob: Job? = null
private val _myLocationsUIStateFlow = MutableStateFlow(LocationsUIState.initial(myInitialLocations))
/**
* A state flow representing the current UI state of locations, including the list of locations
* and the selected location index. This is observed by the UI layer to render location data and
* selection state dynamically.
*
* This ensures that the state is safely encapsulated and modifications only occur through
* authorized ViewModel methods.
*
* @see LocationsUIState
*/
override val myLocationsUIStateFlow: Flow<LocationsUIState> = _myLocationsUIStateFlow.asStateFlow()
private val _weatherState = MutableStateFlow<WeatherForecastUIState>(WeatherForecastUIState.Empty)
/**
* A flow representing the current UI state of the weather forecast.
*
* This flow emits instances of [WeatherForecastUIState], which encapsulate information
* about the state of weather data loading and processing. The emitted states can represent
* scenarios such as the data being loaded, successfully fetched, an error occurring, or
* the absence of data when no location is selected.
*
* Observers of this flow can react to these state changes to update the UI accordingly.
*/
override val weatherForecastUIState: Flow<WeatherForecastUIState> = _weatherState.asStateFlow()
override fun onAddLocation(locationToAdd: Location) {
val newState = _myLocationsUIStateFlow.value.withLocationAdded(locationToAdd)
updateLocationsUIStateWith(newState)
if (_weatherState.value.getLocationOrNull() != locationToAdd) {
onReloadWeatherForecast()
}
}
override fun onDeleteLocation(locationToDelete: Location) {
val newState = _myLocationsUIStateFlow.value.withLocationDeleted(locationToDelete)
updateLocationsUIStateWith(newState)
onReloadWeatherForecast()
}
override fun onLocationSelected(selectedLocationIndex: Int) {
val newState = _myLocationsUIStateFlow.value.withItemAtIndexSelected(selectedLocationIndex)
updateLocationsUIStateWith(newState)
if (_weatherState.value.getLocationOrNull() != newState.selectedLocation) {
onReloadWeatherForecast()
}
}
override fun onReloadWeatherForecast() {
_myLocationsUIStateFlow.value.selectedLocation?.let { location ->
onLoadWeatherForecast(location)
}
}
override fun onLoadWeatherForecast(location: Location) {
currentWeatherJob?.cancel()
currentWeatherJob = viewModelScope.launch {
_weatherState.value = WeatherForecastUIState.Loading(location)
weatherService.loadWeatherForecastFor(location)
.onSuccess { weatherData ->
_weatherState.value = WeatherForecastUIState.Success(weatherData)
}.onFailure { error ->
if (error is CancellationException) {
throw error
}
_weatherState.value = errorStateFor(location, error)
}
}
}
/**
* Cancels all coroutines running within the context of the ViewModel's scope.
*
* This method is used to release resources and stop ongoing tasks when the ViewModel
* is no longer needed, ensuring proper cleanup of coroutine-based operations.
*/
override fun dispose() {
viewModelScope.cancel()
}
private fun updateLocationsUIStateWith(newState: LocationsUIState) {
_myLocationsUIStateFlow.value = newState
}
private fun errorStateFor(
location: Location,
error: Throwable
): WeatherForecastUIState.Error = WeatherForecastUIState.Error(
"Failed to load weather forecast for ${location.label}",
location,
error
)
}

View File

@ -0,0 +1,63 @@
package org.jetbrains.plugins.template.weatherApp.ui
import org.jetbrains.jewel.ui.icon.IconKey
import org.jetbrains.jewel.ui.icon.PathIconKey
object WeatherIcons {
// Precipitation
val rain: IconKey = PathIconKey("icons/weather/rain.svg", WeatherIcons::class.java)
val rainThunder: IconKey = PathIconKey("icons/weather/rain_thunder.svg", WeatherIcons::class.java)
val sleet: IconKey = PathIconKey("icons/weather/sleet.svg", WeatherIcons::class.java)
val snow: IconKey = PathIconKey("icons/weather/snow.svg", WeatherIcons::class.java)
val snowThunder: IconKey = PathIconKey("icons/weather/snow_thunder.svg", WeatherIcons::class.java)
// Severe weather
val thunder: IconKey = PathIconKey("icons/weather/thunder.svg", WeatherIcons::class.java)
val tornado: IconKey = PathIconKey("icons/weather/tornado.svg", WeatherIcons::class.java)
// Angry/Storm conditions
val angryClouds: IconKey = PathIconKey("icons/weather/angry_clouds.svg", WeatherIcons::class.java)
// Basic cloud conditions
val cloudy: IconKey = PathIconKey("icons/weather/cloudy.svg", WeatherIcons::class.java)
val overcast: IconKey = PathIconKey("icons/weather/overcast.svg", WeatherIcons::class.java)
// Day conditions
val dayClear: IconKey = PathIconKey("icons/weather/day_clear.svg", WeatherIcons::class.java)
val dayPartialCloud: IconKey = PathIconKey("icons/weather/day_partial_cloud.svg", WeatherIcons::class.java)
val dayRain: IconKey = PathIconKey("icons/weather/day_rain.svg", WeatherIcons::class.java)
val dayRainThunder: IconKey = PathIconKey("icons/weather/day_rain_thunder.svg", WeatherIcons::class.java)
val daySleet: IconKey = PathIconKey("icons/weather/day_sleet.svg", WeatherIcons::class.java)
val daySnow: IconKey = PathIconKey("icons/weather/day_snow.svg", WeatherIcons::class.java)
val daySnowThunder: IconKey = PathIconKey("icons/weather/day_snow_thunder.svg", WeatherIcons::class.java)
// Atmospheric conditions
val fog: IconKey = PathIconKey("icons/weather/fog.svg", WeatherIcons::class.java)
val mist: IconKey = PathIconKey("icons/weather/mist.svg", WeatherIcons::class.java)
val wind: IconKey = PathIconKey("icons/weather/wind.svg", WeatherIcons::class.java)
// Night - Full Moon conditions
val nightFullMoonClear: IconKey = PathIconKey("icons/weather/night_full_moon_clear.svg", WeatherIcons::class.java)
val nightFullMoonPartialCloud: IconKey =
PathIconKey("icons/weather/night_full_moon_partial_cloud.svg", WeatherIcons::class.java)
val nightFullMoonRain: IconKey = PathIconKey("icons/weather/night_full_moon_rain.svg", WeatherIcons::class.java)
val nightFullMoonRainThunder: IconKey =
PathIconKey("icons/weather/night_full_moon_rain_thunder.svg", WeatherIcons::class.java)
val nightFullMoonSleet: IconKey = PathIconKey("icons/weather/night_full_moon_sleet.svg", WeatherIcons::class.java)
val nightFullMoonSnow: IconKey = PathIconKey("icons/weather/night_full_moon_snow.svg", WeatherIcons::class.java)
val nightFullMoonSnowThunder: IconKey =
PathIconKey("icons/weather/night_full_moon_snow_thunder.svg", WeatherIcons::class.java)
// Night - Half Moon conditions
val nightHalfMoonClear: IconKey = PathIconKey("icons/weather/night_half_moon_clear.svg", WeatherIcons::class.java)
val nightHalfMoonPartialCloud: IconKey =
PathIconKey("icons/weather/night_half_moon_partial_cloud.svg", WeatherIcons::class.java)
val nightHalfMoonRain: IconKey = PathIconKey("icons/weather/night_half_moon_rain.svg", WeatherIcons::class.java)
val nightHalfMoonRainThunder: IconKey =
PathIconKey("icons/weather/night_half_moon_rain_thunder.svg", WeatherIcons::class.java)
val nightHalfMoonSleet: IconKey = PathIconKey("icons/weather/night_half_moon_sleet.svg", WeatherIcons::class.java)
val nightHalfMoonSnow: IconKey = PathIconKey("icons/weather/night_half_moon_snow.svg", WeatherIcons::class.java)
val nightHalfMoonSnowThunder: IconKey =
PathIconKey("icons/weather/night_half_moon_snow_thunder.svg", WeatherIcons::class.java)
}

View File

@ -0,0 +1,177 @@
package org.jetbrains.plugins.template.weatherApp.ui.components
import org.jetbrains.jewel.ui.painter.PainterProviderScope
import org.jetbrains.jewel.ui.painter.PainterSvgPatchHint
import org.w3c.dom.Document
import org.w3c.dom.Element
import org.w3c.dom.Node
import org.w3c.dom.NodeList
import java.io.IOException
import java.io.StringWriter
import javax.xml.transform.OutputKeys
import javax.xml.transform.Transformer
import javax.xml.transform.TransformerException
import javax.xml.transform.TransformerFactory
import javax.xml.transform.dom.DOMSource
import javax.xml.transform.stream.StreamResult
import javax.xml.xpath.XPathConstants
import javax.xml.xpath.XPathFactory
object EmbeddedToInlineCssSvgTransformerHint : PainterSvgPatchHint {
private val CSS_STYLEABLE_TAGS = listOf(
"linearGradient", "radialGradient", "pattern",
"filter", "clipPath", "mask", "symbol",
"marker", "font", "image"
)
override fun PainterProviderScope.patch(element: Element) {
element.inlineEmbeddedStylesCSS()
}
private fun Element.inlineEmbeddedStylesCSS(): Element {
val svgElement = this
svgElement.moveStyleableElementsToDefsNode(CSS_STYLEABLE_TAGS)
val cache = svgElement.parseCssDefinitionsInStylesElement()
svgElement.inlineStyleDeclarations(cache)
return svgElement
}
}
private fun Element.getElementsWithAttributeXPath(attributeName: String): List<Element> {
val xPath = XPathFactory.newInstance().newXPath()
val eligibleNodes = xPath.evaluate(
"//*[@$attributeName]",
this,
XPathConstants.NODESET
) as NodeList
return buildList {
for (i in 0 until eligibleNodes.length) {
eligibleNodes.item(i)
.let { node -> if (node is Element) add(node) }
}
}
}
private fun Element.inlineStyleDeclarations(cache: Map<String, Map<String, String>>) {
val classAttributeName = "class"
val styleElementName = "style"
for (element in getElementsWithAttributeXPath(classAttributeName)) {
if (element.hasAttribute(classAttributeName)) {
val cssClassId = element.getAttribute(classAttributeName)
if (cssClassId.isBlank()) continue
element.removeAttribute(classAttributeName)
// Set a new "style" attribute (example value)
val styleAttributesCache = cache[cssClassId] ?: continue
val styleAttributes = styleAttributesCache.entries.joinToString(";") { "${it.key}:${it.value}" }
element.setAttribute(styleElementName, styleAttributes)
}
}
this.getSingleChildElement(styleElementName)
?.let { styleNode -> this.removeChild(styleNode) }
}
private fun Element.moveStyleableElementsToDefsNode(stylableElementTags: List<String>) {
// Find or create <defs> element
val defs = ensureDefsNodeExists()
// For each tag, find all elements and move those not already inside defs
stylableElementTags.forEach { tag ->
val nodes = getElementsByTagName(tag)
(0..<nodes.length)
.map { nodes.item(it) to defs }
.forEach { (nodeToMove, newParentNode) ->
if (nodeToMove.parentNode != newParentNode) {
newParentNode.appendChild(nodeToMove)
}
}
}
}
/**
* See: https://www.w3.org/TR/2018/CR-SVG2-20181004/struct.html#DefsElement
*/
private fun Element.ensureDefsNodeExists(): Node {
var defsNode = getElementsByTagName("defs").item(0)
if (defsNode == null) {
defsNode = this.ownerDocument.createElement("defs")
insertBefore(defsNode, this.firstChild)
}
return defsNode
}
private fun Element.parseCssDefinitionsInStylesElement(): Map<String, Map<String, String>> {
val styleNode = this.getChildElements("style")
.firstOrNull() ?: return emptyMap()
val cssClassIdRegex = Regex("""\.([^\s{]+)\s*\{\s*([^}]+)\s*}""")
return buildMap {
cssClassIdRegex.findAll(styleNode.textContent).forEach { match ->
val styleId = match.groups[1]?.value ?: return@forEach
val styleAttributes = match.groups[2]?.value ?: return@forEach
val styleAttributesMap = styleAttributes
.split(";")
.filter { it.isNotBlank() }
.associate { attributeKeyValue ->
val (key, value) = attributeKeyValue.trim().split(":")
key.trim() to value.trim()
}
this[styleId] = styleAttributesMap
}
}
}
private fun Element.getChildElements(tagName: String): List<Element> {
val childNodes = childNodes
val result = ArrayList<Element>()
for (i in 0 until childNodes.length) {
val node = childNodes.item(i)
if (node is Element && tagName == node.tagName) {
result.add(node)
}
}
return result
}
private fun Element.getSingleChildElement(tagName: String): Element? {
return getChildElements(tagName).getOrNull(0)
}
private class PrintableElement(private val element: Element) {
fun writeToString(): String {
return element.ownerDocument.writeToString()
}
private fun Document.writeToString(): String {
val tf = TransformerFactory.newInstance()
val transformer: Transformer
try {
transformer = tf.newTransformer()
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes")
val writer = StringWriter()
transformer.transform(DOMSource(this), StreamResult(writer))
return writer.buffer.toString()
} catch (e: TransformerException) {
error("Unable to render XML document to string: ${e.message}")
} catch (e: IOException) {
error("Unable to render XML document to string: ${e.message}")
}
}
}

View File

@ -0,0 +1,84 @@
package org.jetbrains.plugins.template.weatherApp.ui.components
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.text.input.rememberTextFieldState
import androidx.compose.foundation.text.input.setTextAndPlaceCursorAtEnd
import androidx.compose.runtime.Composable
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import org.jetbrains.jewel.ui.component.Icon
import org.jetbrains.jewel.ui.component.OutlinedButton
import org.jetbrains.jewel.ui.component.Text
import org.jetbrains.jewel.ui.icons.AllIconsKeys
import org.jetbrains.plugins.template.ComposeTemplateBundle
import org.jetbrains.plugins.template.components.SearchBarWithAutoCompletion
import org.jetbrains.plugins.template.weatherApp.model.PreviewableItem
import org.jetbrains.plugins.template.weatherApp.model.Searchable
import org.jetbrains.plugins.template.weatherApp.services.SearchAutoCompletionItemProvider
@Composable
fun <T> SearchToolbarMenu(
searchAutoCompletionItemProvider: SearchAutoCompletionItemProvider<T>,
confirmButtonText: String = "Confirm",
onSearchPerformed: (T) -> Unit = {},
onSearchConfirmed: (T) -> Unit = {},
) where T : Searchable, T : PreviewableItem {
val isConfirmButtonVisible = remember { mutableStateOf(false) }
val previewItem = remember { mutableStateOf<T?>(null) }
val searchTextFieldState = rememberTextFieldState("")
Row(
modifier = Modifier
.fillMaxWidth()
.padding(horizontal = 2.dp, vertical = 4.dp)
.wrapContentHeight(),
horizontalArrangement = Arrangement.End,
verticalAlignment = Alignment.CenterVertically,
) {
if (isConfirmButtonVisible.value) {
OutlinedButton(
onClick = {
previewItem.value?.let { onSearchConfirmed(it) }
searchTextFieldState.setTextAndPlaceCursorAtEnd("")
isConfirmButtonVisible.value = false
previewItem.value = null
},
modifier = Modifier
.align(Alignment.CenterVertically),
) {
Row(horizontalArrangement = Arrangement.spacedBy(4.dp)) {
Icon(
AllIconsKeys.Actions.AddList,
contentDescription = ComposeTemplateBundle.message("weather.app.search.toolbar.menu.add.button.content.description")
)
Text(confirmButtonText)
}
}
}
Spacer(modifier = Modifier.width(4.dp))
SearchBarWithAutoCompletion(
modifier = Modifier
.fillMaxWidth(0.4f)
.align(Alignment.CenterVertically),
searchAutoCompletionItemProvider = searchAutoCompletionItemProvider,
textFieldState = searchTextFieldState,
onClear = {
isConfirmButtonVisible.value = false
previewItem.value = null
},
onSelectCompletion = { autocompletedItem ->
isConfirmButtonVisible.value = true
previewItem.value = autocompletedItem
onSearchPerformed(autocompletedItem)
},
)
}
}

View File

@ -0,0 +1,667 @@
package org.jetbrains.plugins.template.weatherApp.ui.components
import androidx.compose.animation.core.*
import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.background
import androidx.compose.foundation.border
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.LazyRow
import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.draw.rotate
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import org.jetbrains.jewel.foundation.theme.JewelTheme
import org.jetbrains.jewel.ui.component.*
import org.jetbrains.jewel.ui.icons.AllIconsKeys
import org.jetbrains.plugins.template.ComposeTemplateBundle
import org.jetbrains.plugins.template.components.PulsingText
import org.jetbrains.plugins.template.weatherApp.WeatherAppColors
import org.jetbrains.plugins.template.weatherApp.model.DailyForecast
import org.jetbrains.plugins.template.weatherApp.model.Location
import org.jetbrains.plugins.template.weatherApp.model.WeatherForecastData
import org.jetbrains.plugins.template.weatherApp.ui.WeatherForecastUIState
import org.jetbrains.plugins.template.weatherApp.ui.WeatherIcons
import java.time.LocalDateTime
import java.time.format.DateTimeFormatter
import java.time.format.TextStyle
import java.util.*
/**
* Displays the weather details in a styled card format. This card presents various weather information
* including the current time, temperature, city name, wind details, humidity, and a 7-day forecast.
* The appearance and content dynamically change based on the given weather state.
*
* @param modifier Modifier to be applied to the card layout.
* @param weatherForecastState The current state of the weather forecast, which dictates the displayed content
* and appearance. It can represent loading, success, error, or empty states.
* @param onReloadWeatherData Callback invoked to reload weather data when the refresh action is triggered. It
* provides the location for which the weather data should be fetched.
*/
@OptIn(ExperimentalFoundationApi::class)
@Composable
fun WeatherDetailsCard(
modifier: Modifier = Modifier,
weatherForecastState: WeatherForecastUIState,
onReloadWeatherData: (Location) -> Unit
) {
val (cardColor, textColor) = when (weatherForecastState) {
is WeatherForecastUIState.Success -> {
val isNightTime = isNightTime(weatherForecastState.weatherForecastData.currentWeatherForecast.date)
val color =
getCardColorByTemperature(
weatherForecastState.weatherForecastData.currentWeatherForecast.temperature,
isNightTime
)
color to Color.White
}
is WeatherForecastUIState.Loading -> WeatherAppColors.mildWeatherColor to Color.White
is WeatherForecastUIState.Error -> WeatherAppColors.hotWeatherColor to Color.White // Brown for errors
is WeatherForecastUIState.Empty -> WeatherAppColors.coolWeatherColor to Color.White
}
VerticallyScrollableContainer(modifier = modifier.safeContentPadding()) {
Box(
modifier = Modifier
.clip(RoundedCornerShape(16.dp))
.background(cardColor)
.padding(16.dp)
) {
// Card content
Column(
modifier = Modifier
.fillMaxWidth()
) {
Row(
modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.SpaceBetween
) {
// Current Time
TimeDisplay(weatherForecastState, textColor)
ActionButton(
modifier = Modifier
.clip(RoundedCornerShape(8.dp))
.background(Color.Transparent)
.padding(8.dp),
tooltip = { Text("Refresh weather data") },
onClick = {
weatherForecastState.getLocationOrNull()?.let { onReloadWeatherData(it) }
},
) {
Icon(
key = AllIconsKeys.Actions.Refresh,
contentDescription = "Refresh",
tint = Color.White
)
}
}
Spacer(modifier = Modifier.height(16.dp))
// Temperature and weather type column (vertically aligned)
Column(
modifier = Modifier.fillMaxWidth(),
horizontalAlignment = Alignment.CenterHorizontally
) {
WeatherIconDisplay(weatherForecastState)
Spacer(modifier = Modifier.height(8.dp))
TemperatureDisplay(weatherForecastState, textColor)
Spacer(modifier = Modifier.height(8.dp))
// City name
CityNameDisplay(weatherForecastState, textColor)
}
Spacer(modifier = Modifier.height(16.dp))
// Wind and humidity info
WeatherDetailsRow(Modifier.fillMaxWidth(), weatherForecastState, textColor)
Spacer(modifier = Modifier.height(24.dp))
// 7-day forecast section
SevenDaysForecastWidget(
weatherForecastState,
textColor,
Modifier
.fillMaxWidth()
.wrapContentHeight()
.align(Alignment.CenterHorizontally)
)
}
}
}
}
@Composable
private fun SevenDaysForecastWidget(
weatherForecastData: WeatherForecastData,
modifier: Modifier,
textColor: Color
) {
if (weatherForecastData.dailyForecasts.isNotEmpty()) {
Column(modifier) {
Text(
text = ComposeTemplateBundle.message("weather.app.7days.forecast.title.text"),
color = textColor,
fontSize = 18.sp,
fontWeight = FontWeight.Bold,
modifier = Modifier.padding(bottom = 8.dp)
)
Spacer(modifier = Modifier.height(8.dp))
val scrollState = rememberLazyListState()
HorizontallyScrollableContainer(
modifier = Modifier.fillMaxWidth().safeContentPadding(),
scrollState = scrollState,
) {
LazyRow(
state = scrollState,
modifier = Modifier
.fillMaxWidth(),
horizontalArrangement = Arrangement.spacedBy(8.dp),
) {
items(weatherForecastData.dailyForecasts) { forecast ->
DayForecastItem(
forecast = forecast,
currentDate = weatherForecastData.currentWeatherForecast.date,
textColor = textColor
)
}
}
}
}
}
}
/**
* A composable function that displays a single day's forecast.
*
* @param forecast The forecast data for a single day
* @param currentDate The current date for determining relative day names (Today, Tomorrow)
* @param textColor The color of the text
*/
@Composable
private fun DayForecastItem(
forecast: DailyForecast,
currentDate: LocalDateTime,
textColor: Color
) {
val dayName = getDayName(forecast.date, currentDate)
val date = formatDateTime(forecast.date, showYear = false, showTime = false)
Column(
horizontalAlignment = Alignment.CenterHorizontally,
modifier = Modifier
.width(120.dp)
.border(1.dp, textColor.copy(alpha = 0.3f), RoundedCornerShape(8.dp))
.padding(8.dp)
) {
// Day name
Text(
text = dayName,
color = textColor,
fontSize = 14.sp,
fontWeight = FontWeight.Bold,
textAlign = TextAlign.Center
)
Text(
text = date,
color = textColor,
fontSize = 10.sp,
fontWeight = FontWeight.Bold,
textAlign = TextAlign.Center
)
Spacer(modifier = Modifier.height(8.dp))
// Weather icon
Icon(
key = if (isNightTime(forecast.date)) forecast.weatherType.nightIconKey else forecast.weatherType.dayIconKey,
contentDescription = forecast.weatherType.label,
hint = EmbeddedToInlineCssSvgTransformerHint,
modifier = Modifier.size(48.dp)
)
Spacer(modifier = Modifier.height(8.dp))
// Temperature
Text(
text = ComposeTemplateBundle.message(
"weather.app.temperature.text",
forecast.temperature.toInt()
),
color = textColor,
fontSize = 16.sp,
fontWeight = FontWeight.Bold
)
Spacer(modifier = Modifier.height(8.dp))
// Humidity
Text(
text = ComposeTemplateBundle.message(
"weather.app.humidity.text",
forecast.humidity
),
color = textColor,
fontSize = 12.sp
)
Spacer(modifier = Modifier.height(8.dp))
// Wind direction
Text(
text = ComposeTemplateBundle.message(
"weather.app.wind.direction.text",
forecast.windSpeed.toInt(),
forecast.windDirection.label
),
color = textColor,
fontSize = 12.sp
)
}
}
/**
* Time display component with loading state
*/
@Composable
private fun TimeDisplay(
weatherState: WeatherForecastUIState,
textColor: Color
) {
val text = when (weatherState) {
is WeatherForecastUIState.Success -> formatDateTime(weatherState.weatherForecastData.currentWeatherForecast.date)
else -> "-"
}.let { time -> ComposeTemplateBundle.message("weather.app.time.text", time) }
PulsingText(
text,
weatherState.isLoading,
color = textColor,
fontSize = JewelTheme.defaultTextStyle.fontSize,
fontWeight = FontWeight.Bold
)
}
/**
* Weather icon that shows spinning progress during loading
*/
@Composable
private fun WeatherIconDisplay(
weatherState: WeatherForecastUIState,
modifier: Modifier = Modifier
) {
when (weatherState) {
is WeatherForecastUIState.Loading -> {
val infiniteTransition = rememberInfiniteTransition(label = "rotating_weather_icon")
val rotation = infiniteTransition.animateFloat(
initialValue = 0f,
targetValue = 360f,
animationSpec = infiniteRepeatable(
animation = tween(
durationMillis = 3000, // 3 seconds per rotation
easing = FastOutSlowInEasing
),
repeatMode = RepeatMode.Reverse
),
label = "icon_rotation"
).value
Icon(
key = WeatherIcons.dayClear,
contentDescription = null,
modifier = modifier.rotate(rotation),
hint = EmbeddedToInlineCssSvgTransformerHint
)
}
is WeatherForecastUIState.Success -> {
val currentForecast = weatherState.weatherForecastData.currentWeatherForecast
val isNightTime = isNightTime(currentForecast.date)
Icon(
key = if (isNightTime) {
currentForecast.weatherType.nightIconKey
} else {
currentForecast.weatherType.dayIconKey
},
contentDescription = currentForecast.weatherType.label,
hint = EmbeddedToInlineCssSvgTransformerHint,
modifier = modifier
)
}
is WeatherForecastUIState.Error -> {
Icon(
key = AllIconsKeys.General.Warning,
contentDescription = "Weather data error",
tint = Color.White.copy(alpha = 0.8f),
modifier = modifier
)
}
is WeatherForecastUIState.Empty -> {
Icon(
key = AllIconsKeys.Actions.Find,
contentDescription = "No location selected",
tint = Color.White.copy(alpha = 0.6f),
modifier = modifier
)
}
}
}
/**
* Temperature display with loading animation
*/
@Composable
private fun TemperatureDisplay(
weatherState: WeatherForecastUIState,
textColor: Color
) {
val temperatureText = when (weatherState) {
is WeatherForecastUIState.Success -> ComposeTemplateBundle.message(
"weather.app.temperature.text",
weatherState.weatherForecastData.currentWeatherForecast.temperature.toInt()
)
is WeatherForecastUIState.Loading -> "--°"
is WeatherForecastUIState.Error -> "N/A°"
is WeatherForecastUIState.Empty -> "--°"
}
PulsingText(
text = temperatureText,
isLoading = weatherState.isLoading,
color = textColor,
fontSize = 32.sp,
fontWeight = FontWeight.ExtraBold
)
}
/**
* City name display that shows "Loading..." during loading state
*/
@Composable
private fun CityNameDisplay(
weatherState: WeatherForecastUIState,
textColor: Color
) {
val loadingText = when (weatherState) {
is WeatherForecastUIState.Success -> weatherState.weatherForecastData.location.label
is WeatherForecastUIState.Loading -> weatherState.location.label
is WeatherForecastUIState.Error -> "weatherState.location.label} - Error"
is WeatherForecastUIState.Empty -> "Select a location"
}
PulsingText(
text = loadingText,
isLoading = weatherState.isLoading,
color = textColor,
fontSize = 18.sp,
fontWeight = FontWeight.Bold
)
}
/**
* Composable function to display a row of weather details including wind and humidity information.
*
* @param modifier A [Modifier] that can be used to customize the layout or add behavior to the composable.
* @param weatherState The current state of the weather forecast, represented by [WeatherForecastUIState].
* This determines the display of wind and humidity information based on state.
* @param textColor The color to be applied to the text of the weather details.
*/
@Composable
private fun WeatherDetailsRow(
modifier: Modifier,
weatherState: WeatherForecastUIState,
textColor: Color
) {
Row(
modifier = modifier,
horizontalArrangement = Arrangement.SpaceBetween
) {
// Wind info
val windText = when (weatherState) {
is WeatherForecastUIState.Success -> {
val forecast = weatherState.weatherForecastData.currentWeatherForecast
ComposeTemplateBundle.message(
"weather.app.wind.direction.text",
forecast.windSpeed.toInt(),
forecast.windDirection.label
)
}
is WeatherForecastUIState.Loading -> "Wind: --"
is WeatherForecastUIState.Error -> "Wind: N/A"
is WeatherForecastUIState.Empty -> "Wind: --"
}
PulsingText(
windText,
weatherState.isLoading,
color = textColor,
fontSize = 18.sp
)
// Humidity info
val humidityText = when (weatherState) {
is WeatherForecastUIState.Success -> ComposeTemplateBundle.message(
"weather.app.humidity.text",
weatherState.weatherForecastData.currentWeatherForecast.humidity
)
is WeatherForecastUIState.Loading -> "Humidity: -- %"
is WeatherForecastUIState.Error -> "Humidity: N/A"
is WeatherForecastUIState.Empty -> "Humidity: -- %"
}
PulsingText(
text = humidityText,
weatherState.isLoading,
color = textColor,
fontSize = 18.sp
)
}
}
/**
* Forecast section that shows skeleton during loading
*/
@Composable
private fun SevenDaysForecastWidget(
weatherState: WeatherForecastUIState,
textColor: Color,
modifier: Modifier
) {
when (weatherState) {
is WeatherForecastUIState.Success -> {
if (weatherState.weatherForecastData.dailyForecasts.isNotEmpty()) {
SevenDaysForecastWidget(
weatherState.weatherForecastData,
modifier,
textColor
)
}
}
is WeatherForecastUIState.Loading -> LoadingForecastSkeleton(textColor)
is WeatherForecastUIState.Error -> ErrorForecastMessage(textColor)
is WeatherForecastUIState.Empty -> EmptyForecastMessage(textColor)
}
}
/**
* Loading skeleton for forecast section
*/
@Composable
private fun LoadingForecastSkeleton(textColor: Color) {
Column {
Text(
text = ComposeTemplateBundle.message("weather.app.7days.forecast.title.text"),
color = textColor.copy(alpha = 0.7f),
fontSize = 18.sp,
fontWeight = FontWeight.Bold,
modifier = Modifier.padding(bottom = 8.dp)
)
val scrollState = rememberLazyListState()
HorizontallyScrollableContainer(
modifier = Modifier.fillMaxWidth().safeContentPadding(),
scrollState = scrollState,
) {
LazyRow(
state = scrollState,
modifier = Modifier
.fillMaxWidth(),
horizontalArrangement = Arrangement.spacedBy(8.dp),
) {
items(count = 7) { LoadingForecastItem(textColor) }
}
}
}
}
@Composable
private fun LoadingForecastItem(textColor: Color) {
val infiniteTransition = rememberInfiniteTransition()
val alpha = infiniteTransition.animateFloat(
initialValue = 0.3f,
targetValue = 0.6f,
animationSpec = infiniteRepeatable(
animation = tween(1000),
repeatMode = RepeatMode.Reverse
)
).value
Column(
horizontalAlignment = Alignment.CenterHorizontally,
modifier = Modifier
.width(120.dp)
.border(1.dp, textColor.copy(alpha = 0.3f), RoundedCornerShape(8.dp))
.padding(8.dp)
) {
Text("--", color = textColor.copy(alpha = alpha), fontSize = 14.sp)
Text("", color = textColor.copy(alpha = alpha), fontSize = 14.sp)
Spacer(modifier = Modifier.height(8.dp))
Box(
modifier = Modifier
.size(48.dp)
.background(textColor.copy(alpha = alpha), RoundedCornerShape(4.dp))
)
Spacer(modifier = Modifier.height(8.dp))
Text("--°", color = textColor.copy(alpha = alpha), fontSize = 16.sp)
Text("", color = textColor.copy(alpha = alpha), fontSize = 14.sp)
}
}
@Composable
private fun ErrorForecastMessage(textColor: Color) {
Text(
text = "Forecast unavailable",
color = textColor.copy(alpha = 0.7f),
fontSize = 16.sp,
textAlign = TextAlign.Center,
modifier = Modifier.fillMaxWidth()
)
}
@Composable
private fun EmptyForecastMessage(textColor: Color) {
Text(
text = "Select a location to view forecast",
color = textColor.copy(alpha = 0.7f),
fontSize = 16.sp,
textAlign = TextAlign.Center,
modifier = Modifier.fillMaxWidth()
)
}
/**
* Returns the day name for a given date relative to the current date.
* Returns "Today" for the current date, "Tomorrow" for the next day,
* and the day of week plus date for other days.
*/
private fun getDayName(date: LocalDateTime, currentDate: LocalDateTime): String {
val daysDifference = date.toLocalDate().toEpochDay() - currentDate.toLocalDate().toEpochDay()
return when (daysDifference) {
0L -> "Today"
1L -> "Tomorrow"
else -> {
val dayOfWeek = date.dayOfWeek.getDisplayName(TextStyle.SHORT, Locale.getDefault())
date.dayOfMonth
"$dayOfWeek"
}
}
}
/**
* Determines if it's night time based on the current hour.
* Night time is considered to be between 7 PM (19:00) and 6 AM (6:00).
*/
fun isNightTime(dateTime: LocalDateTime): Boolean {
val hour = dateTime.hour
return hour !in 6..<19
}
/**
* Returns a color based on the temperature and whether it's night time.
* - Cold temperatures: blue/purple
* - Warm temperatures: red/pink
* - Night time: darker shades
*/
fun getCardColorByTemperature(temperature: Float, isNightTime: Boolean): Color {
return when {
isNightTime -> WeatherAppColors.nightWeatherColor
temperature < 0 -> WeatherAppColors.coldWeatherColor
temperature < 10 -> WeatherAppColors.coolWeatherColor
temperature < 20 -> WeatherAppColors.mildWeatherColor
temperature < 30 -> WeatherAppColors.warmWeatherColor
else -> WeatherAppColors.hotWeatherColor
}
}
/**
* Formats the date time to a readable string.
*/
fun formatDateTime(
dateTime: LocalDateTime,
showYear: Boolean = true,
showTime: Boolean = true
): String {
val dateFormattingPattern = buildString {
append("dd MMM")
if (showYear) append(" yyyy")
if (showTime) append(", HH:mm")
}
val formatter = DateTimeFormatter.ofPattern(dateFormattingPattern)
return dateTime.format(formatter)
}

View File

@ -14,6 +14,6 @@
<resource-bundle>messages.ComposeTemplate</resource-bundle>
<extensions defaultExtensionNs="com.intellij">
<toolWindow factoryClass="org.jetbrains.plugins.template.toolWindow.MyToolWindowFactory" id="MyToolWindow"/>
<toolWindow factoryClass="org.jetbrains.plugins.template.toolWindow.ComposeSamplesToolWindowFactory" id="ComposeSamplesToolWindow"/>
</extensions>
</idea-plugin>

View File

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{fill:#BBBBBC;}
.st1{opacity:5.000000e-002;fill:#A7A9AC;enable-background:new ;}
.st2{fill:#999999;}
</style>
<g id="XMLID_78_">
<path id="XMLID_637_" class="st0" d="M416.7,177.4c-12,0-23.5,2.5-34,6.8C359.1,138,311.5,106,256,106s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,177.4,6,217.4,6,266.7S46,356,95.3,356c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,177.4,416.7,177.4z"/>
<path id="XMLID_636_" class="st1" d="M267.8,254.6c-96.2-9.7-186.3,3.7-257.5,33.7c8.9,40,44.5,69.9,87.1,69.9
c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4
c28.6,0,54-13.5,70.4-34.5C428.6,288.3,352.3,263.1,267.8,254.6z"/>
<path id="XMLID_635_" class="st2" d="M416.7,191.7c-12,0-23.5,2.5-34,6.8c-23.7-46.2-71.2-78.2-126.7-78.2s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,191.7,6,231.7,6,281s40,89.3,89.3,89.3c19.1,0,36.8-6.1,51.3-16.4C172.8,385.5,211.8,406,256,406
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,191.7,416.7,191.7z"/>
<path id="XMLID_541_" class="st0" d="M156.2,247.5c7.5,0,14.5,1.5,21,4.2c14.6-28.6,44-48.3,78.3-48.3s63.7,19.8,78.3,48.3
c6.5-2.7,13.6-4.2,21-4.2c27.9,0,50.9,20.7,54.6,47.6c0.3-2.5,0.6-5,0.6-7.5c0-30.5-24.7-55.2-55.2-55.2c-7.4,0-14.5,1.5-21,4.2
c-14.6-28.6-44-48.3-78.3-48.3s-63.7,19.8-78.3,48.3c-6.5-2.7-13.5-4.2-21-4.2c-30.5,0-55.2,24.7-55.2,55.2c0,2.6,0.2,5.1,0.6,7.5
C105.2,268.2,128.2,247.5,156.2,247.5z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{fill:#BEC6D2;}
.st1{opacity:5.000000e-002;fill:#A7A9AC;enable-background:new ;}
.st2{fill:#D3DEE2;}
</style>
<g id="XMLID_78_">
<path id="XMLID_637_" class="st0" d="M416.7,177.4c-12,0-23.5,2.5-34,6.8C359.1,138,311.5,106,256,106s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,177.4,6,217.4,6,266.7S46,356,95.3,356c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,177.4,416.7,177.4z"/>
<path id="XMLID_636_" class="st1" d="M267.8,254.6c-96.2-9.7-186.3,3.7-257.5,33.7c8.9,40,44.5,69.9,87.1,69.9
c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4
c28.6,0,54-13.5,70.4-34.5C428.6,288.3,352.3,263.1,267.8,254.6z"/>
<path id="XMLID_635_" class="st2" d="M416.7,191.7c-12,0-23.5,2.5-34,6.8c-23.7-46.2-71.2-78.2-126.7-78.2s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,191.7,6,231.7,6,281s40,89.3,89.3,89.3c19.1,0,36.8-6.1,51.3-16.4C172.8,385.5,211.8,406,256,406
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,191.7,416.7,191.7z"/>
<path id="XMLID_541_" class="st0" d="M156.2,247.5c7.5,0,14.5,1.5,21,4.2c14.6-28.6,44-48.3,78.3-48.3s63.7,19.8,78.3,48.3
c6.5-2.7,13.6-4.2,21-4.2c27.9,0,50.9,20.7,54.6,47.6c0.3-2.5,0.6-5,0.6-7.5c0-30.5-24.7-55.2-55.2-55.2c-7.4,0-14.5,1.5-21,4.2
c-14.6-28.6-44-48.3-78.3-48.3s-63.7,19.8-78.3,48.3c-6.5-2.7-13.5-4.2-21-4.2c-30.5,0-55.2,24.7-55.2,55.2c0,2.6,0.2,5.1,0.6,7.5
C105.2,268.2,128.2,247.5,156.2,247.5z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -0,0 +1,86 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{fill-rule:evenodd;clip-rule:evenodd;fill:url(#XMLID_2_);}
.st1{fill-rule:evenodd;clip-rule:evenodd;fill:url(#XMLID_3_);}
.st2{fill-rule:evenodd;clip-rule:evenodd;fill:url(#XMLID_4_);}
.st3{fill-rule:evenodd;clip-rule:evenodd;fill:url(#XMLID_5_);}
.st4{fill-rule:evenodd;clip-rule:evenodd;fill:url(#XMLID_6_);}
.st5{fill-rule:evenodd;clip-rule:evenodd;fill:url(#XMLID_7_);}
.st6{fill-rule:evenodd;clip-rule:evenodd;fill:url(#XMLID_8_);}
.st7{fill-rule:evenodd;clip-rule:evenodd;fill:url(#XMLID_9_);}
.st8{fill-rule:evenodd;clip-rule:evenodd;fill:url(#XMLID_10_);}
.st9{opacity:0.5;fill:#D58128;}
.st10{opacity:0.2;fill:#D58128;}
</style>
<g id="XMLID_27_">
<linearGradient id="XMLID_2_" gradientUnits="userSpaceOnUse" x1="261.0342" y1="14.0686" x2="261.0342" y2="349.5351" gradientTransform="matrix(0.9546 0.2978 -0.2978 0.9546 61.1308 4.1511)">
<stop offset="0" style="stop-color:#FDD900"/>
<stop offset="1" style="stop-color:#E29F25"/>
</linearGradient>
<circle id="XMLID_496_" class="st0" cx="256.2" cy="255.4" r="167.7"/>
<linearGradient id="XMLID_3_" gradientUnits="userSpaceOnUse" x1="417.1527" y1="-7.9987" x2="417.1527" y2="60.5246" gradientTransform="matrix(0.9546 0.2978 -0.2978 0.9546 61.1308 4.1511)">
<stop offset="0" style="stop-color:#FDD900"/>
<stop offset="1" style="stop-color:#E6A323"/>
</linearGradient>
<path id="XMLID_495_" class="st1" d="M487.1,134.8c-5.1-9.8-17.3-13.6-27.1-8.5L424.4,145c-9.8,5.1-13.6,17.3-8.5,27.1
c5.1,9.8,17.3,13.6,27.1,8.5l35.6-18.6C488.4,156.8,492.2,144.6,487.1,134.8z"/>
<linearGradient id="XMLID_4_" gradientUnits="userSpaceOnUse" x1="104.9157" y1="304.2383" x2="104.9157" y2="372.7617" gradientTransform="matrix(0.9546 0.2978 -0.2978 0.9546 61.1308 4.1511)">
<stop offset="0" style="stop-color:#FDD900"/>
<stop offset="1" style="stop-color:#E6A323"/>
</linearGradient>
<path id="XMLID_494_" class="st2" d="M96,339.9c-5.1-9.8-17.3-13.6-27.1-8.5l-35.6,18.6c-9.8,5.1-13.6,17.3-8.5,27.1
c5.1,9.8,17.3,13.6,27.1,8.5L87.6,367C97.4,361.8,101.2,349.7,96,339.9z"/>
<linearGradient id="XMLID_5_" gradientUnits="userSpaceOnUse" x1="481.8142" y1="162.2933" x2="481.8142" y2="202.4319" gradientTransform="matrix(0.9546 0.2978 -0.2978 0.9546 61.1308 4.1511)">
<stop offset="0" style="stop-color:#FDD900"/>
<stop offset="1" style="stop-color:#E6A323"/>
</linearGradient>
<path id="XMLID_492_" class="st3" d="M505.1,333.7c3.3-10.6-2.6-21.8-13.2-25.1l-38.3-12c-10.6-3.3-21.8,2.6-25.1,13.2
c-3.3,10.6,2.6,21.8,13.2,25.1l38.3,12C490.5,350.2,501.8,344.3,505.1,333.7z"/>
<linearGradient id="XMLID_6_" gradientUnits="userSpaceOnUse" x1="40.2544" y1="162.3311" x2="40.2544" y2="202.4697" gradientTransform="matrix(0.9546 0.2978 -0.2978 0.9546 61.1308 4.1511)">
<stop offset="0" style="stop-color:#FDD900"/>
<stop offset="1" style="stop-color:#E6A323"/>
</linearGradient>
<path id="XMLID_491_" class="st4" d="M83.6,202.2c3.3-10.6-2.6-21.8-13.2-25.1l-38.3-12c-10.6-3.3-21.8,2.6-25.1,13.2
c-3.3,10.6,2.6,21.8,13.2,25.1l38.3,12C69,218.7,80.2,212.8,83.6,202.2z"/>
<linearGradient id="XMLID_7_" gradientUnits="userSpaceOnUse" x1="104.9157" y1="-7.9987" x2="104.9157" y2="60.5246" gradientTransform="matrix(0.9546 0.2978 -0.2978 0.9546 61.1308 4.1511)">
<stop offset="0" style="stop-color:#FDD900"/>
<stop offset="1" style="stop-color:#E6A323"/>
</linearGradient>
<path id="XMLID_489_" class="st5" d="M134.8,24.9c-9.8,5.1-13.6,17.3-8.5,27.1L145,87.6c5.1,9.8,17.3,13.6,27.1,8.5
c9.8-5.1,13.6-17.3,8.5-27.1l-18.6-35.6C156.8,23.6,144.6,19.8,134.8,24.9z"/>
<linearGradient id="XMLID_8_" gradientUnits="userSpaceOnUse" x1="417.1527" y1="304.2383" x2="417.1527" y2="372.7617" gradientTransform="matrix(0.9546 0.2978 -0.2978 0.9546 61.1308 4.1511)">
<stop offset="0" style="stop-color:#FDD900"/>
<stop offset="1" style="stop-color:#E6A323"/>
</linearGradient>
<path id="XMLID_477_" class="st6" d="M339.9,416c-9.8,5.1-13.6,17.3-8.5,27.1l18.6,35.6c5.1,9.8,17.3,13.6,27.1,8.5
c9.8-5.1,13.6-17.3,8.5-27.1L367,424.4C361.8,414.6,349.7,410.8,339.9,416z"/>
<linearGradient id="XMLID_9_" gradientUnits="userSpaceOnUse" x1="261.0533" y1="363.0227" x2="261.0533" y2="443.2999" gradientTransform="matrix(0.9546 0.2978 -0.2978 0.9546 61.1308 4.1511)">
<stop offset="0" style="stop-color:#FDD900"/>
<stop offset="1" style="stop-color:#E6A323"/>
</linearGradient>
<path id="XMLID_475_" class="st7" d="M178.3,505.1c10.6,3.3,21.8-2.6,25.1-13.2l12-38.3c3.3-10.6-2.6-21.8-13.2-25.1
c-10.6-3.3-21.8,2.6-25.1,13.2l-12,38.3C161.8,490.5,167.7,501.8,178.3,505.1z"/>
<linearGradient id="XMLID_10_" gradientUnits="userSpaceOnUse" x1="261.0155" y1="-78.5369" x2="261.0155" y2="1.7398" gradientTransform="matrix(0.9546 0.2978 -0.2978 0.9546 61.1308 4.1511)">
<stop offset="0" style="stop-color:#FDD900"/>
<stop offset="1" style="stop-color:#E6A323"/>
</linearGradient>
<path id="XMLID_474_" class="st8" d="M309.8,83.6c10.6,3.3,21.8-2.6,25.1-13.2l12-38.3c3.3-10.6-2.6-21.8-13.2-25.1
s-21.8,2.6-25.1,13.2l-12,38.3C293.3,69,299.2,80.2,309.8,83.6z"/>
<path id="XMLID_470_" class="st9" d="M248.7,422.5c43.6,1.4,93.8-14.3,123.7-47.2c-31.8,16.3-73.6,35.4-121.5,33.9
c-47.9-1.5-73.3-12.5-100-24.4C173.1,402.8,204.5,421.1,248.7,422.5z"/>
<path id="XMLID_469_" class="st10" d="M263.3,86.3c-43.1-1.4-92.8,14.4-122.4,47.2c31.5-16.3,72.8-35.4,120.1-33.9
c47.3,1.5,72.5,12.5,98.9,24.4C338,105.9,307,87.6,263.3,86.3z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.7 KiB

View File

@ -0,0 +1,104 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{fill:url(#XMLID_2_);}
.st1{fill:url(#XMLID_3_);}
.st2{fill:url(#XMLID_4_);}
.st3{fill:url(#XMLID_5_);}
.st4{fill:url(#XMLID_6_);}
.st5{fill:url(#XMLID_7_);}
.st6{fill:url(#XMLID_8_);}
.st7{fill:url(#XMLID_9_);}
.st8{fill:url(#XMLID_10_);}
.st9{opacity:0.5;fill:#D58128;enable-background:new ;}
.st10{opacity:0.2;fill:#D58128;enable-background:new ;}
.st11{fill:#BEC6D2;}
.st12{opacity:5.000000e-002;fill:#A7A9AC;enable-background:new ;}
.st13{fill:#D3DEE2;}
</style>
<g id="XMLID_27_">
<linearGradient id="XMLID_2_" gradientUnits="userSpaceOnUse" x1="107.1837" y1="17.7359" x2="107.1837" y2="188.3861" gradientTransform="matrix(0.9546 0.2978 -0.2978 0.9546 61.474 3.8986)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E2A025"/>
</linearGradient>
<circle id="XMLID_496_" class="st0" cx="133.1" cy="134.2" r="85.3"/>
<linearGradient id="XMLID_3_" gradientUnits="userSpaceOnUse" x1="186.5537" y1="6.5909" x2="186.5537" y2="41.4178" gradientTransform="matrix(0.9546 0.2978 -0.2978 0.9546 61.474 3.8986)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_495_" class="st1" d="M250.5,72.9c-2.6-5-8.8-6.9-13.8-4.3l-18.1,9.5c-5,2.6-6.9,8.8-4.3,13.8
c2.6,5,8.8,6.9,13.8,4.3l18.1-9.5C251.2,84.1,253.1,77.9,250.5,72.9z"/>
<linearGradient id="XMLID_4_" gradientUnits="userSpaceOnUse" x1="27.879" y1="165.2937" x2="27.879" y2="200.1207" gradientTransform="matrix(0.9546 0.2978 -0.2978 0.9546 61.474 3.8986)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_494_" class="st2" d="M51.8,177.1c-2.6-5-8.8-6.9-13.8-4.3l-18.1,9.5c-5,2.6-6.9,8.8-4.3,13.8s8.8,6.9,13.8,4.3
l18.1-9.5C52.4,188.3,54.4,182.1,51.8,177.1z"/>
<linearGradient id="XMLID_5_" gradientUnits="userSpaceOnUse" x1="219.4633" y1="93.1504" x2="219.4633" y2="113.5508" gradientTransform="matrix(0.9546 0.2978 -0.2978 0.9546 61.474 3.8986)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_492_" class="st3" d="M259.7,174c1.7-5.4-1.3-11.1-6.7-12.8l-19.5-6.1c-5.4-1.7-11.1,1.3-12.8,6.7
s1.3,11.1,6.7,12.8l19.5,6.1C252.3,182.4,258,179.4,259.7,174z"/>
<linearGradient id="XMLID_6_" gradientUnits="userSpaceOnUse" x1="-4.9654" y1="93.1635" x2="-4.9654" y2="113.5824" gradientTransform="matrix(0.9546 0.2978 -0.2978 0.9546 61.474 3.8986)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_491_" class="st4" d="M45.4,107.2c1.7-5.4-1.3-11.1-6.7-12.8l-19.5-6.1C13.9,86.6,8.1,89.6,6.5,95
c-1.7,5.4,1.3,11.1,6.7,12.8l19.5,6.1C38,115.5,43.7,112.6,45.4,107.2z"/>
<linearGradient id="XMLID_7_" gradientUnits="userSpaceOnUse" x1="27.9626" y1="6.6009" x2="27.9626" y2="41.4278" gradientTransform="matrix(0.9546 0.2978 -0.2978 0.9546 61.474 3.8986)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_489_" class="st5" d="M71.5,17.1c-5,2.6-6.9,8.8-4.3,13.8L76.7,49c2.6,5,8.8,6.9,13.8,4.3s6.9-8.8,4.3-13.8
l-9.5-18.1C82.6,16.4,76.5,14.4,71.5,17.1z"/>
<linearGradient id="XMLID_8_" gradientUnits="userSpaceOnUse" x1="186.6133" y1="165.2824" x2="186.6133" y2="200.1094" gradientTransform="matrix(0.9546 0.2978 -0.2978 0.9546 61.474 3.8986)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_477_" class="st6" d="M175.7,215.8c-5,2.6-6.9,8.8-4.3,13.8l9.5,18.1c2.6,5,8.8,6.9,13.8,4.3s6.9-8.8,4.3-13.8
l-9.5-18.1C186.9,215.1,180.7,213.2,175.7,215.8z"/>
<linearGradient id="XMLID_9_" gradientUnits="userSpaceOnUse" x1="107.2838" y1="195.1708" x2="107.2838" y2="235.9716" gradientTransform="matrix(0.9546 0.2978 -0.2978 0.9546 61.474 3.8986)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_475_" class="st7" d="M93.6,261.1c5.4,1.7,11.1-1.3,12.8-6.7l6.1-19.5c1.7-5.4-1.3-11.1-6.7-12.8
c-5.4-1.7-11.1,1.3-12.8,6.7l-6.1,19.5C85.2,253.7,88.2,259.4,93.6,261.1z"/>
<linearGradient id="XMLID_10_" gradientUnits="userSpaceOnUse" x1="107.2623" y1="-29.2752" x2="107.2623" y2="11.5253" gradientTransform="matrix(0.9546 0.2978 -0.2978 0.9546 61.474 3.8986)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_474_" class="st8" d="M160.4,46.9c5.4,1.7,11.1-1.3,12.8-6.7l6.1-19.5c1.7-5.4-1.3-11.1-6.7-12.8
s-11.1,1.3-12.8,6.7l-6.1,19.5C152,39.5,155,45.2,160.4,46.9z"/>
<path id="XMLID_470_" class="st9" d="M129.3,219.1c22.1,0.7,47.7-7.3,62.9-24c-16.2,8.3-37.4,18-61.7,17.2s-37.3-6.4-50.8-12.4
C90.9,209.1,106.9,218.4,129.3,219.1z"/>
<path id="XMLID_469_" class="st10" d="M136.8,48.2c-21.9-0.7-47.2,7.3-62.2,24c16-8.3,37-18,61.1-17.3c24.1,0.8,36.8,6.4,50.2,12.4
C174.7,58.2,159,48.9,136.8,48.2z"/>
</g>
<g id="XMLID_78_">
<path id="XMLID_637_" class="st11" d="M416.7,177.4c-12,0-23.5,2.5-34,6.8C359.1,138,311.5,106,256,106s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,177.4,6,217.4,6,266.7S46,356,95.3,356c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,177.4,416.7,177.4z"/>
<path id="XMLID_636_" class="st12" d="M267.8,254.6c-96.2-9.7-186.3,3.7-257.5,33.7c8.9,40,44.5,69.9,87.1,69.9
c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4
c28.6,0,54-13.5,70.4-34.5C428.6,288.3,352.3,263.1,267.8,254.6z"/>
<path id="XMLID_635_" class="st13" d="M416.7,191.7c-12,0-23.5,2.5-34,6.8c-23.7-46.2-71.2-78.2-126.7-78.2s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,191.7,6,231.7,6,281s40,89.3,89.3,89.3c19.1,0,36.8-6.1,51.3-16.4C172.8,385.5,211.8,406,256,406
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,191.7,416.7,191.7z"/>
<path id="XMLID_541_" class="st11" d="M156.2,247.5c7.5,0,14.5,1.5,21,4.2c14.6-28.6,44-48.3,78.3-48.3s63.7,19.8,78.3,48.3
c6.5-2.7,13.6-4.2,21-4.2c27.9,0,50.9,20.7,54.6,47.6c0.3-2.5,0.6-5,0.6-7.5c0-30.5-24.7-55.2-55.2-55.2c-7.4,0-14.5,1.5-21,4.2
c-14.6-28.6-44-48.3-78.3-48.3s-63.7,19.8-78.3,48.3c-6.5-2.7-13.5-4.2-21-4.2c-30.5,0-55.2,24.7-55.2,55.2c0,2.6,0.2,5.1,0.6,7.5
C105.2,268.2,128.2,247.5,156.2,247.5z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.8 KiB

View File

@ -0,0 +1,111 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{fill:url(#XMLID_2_);}
.st1{fill:url(#XMLID_3_);}
.st2{fill:url(#XMLID_4_);}
.st3{fill:url(#XMLID_5_);}
.st4{fill:url(#XMLID_6_);}
.st5{fill:url(#XMLID_7_);}
.st6{fill:url(#XMLID_8_);}
.st7{fill:url(#XMLID_9_);}
.st8{fill:url(#XMLID_10_);}
.st9{opacity:0.5;fill:#D58128;enable-background:new ;}
.st10{opacity:0.2;fill:#D58128;enable-background:new ;}
.st11{fill:#BEC6D2;}
.st12{opacity:5.000000e-002;fill:#A7A9AC;enable-background:new ;}
.st13{fill:#D3DEE2;}
.st14{fill-rule:evenodd;clip-rule:evenodd;fill:#00ADEE;}
</style>
<g id="XMLID_27_">
<linearGradient id="XMLID_2_" gradientUnits="userSpaceOnUse" x1="107.1837" y1="494.264" x2="107.1837" y2="323.6139" gradientTransform="matrix(0.9546 0.2978 0.2978 -0.9546 -90.9996 492.6538)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E2A025"/>
</linearGradient>
<circle id="XMLID_496_" class="st0" cx="133.1" cy="134.2" r="85.3"/>
<linearGradient id="XMLID_3_" gradientUnits="userSpaceOnUse" x1="186.5538" y1="505.4091" x2="186.5538" y2="470.5822" gradientTransform="matrix(0.9546 0.2978 0.2978 -0.9546 -90.9996 492.6538)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_495_" class="st1" d="M250.5,72.9c-2.6-5-8.8-6.9-13.8-4.3l-18.1,9.5c-5,2.6-6.9,8.8-4.3,13.8
c2.6,5,8.8,6.9,13.8,4.3l18.1-9.5C251.2,84.1,253.1,77.9,250.5,72.9z"/>
<linearGradient id="XMLID_4_" gradientUnits="userSpaceOnUse" x1="27.879" y1="346.7063" x2="27.879" y2="311.8793" gradientTransform="matrix(0.9546 0.2978 0.2978 -0.9546 -90.9996 492.6538)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_494_" class="st2" d="M51.8,177.1c-2.6-5-8.8-6.9-13.8-4.3l-18.1,9.5c-5,2.6-6.9,8.8-4.3,13.8s8.8,6.9,13.8,4.3
l18.1-9.5C52.4,188.3,54.4,182.1,51.8,177.1z"/>
<linearGradient id="XMLID_5_" gradientUnits="userSpaceOnUse" x1="219.4633" y1="418.8496" x2="219.4633" y2="398.4492" gradientTransform="matrix(0.9546 0.2978 0.2978 -0.9546 -90.9996 492.6538)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_492_" class="st3" d="M259.7,174c1.7-5.4-1.3-11.1-6.7-12.8l-19.5-6.1c-5.4-1.7-11.1,1.3-12.8,6.7
s1.3,11.1,6.7,12.8l19.5,6.1C252.3,182.4,258,179.4,259.7,174z"/>
<linearGradient id="XMLID_6_" gradientUnits="userSpaceOnUse" x1="-4.9654" y1="418.8365" x2="-4.9654" y2="398.4176" gradientTransform="matrix(0.9546 0.2978 0.2978 -0.9546 -90.9996 492.6538)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_491_" class="st4" d="M45.4,107.2c1.7-5.4-1.3-11.1-6.7-12.8l-19.5-6.1C13.9,86.6,8.1,89.6,6.5,95
c-1.7,5.4,1.3,11.1,6.7,12.8l19.5,6.1C38,115.5,43.7,112.6,45.4,107.2z"/>
<linearGradient id="XMLID_7_" gradientUnits="userSpaceOnUse" x1="27.9626" y1="505.3991" x2="27.9626" y2="470.5722" gradientTransform="matrix(0.9546 0.2978 0.2978 -0.9546 -90.9996 492.6538)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_489_" class="st5" d="M71.5,17.1c-5,2.6-6.9,8.8-4.3,13.8L76.7,49c2.6,5,8.8,6.9,13.8,4.3s6.9-8.8,4.3-13.8
l-9.5-18.1C82.6,16.4,76.5,14.4,71.5,17.1z"/>
<linearGradient id="XMLID_8_" gradientUnits="userSpaceOnUse" x1="186.6133" y1="346.7176" x2="186.6133" y2="311.8906" gradientTransform="matrix(0.9546 0.2978 0.2978 -0.9546 -90.9996 492.6538)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_477_" class="st6" d="M175.7,215.8c-5,2.6-6.9,8.8-4.3,13.8l9.5,18.1c2.6,5,8.8,6.9,13.8,4.3s6.9-8.8,4.3-13.8
l-9.5-18.1C186.9,215.1,180.7,213.2,175.7,215.8z"/>
<linearGradient id="XMLID_9_" gradientUnits="userSpaceOnUse" x1="107.2838" y1="316.8292" x2="107.2838" y2="276.0284" gradientTransform="matrix(0.9546 0.2978 0.2978 -0.9546 -90.9996 492.6538)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_475_" class="st7" d="M93.6,261.1c5.4,1.7,11.1-1.3,12.8-6.7l6.1-19.5c1.7-5.4-1.3-11.1-6.7-12.8
c-5.4-1.7-11.1,1.3-12.8,6.7l-6.1,19.5C85.2,253.7,88.2,259.4,93.6,261.1z"/>
<linearGradient id="XMLID_10_" gradientUnits="userSpaceOnUse" x1="107.2623" y1="541.2752" x2="107.2623" y2="500.4747" gradientTransform="matrix(0.9546 0.2978 0.2978 -0.9546 -90.9996 492.6538)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_474_" class="st8" d="M160.4,46.9c5.4,1.7,11.1-1.3,12.8-6.7l6.1-19.5c1.7-5.4-1.3-11.1-6.7-12.8
s-11.1,1.3-12.8,6.7l-6.1,19.5C152,39.5,155,45.2,160.4,46.9z"/>
<path id="XMLID_470_" class="st9" d="M129.3,219.1c22.1,0.7,47.7-7.3,62.9-24c-16.2,8.3-37.4,18-61.7,17.2s-37.3-6.4-50.8-12.4
C90.9,209.1,106.9,218.4,129.3,219.1z"/>
<path id="XMLID_469_" class="st10" d="M136.8,48.2c-21.9-0.7-47.2,7.3-62.2,24c16-8.3,37-18,61.1-17.3c24.1,0.8,36.8,6.4,50.2,12.4
C174.7,58.2,159,48.9,136.8,48.2z"/>
</g>
<g id="XMLID_78_">
<path id="XMLID_637_" class="st11" d="M416.7,177.4c-12,0-23.5,2.5-34,6.8C359.1,138,311.5,106,256,106s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,177.4,6,217.4,6,266.7S46,356,95.3,356c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,177.4,416.7,177.4z"/>
<path id="XMLID_636_" class="st12" d="M267.8,254.6c-96.2-9.7-186.3,3.7-257.5,33.7c8.9,40,44.5,69.9,87.1,69.9
c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4
c28.6,0,54-13.5,70.4-34.5C428.6,288.3,352.3,263.1,267.8,254.6z"/>
<path id="XMLID_635_" class="st13" d="M416.7,191.7c-12,0-23.5,2.5-34,6.8c-23.7-46.2-71.2-78.2-126.7-78.2s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,191.7,6,231.7,6,281s40,89.3,89.3,89.3c19.1,0,36.8-6.1,51.3-16.4C172.8,385.5,211.8,406,256,406
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,191.7,416.7,191.7z"/>
<path id="XMLID_541_" class="st11" d="M156.2,247.5c7.5,0,14.5,1.5,21,4.2c14.6-28.6,44-48.3,78.3-48.3s63.7,19.8,78.3,48.3
c6.5-2.7,13.6-4.2,21-4.2c27.9,0,50.9,20.7,54.6,47.6c0.3-2.5,0.6-5,0.6-7.5c0-30.5-24.7-55.2-55.2-55.2c-7.4,0-14.5,1.5-21,4.2
c-14.6-28.6-44-48.3-78.3-48.3s-63.7,19.8-78.3,48.3c-6.5-2.7-13.5-4.2-21-4.2c-30.5,0-55.2,24.7-55.2,55.2c0,2.6,0.2,5.1,0.6,7.5
C105.2,268.2,128.2,247.5,156.2,247.5z"/>
</g>
<path id="XMLID_45_" class="st14" d="M360.2,458.8c5.4,13.7,20.9,20.4,34.6,15c13.7-5.4,20.4-20.9,15-34.6
c-5.4-13.7-44.4-39.8-44.4-39.8S354.8,445.1,360.2,458.8z"/>
<path id="XMLID_44_" class="st14" d="M119,458.8c5.4,13.7,20.9,20.4,34.6,15c13.7-5.4,20.4-20.9,15-34.6
c-5.4-13.7-44.4-39.8-44.4-39.8S113.6,445.1,119,458.8z"/>
<path id="XMLID_41_" class="st14" d="M239.6,478.8c5.4,13.7,20.9,20.4,34.6,15c13.7-5.4,20.4-20.9,15-34.6
c-5.4-13.7-44.4-39.8-44.4-39.8S234.2,465.1,239.6,478.8z"/>
</svg>

After

Width:  |  Height:  |  Size: 7.4 KiB

View File

@ -0,0 +1,128 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{fill-rule:evenodd;clip-rule:evenodd;fill:url(#XMLID_2_);}
.st1{fill-rule:evenodd;clip-rule:evenodd;fill:#00AEEF;}
.st2{fill-rule:evenodd;clip-rule:evenodd;fill:url(#XMLID_3_);}
.st3{fill-rule:evenodd;clip-rule:evenodd;fill:url(#XMLID_4_);}
.st4{fill-rule:evenodd;clip-rule:evenodd;fill:url(#XMLID_5_);}
.st5{fill-rule:evenodd;clip-rule:evenodd;fill:url(#XMLID_6_);}
.st6{fill-rule:evenodd;clip-rule:evenodd;fill:url(#XMLID_7_);}
.st7{fill-rule:evenodd;clip-rule:evenodd;fill:url(#XMLID_8_);}
.st8{fill-rule:evenodd;clip-rule:evenodd;fill:url(#XMLID_9_);}
.st9{fill-rule:evenodd;clip-rule:evenodd;fill:url(#XMLID_10_);}
.st10{fill-rule:evenodd;clip-rule:evenodd;fill:url(#XMLID_11_);}
.st11{opacity:0.5;fill:#D58128;}
.st12{opacity:0.2;fill:#D58128;}
.st13{fill-rule:evenodd;clip-rule:evenodd;fill:#BEC6D2;}
.st14{opacity:5.000000e-002;fill-rule:evenodd;clip-rule:evenodd;fill:#A7A9AC;}
.st15{fill-rule:evenodd;clip-rule:evenodd;fill:#D3DEE2;}
</style>
<linearGradient id="XMLID_2_" gradientUnits="userSpaceOnUse" x1="1194.1445" y1="288.1528" x2="1194.1445" y2="510.9846" gradientTransform="matrix(-1 0 0 1 1439.9739 0)">
<stop offset="0" style="stop-color:#F8F6C3"/>
<stop offset="2.186788e-002" style="stop-color:#F9F0B1"/>
<stop offset="8.719299e-002" style="stop-color:#FBE684"/>
<stop offset="0.1478" style="stop-color:#FDDE5B"/>
<stop offset="0.2018" style="stop-color:#FED935"/>
<stop offset="0.2472" style="stop-color:#FED616"/>
<stop offset="0.2784" style="stop-color:#FED504"/>
<stop offset="0.3882" style="stop-color:#FDD209"/>
<stop offset="0.5124" style="stop-color:#F9C713"/>
<stop offset="0.6436" style="stop-color:#F3B61B"/>
<stop offset="0.7796" style="stop-color:#EC9E21"/>
<stop offset="0.918" style="stop-color:#E48225"/>
<stop offset="1" style="stop-color:#DF6E26"/>
</linearGradient>
<polygon id="XMLID_287_" class="st0" points="309.7,405.1 261.6,419.1 276.4,511 182,394 230.1,380.1 215.2,288.2 "/>
<path id="XMLID_67_" class="st1" d="M103,456.7c5.6,14.3,21.7,21.2,36,15.6c14.3-5.6,21.2-21.7,15.6-36
c-5.6-14.3-46.2-41.4-46.2-41.4S97.4,442.4,103,456.7z"/>
<path id="XMLID_38_" class="st1" d="M373,456.6c5.6,14.3,21.7,21.2,36,15.6c14.3-5.6,21.2-21.7,15.6-36
c-5.6-14.3-46.2-41.4-46.2-41.4S367.4,442.4,373,456.6z"/>
<g id="XMLID_27_">
<linearGradient id="XMLID_3_" gradientUnits="userSpaceOnUse" x1="107.2386" y1="17.8155" x2="107.2386" y2="188.3158" gradientTransform="matrix(0.9546 0.2978 -0.2978 0.9546 61.474 3.8986)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E2A025"/>
</linearGradient>
<circle id="XMLID_496_" class="st2" cx="133.1" cy="134.2" r="85.3"/>
<linearGradient id="XMLID_4_" gradientUnits="userSpaceOnUse" x1="186.5856" y1="6.5998" x2="186.5856" y2="41.4267" gradientTransform="matrix(0.9546 0.2978 -0.2978 0.9546 61.474 3.8986)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_495_" class="st3" d="M250.5,72.9c-2.6-5-8.8-6.9-13.8-4.3l-18.1,9.5c-5,2.6-6.9,8.8-4.3,13.8
c2.6,5,8.8,6.9,13.8,4.3l18.1-9.5C251.2,84.1,253.1,77.9,250.5,72.9z"/>
<linearGradient id="XMLID_5_" gradientUnits="userSpaceOnUse" x1="27.8916" y1="165.2937" x2="27.8916" y2="200.1207" gradientTransform="matrix(0.9546 0.2978 -0.2978 0.9546 61.474 3.8986)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_494_" class="st4" d="M51.8,177.1c-2.6-5-8.8-6.9-13.8-4.3l-18.1,9.5c-5,2.6-6.9,8.8-4.3,13.8
c2.6,5,8.8,6.9,13.8,4.3l18.1-9.5C52.4,188.3,54.4,182.1,51.8,177.1z"/>
<linearGradient id="XMLID_6_" gradientUnits="userSpaceOnUse" x1="219.4497" y1="93.1504" x2="219.4497" y2="113.5508" gradientTransform="matrix(0.9546 0.2978 -0.2978 0.9546 61.474 3.8986)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_492_" class="st5" d="M259.7,174c1.7-5.4-1.3-11.1-6.7-12.8l-19.5-6.1c-5.4-1.7-11.1,1.3-12.8,6.7
c-1.7,5.4,1.3,11.1,6.7,12.8l19.5,6.1C252.3,182.4,258,179.4,259.7,174z"/>
<linearGradient id="XMLID_7_" gradientUnits="userSpaceOnUse" x1="-4.9723" y1="93.1697" x2="-4.9723" y2="113.57" gradientTransform="matrix(0.9546 0.2978 -0.2978 0.9546 61.474 3.8986)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_491_" class="st6" d="M45.4,107.2c1.7-5.4-1.3-11.1-6.7-12.8l-19.5-6.1C13.9,86.6,8.1,89.6,6.5,95
c-1.7,5.4,1.3,11.1,6.7,12.8l19.5,6.1C38,115.5,43.7,112.6,45.4,107.2z"/>
<linearGradient id="XMLID_8_" gradientUnits="userSpaceOnUse" x1="27.8916" y1="6.5998" x2="27.8916" y2="41.4267" gradientTransform="matrix(0.9546 0.2978 -0.2978 0.9546 61.474 3.8986)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_489_" class="st7" d="M71.5,17.1c-5,2.6-6.9,8.8-4.3,13.8l9.5,18.1c2.6,5,8.8,6.9,13.8,4.3s6.9-8.8,4.3-13.8
l-9.5-18.1C82.6,16.4,76.5,14.4,71.5,17.1z"/>
<linearGradient id="XMLID_9_" gradientUnits="userSpaceOnUse" x1="186.5856" y1="165.2937" x2="186.5856" y2="200.1207" gradientTransform="matrix(0.9546 0.2978 -0.2978 0.9546 61.474 3.8986)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_477_" class="st8" d="M175.7,215.8c-5,2.6-6.9,8.8-4.3,13.8l9.5,18.1c2.6,5,8.8,6.9,13.8,4.3s6.9-8.8,4.3-13.8
l-9.5-18.1C186.9,215.1,180.7,213.2,175.7,215.8z"/>
<linearGradient id="XMLID_10_" gradientUnits="userSpaceOnUse" x1="107.2483" y1="195.1708" x2="107.2483" y2="235.9716" gradientTransform="matrix(0.9546 0.2978 -0.2978 0.9546 61.474 3.8986)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_475_" class="st9" d="M93.6,261.1c5.4,1.7,11.1-1.3,12.8-6.7l6.1-19.5c1.7-5.4-1.3-11.1-6.7-12.8
c-5.4-1.7-11.1,1.3-12.8,6.7l-6.1,19.5C85.2,253.7,88.2,259.4,93.6,261.1z"/>
<linearGradient id="XMLID_11_" gradientUnits="userSpaceOnUse" x1="107.2291" y1="-29.2511" x2="107.2291" y2="11.5494" gradientTransform="matrix(0.9546 0.2978 -0.2978 0.9546 61.474 3.8986)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_474_" class="st10" d="M160.4,46.9c5.4,1.7,11.1-1.3,12.8-6.7l6.1-19.5c1.7-5.4-1.3-11.1-6.7-12.8
c-5.4-1.7-11.1,1.3-12.8,6.7l-6.1,19.5C152,39.5,155,45.2,160.4,46.9z"/>
<path id="XMLID_470_" class="st11" d="M129.3,219.1c22.1,0.7,47.7-7.3,62.9-24c-16.2,8.3-37.4,18-61.7,17.2
c-24.3-0.8-37.3-6.4-50.8-12.4C90.9,209.1,106.9,218.4,129.3,219.1z"/>
<path id="XMLID_469_" class="st12" d="M136.8,48.2c-21.9-0.7-47.2,7.3-62.2,24c16-8.3,37-18,61.1-17.3c24.1,0.8,36.8,6.4,50.2,12.4
C174.7,58.2,159,48.9,136.8,48.2z"/>
</g>
<g id="XMLID_78_">
<path id="XMLID_637_" class="st13" d="M416.7,177.4c-12,0-23.5,2.5-34,6.8C359.1,138,311.5,106,256,106
c-55.5,0-103.1,32-126.7,78.2c-10.5-4.3-21.9-6.8-34-6.8C46,177.4,6,217.4,6,266.7S46,356,95.3,356c19.1,0,36.8-6.1,51.3-16.4
c26.2,31.6,65.2,52.1,109.4,52.1c44.2,0,83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3
S466,177.4,416.7,177.4z"/>
<path id="XMLID_636_" class="st14" d="M267.8,254.6c-96.2-9.7-186.3,3.7-257.5,33.7c8.9,40,44.5,69.9,87.1,69.9
c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4
c28.6,0,54-13.5,70.4-34.5C428.6,288.3,352.3,263.1,267.8,254.6z"/>
<path id="XMLID_635_" class="st15" d="M416.7,191.7c-12,0-23.5,2.5-34,6.8c-23.7-46.2-71.2-78.2-126.7-78.2
c-55.5,0-103.1,32-126.7,78.2c-10.5-4.3-21.9-6.8-34-6.8C46,191.7,6,231.7,6,281c0,49.3,40,89.3,89.3,89.3
c19.1,0,36.8-6.1,51.3-16.4C172.8,385.5,211.8,406,256,406c44.2,0,83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4
c49.3,0,89.3-40,89.3-89.3C506,231.7,466,191.7,416.7,191.7z"/>
<path id="XMLID_541_" class="st13" d="M156.2,247.5c7.5,0,14.5,1.5,21,4.2c14.6-28.6,44-48.3,78.3-48.3s63.7,19.8,78.3,48.3
c6.5-2.7,13.6-4.2,21-4.2c27.9,0,50.9,20.7,54.6,47.6c0.3-2.5,0.6-5,0.6-7.5c0-30.5-24.7-55.2-55.2-55.2c-7.4,0-14.5,1.5-21,4.2
c-14.6-28.6-44-48.3-78.3-48.3s-63.7,19.8-78.3,48.3c-6.5-2.7-13.5-4.2-21-4.2c-30.5,0-55.2,24.7-55.2,55.2c0,2.6,0.2,5.1,0.6,7.5
C105.2,268.2,128.2,247.5,156.2,247.5z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.6 KiB

View File

@ -0,0 +1,129 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{fill:url(#XMLID_3_);}
.st1{fill:url(#XMLID_4_);}
.st2{fill:url(#XMLID_5_);}
.st3{fill:url(#XMLID_6_);}
.st4{fill:url(#XMLID_7_);}
.st5{fill:url(#XMLID_8_);}
.st6{fill:url(#XMLID_9_);}
.st7{fill:url(#XMLID_10_);}
.st8{fill:url(#XMLID_11_);}
.st9{opacity:0.5;fill:#D58128;enable-background:new ;}
.st10{opacity:0.2;fill:#D58128;enable-background:new ;}
.st11{fill:#BEC6D2;}
.st12{opacity:5.000000e-002;fill:#A7A9AC;enable-background:new ;}
.st13{fill:#D3DEE2;}
.st14{fill:#00ADEE;}
.st15{fill:url(#XMLID_12_);}
.st16{fill:url(#XMLID_13_);}
</style>
<g id="XMLID_27_">
<linearGradient id="XMLID_3_" gradientUnits="userSpaceOnUse" x1="107.1837" y1="17.7359" x2="107.1837" y2="188.3861" gradientTransform="matrix(0.9546 0.2978 -0.2978 0.9546 61.474 3.8986)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E2A025"/>
</linearGradient>
<circle id="XMLID_496_" class="st0" cx="133.1" cy="134.2" r="85.3"/>
<linearGradient id="XMLID_4_" gradientUnits="userSpaceOnUse" x1="186.5537" y1="6.5909" x2="186.5537" y2="41.4178" gradientTransform="matrix(0.9546 0.2978 -0.2978 0.9546 61.474 3.8986)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_495_" class="st1" d="M250.5,72.9c-2.6-5-8.8-6.9-13.8-4.3l-18.1,9.5c-5,2.6-6.9,8.8-4.3,13.8
c2.6,5,8.8,6.9,13.8,4.3l18.1-9.5C251.2,84.1,253.1,77.9,250.5,72.9z"/>
<linearGradient id="XMLID_5_" gradientUnits="userSpaceOnUse" x1="27.879" y1="165.2937" x2="27.879" y2="200.1207" gradientTransform="matrix(0.9546 0.2978 -0.2978 0.9546 61.474 3.8986)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_494_" class="st2" d="M51.8,177.1c-2.6-5-8.8-6.9-13.8-4.3l-18.1,9.5c-5,2.6-6.9,8.8-4.3,13.8s8.8,6.9,13.8,4.3
l18.1-9.5C52.4,188.3,54.4,182.1,51.8,177.1z"/>
<linearGradient id="XMLID_6_" gradientUnits="userSpaceOnUse" x1="219.4633" y1="93.1504" x2="219.4633" y2="113.5508" gradientTransform="matrix(0.9546 0.2978 -0.2978 0.9546 61.474 3.8986)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_492_" class="st3" d="M259.7,174c1.7-5.4-1.3-11.1-6.7-12.8l-19.5-6.1c-5.4-1.7-11.1,1.3-12.8,6.7
s1.3,11.1,6.7,12.8l19.5,6.1C252.3,182.4,258,179.4,259.7,174z"/>
<linearGradient id="XMLID_7_" gradientUnits="userSpaceOnUse" x1="-4.9654" y1="93.1635" x2="-4.9654" y2="113.5824" gradientTransform="matrix(0.9546 0.2978 -0.2978 0.9546 61.474 3.8986)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_491_" class="st4" d="M45.4,107.2c1.7-5.4-1.3-11.1-6.7-12.8l-19.5-6.1C13.9,86.6,8.1,89.6,6.5,95
c-1.7,5.4,1.3,11.1,6.7,12.8l19.5,6.1C38,115.5,43.7,112.6,45.4,107.2z"/>
<linearGradient id="XMLID_8_" gradientUnits="userSpaceOnUse" x1="27.9626" y1="6.6009" x2="27.9626" y2="41.4278" gradientTransform="matrix(0.9546 0.2978 -0.2978 0.9546 61.474 3.8986)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_489_" class="st5" d="M71.5,17.1c-5,2.6-6.9,8.8-4.3,13.8L76.7,49c2.6,5,8.8,6.9,13.8,4.3s6.9-8.8,4.3-13.8
l-9.5-18.1C82.6,16.4,76.5,14.4,71.5,17.1z"/>
<linearGradient id="XMLID_9_" gradientUnits="userSpaceOnUse" x1="186.6133" y1="165.2824" x2="186.6133" y2="200.1094" gradientTransform="matrix(0.9546 0.2978 -0.2978 0.9546 61.474 3.8986)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_477_" class="st6" d="M175.7,215.8c-5,2.6-6.9,8.8-4.3,13.8l9.5,18.1c2.6,5,8.8,6.9,13.8,4.3s6.9-8.8,4.3-13.8
l-9.5-18.1C186.9,215.1,180.7,213.2,175.7,215.8z"/>
<linearGradient id="XMLID_10_" gradientUnits="userSpaceOnUse" x1="107.2838" y1="195.1708" x2="107.2838" y2="235.9716" gradientTransform="matrix(0.9546 0.2978 -0.2978 0.9546 61.474 3.8986)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_475_" class="st7" d="M93.6,261.1c5.4,1.7,11.1-1.3,12.8-6.7l6.1-19.5c1.7-5.4-1.3-11.1-6.7-12.8
c-5.4-1.7-11.1,1.3-12.8,6.7l-6.1,19.5C85.2,253.7,88.2,259.4,93.6,261.1z"/>
<linearGradient id="XMLID_11_" gradientUnits="userSpaceOnUse" x1="107.2623" y1="-29.2752" x2="107.2623" y2="11.5253" gradientTransform="matrix(0.9546 0.2978 -0.2978 0.9546 61.474 3.8986)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_474_" class="st8" d="M160.4,46.9c5.4,1.7,11.1-1.3,12.8-6.7l6.1-19.5c1.7-5.4-1.3-11.1-6.7-12.8
s-11.1,1.3-12.8,6.7l-6.1,19.5C152,39.5,155,45.2,160.4,46.9z"/>
<path id="XMLID_470_" class="st9" d="M129.3,219.1c22.1,0.7,47.7-7.3,62.9-24c-16.2,8.3-37.4,18-61.7,17.2s-37.3-6.4-50.8-12.4
C90.9,209.1,106.9,218.4,129.3,219.1z"/>
<path id="XMLID_469_" class="st10" d="M136.8,48.2c-21.9-0.7-47.2,7.3-62.2,24c16-8.3,37-18,61.1-17.3c24.1,0.8,36.8,6.4,50.2,12.4
C174.7,58.2,159,48.9,136.8,48.2z"/>
</g>
<g id="XMLID_78_">
<path id="XMLID_637_" class="st11" d="M416.7,177.4c-12,0-23.5,2.5-34,6.8C359.1,138,311.5,106,256,106s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,177.4,6,217.4,6,266.7S46,356,95.3,356c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,177.4,416.7,177.4z"/>
<path id="XMLID_636_" class="st12" d="M267.8,254.6c-96.2-9.7-186.3,3.7-257.5,33.7c8.9,40,44.5,69.9,87.1,69.9
c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4
c28.6,0,54-13.5,70.4-34.5C428.6,288.3,352.3,263.1,267.8,254.6z"/>
<path id="XMLID_635_" class="st13" d="M416.7,191.7c-12,0-23.5,2.5-34,6.8c-23.7-46.2-71.2-78.2-126.7-78.2s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,191.7,6,231.7,6,281s40,89.3,89.3,89.3c19.1,0,36.8-6.1,51.3-16.4C172.8,385.5,211.8,406,256,406
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,191.7,416.7,191.7z"/>
<path id="XMLID_541_" class="st11" d="M156.2,247.5c7.5,0,14.5,1.5,21,4.2c14.6-28.6,44-48.3,78.3-48.3s63.7,19.8,78.3,48.3
c6.5-2.7,13.6-4.2,21-4.2c27.9,0,50.9,20.7,54.6,47.6c0.3-2.5,0.6-5,0.6-7.5c0-30.5-24.7-55.2-55.2-55.2c-7.4,0-14.5,1.5-21,4.2
c-14.6-28.6-44-48.3-78.3-48.3s-63.7,19.8-78.3,48.3c-6.5-2.7-13.5-4.2-21-4.2c-30.5,0-55.2,24.7-55.2,55.2c0,2.6,0.2,5.1,0.6,7.5
C105.2,268.2,128.2,247.5,156.2,247.5z"/>
</g>
<path id="XMLID_257_" class="st14" d="M289.4,471.2c4.1,10.5,16,15.6,26.5,11.5s15.6-16,11.5-26.5s-34-30.5-34-30.5
S285.3,460.7,289.4,471.2z"/>
<radialGradient id="XMLID_12_" cx="375.5" cy="91.6" r="32" gradientTransform="matrix(1 0 0 -1 0 512)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#CEECFB"/>
<stop offset="1" style="stop-color:#E1F3FC"/>
</radialGradient>
<path id="XMLID_215_" class="st15" d="M403,415.9h-16.7l11.8-11.8c1.7-1.7,1.7-4.6,0-6.3c-1.7-1.7-4.6-1.7-6.3,0L380,409.6v-16.7
c0-2.5-2-4.5-4.5-4.5s-4.5,2-4.5,4.5v16.7l-11.8-11.8c-1.7-1.7-4.6-1.7-6.3,0c-1.7,1.7-1.7,4.6,0,6.3l11.8,11.8H348
c-2.5,0-4.5,2-4.5,4.5s2,4.5,4.5,4.5h16.7l-11.8,11.8c-1.7,1.7-1.7,4.6,0,6.3c1.7,1.7,4.6,1.7,6.3,0l11.8-11.8v16.7
c0,2.5,2,4.5,4.5,4.5s4.5-2,4.5-4.5v-16.7l11.8,11.8c1.7,1.7,4.6,1.7,6.3,0c1.7-1.7,1.7-4.6,0-6.3l-11.8-11.8H403
c2.5,0,4.5-2,4.5-4.5S405.5,415.9,403,415.9z"/>
<radialGradient id="XMLID_13_" cx="129.5" cy="87.171" r="31.9645" gradientTransform="matrix(1 0 0 -1 0 512)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#CEECFB"/>
<stop offset="1" style="stop-color:#E1F3FC"/>
</radialGradient>
<path id="XMLID_213_" class="st16" d="M157,420.4h-16.7l11.8-11.8c1.7-1.7,1.7-4.6,0-6.3c-1.7-1.7-4.6-1.7-6.3,0L134,414.1v-16.7
c0-2.5-2-4.5-4.5-4.5s-4.5,2-4.5,4.5v16.7l-11.8-11.8c-1.7-1.7-4.6-1.7-6.3,0c-1.7,1.7-1.7,4.6,0,6.3l11.8,11.8H102
c-2.5,0-4.5,2-4.5,4.5s2,4.5,4.5,4.5h16.7l-11.8,11.8c-1.7,1.7-1.7,4.6,0,6.3c1.7,1.7,4.6,1.7,6.3,0l11.8-11.8v16.7
c0,2.5,2,4.5,4.5,4.5s4.5-2,4.5-4.5v-16.7l11.8,11.8c1.7,1.7,4.6,1.7,6.3,0s1.7-4.6,0-6.3l-11.8-11.8H157c2.5,0,4.5-2,4.5-4.5
S159.4,420.4,157,420.4z"/>
<path id="XMLID_1_" class="st14" d="M189.4,471.2c4.1,10.5,16,15.6,26.5,11.5s15.6-16,11.5-26.5s-34-30.5-34-30.5
S185.3,460.7,189.4,471.2z"/>
</svg>

After

Width:  |  Height:  |  Size: 8.6 KiB

View File

@ -0,0 +1,133 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{fill:url(#XMLID_3_);}
.st1{fill:url(#XMLID_4_);}
.st2{fill:url(#XMLID_5_);}
.st3{fill:url(#XMLID_6_);}
.st4{fill:url(#XMLID_7_);}
.st5{fill:url(#XMLID_8_);}
.st6{fill:url(#XMLID_9_);}
.st7{fill:url(#XMLID_10_);}
.st8{fill:url(#XMLID_11_);}
.st9{opacity:0.5;fill:#D58128;enable-background:new ;}
.st10{opacity:0.2;fill:#D58128;enable-background:new ;}
.st11{fill:#BEC6D2;}
.st12{opacity:5.000000e-002;fill:#A7A9AC;enable-background:new ;}
.st13{fill:#D3DEE2;}
.st14{fill:url(#XMLID_12_);}
.st15{fill:url(#XMLID_13_);}
.st16{fill:url(#XMLID_14_);}
</style>
<g id="XMLID_27_">
<linearGradient id="XMLID_3_" gradientUnits="userSpaceOnUse" x1="107.1837" y1="494.264" x2="107.1837" y2="323.6139" gradientTransform="matrix(0.9546 0.2978 0.2978 -0.9546 -90.9996 492.6538)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E2A025"/>
</linearGradient>
<circle id="XMLID_496_" class="st0" cx="133.1" cy="134.2" r="85.3"/>
<linearGradient id="XMLID_4_" gradientUnits="userSpaceOnUse" x1="186.5538" y1="505.4091" x2="186.5538" y2="470.5822" gradientTransform="matrix(0.9546 0.2978 0.2978 -0.9546 -90.9996 492.6538)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_495_" class="st1" d="M250.5,72.9c-2.6-5-8.8-6.9-13.8-4.3l-18.1,9.5c-5,2.6-6.9,8.8-4.3,13.8
c2.6,5,8.8,6.9,13.8,4.3l18.1-9.5C251.2,84.1,253.1,77.9,250.5,72.9z"/>
<linearGradient id="XMLID_5_" gradientUnits="userSpaceOnUse" x1="27.879" y1="346.7063" x2="27.879" y2="311.8793" gradientTransform="matrix(0.9546 0.2978 0.2978 -0.9546 -90.9996 492.6538)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_494_" class="st2" d="M51.8,177.1c-2.6-5-8.8-6.9-13.8-4.3l-18.1,9.5c-5,2.6-6.9,8.8-4.3,13.8s8.8,6.9,13.8,4.3
l18.1-9.5C52.4,188.3,54.4,182.1,51.8,177.1z"/>
<linearGradient id="XMLID_6_" gradientUnits="userSpaceOnUse" x1="219.4633" y1="418.8496" x2="219.4633" y2="398.4492" gradientTransform="matrix(0.9546 0.2978 0.2978 -0.9546 -90.9996 492.6538)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_492_" class="st3" d="M259.7,174c1.7-5.4-1.3-11.1-6.7-12.8l-19.5-6.1c-5.4-1.7-11.1,1.3-12.8,6.7
s1.3,11.1,6.7,12.8l19.5,6.1C252.3,182.4,258,179.4,259.7,174z"/>
<linearGradient id="XMLID_7_" gradientUnits="userSpaceOnUse" x1="-4.9654" y1="418.8365" x2="-4.9654" y2="398.4176" gradientTransform="matrix(0.9546 0.2978 0.2978 -0.9546 -90.9996 492.6538)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_491_" class="st4" d="M45.4,107.2c1.7-5.4-1.3-11.1-6.7-12.8l-19.5-6.1C13.9,86.6,8.1,89.6,6.5,95
c-1.7,5.4,1.3,11.1,6.7,12.8l19.5,6.1C38,115.5,43.7,112.6,45.4,107.2z"/>
<linearGradient id="XMLID_8_" gradientUnits="userSpaceOnUse" x1="27.9626" y1="505.3991" x2="27.9626" y2="470.5722" gradientTransform="matrix(0.9546 0.2978 0.2978 -0.9546 -90.9996 492.6538)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_489_" class="st5" d="M71.5,17.1c-5,2.6-6.9,8.8-4.3,13.8L76.7,49c2.6,5,8.8,6.9,13.8,4.3s6.9-8.8,4.3-13.8
l-9.5-18.1C82.6,16.4,76.5,14.4,71.5,17.1z"/>
<linearGradient id="XMLID_9_" gradientUnits="userSpaceOnUse" x1="186.6133" y1="346.7176" x2="186.6133" y2="311.8906" gradientTransform="matrix(0.9546 0.2978 0.2978 -0.9546 -90.9996 492.6538)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_477_" class="st6" d="M175.7,215.8c-5,2.6-6.9,8.8-4.3,13.8l9.5,18.1c2.6,5,8.8,6.9,13.8,4.3s6.9-8.8,4.3-13.8
l-9.5-18.1C186.9,215.1,180.7,213.2,175.7,215.8z"/>
<linearGradient id="XMLID_10_" gradientUnits="userSpaceOnUse" x1="107.2838" y1="316.8292" x2="107.2838" y2="276.0284" gradientTransform="matrix(0.9546 0.2978 0.2978 -0.9546 -90.9996 492.6538)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_475_" class="st7" d="M93.6,261.1c5.4,1.7,11.1-1.3,12.8-6.7l6.1-19.5c1.7-5.4-1.3-11.1-6.7-12.8
c-5.4-1.7-11.1,1.3-12.8,6.7l-6.1,19.5C85.2,253.7,88.2,259.4,93.6,261.1z"/>
<linearGradient id="XMLID_11_" gradientUnits="userSpaceOnUse" x1="107.2623" y1="541.2752" x2="107.2623" y2="500.4747" gradientTransform="matrix(0.9546 0.2978 0.2978 -0.9546 -90.9996 492.6538)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_474_" class="st8" d="M160.4,46.9c5.4,1.7,11.1-1.3,12.8-6.7l6.1-19.5c1.7-5.4-1.3-11.1-6.7-12.8
s-11.1,1.3-12.8,6.7l-6.1,19.5C152,39.5,155,45.2,160.4,46.9z"/>
<path id="XMLID_470_" class="st9" d="M129.3,219.1c22.1,0.7,47.7-7.3,62.9-24c-16.2,8.3-37.4,18-61.7,17.2s-37.3-6.4-50.8-12.4
C90.9,209.1,106.9,218.4,129.3,219.1z"/>
<path id="XMLID_469_" class="st10" d="M136.8,48.2c-21.9-0.7-47.2,7.3-62.2,24c16-8.3,37-18,61.1-17.3c24.1,0.8,36.8,6.4,50.2,12.4
C174.7,58.2,159,48.9,136.8,48.2z"/>
</g>
<g id="XMLID_78_">
<path id="XMLID_637_" class="st11" d="M416.7,177.4c-12,0-23.5,2.5-34,6.8C359.1,138,311.5,106,256,106s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,177.4,6,217.4,6,266.7S46,356,95.3,356c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,177.4,416.7,177.4z"/>
<path id="XMLID_636_" class="st12" d="M267.8,254.6c-96.2-9.7-186.3,3.7-257.5,33.7c8.9,40,44.5,69.9,87.1,69.9
c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4
c28.6,0,54-13.5,70.4-34.5C428.6,288.3,352.3,263.1,267.8,254.6z"/>
<path id="XMLID_635_" class="st13" d="M416.7,191.7c-12,0-23.5,2.5-34,6.8c-23.7-46.2-71.2-78.2-126.7-78.2s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,191.7,6,231.7,6,281s40,89.3,89.3,89.3c19.1,0,36.8-6.1,51.3-16.4C172.8,385.5,211.8,406,256,406
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,191.7,416.7,191.7z"/>
<path id="XMLID_541_" class="st11" d="M156.2,247.5c7.5,0,14.5,1.5,21,4.2c14.6-28.6,44-48.3,78.3-48.3s63.7,19.8,78.3,48.3
c6.5-2.7,13.6-4.2,21-4.2c27.9,0,50.9,20.7,54.6,47.6c0.3-2.5,0.6-5,0.6-7.5c0-30.5-24.7-55.2-55.2-55.2c-7.4,0-14.5,1.5-21,4.2
c-14.6-28.6-44-48.3-78.3-48.3s-63.7,19.8-78.3,48.3c-6.5-2.7-13.5-4.2-21-4.2c-30.5,0-55.2,24.7-55.2,55.2c0,2.6,0.2,5.1,0.6,7.5
C105.2,268.2,128.2,247.5,156.2,247.5z"/>
</g>
<radialGradient id="XMLID_12_" cx="375.5" cy="91.6" r="32" gradientTransform="matrix(1 0 0 -1 0 512)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#CEECFB"/>
<stop offset="1" style="stop-color:#E1F3FC"/>
</radialGradient>
<path id="XMLID_215_" class="st14" d="M403,415.9h-16.7l11.8-11.8c1.7-1.7,1.7-4.6,0-6.3c-1.7-1.7-4.6-1.7-6.3,0L380,409.6v-16.7
c0-2.5-2-4.5-4.5-4.5s-4.5,2-4.5,4.5v16.7l-11.8-11.8c-1.7-1.7-4.6-1.7-6.3,0c-1.7,1.7-1.7,4.6,0,6.3l11.8,11.8H348
c-2.5,0-4.5,2-4.5,4.5s2,4.5,4.5,4.5h16.7l-11.8,11.8c-1.7,1.7-1.7,4.6,0,6.3c1.7,1.7,4.6,1.7,6.3,0l11.8-11.8v16.7
c0,2.5,2,4.5,4.5,4.5s4.5-2,4.5-4.5v-16.7l11.8,11.8c1.7,1.7,4.6,1.7,6.3,0c1.7-1.7,1.7-4.6,0-6.3l-11.8-11.8H403
c2.5,0,4.5-2,4.5-4.5S405.5,415.9,403,415.9z"/>
<radialGradient id="XMLID_13_" cx="129.5" cy="87.171" r="31.9645" gradientTransform="matrix(1 0 0 -1 0 512)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#CEECFB"/>
<stop offset="1" style="stop-color:#E1F3FC"/>
</radialGradient>
<path id="XMLID_213_" class="st15" d="M157,420.4h-16.7l11.8-11.8c1.7-1.7,1.7-4.6,0-6.3c-1.7-1.7-4.6-1.7-6.3,0L134,414.1v-16.7
c0-2.5-2-4.5-4.5-4.5s-4.5,2-4.5,4.5v16.7l-11.8-11.8c-1.7-1.7-4.6-1.7-6.3,0c-1.7,1.7-1.7,4.6,0,6.3l11.8,11.8H102
c-2.5,0-4.5,2-4.5,4.5s2,4.5,4.5,4.5h16.7l-11.8,11.8c-1.7,1.7-1.7,4.6,0,6.3c1.7,1.7,4.6,1.7,6.3,0l11.8-11.8v16.7
c0,2.5,2,4.5,4.5,4.5s4.5-2,4.5-4.5v-16.7l11.8,11.8c1.7,1.7,4.6,1.7,6.3,0s1.7-4.6,0-6.3l-11.8-11.8H157c2.5,0,4.5-2,4.5-4.5
S159.4,420.4,157,420.4z"/>
<radialGradient id="XMLID_14_" cx="256.5" cy="57.171" r="31.9645" gradientTransform="matrix(1 0 0 -1 0 512)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#CEECFB"/>
<stop offset="1" style="stop-color:#E1F3FC"/>
</radialGradient>
<path id="XMLID_1_" class="st16" d="M284,450.4h-16.7l11.8-11.8c1.7-1.7,1.7-4.6,0-6.3c-1.7-1.7-4.6-1.7-6.3,0L261,444.1v-16.7
c0-2.5-2-4.5-4.5-4.5s-4.5,2-4.5,4.5v16.7l-11.8-11.8c-1.7-1.7-4.6-1.7-6.3,0s-1.7,4.6,0,6.3l11.8,11.8H229c-2.5,0-4.5,2-4.5,4.5
s2,4.5,4.5,4.5h16.7l-11.8,11.8c-1.7,1.7-1.7,4.6,0,6.3c1.7,1.7,4.6,1.7,6.3,0l11.8-11.8v16.7c0,2.5,2,4.5,4.5,4.5s4.5-2,4.5-4.5
v-16.7l11.8,11.8c1.7,1.7,4.6,1.7,6.3,0s1.7-4.6,0-6.3l-11.8-11.8H284c2.5,0,4.5-2,4.5-4.5S286.4,450.4,284,450.4z"/>
</svg>

After

Width:  |  Height:  |  Size: 9.1 KiB

View File

@ -0,0 +1,161 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{fill:url(#XMLID_2_);}
.st1{fill:url(#XMLID_3_);}
.st2{fill:url(#XMLID_4_);}
.st3{fill:url(#XMLID_5_);}
.st4{fill:url(#XMLID_6_);}
.st5{fill:url(#XMLID_7_);}
.st6{fill:url(#XMLID_8_);}
.st7{fill:url(#XMLID_9_);}
.st8{fill:url(#XMLID_10_);}
.st9{fill:url(#XMLID_11_);}
.st10{opacity:0.5;fill:#D58128;enable-background:new ;}
.st11{opacity:0.2;fill:#D58128;enable-background:new ;}
.st12{fill:#BEC6D2;}
.st13{opacity:5.000000e-002;fill:#A7A9AC;enable-background:new ;}
.st14{fill:#D3DEE2;}
.st15{fill:url(#XMLID_12_);}
.st16{fill:url(#XMLID_13_);}
.st17{fill:url(#XMLID_14_);}
.st18{fill:url(#XMLID_15_);}
</style>
<linearGradient id="XMLID_2_" gradientUnits="userSpaceOnUse" x1="1194.1239" y1="223.8" x2="1194.1239" y2="1" gradientTransform="matrix(-1 0 0 -1 1439.9739 512)">
<stop offset="0" style="stop-color:#F8F6C3"/>
<stop offset="2.186788e-002" style="stop-color:#F9F0B1"/>
<stop offset="8.719299e-002" style="stop-color:#FBE684"/>
<stop offset="0.1478" style="stop-color:#FDDE5B"/>
<stop offset="0.2018" style="stop-color:#FED935"/>
<stop offset="0.2472" style="stop-color:#FED616"/>
<stop offset="0.2784" style="stop-color:#FED504"/>
<stop offset="0.3882" style="stop-color:#FDD209"/>
<stop offset="0.5124" style="stop-color:#F9C713"/>
<stop offset="0.6436" style="stop-color:#F3B61B"/>
<stop offset="0.7796" style="stop-color:#EC9E21"/>
<stop offset="0.918" style="stop-color:#E48225"/>
<stop offset="1" style="stop-color:#DF6E26"/>
</linearGradient>
<polygon id="XMLID_287_" class="st0" points="309.7,405.1 261.6,419.1 276.4,511 182,394 230.1,380.1 215.2,288.2 "/>
<g id="XMLID_27_">
<linearGradient id="XMLID_3_" gradientUnits="userSpaceOnUse" x1="107.1837" y1="494.264" x2="107.1837" y2="323.6139" gradientTransform="matrix(0.9546 0.2978 0.2978 -0.9546 -90.9996 492.6538)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E2A025"/>
</linearGradient>
<circle id="XMLID_496_" class="st1" cx="133.1" cy="134.2" r="85.3"/>
<linearGradient id="XMLID_4_" gradientUnits="userSpaceOnUse" x1="186.5538" y1="505.4091" x2="186.5538" y2="470.5822" gradientTransform="matrix(0.9546 0.2978 0.2978 -0.9546 -90.9996 492.6538)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_495_" class="st2" d="M250.5,72.9c-2.6-5-8.8-6.9-13.8-4.3l-18.1,9.5c-5,2.6-6.9,8.8-4.3,13.8
c2.6,5,8.8,6.9,13.8,4.3l18.1-9.5C251.2,84.1,253.1,77.9,250.5,72.9z"/>
<linearGradient id="XMLID_5_" gradientUnits="userSpaceOnUse" x1="27.879" y1="346.7063" x2="27.879" y2="311.8793" gradientTransform="matrix(0.9546 0.2978 0.2978 -0.9546 -90.9996 492.6538)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_494_" class="st3" d="M51.8,177.1c-2.6-5-8.8-6.9-13.8-4.3l-18.1,9.5c-5,2.6-6.9,8.8-4.3,13.8s8.8,6.9,13.8,4.3
l18.1-9.5C52.4,188.3,54.4,182.1,51.8,177.1z"/>
<linearGradient id="XMLID_6_" gradientUnits="userSpaceOnUse" x1="219.4633" y1="418.8496" x2="219.4633" y2="398.4492" gradientTransform="matrix(0.9546 0.2978 0.2978 -0.9546 -90.9996 492.6538)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_492_" class="st4" d="M259.7,174c1.7-5.4-1.3-11.1-6.7-12.8l-19.5-6.1c-5.4-1.7-11.1,1.3-12.8,6.7
s1.3,11.1,6.7,12.8l19.5,6.1C252.3,182.4,258,179.4,259.7,174z"/>
<linearGradient id="XMLID_7_" gradientUnits="userSpaceOnUse" x1="-4.9654" y1="418.8365" x2="-4.9654" y2="398.4176" gradientTransform="matrix(0.9546 0.2978 0.2978 -0.9546 -90.9996 492.6538)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_491_" class="st5" d="M45.4,107.2c1.7-5.4-1.3-11.1-6.7-12.8l-19.5-6.1C13.9,86.6,8.1,89.6,6.5,95
c-1.7,5.4,1.3,11.1,6.7,12.8l19.5,6.1C38,115.5,43.7,112.6,45.4,107.2z"/>
<linearGradient id="XMLID_8_" gradientUnits="userSpaceOnUse" x1="27.9626" y1="505.3991" x2="27.9626" y2="470.5722" gradientTransform="matrix(0.9546 0.2978 0.2978 -0.9546 -90.9996 492.6538)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_489_" class="st6" d="M71.5,17.1c-5,2.6-6.9,8.8-4.3,13.8L76.7,49c2.6,5,8.8,6.9,13.8,4.3s6.9-8.8,4.3-13.8
l-9.5-18.1C82.6,16.4,76.5,14.4,71.5,17.1z"/>
<linearGradient id="XMLID_9_" gradientUnits="userSpaceOnUse" x1="186.6133" y1="346.7176" x2="186.6133" y2="311.8906" gradientTransform="matrix(0.9546 0.2978 0.2978 -0.9546 -90.9996 492.6538)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_477_" class="st7" d="M175.7,215.8c-5,2.6-6.9,8.8-4.3,13.8l9.5,18.1c2.6,5,8.8,6.9,13.8,4.3s6.9-8.8,4.3-13.8
l-9.5-18.1C186.9,215.1,180.7,213.2,175.7,215.8z"/>
<linearGradient id="XMLID_10_" gradientUnits="userSpaceOnUse" x1="107.2838" y1="316.8292" x2="107.2838" y2="276.0284" gradientTransform="matrix(0.9546 0.2978 0.2978 -0.9546 -90.9996 492.6538)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_475_" class="st8" d="M93.6,261.1c5.4,1.7,11.1-1.3,12.8-6.7l6.1-19.5c1.7-5.4-1.3-11.1-6.7-12.8
c-5.4-1.7-11.1,1.3-12.8,6.7l-6.1,19.5C85.2,253.7,88.2,259.4,93.6,261.1z"/>
<linearGradient id="XMLID_11_" gradientUnits="userSpaceOnUse" x1="107.2623" y1="541.2752" x2="107.2623" y2="500.4747" gradientTransform="matrix(0.9546 0.2978 0.2978 -0.9546 -90.9996 492.6538)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="1" style="stop-color:#E7A423"/>
</linearGradient>
<path id="XMLID_474_" class="st9" d="M160.4,46.9c5.4,1.7,11.1-1.3,12.8-6.7l6.1-19.5c1.7-5.4-1.3-11.1-6.7-12.8
s-11.1,1.3-12.8,6.7l-6.1,19.5C152,39.5,155,45.2,160.4,46.9z"/>
<path id="XMLID_470_" class="st10" d="M129.3,219.1c22.1,0.7,47.7-7.3,62.9-24c-16.2,8.3-37.4,18-61.7,17.2s-37.3-6.4-50.8-12.4
C90.9,209.1,106.9,218.4,129.3,219.1z"/>
<path id="XMLID_469_" class="st11" d="M136.8,48.2c-21.9-0.7-47.2,7.3-62.2,24c16-8.3,37-18,61.1-17.3c24.1,0.8,36.8,6.4,50.2,12.4
C174.7,58.2,159,48.9,136.8,48.2z"/>
</g>
<g id="XMLID_78_">
<path id="XMLID_637_" class="st12" d="M416.7,177.4c-12,0-23.5,2.5-34,6.8C359.1,138,311.5,106,256,106s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,177.4,6,217.4,6,266.7S46,356,95.3,356c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,177.4,416.7,177.4z"/>
<path id="XMLID_636_" class="st13" d="M267.8,254.6c-96.2-9.7-186.3,3.7-257.5,33.7c8.9,40,44.5,69.9,87.1,69.9
c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4
c28.6,0,54-13.5,70.4-34.5C428.6,288.3,352.3,263.1,267.8,254.6z"/>
<path id="XMLID_635_" class="st14" d="M416.7,191.7c-12,0-23.5,2.5-34,6.8c-23.7-46.2-71.2-78.2-126.7-78.2s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,191.7,6,231.7,6,281s40,89.3,89.3,89.3c19.1,0,36.8-6.1,51.3-16.4C172.8,385.5,211.8,406,256,406
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,191.7,416.7,191.7z"/>
<path id="XMLID_541_" class="st12" d="M156.2,247.5c7.5,0,14.5,1.5,21,4.2c14.6-28.6,44-48.3,78.3-48.3s63.7,19.8,78.3,48.3
c6.5-2.7,13.6-4.2,21-4.2c27.9,0,50.9,20.7,54.6,47.6c0.3-2.5,0.6-5,0.6-7.5c0-30.5-24.7-55.2-55.2-55.2c-7.4,0-14.5,1.5-21,4.2
c-14.6-28.6-44-48.3-78.3-48.3s-63.7,19.8-78.3,48.3c-6.5-2.7-13.5-4.2-21-4.2c-30.5,0-55.2,24.7-55.2,55.2c0,2.6,0.2,5.1,0.6,7.5
C105.2,268.2,128.2,247.5,156.2,247.5z"/>
</g>
<radialGradient id="XMLID_12_" cx="365.538" cy="410.4113" r="31.962" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#CEECFB"/>
<stop offset="1" style="stop-color:#E1F3FC"/>
</radialGradient>
<path id="XMLID_215_" class="st15" d="M393,405.9h-16.7l11.8-11.8c1.7-1.7,1.7-4.6,0-6.3c-1.7-1.7-4.6-1.7-6.3,0L370,399.6v-16.7
c0-2.5-2-4.5-4.5-4.5c-2.5,0-4.5,2-4.5,4.5v16.7l-11.8-11.8c-1.7-1.7-4.6-1.7-6.3,0c-1.7,1.7-1.7,4.6,0,6.3l11.8,11.8H338
c-2.5,0-4.5,2-4.5,4.5s2,4.5,4.5,4.5h16.7l-11.8,11.8c-1.7,1.7-1.7,4.6,0,6.3c1.7,1.7,4.6,1.7,6.3,0l11.8-11.8v16.7
c0,2.5,2,4.5,4.5,4.5c2.5,0,4.5-2,4.5-4.5v-16.7l11.8,11.8c1.7,1.7,4.6,1.7,6.3,0c1.7-1.7,1.7-4.6,0-6.3l-11.8-11.8H393
c2.5,0,4.5-2,4.5-4.5S395.5,405.9,393,405.9z"/>
<radialGradient id="XMLID_13_" cx="129.462" cy="414.829" r="31.962" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#CEECFB"/>
<stop offset="1" style="stop-color:#E1F3FC"/>
</radialGradient>
<path id="XMLID_213_" class="st16" d="M157,410.4h-16.7l11.8-11.8c1.7-1.7,1.7-4.6,0-6.3c-1.7-1.7-4.6-1.7-6.3,0l-11.8,11.8v-16.7
c0-2.5-2-4.5-4.5-4.5c-2.5,0-4.5,2-4.5,4.5v16.7l-11.8-11.8c-1.7-1.7-4.6-1.7-6.3,0c-1.7,1.7-1.7,4.6,0,6.3l11.8,11.8H102
c-2.5,0-4.5,2-4.5,4.5s2,4.5,4.5,4.5h16.7l-11.8,11.8c-1.7,1.7-1.7,4.6,0,6.3c1.7,1.7,4.6,1.7,6.3,0l11.8-11.8v16.7
c0,2.5,2,4.5,4.5,4.5c2.5,0,4.5-2,4.5-4.5v-16.7l11.8,11.8c1.7,1.7,4.6,1.7,6.3,0c1.7-1.7,1.7-4.6,0-6.3l-11.8-11.8H157
c2.5,0,4.5-2,4.5-4.5S159.4,410.4,157,410.4z"/>
<radialGradient id="XMLID_14_" cx="152.5291" cy="461.5135" r="25.3816" gradientTransform="matrix(0.9444 0 0 0.9444 45.527 46.664)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#CEECFB"/>
<stop offset="1" style="stop-color:#E1F3FC"/>
</radialGradient>
<path id="XMLID_190_" class="st17" d="M210.2,479.2h-12.5l8.9-8.9c1.3-1.3,1.3-3.4,0-4.7c-1.3-1.3-3.4-1.3-4.7,0l-8.9,8.9v-12.5
c0-1.8-1.5-3.3-3.3-3.3s-3.3,1.5-3.3,3.3v12.5l-8.9-8.9c-1.3-1.3-3.4-1.3-4.7,0c-1.3,1.3-1.3,3.4,0,4.7l8.9,8.9H169
c-1.8,0-3.3,1.5-3.3,3.3c0,1.8,1.5,3.3,3.3,3.3h12.5l-8.9,8.9c-1.3,1.3-1.3,3.4,0,4.7c1.3,1.3,3.4,1.3,4.7,0l8.9-8.9v12.5
c0,1.8,1.5,3.3,3.3,3.3s3.3-1.5,3.3-3.3v-12.5l8.9,8.9c1.3,1.3,3.4,1.3,4.7,0c1.3-1.3,1.3-3.4,0-4.7l-8.9-8.9h12.5
c1.8,0,3.3-1.5,3.3-3.3C213.6,480.7,212,479.2,210.2,479.2z"/>
<radialGradient id="XMLID_15_" cx="298.0168" cy="445.0013" r="25.3816" gradientTransform="matrix(0.9444 0 0 0.9444 45.527 46.664)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#CEECFB"/>
<stop offset="1" style="stop-color:#E1F3FC"/>
</radialGradient>
<path id="XMLID_182_" class="st18" d="M347.6,463.6h-12.5l8.9-8.9c1.3-1.3,1.3-3.4,0-4.7c-1.3-1.3-3.4-1.3-4.7,0l-8.9,8.9v-12.5
c0-1.8-1.5-3.3-3.3-3.3c-1.8,0-3.3,1.5-3.3,3.3v12.5l-8.9-8.9c-1.3-1.3-3.4-1.3-4.7,0c-1.3,1.3-1.3,3.4,0,4.7l8.9,8.9h-12.5
c-1.8,0-3.3,1.5-3.3,3.3s1.5,3.3,3.3,3.3h12.5l-8.9,8.9c-1.3,1.3-1.3,3.4,0,4.7c1.3,1.3,3.4,1.3,4.7,0l8.9-8.9v12.5
c0,1.8,1.5,3.3,3.3,3.3c1.8,0,3.3-1.5,3.3-3.3V475l8.9,8.9c1.3,1.3,3.4,1.3,4.7,0c1.3-1.3,1.3-3.4,0-4.7l-8.9-8.9h12.5
c1.8,0,3.3-1.5,3.3-3.3S349.5,463.6,347.6,463.6z"/>
</svg>

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{fill:#BEC6D2;}
.st1{opacity:5.000000e-002;fill:#A7A9AC;enable-background:new ;}
.st2{fill:#D3DEE2;}
.st3{fill-rule:evenodd;clip-rule:evenodd;fill:#B7CAD1;}
</style>
<g id="XMLID_78_">
<path id="XMLID_637_" class="st0" d="M416.7,177.4c-12,0-23.5,2.5-34,6.8C359.1,138,311.5,106,256,106s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,177.4,6,217.4,6,266.7S46,356,95.3,356c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,177.4,416.7,177.4z"/>
<path id="XMLID_636_" class="st1" d="M267.8,254.6c-96.2-9.7-186.3,3.7-257.5,33.7c8.9,40,44.5,69.9,87.1,69.9
c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4
c28.6,0,54-13.5,70.4-34.5C428.6,288.3,352.3,263.1,267.8,254.6z"/>
<path id="XMLID_635_" class="st2" d="M416.7,191.7c-12,0-23.5,2.5-34,6.8c-23.7-46.2-71.2-78.2-126.7-78.2s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,191.7,6,231.7,6,281s40,89.3,89.3,89.3c19.1,0,36.8-6.1,51.3-16.4C172.8,385.5,211.8,406,256,406
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,191.7,416.7,191.7z"/>
<path id="XMLID_541_" class="st0" d="M156.2,247.5c7.5,0,14.5,1.5,21,4.2c14.6-28.6,44-48.3,78.3-48.3s63.7,19.8,78.3,48.3
c6.5-2.7,13.6-4.2,21-4.2c27.9,0,50.9,20.7,54.6,47.6c0.3-2.5,0.6-5,0.6-7.5c0-30.5-24.7-55.2-55.2-55.2c-7.4,0-14.5,1.5-21,4.2
c-14.6-28.6-44-48.3-78.3-48.3s-63.7,19.8-78.3,48.3c-6.5-2.7-13.5-4.2-21-4.2c-30.5,0-55.2,24.7-55.2,55.2c0,2.6,0.2,5.1,0.6,7.5
C105.2,268.2,128.2,247.5,156.2,247.5z"/>
</g>
<path id="XMLID_16_" class="st3" d="M157.9,438.1h196.2c6,0,10.9-4.2,10.9-9.4s-4.9-9.4-10.9-9.4H157.9c-6,0-10.9,4.2-10.9,9.4
S151.9,438.1,157.9,438.1z"/>
<path id="XMLID_13_" class="st3" d="M354.1,448.3H157.9c-6,0-10.9,4.2-10.9,9.4s4.9,9.4,10.9,9.4h196.2c6,0,10.9-4.2,10.9-9.4
S360.1,448.3,354.1,448.3z"/>
<path id="XMLID_11_" class="st3" d="M354.1,477.4H157.9c-6,0-10.9,4.2-10.9,9.4c0,5.2,4.9,9.4,10.9,9.4h196.2c6,0,10.9-4.2,10.9-9.4
C365,481.6,360.1,477.4,354.1,477.4z"/>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{fill:#BEC6D2;}
.st1{opacity:5.000000e-002;fill:#A7A9AC;enable-background:new ;}
.st2{fill:#D3DEE2;}
.st3{fill-rule:evenodd;clip-rule:evenodd;fill:#B7CAD1;}
</style>
<g id="XMLID_78_">
<path id="XMLID_637_" class="st0" d="M416.7,177.4c-12,0-23.5,2.5-34,6.8C359.1,138,311.5,106,256,106s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,177.4,6,217.4,6,266.7S46,356,95.3,356c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,177.4,416.7,177.4z"/>
<path id="XMLID_636_" class="st1" d="M267.8,254.6c-96.2-9.7-186.3,3.7-257.5,33.7c8.9,40,44.5,69.9,87.1,69.9
c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4
c28.6,0,54-13.5,70.4-34.5C428.6,288.3,352.3,263.1,267.8,254.6z"/>
<path id="XMLID_635_" class="st2" d="M416.7,191.7c-12,0-23.5,2.5-34,6.8c-23.7-46.2-71.2-78.2-126.7-78.2s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,191.7,6,231.7,6,281s40,89.3,89.3,89.3c19.1,0,36.8-6.1,51.3-16.4C172.8,385.5,211.8,406,256,406
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,191.7,416.7,191.7z"/>
<path id="XMLID_541_" class="st0" d="M156.2,247.5c7.5,0,14.5,1.5,21,4.2c14.6-28.6,44-48.3,78.3-48.3s63.7,19.8,78.3,48.3
c6.5-2.7,13.6-4.2,21-4.2c27.9,0,50.9,20.7,54.6,47.6c0.3-2.5,0.6-5,0.6-7.5c0-30.5-24.7-55.2-55.2-55.2c-7.4,0-14.5,1.5-21,4.2
c-14.6-28.6-44-48.3-78.3-48.3s-63.7,19.8-78.3,48.3c-6.5-2.7-13.5-4.2-21-4.2c-30.5,0-55.2,24.7-55.2,55.2c0,2.6,0.2,5.1,0.6,7.5
C105.2,268.2,128.2,247.5,156.2,247.5z"/>
</g>
<path id="XMLID_16_" class="st3" d="M157.9,438.1h196.2c6,0,10.9-4.2,10.9-9.4s-4.9-9.4-10.9-9.4H157.9c-6,0-10.9,4.2-10.9,9.4
S151.9,438.1,157.9,438.1z"/>
<path id="XMLID_13_" class="st3" d="M354.1,448.3H157.9c-6,0-10.9,4.2-10.9,9.4s4.9,9.4,10.9,9.4h196.2c6,0,10.9-4.2,10.9-9.4
S360.1,448.3,354.1,448.3z"/>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{fill:url(#XMLID_2_);}
.st1{opacity:0.4;fill:#D58128;}
.st2{opacity:0.5;fill:#D58128;}
.st3{opacity:0.3;fill:#D58128;}
.st4{opacity:0.5;fill:#FFCC05;}
</style>
<g id="XMLID_268_">
<linearGradient id="XMLID_2_" gradientUnits="userSpaceOnUse" x1="197.7818" y1="724.0313" x2="695.6421" y2="724.0313" gradientTransform="matrix(0.1621 0.9868 -0.9868 0.1621 898.0699 -302.1421)">
<stop offset="0" style="stop-color:#FDD900"/>
<stop offset="0.7755" style="stop-color:#E29F25"/>
</linearGradient>
<path id="XMLID_407_" class="st0" d="M295.5,501.3c-66.3,16.5-136-12.4-186.1-51.4c-51.2-40.6-82.9-91.4-98.7-154.3
c-16.5-66.3,12.4-136,51.4-186.1c40.6-51.2,91.4-82.9,154.3-98.7c66.3-16.5,136,12.4,186,51.4c51.2,40.6,82.9,91.4,98.7,154.3
c16.5,66.3-12.4,136-51.4,186.1C409.3,453.7,358.5,485.4,295.5,501.3z"/>
<path id="XMLID_404_" class="st1" d="M240.7,225.2c-15.1,21.4-49.6,20-47.7-6.9c1.6-21.9,13.7-50,38.4-47
C258.7,174.8,255.5,204.2,240.7,225.2z"/>
<path id="XMLID_403_" class="st2" d="M151.1,363.7c-5.2,9.6-20.3,9.5-20.9-2.3c-0.4-9.5,3.9-21.5,14.5-20.4
C156.5,342.3,156.2,354.4,151.1,363.7z"/>
<path id="XMLID_353_" class="st3" d="M326.9,261.1c-5.7,8.1-20.4,6.4-20.3-4.1c0-8.5,4.6-18.8,14.8-17
C332.9,242.1,332.4,253.2,326.9,261.1z"/>
<path id="XMLID_352_" class="st3" d="M260.7,371.6c7.1-30.7,52.1-37.6,65.5-6c10.8,25.8,13.7,63.3-19.6,68.8
C269.1,440.5,253.6,401.7,260.7,371.6z"/>
<path id="XMLID_348_" class="st3" d="M289.9,88c2-15.4,21.9-21.7,28.5-5.2c5.3,13.3,5,31.5-9.3,33.9C293.3,119.5,288,103,289.9,88z
"/>
<path id="XMLID_343_" class="st3" d="M400.2,260.9c4-13.3,26.1-20.3,32.1-7c4.9,10.9,4,27.3-12.7,30.9
C401.1,288.7,396.3,274,400.2,260.9z"/>
<path id="XMLID_339_" class="st2" d="M71.9,177.2c6.1-23.9,38.4-34.4,45.9-11.3c6.2,18.7,3.4,44.8-19.2,51.2
C73.2,224.6,66,200.5,71.9,177.2z"/>
<path id="XMLID_338_" class="st2" d="M263,503.4c58.4-3.7,116.1-28,152.2-64.8c-42.4,18.9-90.5,43.6-153.5,46.7
c-63.1,2.6-98.9-9.9-134.8-22C157.3,484,203.8,506.8,263,503.4z"/>
<path id="XMLID_337_" class="st4" d="M56.9,127.5c70-87.6,171.5-139,290.3-89.6c29.4,13.2,54.4,31.3,75.2,51
c7.4,4.2,14.6,8.5,21.6,12.8c-24.7-29-57-56.8-98.1-75.4C279-4.5,216,4.5,163.4,28.7c-53,25.4-95.5,66.1-130.6,127.3
C40.3,145.7,48.4,136.2,56.9,127.5z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{fill:url(#XMLID_2_);}
.st1{opacity:0.4;fill:#D58128;enable-background:new ;}
.st2{opacity:0.5;fill:#D58128;enable-background:new ;}
.st3{opacity:0.3;fill:#D58128;enable-background:new ;}
.st4{opacity:0.5;fill:#FFCD05;enable-background:new ;}
.st5{fill:#BEC6D2;}
.st6{opacity:5.000000e-002;fill:#A7A9AC;enable-background:new ;}
.st7{fill:#D3DEE2;}
</style>
<g id="XMLID_268_">
<linearGradient id="XMLID_2_" gradientUnits="userSpaceOnUse" x1="179.9286" y1="827.4436" x2="432.9864" y2="827.4436" gradientTransform="matrix(0.1621 0.9868 -0.9868 0.1621 899.8947 -302.2909)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="0.7755" style="stop-color:#E2A025"/>
</linearGradient>
<path id="XMLID_407_" class="st0" d="M153.2,258.9c-33.7,8.4-69.1-6.3-94.6-26.1c-26-20.6-42.1-46.5-50.2-78.4
C0,120.7,14.7,85.3,34.5,59.8c20.6-26,46.5-42.1,78.4-50.2c33.7-8.4,69.1,6.3,94.6,26.1c26,20.6,42.1,46.4,50.2,78.4
c8.4,33.7-6.3,69.1-26.1,94.6C211,234.7,185.2,250.8,153.2,258.9z"/>
<path id="XMLID_404_" class="st1" d="M125.4,118.6c-7.7,10.9-25.2,10.2-24.3-3.5c0.8-11.1,7-25.4,19.5-23.9
C134.5,93,132.9,107.9,125.4,118.6z"/>
<path id="XMLID_403_" class="st2" d="M79.8,189c-2.7,4.9-10.3,4.8-10.6-1.1c-0.2-4.9,2-10.9,7.4-10.4
C82.6,178.1,82.4,184.2,79.8,189z"/>
<path id="XMLID_353_" class="st3" d="M169.2,136.8c-2.9,4.1-10.4,3.2-10.3-2.1c0-4.3,2.3-9.6,7.5-8.6
C172.2,127.1,172,132.8,169.2,136.8z"/>
<path id="XMLID_352_" class="st3" d="M135.5,193c3.6-15.6,26.5-19.1,33.3-3.1c5.5,13.1,7,32.2-10,35
C139.8,228,131.9,208.3,135.5,193z"/>
<path id="XMLID_348_" class="st3" d="M150.4,48.8c1-7.8,11.1-11,14.5-2.6c2.7,6.8,2.5,16-4.7,17.2
C152.1,64.8,149.4,56.5,150.4,48.8z"/>
<path id="XMLID_343_" class="st3" d="M206.5,136.7c2-6.8,13.2-10.3,16.3-3.5c2.5,5.5,2,13.9-6.5,15.7
C206.9,150.8,204.5,143.4,206.5,136.7z"/>
<path id="XMLID_339_" class="st2" d="M39.6,94.2c3.1-12.2,19.5-17.5,23.3-5.7c3.1,9.5,1.7,22.7-9.7,26
C40.2,118.3,36.6,106,39.6,94.2z"/>
<path id="XMLID_338_" class="st2" d="M136.7,260c29.7-1.9,59-14.2,77.3-32.9c-21.6,9.6-46,22.2-78,23.7c-32.1,1.3-50.3-5-68.5-11.2
C83,250.1,106.6,261.7,136.7,260z"/>
<path id="XMLID_337_" class="st4" d="M32,68.9c35.6-44.5,87.1-70.7,147.5-45.5c14.9,6.7,27.7,15.9,38.2,25.9
c3.8,2.1,7.4,4.3,11,6.5c-12.6-14.7-29-28.9-49.9-38.3c-34-15.7-66-11.1-92.8,1.2C59.2,31.6,37.5,52.3,19.7,83.4
C23.5,78.2,27.6,73.3,32,68.9z"/>
</g>
<g id="XMLID_78_">
<path id="XMLID_637_" class="st5" d="M416.7,177.4c-12,0-23.5,2.5-34,6.8C359.1,138,311.5,106,256,106s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,177.4,6,217.4,6,266.7S46,356,95.3,356c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,177.4,416.7,177.4z"/>
<path id="XMLID_636_" class="st6" d="M267.8,254.6c-96.2-9.7-186.3,3.7-257.5,33.7c8.9,40,44.5,69.9,87.1,69.9
c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4
c28.6,0,54-13.5,70.4-34.5C428.6,288.3,352.3,263.1,267.8,254.6z"/>
<path id="XMLID_635_" class="st7" d="M416.7,191.7c-12,0-23.5,2.5-34,6.8c-23.7-46.2-71.2-78.2-126.7-78.2s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,191.7,6,231.7,6,281s40,89.3,89.3,89.3c19.1,0,36.8-6.1,51.3-16.4C172.8,385.5,211.8,406,256,406
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,191.7,416.7,191.7z"/>
<path id="XMLID_541_" class="st5" d="M156.2,247.5c7.5,0,14.5,1.5,21,4.2c14.6-28.6,44-48.3,78.3-48.3s63.7,19.8,78.3,48.3
c6.5-2.7,13.6-4.2,21-4.2c27.9,0,50.9,20.7,54.6,47.6c0.3-2.5,0.6-5,0.6-7.5c0-30.5-24.7-55.2-55.2-55.2c-7.4,0-14.5,1.5-21,4.2
c-14.6-28.6-44-48.3-78.3-48.3s-63.7,19.8-78.3,48.3c-6.5-2.7-13.5-4.2-21-4.2c-30.5,0-55.2,24.7-55.2,55.2c0,2.6,0.2,5.1,0.6,7.5
C105.2,268.2,128.2,247.5,156.2,247.5z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@ -0,0 +1,66 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{fill:url(#XMLID_2_);}
.st1{opacity:0.4;fill:#D58128;enable-background:new ;}
.st2{opacity:0.5;fill:#D58128;enable-background:new ;}
.st3{opacity:0.3;fill:#D58128;enable-background:new ;}
.st4{opacity:0.5;fill:#FFCD05;enable-background:new ;}
.st5{fill:#BEC6D2;}
.st6{opacity:5.000000e-002;fill:#A7A9AC;enable-background:new ;}
.st7{fill:#D3DEE2;}
.st8{fill-rule:evenodd;clip-rule:evenodd;fill:#00ADEE;}
</style>
<g id="XMLID_268_">
<linearGradient id="XMLID_2_" gradientUnits="userSpaceOnUse" x1="179.9286" y1="-315.4436" x2="432.9864" y2="-315.4436" gradientTransform="matrix(0.1621 0.9868 0.9868 -0.1621 394.653 -219.2957)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="0.7755" style="stop-color:#E2A025"/>
</linearGradient>
<path id="XMLID_407_" class="st0" d="M153.2,258.9c-33.7,8.4-69.1-6.3-94.6-26.1c-26-20.6-42.1-46.5-50.2-78.4
C0,120.7,14.7,85.3,34.5,59.8c20.6-26,46.5-42.1,78.4-50.2c33.7-8.4,69.1,6.3,94.6,26.1c26,20.6,42.1,46.4,50.2,78.4
c8.4,33.7-6.3,69.1-26.1,94.6C211,234.7,185.2,250.8,153.2,258.9z"/>
<path id="XMLID_404_" class="st1" d="M125.4,118.6c-7.7,10.9-25.2,10.2-24.3-3.5c0.8-11.1,7-25.4,19.5-23.9
C134.5,93,132.9,107.9,125.4,118.6z"/>
<path id="XMLID_403_" class="st2" d="M79.8,189c-2.7,4.9-10.3,4.8-10.6-1.1c-0.2-4.9,2-10.9,7.4-10.4
C82.6,178.1,82.4,184.2,79.8,189z"/>
<path id="XMLID_353_" class="st3" d="M169.2,136.8c-2.9,4.1-10.4,3.2-10.3-2.1c0-4.3,2.3-9.6,7.5-8.6
C172.2,127.1,172,132.8,169.2,136.8z"/>
<path id="XMLID_352_" class="st3" d="M135.5,193c3.6-15.6,26.5-19.1,33.3-3.1c5.5,13.1,7,32.2-10,35
C139.8,228,131.9,208.3,135.5,193z"/>
<path id="XMLID_348_" class="st3" d="M150.4,48.8c1-7.8,11.1-11,14.5-2.6c2.7,6.8,2.5,16-4.7,17.2
C152.1,64.8,149.4,56.5,150.4,48.8z"/>
<path id="XMLID_343_" class="st3" d="M206.5,136.7c2-6.8,13.2-10.3,16.3-3.5c2.5,5.5,2,13.9-6.5,15.7
C206.9,150.8,204.5,143.4,206.5,136.7z"/>
<path id="XMLID_339_" class="st2" d="M39.6,94.2c3.1-12.2,19.5-17.5,23.3-5.7c3.1,9.5,1.7,22.7-9.7,26
C40.2,118.3,36.6,106,39.6,94.2z"/>
<path id="XMLID_338_" class="st2" d="M136.7,260c29.7-1.9,59-14.2,77.3-32.9c-21.6,9.6-46,22.2-78,23.7c-32.1,1.3-50.3-5-68.5-11.2
C83,250.1,106.6,261.7,136.7,260z"/>
<path id="XMLID_337_" class="st4" d="M32,68.9c35.6-44.5,87.1-70.7,147.5-45.5c14.9,6.7,27.7,15.9,38.2,25.9
c3.8,2.1,7.4,4.3,11,6.5c-12.6-14.7-29-28.9-49.9-38.3c-34-15.7-66-11.1-92.8,1.2C59.2,31.6,37.5,52.3,19.7,83.4
C23.5,78.2,27.6,73.3,32,68.9z"/>
</g>
<g id="XMLID_78_">
<path id="XMLID_637_" class="st5" d="M416.7,177.4c-12,0-23.5,2.5-34,6.8C359.1,138,311.5,106,256,106s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,177.4,6,217.4,6,266.7S46,356,95.3,356c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,177.4,416.7,177.4z"/>
<path id="XMLID_636_" class="st6" d="M267.8,254.6c-96.2-9.7-186.3,3.7-257.5,33.7c8.9,40,44.5,69.9,87.1,69.9
c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4
c28.6,0,54-13.5,70.4-34.5C428.6,288.3,352.3,263.1,267.8,254.6z"/>
<path id="XMLID_635_" class="st7" d="M416.7,191.7c-12,0-23.5,2.5-34,6.8c-23.7-46.2-71.2-78.2-126.7-78.2s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,191.7,6,231.7,6,281s40,89.3,89.3,89.3c19.1,0,36.8-6.1,51.3-16.4C172.8,385.5,211.8,406,256,406
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,191.7,416.7,191.7z"/>
<path id="XMLID_541_" class="st5" d="M156.2,247.5c7.5,0,14.5,1.5,21,4.2c14.6-28.6,44-48.3,78.3-48.3s63.7,19.8,78.3,48.3
c6.5-2.7,13.6-4.2,21-4.2c27.9,0,50.9,20.7,54.6,47.6c0.3-2.5,0.6-5,0.6-7.5c0-30.5-24.7-55.2-55.2-55.2c-7.4,0-14.5,1.5-21,4.2
c-14.6-28.6-44-48.3-78.3-48.3s-63.7,19.8-78.3,48.3c-6.5-2.7-13.5-4.2-21-4.2c-30.5,0-55.2,24.7-55.2,55.2c0,2.6,0.2,5.1,0.6,7.5
C105.2,268.2,128.2,247.5,156.2,247.5z"/>
</g>
<path id="XMLID_45_" class="st8" d="M360.2,458.8c5.4,13.7,20.9,20.4,34.6,15c13.7-5.4,20.4-20.9,15-34.6
c-5.4-13.7-44.4-39.8-44.4-39.8S354.8,445.1,360.2,458.8z"/>
<path id="XMLID_44_" class="st8" d="M119,458.8c5.4,13.7,20.9,20.4,34.6,15c13.7-5.4,20.4-20.9,15-34.6
c-5.4-13.7-44.4-39.8-44.4-39.8S113.6,445.1,119,458.8z"/>
<path id="XMLID_41_" class="st8" d="M239.6,478.8c5.4,13.7,20.9,20.4,34.6,15c13.7-5.4,20.4-20.9,15-34.6
c-5.4-13.7-44.4-39.8-44.4-39.8S234.2,465.1,239.6,478.8z"/>
</svg>

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

@ -0,0 +1,82 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{fill:url(#XMLID_2_);}
.st1{opacity:0.4;fill:#D58128;}
.st2{opacity:0.5;fill:#D58128;}
.st3{opacity:0.3;fill:#D58128;}
.st4{opacity:0.5;fill:#FFCD05;}
.st5{fill-rule:evenodd;clip-rule:evenodd;fill:url(#XMLID_3_);}
.st6{fill-rule:evenodd;clip-rule:evenodd;fill:#00AEEF;}
.st7{fill-rule:evenodd;clip-rule:evenodd;fill:#BEC6D2;}
.st8{opacity:5.000000e-002;fill-rule:evenodd;clip-rule:evenodd;fill:#A7A9AC;}
.st9{fill-rule:evenodd;clip-rule:evenodd;fill:#D3DEE2;}
</style>
<g id="XMLID_268_">
<linearGradient id="XMLID_2_" gradientUnits="userSpaceOnUse" x1="179.9715" y1="827.3492" x2="433.008" y2="827.3492" gradientTransform="matrix(0.1621 0.9868 -0.9868 0.1621 899.8946 -302.2909)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="0.7755" style="stop-color:#E2A025"/>
</linearGradient>
<path id="XMLID_407_" class="st0" d="M153.2,258.9c-33.7,8.4-69.1-6.3-94.6-26.1c-26-20.6-42.1-46.5-50.2-78.4
c-8.4-33.7,6.3-69.1,26.1-94.6c20.6-26,46.5-42.1,78.4-50.2c33.7-8.4,69.1,6.3,94.6,26.1c26,20.6,42.1,46.4,50.2,78.4
c8.4,33.7-6.3,69.1-26.1,94.6C211,234.7,185.2,250.8,153.2,258.9z"/>
<path id="XMLID_404_" class="st1" d="M125.4,118.6c-7.7,10.9-25.2,10.2-24.3-3.5c0.8-11.1,7-25.4,19.5-23.9
C134.5,93,132.9,107.9,125.4,118.6z"/>
<path id="XMLID_403_" class="st2" d="M79.8,189c-2.7,4.9-10.3,4.8-10.6-1.1c-0.2-4.9,2-10.9,7.4-10.4
C82.6,178.1,82.4,184.2,79.8,189z"/>
<path id="XMLID_353_" class="st3" d="M169.2,136.8c-2.9,4.1-10.4,3.2-10.3-2.1c0-4.3,2.3-9.6,7.5-8.6
C172.2,127.1,172,132.8,169.2,136.8z"/>
<path id="XMLID_352_" class="st3" d="M135.5,193c3.6-15.6,26.5-19.1,33.3-3.1c5.5,13.1,7,32.2-10,35
C139.8,228,131.9,208.3,135.5,193z"/>
<path id="XMLID_348_" class="st3" d="M150.4,48.8c1-7.8,11.1-11,14.5-2.6c2.7,6.8,2.5,16-4.7,17.2
C152.1,64.8,149.4,56.5,150.4,48.8z"/>
<path id="XMLID_343_" class="st3" d="M206.5,136.7c2-6.8,13.2-10.3,16.3-3.5c2.5,5.5,2,13.9-6.5,15.7
C206.9,150.8,204.5,143.4,206.5,136.7z"/>
<path id="XMLID_339_" class="st2" d="M39.6,94.2c3.1-12.2,19.5-17.5,23.3-5.7c3.1,9.5,1.7,22.7-9.7,26
C40.2,118.3,36.6,106,39.6,94.2z"/>
<path id="XMLID_338_" class="st2" d="M136.7,260c29.7-1.9,59-14.2,77.3-32.9c-21.6,9.6-46,22.2-78,23.7c-32.1,1.3-50.3-5-68.5-11.2
C83,250.1,106.6,261.7,136.7,260z"/>
<path id="XMLID_337_" class="st4" d="M32,68.9c35.6-44.5,87.1-70.7,147.5-45.5c14.9,6.7,27.7,15.9,38.2,25.9
c3.8,2.1,7.4,4.3,11,6.5c-12.6-14.7-29-28.9-49.9-38.3c-34-15.7-66-11.1-92.8,1.2C59.2,31.6,37.5,52.3,19.7,83.4
C23.5,78.2,27.6,73.3,32,68.9z"/>
</g>
<linearGradient id="XMLID_3_" gradientUnits="userSpaceOnUse" x1="1194.1445" y1="288.1528" x2="1194.1445" y2="510.9846" gradientTransform="matrix(-1 0 0 1 1439.9739 0)">
<stop offset="0" style="stop-color:#F8F6C3"/>
<stop offset="2.186788e-002" style="stop-color:#F9F0B1"/>
<stop offset="8.719299e-002" style="stop-color:#FBE684"/>
<stop offset="0.1478" style="stop-color:#FDDE5B"/>
<stop offset="0.2018" style="stop-color:#FED935"/>
<stop offset="0.2472" style="stop-color:#FED616"/>
<stop offset="0.2784" style="stop-color:#FED504"/>
<stop offset="0.3882" style="stop-color:#FDD209"/>
<stop offset="0.5124" style="stop-color:#F9C713"/>
<stop offset="0.6436" style="stop-color:#F3B61B"/>
<stop offset="0.7796" style="stop-color:#EC9E21"/>
<stop offset="0.918" style="stop-color:#E48225"/>
<stop offset="1" style="stop-color:#DF6E26"/>
</linearGradient>
<polygon id="XMLID_287_" class="st5" points="309.7,405.1 261.6,419.1 276.4,511 182,394 230.1,380.1 215.2,288.2 "/>
<path id="XMLID_67_" class="st6" d="M103,456.7c5.6,14.3,21.7,21.2,36,15.6c14.3-5.6,21.2-21.7,15.6-36
c-5.6-14.3-46.2-41.4-46.2-41.4S97.4,442.4,103,456.7z"/>
<path id="XMLID_38_" class="st6" d="M373,456.6c5.6,14.3,21.7,21.2,36,15.6c14.3-5.6,21.2-21.7,15.6-36
c-5.6-14.3-46.2-41.4-46.2-41.4S367.4,442.4,373,456.6z"/>
<g id="XMLID_78_">
<path id="XMLID_637_" class="st7" d="M416.7,177.4c-12,0-23.5,2.5-34,6.8C359.1,138,311.5,106,256,106c-55.5,0-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,177.4,6,217.4,6,266.7S46,356,95.3,356c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1
c44.2,0,83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,177.4,416.7,177.4z"/>
<path id="XMLID_636_" class="st8" d="M267.8,254.6c-96.2-9.7-186.3,3.7-257.5,33.7c8.9,40,44.5,69.9,87.1,69.9
c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4
c28.6,0,54-13.5,70.4-34.5C428.6,288.3,352.3,263.1,267.8,254.6z"/>
<path id="XMLID_635_" class="st9" d="M416.7,191.7c-12,0-23.5,2.5-34,6.8c-23.7-46.2-71.2-78.2-126.7-78.2
c-55.5,0-103.1,32-126.7,78.2c-10.5-4.3-21.9-6.8-34-6.8C46,191.7,6,231.7,6,281c0,49.3,40,89.3,89.3,89.3
c19.1,0,36.8-6.1,51.3-16.4C172.8,385.5,211.8,406,256,406c44.2,0,83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4
c49.3,0,89.3-40,89.3-89.3C506,231.7,466,191.7,416.7,191.7z"/>
<path id="XMLID_541_" class="st7" d="M156.2,247.5c7.5,0,14.5,1.5,21,4.2c14.6-28.6,44-48.3,78.3-48.3s63.7,19.8,78.3,48.3
c6.5-2.7,13.6-4.2,21-4.2c27.9,0,50.9,20.7,54.6,47.6c0.3-2.5,0.6-5,0.6-7.5c0-30.5-24.7-55.2-55.2-55.2c-7.4,0-14.5,1.5-21,4.2
c-14.6-28.6-44-48.3-78.3-48.3s-63.7,19.8-78.3,48.3c-6.5-2.7-13.5-4.2-21-4.2c-30.5,0-55.2,24.7-55.2,55.2c0,2.6,0.2,5.1,0.6,7.5
C105.2,268.2,128.2,247.5,156.2,247.5z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.6 KiB

View File

@ -0,0 +1,84 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{fill:url(#XMLID_3_);}
.st1{opacity:0.4;fill:#D58128;enable-background:new ;}
.st2{opacity:0.5;fill:#D58128;enable-background:new ;}
.st3{opacity:0.3;fill:#D58128;enable-background:new ;}
.st4{opacity:0.5;fill:#FFCD05;enable-background:new ;}
.st5{fill:#BEC6D2;}
.st6{opacity:5.000000e-002;fill:#A7A9AC;enable-background:new ;}
.st7{fill:#D3DEE2;}
.st8{fill:#00ADEE;}
.st9{fill:url(#XMLID_4_);}
.st10{fill:url(#XMLID_5_);}
</style>
<g id="XMLID_268_">
<linearGradient id="XMLID_3_" gradientUnits="userSpaceOnUse" x1="179.9286" y1="827.4436" x2="432.9864" y2="827.4436" gradientTransform="matrix(0.1621 0.9868 -0.9868 0.1621 899.8947 -302.2909)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="0.7755" style="stop-color:#E2A025"/>
</linearGradient>
<path id="XMLID_407_" class="st0" d="M153.2,258.9c-33.7,8.4-69.1-6.3-94.6-26.1c-26-20.6-42.1-46.5-50.2-78.4
C0,120.7,14.7,85.3,34.5,59.8c20.6-26,46.5-42.1,78.4-50.2c33.7-8.4,69.1,6.3,94.6,26.1c26,20.6,42.1,46.4,50.2,78.4
c8.4,33.7-6.3,69.1-26.1,94.6C211,234.7,185.2,250.8,153.2,258.9z"/>
<path id="XMLID_404_" class="st1" d="M125.4,118.6c-7.7,10.9-25.2,10.2-24.3-3.5c0.8-11.1,7-25.4,19.5-23.9
C134.5,93,132.9,107.9,125.4,118.6z"/>
<path id="XMLID_403_" class="st2" d="M79.8,189c-2.7,4.9-10.3,4.8-10.6-1.1c-0.2-4.9,2-10.9,7.4-10.4
C82.6,178.1,82.4,184.2,79.8,189z"/>
<path id="XMLID_353_" class="st3" d="M169.2,136.8c-2.9,4.1-10.4,3.2-10.3-2.1c0-4.3,2.3-9.6,7.5-8.6
C172.2,127.1,172,132.8,169.2,136.8z"/>
<path id="XMLID_352_" class="st3" d="M135.5,193c3.6-15.6,26.5-19.1,33.3-3.1c5.5,13.1,7,32.2-10,35
C139.8,228,131.9,208.3,135.5,193z"/>
<path id="XMLID_348_" class="st3" d="M150.4,48.8c1-7.8,11.1-11,14.5-2.6c2.7,6.8,2.5,16-4.7,17.2
C152.1,64.8,149.4,56.5,150.4,48.8z"/>
<path id="XMLID_343_" class="st3" d="M206.5,136.7c2-6.8,13.2-10.3,16.3-3.5c2.5,5.5,2,13.9-6.5,15.7
C206.9,150.8,204.5,143.4,206.5,136.7z"/>
<path id="XMLID_339_" class="st2" d="M39.6,94.2c3.1-12.2,19.5-17.5,23.3-5.7c3.1,9.5,1.7,22.7-9.7,26
C40.2,118.3,36.6,106,39.6,94.2z"/>
<path id="XMLID_338_" class="st2" d="M136.7,260c29.7-1.9,59-14.2,77.3-32.9c-21.6,9.6-46,22.2-78,23.7c-32.1,1.3-50.3-5-68.5-11.2
C83,250.1,106.6,261.7,136.7,260z"/>
<path id="XMLID_337_" class="st4" d="M32,68.9c35.6-44.5,87.1-70.7,147.5-45.5c14.9,6.7,27.7,15.9,38.2,25.9
c3.8,2.1,7.4,4.3,11,6.5c-12.6-14.7-29-28.9-49.9-38.3c-34-15.7-66-11.1-92.8,1.2C59.2,31.6,37.5,52.3,19.7,83.4
C23.5,78.2,27.6,73.3,32,68.9z"/>
</g>
<g id="XMLID_78_">
<path id="XMLID_637_" class="st5" d="M416.7,177.4c-12,0-23.5,2.5-34,6.8C359.1,138,311.5,106,256,106s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,177.4,6,217.4,6,266.7S46,356,95.3,356c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,177.4,416.7,177.4z"/>
<path id="XMLID_636_" class="st6" d="M267.8,254.6c-96.2-9.7-186.3,3.7-257.5,33.7c8.9,40,44.5,69.9,87.1,69.9
c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4
c28.6,0,54-13.5,70.4-34.5C428.6,288.3,352.3,263.1,267.8,254.6z"/>
<path id="XMLID_635_" class="st7" d="M416.7,191.7c-12,0-23.5,2.5-34,6.8c-23.7-46.2-71.2-78.2-126.7-78.2s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,191.7,6,231.7,6,281s40,89.3,89.3,89.3c19.1,0,36.8-6.1,51.3-16.4C172.8,385.5,211.8,406,256,406
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,191.7,416.7,191.7z"/>
<path id="XMLID_541_" class="st5" d="M156.2,247.5c7.5,0,14.5,1.5,21,4.2c14.6-28.6,44-48.3,78.3-48.3s63.7,19.8,78.3,48.3
c6.5-2.7,13.6-4.2,21-4.2c27.9,0,50.9,20.7,54.6,47.6c0.3-2.5,0.6-5,0.6-7.5c0-30.5-24.7-55.2-55.2-55.2c-7.4,0-14.5,1.5-21,4.2
c-14.6-28.6-44-48.3-78.3-48.3s-63.7,19.8-78.3,48.3c-6.5-2.7-13.5-4.2-21-4.2c-30.5,0-55.2,24.7-55.2,55.2c0,2.6,0.2,5.1,0.6,7.5
C105.2,268.2,128.2,247.5,156.2,247.5z"/>
</g>
<path id="XMLID_257_" class="st8" d="M289.4,471.2c4.1,10.5,16,15.6,26.5,11.5s15.6-16,11.5-26.5s-34-30.5-34-30.5
S285.3,460.7,289.4,471.2z"/>
<radialGradient id="XMLID_4_" cx="375.5" cy="91.6" r="32" gradientTransform="matrix(1 0 0 -1 0 512)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#CEECFB"/>
<stop offset="1" style="stop-color:#E1F3FC"/>
</radialGradient>
<path id="XMLID_215_" class="st9" d="M403,415.9h-16.7l11.8-11.8c1.7-1.7,1.7-4.6,0-6.3c-1.7-1.7-4.6-1.7-6.3,0L380,409.6v-16.7
c0-2.5-2-4.5-4.5-4.5s-4.5,2-4.5,4.5v16.7l-11.8-11.8c-1.7-1.7-4.6-1.7-6.3,0c-1.7,1.7-1.7,4.6,0,6.3l11.8,11.8H348
c-2.5,0-4.5,2-4.5,4.5s2,4.5,4.5,4.5h16.7l-11.8,11.8c-1.7,1.7-1.7,4.6,0,6.3c1.7,1.7,4.6,1.7,6.3,0l11.8-11.8v16.7
c0,2.5,2,4.5,4.5,4.5s4.5-2,4.5-4.5v-16.7l11.8,11.8c1.7,1.7,4.6,1.7,6.3,0c1.7-1.7,1.7-4.6,0-6.3l-11.8-11.8H403
c2.5,0,4.5-2,4.5-4.5S405.5,415.9,403,415.9z"/>
<radialGradient id="XMLID_5_" cx="129.5" cy="87.171" r="31.9645" gradientTransform="matrix(1 0 0 -1 0 512)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#CEECFB"/>
<stop offset="1" style="stop-color:#E1F3FC"/>
</radialGradient>
<path id="XMLID_213_" class="st10" d="M157,420.4h-16.7l11.8-11.8c1.7-1.7,1.7-4.6,0-6.3c-1.7-1.7-4.6-1.7-6.3,0L134,414.1v-16.7
c0-2.5-2-4.5-4.5-4.5s-4.5,2-4.5,4.5v16.7l-11.8-11.8c-1.7-1.7-4.6-1.7-6.3,0c-1.7,1.7-1.7,4.6,0,6.3l11.8,11.8H102
c-2.5,0-4.5,2-4.5,4.5s2,4.5,4.5,4.5h16.7l-11.8,11.8c-1.7,1.7-1.7,4.6,0,6.3c1.7,1.7,4.6,1.7,6.3,0l11.8-11.8v16.7
c0,2.5,2,4.5,4.5,4.5s4.5-2,4.5-4.5v-16.7l11.8,11.8c1.7,1.7,4.6,1.7,6.3,0s1.7-4.6,0-6.3l-11.8-11.8H157c2.5,0,4.5-2,4.5-4.5
S159.4,420.4,157,420.4z"/>
<path id="XMLID_1_" class="st8" d="M189.4,471.2c4.1,10.5,16,15.6,26.5,11.5s15.6-16,11.5-26.5s-34-30.5-34-30.5
S185.3,460.7,189.4,471.2z"/>
</svg>

After

Width:  |  Height:  |  Size: 6.0 KiB

View File

@ -0,0 +1,88 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{fill:url(#XMLID_3_);}
.st1{opacity:0.4;fill:#D58128;enable-background:new ;}
.st2{opacity:0.5;fill:#D58128;enable-background:new ;}
.st3{opacity:0.3;fill:#D58128;enable-background:new ;}
.st4{opacity:0.5;fill:#FFCD05;enable-background:new ;}
.st5{fill:#BEC6D2;}
.st6{opacity:5.000000e-002;fill:#A7A9AC;enable-background:new ;}
.st7{fill:#D3DEE2;}
.st8{fill:url(#XMLID_4_);}
.st9{fill:url(#XMLID_5_);}
.st10{fill:url(#XMLID_6_);}
</style>
<g id="XMLID_268_">
<linearGradient id="XMLID_3_" gradientUnits="userSpaceOnUse" x1="179.9286" y1="-315.4437" x2="432.9864" y2="-315.4437" gradientTransform="matrix(0.1621 0.9868 0.9868 -0.1621 394.6531 -219.2957)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="0.7755" style="stop-color:#E2A025"/>
</linearGradient>
<path id="XMLID_407_" class="st0" d="M153.2,258.9c-33.7,8.4-69.1-6.3-94.6-26.1c-26-20.6-42.1-46.5-50.2-78.4
C0,120.7,14.7,85.3,34.5,59.8c20.6-26,46.5-42.1,78.4-50.2c33.7-8.4,69.1,6.3,94.6,26.1c26,20.6,42.1,46.4,50.2,78.4
c8.4,33.7-6.3,69.1-26.1,94.6C211,234.7,185.2,250.8,153.2,258.9z"/>
<path id="XMLID_404_" class="st1" d="M125.4,118.6c-7.7,10.9-25.2,10.2-24.3-3.5c0.8-11.1,7-25.4,19.5-23.9
C134.5,93,132.9,107.9,125.4,118.6z"/>
<path id="XMLID_403_" class="st2" d="M79.8,189c-2.7,4.9-10.3,4.8-10.6-1.1c-0.2-4.9,2-10.9,7.4-10.4
C82.6,178.1,82.4,184.2,79.8,189z"/>
<path id="XMLID_353_" class="st3" d="M169.2,136.8c-2.9,4.1-10.4,3.2-10.3-2.1c0-4.3,2.3-9.6,7.5-8.6
C172.2,127.1,172,132.8,169.2,136.8z"/>
<path id="XMLID_352_" class="st3" d="M135.5,193c3.6-15.6,26.5-19.1,33.3-3.1c5.5,13.1,7,32.2-10,35
C139.8,228,131.9,208.3,135.5,193z"/>
<path id="XMLID_348_" class="st3" d="M150.4,48.8c1-7.8,11.1-11,14.5-2.6c2.7,6.8,2.5,16-4.7,17.2
C152.1,64.8,149.4,56.5,150.4,48.8z"/>
<path id="XMLID_343_" class="st3" d="M206.5,136.7c2-6.8,13.2-10.3,16.3-3.5c2.5,5.5,2,13.9-6.5,15.7
C206.9,150.8,204.5,143.4,206.5,136.7z"/>
<path id="XMLID_339_" class="st2" d="M39.6,94.2c3.1-12.2,19.5-17.5,23.3-5.7c3.1,9.5,1.7,22.7-9.7,26
C40.2,118.3,36.6,106,39.6,94.2z"/>
<path id="XMLID_338_" class="st2" d="M136.7,260c29.7-1.9,59-14.2,77.3-32.9c-21.6,9.6-46,22.2-78,23.7c-32.1,1.3-50.3-5-68.5-11.2
C83,250.1,106.6,261.7,136.7,260z"/>
<path id="XMLID_337_" class="st4" d="M32,68.9c35.6-44.5,87.1-70.7,147.5-45.5c14.9,6.7,27.7,15.9,38.2,25.9
c3.8,2.1,7.4,4.3,11,6.5c-12.6-14.7-29-28.9-49.9-38.3c-34-15.7-66-11.1-92.8,1.2C59.2,31.6,37.5,52.3,19.7,83.4
C23.5,78.2,27.6,73.3,32,68.9z"/>
</g>
<g id="XMLID_78_">
<path id="XMLID_637_" class="st5" d="M416.7,177.4c-12,0-23.5,2.5-34,6.8C359.1,138,311.5,106,256,106s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,177.4,6,217.4,6,266.7S46,356,95.3,356c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,177.4,416.7,177.4z"/>
<path id="XMLID_636_" class="st6" d="M267.8,254.6c-96.2-9.7-186.3,3.7-257.5,33.7c8.9,40,44.5,69.9,87.1,69.9
c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4
c28.6,0,54-13.5,70.4-34.5C428.6,288.3,352.3,263.1,267.8,254.6z"/>
<path id="XMLID_635_" class="st7" d="M416.7,191.7c-12,0-23.5,2.5-34,6.8c-23.7-46.2-71.2-78.2-126.7-78.2s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,191.7,6,231.7,6,281s40,89.3,89.3,89.3c19.1,0,36.8-6.1,51.3-16.4C172.8,385.5,211.8,406,256,406
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,191.7,416.7,191.7z"/>
<path id="XMLID_541_" class="st5" d="M156.2,247.5c7.5,0,14.5,1.5,21,4.2c14.6-28.6,44-48.3,78.3-48.3s63.7,19.8,78.3,48.3
c6.5-2.7,13.6-4.2,21-4.2c27.9,0,50.9,20.7,54.6,47.6c0.3-2.5,0.6-5,0.6-7.5c0-30.5-24.7-55.2-55.2-55.2c-7.4,0-14.5,1.5-21,4.2
c-14.6-28.6-44-48.3-78.3-48.3s-63.7,19.8-78.3,48.3c-6.5-2.7-13.5-4.2-21-4.2c-30.5,0-55.2,24.7-55.2,55.2c0,2.6,0.2,5.1,0.6,7.5
C105.2,268.2,128.2,247.5,156.2,247.5z"/>
</g>
<radialGradient id="XMLID_4_" cx="375.5" cy="91.6" r="32" gradientTransform="matrix(1 0 0 -1 0 512)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#CEECFB"/>
<stop offset="1" style="stop-color:#E1F3FC"/>
</radialGradient>
<path id="XMLID_215_" class="st8" d="M403,415.9h-16.7l11.8-11.8c1.7-1.7,1.7-4.6,0-6.3c-1.7-1.7-4.6-1.7-6.3,0L380,409.6v-16.7
c0-2.5-2-4.5-4.5-4.5s-4.5,2-4.5,4.5v16.7l-11.8-11.8c-1.7-1.7-4.6-1.7-6.3,0c-1.7,1.7-1.7,4.6,0,6.3l11.8,11.8H348
c-2.5,0-4.5,2-4.5,4.5s2,4.5,4.5,4.5h16.7l-11.8,11.8c-1.7,1.7-1.7,4.6,0,6.3c1.7,1.7,4.6,1.7,6.3,0l11.8-11.8v16.7
c0,2.5,2,4.5,4.5,4.5s4.5-2,4.5-4.5v-16.7l11.8,11.8c1.7,1.7,4.6,1.7,6.3,0c1.7-1.7,1.7-4.6,0-6.3l-11.8-11.8H403
c2.5,0,4.5-2,4.5-4.5S405.5,415.9,403,415.9z"/>
<radialGradient id="XMLID_5_" cx="129.5" cy="87.171" r="31.9645" gradientTransform="matrix(1 0 0 -1 0 512)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#CEECFB"/>
<stop offset="1" style="stop-color:#E1F3FC"/>
</radialGradient>
<path id="XMLID_213_" class="st9" d="M157,420.4h-16.7l11.8-11.8c1.7-1.7,1.7-4.6,0-6.3c-1.7-1.7-4.6-1.7-6.3,0L134,414.1v-16.7
c0-2.5-2-4.5-4.5-4.5s-4.5,2-4.5,4.5v16.7l-11.8-11.8c-1.7-1.7-4.6-1.7-6.3,0c-1.7,1.7-1.7,4.6,0,6.3l11.8,11.8H102
c-2.5,0-4.5,2-4.5,4.5s2,4.5,4.5,4.5h16.7l-11.8,11.8c-1.7,1.7-1.7,4.6,0,6.3c1.7,1.7,4.6,1.7,6.3,0l11.8-11.8v16.7
c0,2.5,2,4.5,4.5,4.5s4.5-2,4.5-4.5v-16.7l11.8,11.8c1.7,1.7,4.6,1.7,6.3,0s1.7-4.6,0-6.3l-11.8-11.8H157c2.5,0,4.5-2,4.5-4.5
S159.4,420.4,157,420.4z"/>
<radialGradient id="XMLID_6_" cx="256.5" cy="57.171" r="31.9645" gradientTransform="matrix(1 0 0 -1 0 512)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#CEECFB"/>
<stop offset="1" style="stop-color:#E1F3FC"/>
</radialGradient>
<path id="XMLID_1_" class="st10" d="M284,450.4h-16.7l11.8-11.8c1.7-1.7,1.7-4.6,0-6.3c-1.7-1.7-4.6-1.7-6.3,0L261,444.1v-16.7
c0-2.5-2-4.5-4.5-4.5s-4.5,2-4.5,4.5v16.7l-11.8-11.8c-1.7-1.7-4.6-1.7-6.3,0s-1.7,4.6,0,6.3l11.8,11.8H229c-2.5,0-4.5,2-4.5,4.5
s2,4.5,4.5,4.5h16.7l-11.8,11.8c-1.7,1.7-1.7,4.6,0,6.3c1.7,1.7,4.6,1.7,6.3,0l11.8-11.8v16.7c0,2.5,2,4.5,4.5,4.5s4.5-2,4.5-4.5
v-16.7l11.8,11.8c1.7,1.7,4.6,1.7,6.3,0s1.7-4.6,0-6.3l-11.8-11.8H284c2.5,0,4.5-2,4.5-4.5S286.4,450.4,284,450.4z"/>
</svg>

After

Width:  |  Height:  |  Size: 6.4 KiB

View File

@ -0,0 +1,116 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{fill:url(#XMLID_2_);}
.st1{opacity:0.4;fill:#D58128;enable-background:new ;}
.st2{opacity:0.5;fill:#D58128;enable-background:new ;}
.st3{opacity:0.3;fill:#D58128;enable-background:new ;}
.st4{opacity:0.5;fill:#FFCD05;enable-background:new ;}
.st5{fill:url(#XMLID_3_);}
.st6{fill:#BEC6D2;}
.st7{opacity:5.000000e-002;fill:#A7A9AC;enable-background:new ;}
.st8{fill:#D3DEE2;}
.st9{fill:url(#XMLID_4_);}
.st10{fill:url(#XMLID_5_);}
.st11{fill:url(#XMLID_6_);}
.st12{fill:url(#XMLID_7_);}
</style>
<g id="XMLID_268_">
<linearGradient id="XMLID_2_" gradientUnits="userSpaceOnUse" x1="179.9286" y1="-315.4436" x2="432.9864" y2="-315.4436" gradientTransform="matrix(0.1621 0.9868 0.9868 -0.1621 394.653 -219.2957)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="0.7755" style="stop-color:#E2A025"/>
</linearGradient>
<path id="XMLID_407_" class="st0" d="M153.2,258.9c-33.7,8.4-69.1-6.3-94.6-26.1c-26-20.6-42.1-46.5-50.2-78.4
C0,120.7,14.7,85.3,34.5,59.8c20.6-26,46.5-42.1,78.4-50.2c33.7-8.4,69.1,6.3,94.6,26.1c26,20.6,42.1,46.4,50.2,78.4
c8.4,33.7-6.3,69.1-26.1,94.6C211,234.7,185.2,250.8,153.2,258.9z"/>
<path id="XMLID_404_" class="st1" d="M125.4,118.6c-7.7,10.9-25.2,10.2-24.3-3.5c0.8-11.1,7-25.4,19.5-23.9
C134.5,93,132.9,107.9,125.4,118.6z"/>
<path id="XMLID_403_" class="st2" d="M79.8,189c-2.7,4.9-10.3,4.8-10.6-1.1c-0.2-4.9,2-10.9,7.4-10.4
C82.6,178.1,82.4,184.2,79.8,189z"/>
<path id="XMLID_353_" class="st3" d="M169.2,136.8c-2.9,4.1-10.4,3.2-10.3-2.1c0-4.3,2.3-9.6,7.5-8.6
C172.2,127.1,172,132.8,169.2,136.8z"/>
<path id="XMLID_352_" class="st3" d="M135.5,193c3.6-15.6,26.5-19.1,33.3-3.1c5.5,13.1,7,32.2-10,35
C139.8,228,131.9,208.3,135.5,193z"/>
<path id="XMLID_348_" class="st3" d="M150.4,48.8c1-7.8,11.1-11,14.5-2.6c2.7,6.8,2.5,16-4.7,17.2
C152.1,64.8,149.4,56.5,150.4,48.8z"/>
<path id="XMLID_343_" class="st3" d="M206.5,136.7c2-6.8,13.2-10.3,16.3-3.5c2.5,5.5,2,13.9-6.5,15.7
C206.9,150.8,204.5,143.4,206.5,136.7z"/>
<path id="XMLID_339_" class="st2" d="M39.6,94.2c3.1-12.2,19.5-17.5,23.3-5.7c3.1,9.5,1.7,22.7-9.7,26
C40.2,118.3,36.6,106,39.6,94.2z"/>
<path id="XMLID_338_" class="st2" d="M136.7,260c29.7-1.9,59-14.2,77.3-32.9c-21.6,9.6-46,22.2-78,23.7c-32.1,1.3-50.3-5-68.5-11.2
C83,250.1,106.6,261.7,136.7,260z"/>
<path id="XMLID_337_" class="st4" d="M32,68.9c35.6-44.5,87.1-70.7,147.5-45.5c14.9,6.7,27.7,15.9,38.2,25.9
c3.8,2.1,7.4,4.3,11,6.5c-12.6-14.7-29-28.9-49.9-38.3c-34-15.7-66-11.1-92.8,1.2C59.2,31.6,37.5,52.3,19.7,83.4
C23.5,78.2,27.6,73.3,32,68.9z"/>
</g>
<linearGradient id="XMLID_3_" gradientUnits="userSpaceOnUse" x1="1194.1239" y1="223.8" x2="1194.1239" y2="1" gradientTransform="matrix(-1 0 0 -1 1439.9739 512)">
<stop offset="0" style="stop-color:#F8F6C3"/>
<stop offset="2.186788e-002" style="stop-color:#F9F0B1"/>
<stop offset="8.719299e-002" style="stop-color:#FBE684"/>
<stop offset="0.1478" style="stop-color:#FDDE5B"/>
<stop offset="0.2018" style="stop-color:#FED935"/>
<stop offset="0.2472" style="stop-color:#FED616"/>
<stop offset="0.2784" style="stop-color:#FED504"/>
<stop offset="0.3882" style="stop-color:#FDD209"/>
<stop offset="0.5124" style="stop-color:#F9C713"/>
<stop offset="0.6436" style="stop-color:#F3B61B"/>
<stop offset="0.7796" style="stop-color:#EC9E21"/>
<stop offset="0.918" style="stop-color:#E48225"/>
<stop offset="1" style="stop-color:#DF6E26"/>
</linearGradient>
<polygon id="XMLID_287_" class="st5" points="309.7,405.1 261.6,419.1 276.4,511 182,394 230.1,380.1 215.2,288.2 "/>
<g id="XMLID_78_">
<path id="XMLID_637_" class="st6" d="M416.7,177.4c-12,0-23.5,2.5-34,6.8C359.1,138,311.5,106,256,106s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,177.4,6,217.4,6,266.7S46,356,95.3,356c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,177.4,416.7,177.4z"/>
<path id="XMLID_636_" class="st7" d="M267.8,254.6c-96.2-9.7-186.3,3.7-257.5,33.7c8.9,40,44.5,69.9,87.1,69.9
c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4
c28.6,0,54-13.5,70.4-34.5C428.6,288.3,352.3,263.1,267.8,254.6z"/>
<path id="XMLID_635_" class="st8" d="M416.7,191.7c-12,0-23.5,2.5-34,6.8c-23.7-46.2-71.2-78.2-126.7-78.2s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,191.7,6,231.7,6,281s40,89.3,89.3,89.3c19.1,0,36.8-6.1,51.3-16.4C172.8,385.5,211.8,406,256,406
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,191.7,416.7,191.7z"/>
<path id="XMLID_541_" class="st6" d="M156.2,247.5c7.5,0,14.5,1.5,21,4.2c14.6-28.6,44-48.3,78.3-48.3s63.7,19.8,78.3,48.3
c6.5-2.7,13.6-4.2,21-4.2c27.9,0,50.9,20.7,54.6,47.6c0.3-2.5,0.6-5,0.6-7.5c0-30.5-24.7-55.2-55.2-55.2c-7.4,0-14.5,1.5-21,4.2
c-14.6-28.6-44-48.3-78.3-48.3s-63.7,19.8-78.3,48.3c-6.5-2.7-13.5-4.2-21-4.2c-30.5,0-55.2,24.7-55.2,55.2c0,2.6,0.2,5.1,0.6,7.5
C105.2,268.2,128.2,247.5,156.2,247.5z"/>
</g>
<radialGradient id="XMLID_4_" cx="365.538" cy="410.4113" r="31.962" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#CEECFB"/>
<stop offset="1" style="stop-color:#E1F3FC"/>
</radialGradient>
<path id="XMLID_215_" class="st9" d="M393,405.9h-16.7l11.8-11.8c1.7-1.7,1.7-4.6,0-6.3c-1.7-1.7-4.6-1.7-6.3,0L370,399.6v-16.7
c0-2.5-2-4.5-4.5-4.5c-2.5,0-4.5,2-4.5,4.5v16.7l-11.8-11.8c-1.7-1.7-4.6-1.7-6.3,0c-1.7,1.7-1.7,4.6,0,6.3l11.8,11.8H338
c-2.5,0-4.5,2-4.5,4.5s2,4.5,4.5,4.5h16.7l-11.8,11.8c-1.7,1.7-1.7,4.6,0,6.3c1.7,1.7,4.6,1.7,6.3,0l11.8-11.8v16.7
c0,2.5,2,4.5,4.5,4.5c2.5,0,4.5-2,4.5-4.5v-16.7l11.8,11.8c1.7,1.7,4.6,1.7,6.3,0c1.7-1.7,1.7-4.6,0-6.3l-11.8-11.8H393
c2.5,0,4.5-2,4.5-4.5S395.5,405.9,393,405.9z"/>
<radialGradient id="XMLID_5_" cx="129.462" cy="414.829" r="31.962" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#CEECFB"/>
<stop offset="1" style="stop-color:#E1F3FC"/>
</radialGradient>
<path id="XMLID_213_" class="st10" d="M157,410.4h-16.7l11.8-11.8c1.7-1.7,1.7-4.6,0-6.3c-1.7-1.7-4.6-1.7-6.3,0l-11.8,11.8v-16.7
c0-2.5-2-4.5-4.5-4.5c-2.5,0-4.5,2-4.5,4.5v16.7l-11.8-11.8c-1.7-1.7-4.6-1.7-6.3,0c-1.7,1.7-1.7,4.6,0,6.3l11.8,11.8H102
c-2.5,0-4.5,2-4.5,4.5s2,4.5,4.5,4.5h16.7l-11.8,11.8c-1.7,1.7-1.7,4.6,0,6.3c1.7,1.7,4.6,1.7,6.3,0l11.8-11.8v16.7
c0,2.5,2,4.5,4.5,4.5c2.5,0,4.5-2,4.5-4.5v-16.7l11.8,11.8c1.7,1.7,4.6,1.7,6.3,0c1.7-1.7,1.7-4.6,0-6.3l-11.8-11.8H157
c2.5,0,4.5-2,4.5-4.5S159.4,410.4,157,410.4z"/>
<radialGradient id="XMLID_6_" cx="152.5291" cy="461.5135" r="25.3816" gradientTransform="matrix(0.9444 0 0 0.9444 45.527 46.664)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#CEECFB"/>
<stop offset="1" style="stop-color:#E1F3FC"/>
</radialGradient>
<path id="XMLID_190_" class="st11" d="M210.2,479.2h-12.5l8.9-8.9c1.3-1.3,1.3-3.4,0-4.7c-1.3-1.3-3.4-1.3-4.7,0l-8.9,8.9v-12.5
c0-1.8-1.5-3.3-3.3-3.3s-3.3,1.5-3.3,3.3v12.5l-8.9-8.9c-1.3-1.3-3.4-1.3-4.7,0c-1.3,1.3-1.3,3.4,0,4.7l8.9,8.9H169
c-1.8,0-3.3,1.5-3.3,3.3c0,1.8,1.5,3.3,3.3,3.3h12.5l-8.9,8.9c-1.3,1.3-1.3,3.4,0,4.7c1.3,1.3,3.4,1.3,4.7,0l8.9-8.9v12.5
c0,1.8,1.5,3.3,3.3,3.3s3.3-1.5,3.3-3.3v-12.5l8.9,8.9c1.3,1.3,3.4,1.3,4.7,0c1.3-1.3,1.3-3.4,0-4.7l-8.9-8.9h12.5
c1.8,0,3.3-1.5,3.3-3.3C213.6,480.7,212,479.2,210.2,479.2z"/>
<radialGradient id="XMLID_7_" cx="298.0168" cy="445.0013" r="25.3816" gradientTransform="matrix(0.9444 0 0 0.9444 45.527 46.664)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#CEECFB"/>
<stop offset="1" style="stop-color:#E1F3FC"/>
</radialGradient>
<path id="XMLID_182_" class="st12" d="M347.6,463.6h-12.5l8.9-8.9c1.3-1.3,1.3-3.4,0-4.7c-1.3-1.3-3.4-1.3-4.7,0l-8.9,8.9v-12.5
c0-1.8-1.5-3.3-3.3-3.3c-1.8,0-3.3,1.5-3.3,3.3v12.5l-8.9-8.9c-1.3-1.3-3.4-1.3-4.7,0c-1.3,1.3-1.3,3.4,0,4.7l8.9,8.9h-12.5
c-1.8,0-3.3,1.5-3.3,3.3s1.5,3.3,3.3,3.3h12.5l-8.9,8.9c-1.3,1.3-1.3,3.4,0,4.7c1.3,1.3,3.4,1.3,4.7,0l8.9-8.9v12.5
c0,1.8,1.5,3.3,3.3,3.3c1.8,0,3.3-1.5,3.3-3.3V475l8.9,8.9c1.3,1.3,3.4,1.3,4.7,0c1.3-1.3,1.3-3.4,0-4.7l-8.9-8.9h12.5
c1.8,0,3.3-1.5,3.3-3.3S349.5,463.6,347.6,463.6z"/>
</svg>

After

Width:  |  Height:  |  Size: 8.3 KiB

View File

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{fill:url(#XMLID_2_);}
.st1{opacity:0.5;fill:#D58128;}
.st2{opacity:0.5;fill:#FDD900;}
.st3{opacity:0.24;fill:#D58128;}
</style>
<g id="XMLID_22_">
<linearGradient id="XMLID_2_" gradientUnits="userSpaceOnUse" x1="256" y1="6.3033" x2="256" y2="505.6967">
<stop offset="0" style="stop-color:#FDD900"/>
<stop offset="0.7755" style="stop-color:#E29F25"/>
</linearGradient>
<path id="XMLID_420_" class="st0" d="M502,334.9c-89.3,26.8-189.9,5.7-260.4-64.8c-64.9-64.9-88-155.2-70.4-238.8
c0-0.4-0.1-0.7-0.1-1.1c3.3-10.6,2.7-20.3-3.9-23.1c-6.8-2.9-22,2.9-35.1,13c-17.6,10.4-34.2,23.1-49.4,38.2
c-102.4,102.4-102.4,268.3,0,370.7c102.3,102.3,268.2,102.4,370.6,0c23-22.9,40.2-49.3,52.6-77.2
C506.2,344.6,504.9,338.7,502,334.9z"/>
<path id="XMLID_419_" class="st1" d="M237.5,499.4c55.6,6.6,121.4-5.2,162.8-38.7c-42.3,14.6-97.5,31.3-158.7,24
c-61.1-7.3-92.7-22.7-125.7-39.1C142.6,468.4,181.1,492.6,237.5,499.4z"/>
<path id="XMLID_412_" class="st2" d="M469.7,343.2c-64.7,17.2-171.3,2.6-236.4-60.4c-65-63-73.3-154.8-68.2-182.9
c4.7,30.8,18.3,123.6,77.8,175.9C301.2,327.1,405.5,354.5,469.7,343.2z"/>
<path id="XMLID_410_" class="st3" d="M69.4,255.6c-27.6-10.5-32.5-54.7-1.5-62.5c25.3-6.3,59-0.7,60.1,31
C129.4,259.4,96.4,265.9,69.4,255.6z"/>
<path id="XMLID_232_" class="st3" d="M112.5,171.5c-10.1-3.8-11.9-19.9-0.5-22.8c9.2-2.3,21.5-0.2,21.9,11.3
C134.4,172.9,122.4,175.3,112.5,171.5z"/>
<path id="XMLID_231_" class="st3" d="M140.2,281c-10.1-3.8-11.9-19.9-0.5-22.8c9.2-2.3,21.5-0.2,21.9,11.3
C162.1,282.4,150,284.8,140.2,281z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{fill:url(#XMLID_2_);}
.st1{opacity:0.5;fill:#D58128;enable-background:new ;}
.st2{opacity:0.5;fill:#FDD900;enable-background:new ;}
.st3{opacity:0.19;fill:#D58128;enable-background:new ;}
.st4{fill:#BEC6D2;}
.st5{opacity:5.000000e-002;fill:#A7A9AC;enable-background:new ;}
.st6{fill:#D3DEE2;}
.st7{fill:url(#SVGID_1_);}
</style>
<g id="XMLID_58_">
<linearGradient id="XMLID_2_" gradientUnits="userSpaceOnUse" x1="134.7337" y1="8.4131" x2="134.7337" y2="262.2" gradientTransform="matrix(-1 0 0 1 269.379 0)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="0.7755" style="stop-color:#E2A025"/>
</linearGradient>
<path id="XMLID_439_" class="st0" d="M9.7,175.5c45.4,13.6,96.5,2.9,132.3-32.9c33-33,44.7-78.9,35.8-121.4c0-0.2,0-0.4,0-0.6
c-1.7-5.4-1.4-10.3,2-11.8s11.2,1.5,17.8,6.6c8.9,5.3,17.4,11.7,25.1,19.4c52,52,52,136.4,0,188.4s-136.3,52-188.4,0
C22.7,211.6,14,198.2,7.6,184C7.5,180.4,8.2,177.4,9.7,175.5z"/>
<path id="XMLID_438_" class="st1" d="M144.1,259.1c-28.3,3.4-61.7-2.6-82.7-19.7c21.5,7.4,49.6,15.9,80.6,12.2
c31.1-3.7,47.1-11.5,63.9-19.9C192.3,243.3,172.8,255.6,144.1,259.1z"/>
<path id="XMLID_437_" class="st2" d="M26.1,179.7c32.9,8.7,87.1,1.3,120.1-30.7c33.1-32,37.3-78.7,34.7-93
c-2.4,15.6-9.3,62.8-39.6,89.4C111.7,171.5,58.7,185.4,26.1,179.7z"/>
<path id="XMLID_400_" class="st3" d="M231.5,115.2c14-5.3,16.5-27.8,0.7-31.8c-12.8-3.2-30-0.3-30.6,15.7
C201,117.1,217.8,120.4,231.5,115.2z"/>
<path id="XMLID_399_" class="st3" d="M209.6,72.4c5.1-1.9,6-10.1,0.3-11.6c-4.7-1.2-10.9-0.1-11.1,5.7
C198.5,73.1,204.6,74.3,209.6,72.4z"/>
<path id="XMLID_62_" class="st3" d="M195.6,128.1c5.1-1.9,6-10.1,0.3-11.6c-4.7-1.2-10.9-0.1-11.1,5.7
C184.4,128.8,190.5,130,195.6,128.1z"/>
</g>
<g id="XMLID_78_">
<path id="XMLID_637_" class="st4" d="M416.7,177.4c-12,0-23.5,2.5-34,6.8C359.1,138,311.5,106,256,106s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,177.4,6,217.4,6,266.7S46,356,95.3,356c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,177.4,416.7,177.4z"/>
<path id="XMLID_636_" class="st5" d="M267.8,254.6c-96.2-9.7-186.3,3.7-257.5,33.7c8.9,40,44.5,69.9,87.1,69.9
c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4
c28.6,0,54-13.5,70.4-34.5C428.6,288.3,352.3,263.1,267.8,254.6z"/>
<path id="XMLID_635_" class="st6" d="M416.7,191.7c-12,0-23.5,2.5-34,6.8c-23.7-46.2-71.2-78.2-126.7-78.2s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,191.7,6,231.7,6,281s40,89.3,89.3,89.3c19.1,0,36.8-6.1,51.3-16.4C172.8,385.5,211.8,406,256,406
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,191.7,416.7,191.7z"/>
<path id="XMLID_541_" class="st4" d="M156.2,247.5c7.5,0,14.5,1.5,21,4.2c14.6-28.6,44-48.3,78.3-48.3s63.7,19.8,78.3,48.3
c6.5-2.7,13.6-4.2,21-4.2c27.9,0,50.9,20.7,54.6,47.6c0.3-2.5,0.6-5,0.6-7.5c0-30.5-24.7-55.2-55.2-55.2c-7.4,0-14.5,1.5-21,4.2
c-14.6-28.6-44-48.3-78.3-48.3s-63.7,19.8-78.3,48.3c-6.5-2.7-13.5-4.2-21-4.2c-30.5,0-55.2,24.7-55.2,55.2c0,2.6,0.2,5.1,0.6,7.5
C105.2,268.2,128.2,247.5,156.2,247.5z"/>
</g>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="65.1435" y1="35.1068" x2="65.1435" y2="92.1702">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="0.7755" style="stop-color:#E2A025"/>
</linearGradient>
<polygon class="st7" points="65.1,48 83.7,35.1 77.1,56.7 95.1,70.4 72.6,70.8 65.1,92.2 57.7,70.8 35.1,70.4 53.1,56.7 46.6,35.1
"/>
</svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

@ -0,0 +1,63 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{fill:url(#XMLID_2_);}
.st1{opacity:0.5;fill:#D58128;enable-background:new ;}
.st2{opacity:0.5;fill:#FDD900;enable-background:new ;}
.st3{opacity:0.19;fill:#D58128;enable-background:new ;}
.st4{fill:#BEC6D2;}
.st5{opacity:5.000000e-002;fill:#A7A9AC;enable-background:new ;}
.st6{fill:#D3DEE2;}
.st7{fill:#00AEEF;}
.st8{fill:url(#SVGID_1_);}
</style>
<g id="XMLID_58_">
<linearGradient id="XMLID_2_" gradientUnits="userSpaceOnUse" x1="134.7337" y1="503.5869" x2="134.7337" y2="249.8" gradientTransform="matrix(-1 0 0 -1 269.379 512)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="0.7755" style="stop-color:#E2A025"/>
</linearGradient>
<path id="XMLID_439_" class="st0" d="M9.7,175.5c45.4,13.6,96.5,2.9,132.3-32.9c33-33,44.7-78.9,35.8-121.4c0-0.2,0-0.4,0-0.6
c-1.7-5.4-1.4-10.3,2-11.8s11.2,1.5,17.8,6.6c8.9,5.3,17.4,11.7,25.1,19.4c52,52,52,136.4,0,188.4s-136.3,52-188.4,0
C22.7,211.6,14,198.2,7.6,184C7.5,180.4,8.2,177.4,9.7,175.5z"/>
<path id="XMLID_438_" class="st1" d="M144.1,259.1c-28.3,3.4-61.7-2.6-82.7-19.7c21.5,7.4,49.6,15.9,80.6,12.2
c31.1-3.7,47.1-11.5,63.9-19.9C192.3,243.3,172.8,255.6,144.1,259.1z"/>
<path id="XMLID_437_" class="st2" d="M26.1,179.7c32.9,8.7,87.1,1.3,120.1-30.7c33.1-32,37.3-78.7,34.7-93
c-2.4,15.6-9.3,62.8-39.6,89.4C111.7,171.5,58.7,185.4,26.1,179.7z"/>
<path id="XMLID_400_" class="st3" d="M231.5,115.2c14-5.3,16.5-27.8,0.7-31.8c-12.8-3.2-30-0.3-30.6,15.7
C201,117.1,217.8,120.4,231.5,115.2z"/>
<path id="XMLID_399_" class="st3" d="M209.6,72.4c5.1-1.9,6-10.1,0.3-11.6c-4.7-1.2-10.9-0.1-11.1,5.7
C198.5,73.1,204.6,74.3,209.6,72.4z"/>
<path id="XMLID_62_" class="st3" d="M195.6,128.1c5.1-1.9,6-10.1,0.3-11.6c-4.7-1.2-10.9-0.1-11.1,5.7
C184.4,128.8,190.5,130,195.6,128.1z"/>
</g>
<g id="XMLID_78_">
<path id="XMLID_637_" class="st4" d="M416.7,177.4c-12,0-23.5,2.5-34,6.8C359.1,138,311.5,106,256,106s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,177.4,6,217.4,6,266.7S46,356,95.3,356c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,177.4,416.7,177.4z"/>
<path id="XMLID_636_" class="st5" d="M267.8,254.6c-96.2-9.7-186.3,3.7-257.5,33.7c8.9,40,44.5,69.9,87.1,69.9
c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4
c28.6,0,54-13.5,70.4-34.5C428.6,288.3,352.3,263.1,267.8,254.6z"/>
<path id="XMLID_635_" class="st6" d="M416.7,191.7c-12,0-23.5,2.5-34,6.8c-23.7-46.2-71.2-78.2-126.7-78.2s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,191.7,6,231.7,6,281s40,89.3,89.3,89.3c19.1,0,36.8-6.1,51.3-16.4C172.8,385.5,211.8,406,256,406
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,191.7,416.7,191.7z"/>
<path id="XMLID_541_" class="st4" d="M156.2,247.5c7.5,0,14.5,1.5,21,4.2c14.6-28.6,44-48.3,78.3-48.3s63.7,19.8,78.3,48.3
c6.5-2.7,13.6-4.2,21-4.2c27.9,0,50.9,20.7,54.6,47.6c0.3-2.5,0.6-5,0.6-7.5c0-30.5-24.7-55.2-55.2-55.2c-7.4,0-14.5,1.5-21,4.2
c-14.6-28.6-44-48.3-78.3-48.3s-63.7,19.8-78.3,48.3c-6.5-2.7-13.5-4.2-21-4.2c-30.5,0-55.2,24.7-55.2,55.2c0,2.6,0.2,5.1,0.6,7.5
C105.2,268.2,128.2,247.5,156.2,247.5z"/>
</g>
<path id="XMLID_45_" class="st7" d="M360.2,458.8c5.4,13.7,20.9,20.4,34.6,15s20.4-20.9,15-34.6s-44.4-39.8-44.4-39.8
S354.8,445.1,360.2,458.8z"/>
<path id="XMLID_44_" class="st7" d="M119,458.8c5.4,13.7,20.9,20.4,34.6,15c13.7-5.4,20.4-20.9,15-34.6s-44.4-39.8-44.4-39.8
S113.6,445.1,119,458.8z"/>
<path id="XMLID_41_" class="st7" d="M239.6,478.8c5.4,13.7,20.9,20.4,34.6,15s20.4-20.9,15-34.6s-44.4-39.8-44.4-39.8
S234.2,465.1,239.6,478.8z"/>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="65.1435" y1="35.1068" x2="65.1435" y2="92.1702">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="0.7755" style="stop-color:#E2A025"/>
</linearGradient>
<polygon class="st8" points="65.1,48 83.7,35.1 77.1,56.7 95.1,70.4 72.6,70.8 65.1,92.2 57.7,70.8 35.1,70.4 53.1,56.7 46.6,35.1
"/>
</svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@ -0,0 +1,78 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{fill:url(#XMLID_2_);}
.st1{opacity:0.5;fill:#D58128;enable-background:new ;}
.st2{opacity:0.5;fill:#FDD900;enable-background:new ;}
.st3{opacity:0.19;fill:#D58128;enable-background:new ;}
.st4{fill:url(#XMLID_3_);}
.st5{fill:#00AEEF;}
.st6{fill:#BEC6D2;}
.st7{opacity:5.000000e-002;fill:#A7A9AC;enable-background:new ;}
.st8{fill:#D3DEE2;}
.st9{fill:url(#SVGID_1_);}
</style>
<g id="XMLID_58_">
<linearGradient id="XMLID_2_" gradientUnits="userSpaceOnUse" x1="134.7337" y1="503.5869" x2="134.7337" y2="249.8" gradientTransform="matrix(-1 0 0 -1 269.379 512)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="0.7755" style="stop-color:#E2A025"/>
</linearGradient>
<path id="XMLID_439_" class="st0" d="M9.7,175.5c45.4,13.6,96.5,2.9,132.3-32.9c33-33,44.7-78.9,35.8-121.4c0-0.2,0-0.4,0-0.6
c-1.7-5.4-1.4-10.3,2-11.8s11.2,1.5,17.8,6.6c8.9,5.3,17.4,11.7,25.1,19.4c52,52,52,136.4,0,188.4s-136.3,52-188.4,0
C22.7,211.6,14,198.2,7.6,184C7.5,180.4,8.2,177.4,9.7,175.5z"/>
<path id="XMLID_438_" class="st1" d="M144.1,259.1c-28.3,3.4-61.7-2.6-82.7-19.7c21.5,7.4,49.6,15.9,80.6,12.2
c31.1-3.7,47.1-11.5,63.9-19.9C192.3,243.3,172.8,255.6,144.1,259.1z"/>
<path id="XMLID_437_" class="st2" d="M26.1,179.7c32.9,8.7,87.1,1.3,120.1-30.7c33.1-32,37.3-78.7,34.7-93
c-2.4,15.6-9.3,62.8-39.6,89.4C111.7,171.5,58.7,185.4,26.1,179.7z"/>
<path id="XMLID_400_" class="st3" d="M231.5,115.2c14-5.3,16.5-27.8,0.7-31.8c-12.8-3.2-30-0.3-30.6,15.7
C201,117.1,217.8,120.4,231.5,115.2z"/>
<path id="XMLID_399_" class="st3" d="M209.6,72.4c5.1-1.9,6-10.1,0.3-11.6c-4.7-1.2-10.9-0.1-11.1,5.7
C198.5,73.1,204.6,74.3,209.6,72.4z"/>
<path id="XMLID_62_" class="st3" d="M195.6,128.1c5.1-1.9,6-10.1,0.3-11.6c-4.7-1.2-10.9-0.1-11.1,5.7
C184.4,128.8,190.5,130,195.6,128.1z"/>
</g>
<linearGradient id="XMLID_3_" gradientUnits="userSpaceOnUse" x1="1194.1239" y1="223.8" x2="1194.1239" y2="1" gradientTransform="matrix(-1 0 0 -1 1439.9739 512)">
<stop offset="0" style="stop-color:#F8F6C3"/>
<stop offset="2.186788e-002" style="stop-color:#F9F0B1"/>
<stop offset="8.719299e-002" style="stop-color:#FBE684"/>
<stop offset="0.1478" style="stop-color:#FDDE5B"/>
<stop offset="0.2018" style="stop-color:#FED935"/>
<stop offset="0.2472" style="stop-color:#FED616"/>
<stop offset="0.2784" style="stop-color:#FED504"/>
<stop offset="0.3882" style="stop-color:#FDD209"/>
<stop offset="0.5124" style="stop-color:#F9C713"/>
<stop offset="0.6436" style="stop-color:#F3B61B"/>
<stop offset="0.7796" style="stop-color:#EC9E21"/>
<stop offset="0.918" style="stop-color:#E48225"/>
<stop offset="1" style="stop-color:#DF6E26"/>
</linearGradient>
<polygon id="XMLID_287_" class="st4" points="309.7,405.1 261.6,419.1 276.4,511 182,394 230.1,380.1 215.2,288.2 "/>
<path id="XMLID_67_" class="st5" d="M103,456.7c5.6,14.3,21.7,21.2,36,15.6s21.2-21.7,15.6-36c-5.6-14.3-46.2-41.4-46.2-41.4
S97.4,442.4,103,456.7z"/>
<path id="XMLID_38_" class="st5" d="M373,456.6c5.6,14.3,21.7,21.2,36,15.6s21.2-21.7,15.6-36s-46.2-41.4-46.2-41.4
S367.4,442.4,373,456.6z"/>
<g id="XMLID_78_">
<path id="XMLID_637_" class="st6" d="M416.7,177.4c-12,0-23.5,2.5-34,6.8C359.1,138,311.5,106,256,106s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,177.4,6,217.4,6,266.7S46,356,95.3,356c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,177.4,416.7,177.4z"/>
<path id="XMLID_636_" class="st7" d="M267.8,254.6c-96.2-9.7-186.3,3.7-257.5,33.7c8.9,40,44.5,69.9,87.1,69.9
c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4
c28.6,0,54-13.5,70.4-34.5C428.6,288.3,352.3,263.1,267.8,254.6z"/>
<path id="XMLID_635_" class="st8" d="M416.7,191.7c-12,0-23.5,2.5-34,6.8c-23.7-46.2-71.2-78.2-126.7-78.2s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,191.7,6,231.7,6,281s40,89.3,89.3,89.3c19.1,0,36.8-6.1,51.3-16.4C172.8,385.5,211.8,406,256,406
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,191.7,416.7,191.7z"/>
<path id="XMLID_541_" class="st6" d="M156.2,247.5c7.5,0,14.5,1.5,21,4.2c14.6-28.6,44-48.3,78.3-48.3s63.7,19.8,78.3,48.3
c6.5-2.7,13.6-4.2,21-4.2c27.9,0,50.9,20.7,54.6,47.6c0.3-2.5,0.6-5,0.6-7.5c0-30.5-24.7-55.2-55.2-55.2c-7.4,0-14.5,1.5-21,4.2
c-14.6-28.6-44-48.3-78.3-48.3s-63.7,19.8-78.3,48.3c-6.5-2.7-13.5-4.2-21-4.2c-30.5,0-55.2,24.7-55.2,55.2c0,2.6,0.2,5.1,0.6,7.5
C105.2,268.2,128.2,247.5,156.2,247.5z"/>
</g>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="65.1435" y1="35.1068" x2="65.1435" y2="92.1702">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="0.7755" style="stop-color:#E2A025"/>
</linearGradient>
<polygon class="st9" points="65.1,48 83.7,35.1 77.1,56.7 95.1,70.4 72.6,70.8 65.1,92.2 57.7,70.8 35.1,70.4 53.1,56.7 46.6,35.1
"/>
</svg>

After

Width:  |  Height:  |  Size: 5.1 KiB

View File

@ -0,0 +1,81 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{fill:url(#XMLID_3_);}
.st1{opacity:0.5;fill:#D58128;enable-background:new ;}
.st2{opacity:0.5;fill:#FDD900;enable-background:new ;}
.st3{opacity:0.19;fill:#D58128;enable-background:new ;}
.st4{fill:#BEC6D2;}
.st5{opacity:5.000000e-002;fill:#A7A9AC;enable-background:new ;}
.st6{fill:#D3DEE2;}
.st7{fill:url(#SVGID_1_);}
.st8{fill:#00ADEE;}
.st9{fill:url(#XMLID_4_);}
.st10{fill:url(#XMLID_5_);}
</style>
<g id="XMLID_58_">
<linearGradient id="XMLID_3_" gradientUnits="userSpaceOnUse" x1="134.7337" y1="8.4131" x2="134.7337" y2="262.2" gradientTransform="matrix(-1 0 0 1 269.379 0)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="0.7755" style="stop-color:#E2A025"/>
</linearGradient>
<path id="XMLID_439_" class="st0" d="M9.7,175.5c45.4,13.6,96.5,2.9,132.3-32.9c33-33,44.7-78.9,35.8-121.4c0-0.2,0-0.4,0-0.6
c-1.7-5.4-1.4-10.3,2-11.8s11.2,1.5,17.8,6.6c8.9,5.3,17.4,11.7,25.1,19.4c52,52,52,136.4,0,188.4s-136.3,52-188.4,0
C22.7,211.6,14,198.2,7.6,184C7.5,180.4,8.2,177.4,9.7,175.5z"/>
<path id="XMLID_438_" class="st1" d="M144.1,259.1c-28.3,3.4-61.7-2.6-82.7-19.7c21.5,7.4,49.6,15.9,80.6,12.2
c31.1-3.7,47.1-11.5,63.9-19.9C192.3,243.3,172.8,255.6,144.1,259.1z"/>
<path id="XMLID_437_" class="st2" d="M26.1,179.7c32.9,8.7,87.1,1.3,120.1-30.7c33.1-32,37.3-78.7,34.7-93
c-2.4,15.6-9.3,62.8-39.6,89.4C111.7,171.5,58.7,185.4,26.1,179.7z"/>
<path id="XMLID_400_" class="st3" d="M231.5,115.2c14-5.3,16.5-27.8,0.7-31.8c-12.8-3.2-30-0.3-30.6,15.7
C201,117.1,217.8,120.4,231.5,115.2z"/>
<path id="XMLID_399_" class="st3" d="M209.6,72.4c5.1-1.9,6-10.1,0.3-11.6c-4.7-1.2-10.9-0.1-11.1,5.7
C198.5,73.1,204.6,74.3,209.6,72.4z"/>
<path id="XMLID_62_" class="st3" d="M195.6,128.1c5.1-1.9,6-10.1,0.3-11.6c-4.7-1.2-10.9-0.1-11.1,5.7
C184.4,128.8,190.5,130,195.6,128.1z"/>
</g>
<g id="XMLID_78_">
<path id="XMLID_637_" class="st4" d="M416.7,177.4c-12,0-23.5,2.5-34,6.8C359.1,138,311.5,106,256,106s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,177.4,6,217.4,6,266.7S46,356,95.3,356c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,177.4,416.7,177.4z"/>
<path id="XMLID_636_" class="st5" d="M267.8,254.6c-96.2-9.7-186.3,3.7-257.5,33.7c8.9,40,44.5,69.9,87.1,69.9
c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4
c28.6,0,54-13.5,70.4-34.5C428.6,288.3,352.3,263.1,267.8,254.6z"/>
<path id="XMLID_635_" class="st6" d="M416.7,191.7c-12,0-23.5,2.5-34,6.8c-23.7-46.2-71.2-78.2-126.7-78.2s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,191.7,6,231.7,6,281s40,89.3,89.3,89.3c19.1,0,36.8-6.1,51.3-16.4C172.8,385.5,211.8,406,256,406
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,191.7,416.7,191.7z"/>
<path id="XMLID_541_" class="st4" d="M156.2,247.5c7.5,0,14.5,1.5,21,4.2c14.6-28.6,44-48.3,78.3-48.3s63.7,19.8,78.3,48.3
c6.5-2.7,13.6-4.2,21-4.2c27.9,0,50.9,20.7,54.6,47.6c0.3-2.5,0.6-5,0.6-7.5c0-30.5-24.7-55.2-55.2-55.2c-7.4,0-14.5,1.5-21,4.2
c-14.6-28.6-44-48.3-78.3-48.3s-63.7,19.8-78.3,48.3c-6.5-2.7-13.5-4.2-21-4.2c-30.5,0-55.2,24.7-55.2,55.2c0,2.6,0.2,5.1,0.6,7.5
C105.2,268.2,128.2,247.5,156.2,247.5z"/>
</g>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="65.1" y1="476.9" x2="65.1" y2="419.8" gradientTransform="matrix(1 0 0 -1 0 512)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="0.7755" style="stop-color:#E2A025"/>
</linearGradient>
<polygon class="st7" points="65.1,48 83.7,35.1 77.1,56.7 95.1,70.4 72.6,70.8 65.1,92.2 57.7,70.8 35.1,70.4 53.1,56.7 46.6,35.1
"/>
<path id="XMLID_257_" class="st8" d="M289.4,471.2c4.1,10.5,16,15.6,26.5,11.5s15.6-16,11.5-26.5s-34-30.5-34-30.5
S285.3,460.7,289.4,471.2z"/>
<radialGradient id="XMLID_4_" cx="375.5" cy="91.6" r="32" gradientTransform="matrix(1 0 0 -1 0 512)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#CEECFB"/>
<stop offset="1" style="stop-color:#E1F3FC"/>
</radialGradient>
<path id="XMLID_215_" class="st9" d="M403,415.9h-16.7l11.8-11.8c1.7-1.7,1.7-4.6,0-6.3c-1.7-1.7-4.6-1.7-6.3,0L380,409.6v-16.7
c0-2.5-2-4.5-4.5-4.5s-4.5,2-4.5,4.5v16.7l-11.8-11.8c-1.7-1.7-4.6-1.7-6.3,0c-1.7,1.7-1.7,4.6,0,6.3l11.8,11.8H348
c-2.5,0-4.5,2-4.5,4.5s2,4.5,4.5,4.5h16.7l-11.8,11.8c-1.7,1.7-1.7,4.6,0,6.3c1.7,1.7,4.6,1.7,6.3,0l11.8-11.8v16.7
c0,2.5,2,4.5,4.5,4.5s4.5-2,4.5-4.5v-16.7l11.8,11.8c1.7,1.7,4.6,1.7,6.3,0c1.7-1.7,1.7-4.6,0-6.3l-11.8-11.8H403
c2.5,0,4.5-2,4.5-4.5S405.5,415.9,403,415.9z"/>
<radialGradient id="XMLID_5_" cx="129.5" cy="87.171" r="31.9645" gradientTransform="matrix(1 0 0 -1 0 512)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#CEECFB"/>
<stop offset="1" style="stop-color:#E1F3FC"/>
</radialGradient>
<path id="XMLID_213_" class="st10" d="M157,420.4h-16.7l11.8-11.8c1.7-1.7,1.7-4.6,0-6.3c-1.7-1.7-4.6-1.7-6.3,0L134,414.1v-16.7
c0-2.5-2-4.5-4.5-4.5s-4.5,2-4.5,4.5v16.7l-11.8-11.8c-1.7-1.7-4.6-1.7-6.3,0c-1.7,1.7-1.7,4.6,0,6.3l11.8,11.8H102
c-2.5,0-4.5,2-4.5,4.5s2,4.5,4.5,4.5h16.7l-11.8,11.8c-1.7,1.7-1.7,4.6,0,6.3c1.7,1.7,4.6,1.7,6.3,0l11.8-11.8v16.7
c0,2.5,2,4.5,4.5,4.5s4.5-2,4.5-4.5v-16.7l11.8,11.8c1.7,1.7,4.6,1.7,6.3,0s1.7-4.6,0-6.3l-11.8-11.8H157c2.5,0,4.5-2,4.5-4.5
S159.4,420.4,157,420.4z"/>
<path id="XMLID_1_" class="st8" d="M189.4,471.2c4.1,10.5,16,15.6,26.5,11.5s15.6-16,11.5-26.5s-34-30.5-34-30.5
S185.3,460.7,189.4,471.2z"/>
</svg>

After

Width:  |  Height:  |  Size: 5.7 KiB

View File

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{fill:url(#XMLID_3_);}
.st1{opacity:0.5;fill:#D58128;enable-background:new ;}
.st2{opacity:0.5;fill:#FDD900;enable-background:new ;}
.st3{opacity:0.19;fill:#D58128;enable-background:new ;}
.st4{fill:#BEC6D2;}
.st5{opacity:5.000000e-002;fill:#A7A9AC;enable-background:new ;}
.st6{fill:#D3DEE2;}
.st7{fill:url(#SVGID_1_);}
.st8{fill:url(#XMLID_4_);}
.st9{fill:url(#XMLID_5_);}
.st10{fill:url(#XMLID_6_);}
</style>
<g id="XMLID_58_">
<linearGradient id="XMLID_3_" gradientUnits="userSpaceOnUse" x1="134.7337" y1="503.5869" x2="134.7337" y2="249.8" gradientTransform="matrix(-1 0 0 -1 269.379 512)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="0.7755" style="stop-color:#E2A025"/>
</linearGradient>
<path id="XMLID_439_" class="st0" d="M9.7,175.5c45.4,13.6,96.5,2.9,132.3-32.9c33-33,44.7-78.9,35.8-121.4c0-0.2,0-0.4,0-0.6
c-1.7-5.4-1.4-10.3,2-11.8s11.2,1.5,17.8,6.6c8.9,5.3,17.4,11.7,25.1,19.4c52,52,52,136.4,0,188.4s-136.3,52-188.4,0
C22.7,211.6,14,198.2,7.6,184C7.5,180.4,8.2,177.4,9.7,175.5z"/>
<path id="XMLID_438_" class="st1" d="M144.1,259.1c-28.3,3.4-61.7-2.6-82.7-19.7c21.5,7.4,49.6,15.9,80.6,12.2
c31.1-3.7,47.1-11.5,63.9-19.9C192.3,243.3,172.8,255.6,144.1,259.1z"/>
<path id="XMLID_437_" class="st2" d="M26.1,179.7c32.9,8.7,87.1,1.3,120.1-30.7c33.1-32,37.3-78.7,34.7-93
c-2.4,15.6-9.3,62.8-39.6,89.4C111.7,171.5,58.7,185.4,26.1,179.7z"/>
<path id="XMLID_400_" class="st3" d="M231.5,115.2c14-5.3,16.5-27.8,0.7-31.8c-12.8-3.2-30-0.3-30.6,15.7
C201,117.1,217.8,120.4,231.5,115.2z"/>
<path id="XMLID_399_" class="st3" d="M209.6,72.4c5.1-1.9,6-10.1,0.3-11.6c-4.7-1.2-10.9-0.1-11.1,5.7
C198.5,73.1,204.6,74.3,209.6,72.4z"/>
<path id="XMLID_62_" class="st3" d="M195.6,128.1c5.1-1.9,6-10.1,0.3-11.6c-4.7-1.2-10.9-0.1-11.1,5.7
C184.4,128.8,190.5,130,195.6,128.1z"/>
</g>
<g id="XMLID_78_">
<path id="XMLID_637_" class="st4" d="M416.7,177.4c-12,0-23.5,2.5-34,6.8C359.1,138,311.5,106,256,106s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,177.4,6,217.4,6,266.7S46,356,95.3,356c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,177.4,416.7,177.4z"/>
<path id="XMLID_636_" class="st5" d="M267.8,254.6c-96.2-9.7-186.3,3.7-257.5,33.7c8.9,40,44.5,69.9,87.1,69.9
c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4
c28.6,0,54-13.5,70.4-34.5C428.6,288.3,352.3,263.1,267.8,254.6z"/>
<path id="XMLID_635_" class="st6" d="M416.7,191.7c-12,0-23.5,2.5-34,6.8c-23.7-46.2-71.2-78.2-126.7-78.2s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,191.7,6,231.7,6,281s40,89.3,89.3,89.3c19.1,0,36.8-6.1,51.3-16.4C172.8,385.5,211.8,406,256,406
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,191.7,416.7,191.7z"/>
<path id="XMLID_541_" class="st4" d="M156.2,247.5c7.5,0,14.5,1.5,21,4.2c14.6-28.6,44-48.3,78.3-48.3s63.7,19.8,78.3,48.3
c6.5-2.7,13.6-4.2,21-4.2c27.9,0,50.9,20.7,54.6,47.6c0.3-2.5,0.6-5,0.6-7.5c0-30.5-24.7-55.2-55.2-55.2c-7.4,0-14.5,1.5-21,4.2
c-14.6-28.6-44-48.3-78.3-48.3s-63.7,19.8-78.3,48.3c-6.5-2.7-13.5-4.2-21-4.2c-30.5,0-55.2,24.7-55.2,55.2c0,2.6,0.2,5.1,0.6,7.5
C105.2,268.2,128.2,247.5,156.2,247.5z"/>
</g>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="65.1" y1="476.9" x2="65.1" y2="419.8" gradientTransform="matrix(1 0 0 -1 0 512)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="0.7755" style="stop-color:#E2A025"/>
</linearGradient>
<polygon class="st7" points="65.1,48 83.7,35.1 77.1,56.7 95.1,70.4 72.6,70.8 65.1,92.2 57.7,70.8 35.1,70.4 53.1,56.7 46.6,35.1
"/>
<radialGradient id="XMLID_4_" cx="375.5" cy="91.6" r="32" gradientTransform="matrix(1 0 0 -1 0 512)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#CEECFB"/>
<stop offset="1" style="stop-color:#E1F3FC"/>
</radialGradient>
<path id="XMLID_215_" class="st8" d="M403,415.9h-16.7l11.8-11.8c1.7-1.7,1.7-4.6,0-6.3c-1.7-1.7-4.6-1.7-6.3,0L380,409.6v-16.7
c0-2.5-2-4.5-4.5-4.5s-4.5,2-4.5,4.5v16.7l-11.8-11.8c-1.7-1.7-4.6-1.7-6.3,0c-1.7,1.7-1.7,4.6,0,6.3l11.8,11.8H348
c-2.5,0-4.5,2-4.5,4.5s2,4.5,4.5,4.5h16.7l-11.8,11.8c-1.7,1.7-1.7,4.6,0,6.3c1.7,1.7,4.6,1.7,6.3,0l11.8-11.8v16.7
c0,2.5,2,4.5,4.5,4.5s4.5-2,4.5-4.5v-16.7l11.8,11.8c1.7,1.7,4.6,1.7,6.3,0c1.7-1.7,1.7-4.6,0-6.3l-11.8-11.8H403
c2.5,0,4.5-2,4.5-4.5S405.5,415.9,403,415.9z"/>
<radialGradient id="XMLID_5_" cx="129.5" cy="87.171" r="31.9645" gradientTransform="matrix(1 0 0 -1 0 512)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#CEECFB"/>
<stop offset="1" style="stop-color:#E1F3FC"/>
</radialGradient>
<path id="XMLID_213_" class="st9" d="M157,420.4h-16.7l11.8-11.8c1.7-1.7,1.7-4.6,0-6.3c-1.7-1.7-4.6-1.7-6.3,0L134,414.1v-16.7
c0-2.5-2-4.5-4.5-4.5s-4.5,2-4.5,4.5v16.7l-11.8-11.8c-1.7-1.7-4.6-1.7-6.3,0c-1.7,1.7-1.7,4.6,0,6.3l11.8,11.8H102
c-2.5,0-4.5,2-4.5,4.5s2,4.5,4.5,4.5h16.7l-11.8,11.8c-1.7,1.7-1.7,4.6,0,6.3c1.7,1.7,4.6,1.7,6.3,0l11.8-11.8v16.7
c0,2.5,2,4.5,4.5,4.5s4.5-2,4.5-4.5v-16.7l11.8,11.8c1.7,1.7,4.6,1.7,6.3,0s1.7-4.6,0-6.3l-11.8-11.8H157c2.5,0,4.5-2,4.5-4.5
S159.4,420.4,157,420.4z"/>
<radialGradient id="XMLID_6_" cx="256.5" cy="57.171" r="31.9645" gradientTransform="matrix(1 0 0 -1 0 512)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#CEECFB"/>
<stop offset="1" style="stop-color:#E1F3FC"/>
</radialGradient>
<path id="XMLID_1_" class="st10" d="M284,450.4h-16.7l11.8-11.8c1.7-1.7,1.7-4.6,0-6.3c-1.7-1.7-4.6-1.7-6.3,0L261,444.1v-16.7
c0-2.5-2-4.5-4.5-4.5s-4.5,2-4.5,4.5v16.7l-11.8-11.8c-1.7-1.7-4.6-1.7-6.3,0s-1.7,4.6,0,6.3l11.8,11.8H229c-2.5,0-4.5,2-4.5,4.5
s2,4.5,4.5,4.5h16.7l-11.8,11.8c-1.7,1.7-1.7,4.6,0,6.3c1.7,1.7,4.6,1.7,6.3,0l11.8-11.8v16.7c0,2.5,2,4.5,4.5,4.5s4.5-2,4.5-4.5
v-16.7l11.8,11.8c1.7,1.7,4.6,1.7,6.3,0s1.7-4.6,0-6.3l-11.8-11.8H284c2.5,0,4.5-2,4.5-4.5S286.4,450.4,284,450.4z"/>
</svg>

After

Width:  |  Height:  |  Size: 6.2 KiB

View File

@ -0,0 +1,112 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{fill:url(#XMLID_2_);}
.st1{opacity:0.5;fill:#D58128;enable-background:new ;}
.st2{opacity:0.5;fill:#FDD900;enable-background:new ;}
.st3{opacity:0.19;fill:#D58128;enable-background:new ;}
.st4{fill:url(#XMLID_3_);}
.st5{fill:#BEC6D2;}
.st6{opacity:5.000000e-002;fill:#A7A9AC;enable-background:new ;}
.st7{fill:#D3DEE2;}
.st8{fill:url(#XMLID_4_);}
.st9{fill:url(#XMLID_5_);}
.st10{fill:url(#XMLID_6_);}
.st11{fill:url(#XMLID_7_);}
.st12{fill:url(#SVGID_1_);}
</style>
<g id="XMLID_58_">
<linearGradient id="XMLID_2_" gradientUnits="userSpaceOnUse" x1="134.7337" y1="8.4131" x2="134.7337" y2="262.2" gradientTransform="matrix(-1 0 0 1 269.379 0)">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="0.7755" style="stop-color:#E2A025"/>
</linearGradient>
<path id="XMLID_439_" class="st0" d="M9.7,175.5c45.4,13.6,96.5,2.9,132.3-32.9c33-33,44.7-78.9,35.8-121.4c0-0.2,0-0.4,0-0.6
c-1.7-5.4-1.4-10.3,2-11.8s11.2,1.5,17.8,6.6c8.9,5.3,17.4,11.7,25.1,19.4c52,52,52,136.4,0,188.4s-136.3,52-188.4,0
C22.7,211.6,14,198.2,7.6,184C7.5,180.4,8.2,177.4,9.7,175.5z"/>
<path id="XMLID_438_" class="st1" d="M144.1,259.1c-28.3,3.4-61.7-2.6-82.7-19.7c21.5,7.4,49.6,15.9,80.6,12.2
c31.1-3.7,47.1-11.5,63.9-19.9C192.3,243.3,172.8,255.6,144.1,259.1z"/>
<path id="XMLID_437_" class="st2" d="M26.1,179.7c32.9,8.7,87.1,1.3,120.1-30.7c33.1-32,37.3-78.7,34.7-93
c-2.4,15.6-9.3,62.8-39.6,89.4C111.7,171.5,58.7,185.4,26.1,179.7z"/>
<path id="XMLID_400_" class="st3" d="M231.5,115.2c14-5.3,16.5-27.8,0.7-31.8c-12.8-3.2-30-0.3-30.6,15.7
C201,117.1,217.8,120.4,231.5,115.2z"/>
<path id="XMLID_399_" class="st3" d="M209.6,72.4c5.1-1.9,6-10.1,0.3-11.6c-4.7-1.2-10.9-0.1-11.1,5.7
C198.5,73.1,204.6,74.3,209.6,72.4z"/>
<path id="XMLID_62_" class="st3" d="M195.6,128.1c5.1-1.9,6-10.1,0.3-11.6c-4.7-1.2-10.9-0.1-11.1,5.7
C184.4,128.8,190.5,130,195.6,128.1z"/>
</g>
<linearGradient id="XMLID_3_" gradientUnits="userSpaceOnUse" x1="1194.1239" y1="288.2" x2="1194.1239" y2="511" gradientTransform="matrix(-1 0 0 1 1439.9739 0)">
<stop offset="0" style="stop-color:#F8F6C3"/>
<stop offset="2.186788e-002" style="stop-color:#F9F0B1"/>
<stop offset="8.719299e-002" style="stop-color:#FBE684"/>
<stop offset="0.1478" style="stop-color:#FDDE5B"/>
<stop offset="0.2018" style="stop-color:#FED935"/>
<stop offset="0.2472" style="stop-color:#FED616"/>
<stop offset="0.2784" style="stop-color:#FED504"/>
<stop offset="0.3882" style="stop-color:#FDD209"/>
<stop offset="0.5124" style="stop-color:#F9C713"/>
<stop offset="0.6436" style="stop-color:#F3B61B"/>
<stop offset="0.7796" style="stop-color:#EC9E21"/>
<stop offset="0.918" style="stop-color:#E48225"/>
<stop offset="1" style="stop-color:#DF6E26"/>
</linearGradient>
<polygon id="XMLID_287_" class="st4" points="309.7,405.1 261.6,419.1 276.4,511 182,394 230.1,380.1 215.2,288.2 "/>
<g id="XMLID_78_">
<path id="XMLID_637_" class="st5" d="M416.7,177.4c-12,0-23.5,2.5-34,6.8C359.1,138,311.5,106,256,106s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,177.4,6,217.4,6,266.7S46,356,95.3,356c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,177.4,416.7,177.4z"/>
<path id="XMLID_636_" class="st6" d="M267.8,254.6c-96.2-9.7-186.3,3.7-257.5,33.7c8.9,40,44.5,69.9,87.1,69.9
c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4
c28.6,0,54-13.5,70.4-34.5C428.6,288.3,352.3,263.1,267.8,254.6z"/>
<path id="XMLID_635_" class="st7" d="M416.7,191.7c-12,0-23.5,2.5-34,6.8c-23.7-46.2-71.2-78.2-126.7-78.2s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,191.7,6,231.7,6,281s40,89.3,89.3,89.3c19.1,0,36.8-6.1,51.3-16.4C172.8,385.5,211.8,406,256,406
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,191.7,416.7,191.7z"/>
<path id="XMLID_541_" class="st5" d="M156.2,247.5c7.5,0,14.5,1.5,21,4.2c14.6-28.6,44-48.3,78.3-48.3s63.7,19.8,78.3,48.3
c6.5-2.7,13.6-4.2,21-4.2c27.9,0,50.9,20.7,54.6,47.6c0.3-2.5,0.6-5,0.6-7.5c0-30.5-24.7-55.2-55.2-55.2c-7.4,0-14.5,1.5-21,4.2
c-14.6-28.6-44-48.3-78.3-48.3s-63.7,19.8-78.3,48.3c-6.5-2.7-13.5-4.2-21-4.2c-30.5,0-55.2,24.7-55.2,55.2c0,2.6,0.2,5.1,0.6,7.5
C105.2,268.2,128.2,247.5,156.2,247.5z"/>
</g>
<radialGradient id="XMLID_4_" cx="365.5" cy="101.6" r="32" gradientTransform="matrix(1 0 0 -1 0 512)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#CEECFB"/>
<stop offset="1" style="stop-color:#E1F3FC"/>
</radialGradient>
<path id="XMLID_215_" class="st8" d="M393,405.9h-16.7l11.8-11.8c1.7-1.7,1.7-4.6,0-6.3c-1.7-1.7-4.6-1.7-6.3,0L370,399.6v-16.7
c0-2.5-2-4.5-4.5-4.5s-4.5,2-4.5,4.5v16.7l-11.8-11.8c-1.7-1.7-4.6-1.7-6.3,0c-1.7,1.7-1.7,4.6,0,6.3l11.8,11.8H338
c-2.5,0-4.5,2-4.5,4.5s2,4.5,4.5,4.5h16.7l-11.8,11.8c-1.7,1.7-1.7,4.6,0,6.3c1.7,1.7,4.6,1.7,6.3,0l11.8-11.8v16.7
c0,2.5,2,4.5,4.5,4.5s4.5-2,4.5-4.5v-16.7l11.8,11.8c1.7,1.7,4.6,1.7,6.3,0c1.7-1.7,1.7-4.6,0-6.3l-11.8-11.8H393
c2.5,0,4.5-2,4.5-4.5S395.5,405.9,393,405.9z"/>
<radialGradient id="XMLID_5_" cx="129.5" cy="97.171" r="31.9645" gradientTransform="matrix(1 0 0 -1 0 512)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#CEECFB"/>
<stop offset="1" style="stop-color:#E1F3FC"/>
</radialGradient>
<path id="XMLID_213_" class="st9" d="M157,410.4h-16.7l11.8-11.8c1.7-1.7,1.7-4.6,0-6.3c-1.7-1.7-4.6-1.7-6.3,0L134,404.1v-16.7
c0-2.5-2-4.5-4.5-4.5s-4.5,2-4.5,4.5v16.7l-11.8-11.8c-1.7-1.7-4.6-1.7-6.3,0c-1.7,1.7-1.7,4.6,0,6.3l11.8,11.8H102
c-2.5,0-4.5,2-4.5,4.5s2,4.5,4.5,4.5h16.7l-11.8,11.8c-1.7,1.7-1.7,4.6,0,6.3c1.7,1.7,4.6,1.7,6.3,0l11.8-11.8v16.7
c0,2.5,2,4.5,4.5,4.5s4.5-2,4.5-4.5v-16.7l11.8,11.8c1.7,1.7,4.6,1.7,6.3,0s1.7-4.6,0-6.3l-11.8-11.8H157c2.5,0,4.5-2,4.5-4.5
S159.4,410.4,157,410.4z"/>
<radialGradient id="XMLID_6_" cx="152.5291" cy="50.5049" r="25.3723" gradientTransform="matrix(0.9444 0 0 -0.9444 45.527 530.1968)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#CEECFB"/>
<stop offset="1" style="stop-color:#E1F3FC"/>
</radialGradient>
<path id="XMLID_190_" class="st10" d="M210.2,479.2h-12.5l8.9-8.9c1.3-1.3,1.3-3.4,0-4.7c-1.3-1.3-3.4-1.3-4.7,0l-8.9,8.9V462
c0-1.8-1.5-3.3-3.3-3.3s-3.3,1.5-3.3,3.3v12.5l-8.9-8.9c-1.3-1.3-3.4-1.3-4.7,0s-1.3,3.4,0,4.7l8.9,8.9H169c-1.8,0-3.3,1.5-3.3,3.3
s1.5,3.3,3.3,3.3h12.5l-8.9,8.9c-1.3,1.3-1.3,3.4,0,4.7c1.3,1.3,3.4,1.3,4.7,0l8.9-8.9V503c0,1.8,1.5,3.3,3.3,3.3s3.3-1.5,3.3-3.3
v-12.5l8.9,8.9c1.3,1.3,3.4,1.3,4.7,0s1.3-3.4,0-4.7l-8.9-8.9H210c1.8,0,3.3-1.5,3.3-3.3C213.6,480.7,212,479.2,210.2,479.2z"/>
<radialGradient id="XMLID_7_" cx="298.0168" cy="67.0233" r="25.3693" gradientTransform="matrix(0.9444 0 0 -0.9444 45.527 530.1968)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#CEECFB"/>
<stop offset="1" style="stop-color:#E1F3FC"/>
</radialGradient>
<path id="XMLID_182_" class="st11" d="M347.6,463.6h-12.5l8.9-8.9c1.3-1.3,1.3-3.4,0-4.7c-1.3-1.3-3.4-1.3-4.7,0l-8.9,8.9v-12.5
c0-1.8-1.5-3.3-3.3-3.3s-3.3,1.5-3.3,3.3v12.5l-8.9-8.9c-1.3-1.3-3.4-1.3-4.7,0c-1.3,1.3-1.3,3.4,0,4.7l8.9,8.9h-12.5
c-1.8,0-3.3,1.5-3.3,3.3s1.5,3.3,3.3,3.3h12.5l-8.9,8.9c-1.3,1.3-1.3,3.4,0,4.7c1.3,1.3,3.4,1.3,4.7,0l8.9-8.9v12.5
c0,1.8,1.5,3.3,3.3,3.3s3.3-1.5,3.3-3.3V475l8.9,8.9c1.3,1.3,3.4,1.3,4.7,0c1.3-1.3,1.3-3.4,0-4.7l-8.9-8.9h12.5
c1.8,0,3.3-1.5,3.3-3.3S349.5,463.6,347.6,463.6z"/>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="65.1435" y1="35.1068" x2="65.1435" y2="92.1702">
<stop offset="0" style="stop-color:#FEDA00"/>
<stop offset="0.7755" style="stop-color:#E2A025"/>
</linearGradient>
<polygon class="st12" points="65.1,48 83.7,35.1 77.1,56.7 95.1,70.4 72.6,70.8 65.1,92.2 57.7,70.8 35.1,70.4 53.1,56.7 46.6,35.1
"/>
</svg>

After

Width:  |  Height:  |  Size: 8.0 KiB

View File

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{fill:#BEC6D2;}
.st1{opacity:5.000000e-002;fill:#A7A9AC;enable-background:new ;}
.st2{fill:#D3DEE2;}
</style>
<g id="XMLID_6_">
<path id="XMLID_10_" class="st0" d="M465.7,137.1c-5.4,0-10.6,1.1-15.3,3.1c-10.7-20.9-32.1-35.3-57.2-35.3
c-25,0-46.5,14.4-57.2,35.3c-4.7-1.9-9.9-3.1-15.3-3.1c-22.3,0-40.3,18.1-40.3,40.3s18.1,40.3,40.3,40.3c8.6,0,16.6-2.8,23.2-7.4
c11.8,14.3,29.4,23.5,49.4,23.5c19.9,0,37.6-9.3,49.4-23.5c6.5,4.6,14.5,7.4,23.2,7.4c22.3,0,40.3-18.1,40.3-40.3
S487.9,137.1,465.7,137.1z"/>
<path id="XMLID_9_" class="st1" d="M398.5,172c-43.4-4.4-84.1,1.7-116.2,15.2c4,18.1,20.1,31.5,39.3,31.5c8.6,0,16.6-2.8,23.2-7.4
c11.8,14.3,29.4,23.5,49.4,23.5c19.9,0,37.6-9.3,49.4-23.5c6.5,4.6,14.5,7.4,23.2,7.4c12.9,0,24.4-6.1,31.8-15.6
C471.1,187.2,436.6,175.8,398.5,172z"/>
<path id="XMLID_8_" class="st2" d="M465.7,143.6c-5.4,0-10.6,1.1-15.3,3.1c-10.7-20.9-32.1-35.3-57.2-35.3
c-25,0-46.5,14.4-57.2,35.3c-4.7-1.9-9.9-3.1-15.3-3.1c-22.3,0-40.3,18.1-40.3,40.3s18.1,40.3,40.3,40.3c8.6,0,16.6-2.8,23.2-7.4
c11.8,14.3,29.4,23.5,49.4,23.5c19.9,0,37.6-9.3,49.4-23.5c6.5,4.6,14.5,7.4,23.2,7.4c22.3,0,40.3-18.1,40.3-40.3
S487.9,143.6,465.7,143.6z"/>
<path id="XMLID_7_" class="st0" d="M348.1,168.8c3.4,0,6.5,0.7,9.5,1.9c6.6-12.9,19.9-21.8,35.3-21.8c15.5,0,28.7,8.9,35.3,21.8
c2.9-1.2,6.1-1.9,9.5-1.9c12.6,0,23,9.3,24.6,21.5c0.1-1.1,0.3-2.3,0.3-3.4c0-13.8-11.1-24.9-24.9-24.9c-3.3,0-6.5,0.7-9.5,1.9
c-6.6-12.9-19.9-21.8-35.3-21.8c-15.5,0-28.7,8.9-35.3,21.8c-2.9-1.2-6.1-1.9-9.5-1.9c-13.8,0-24.9,11.1-24.9,24.9
c0,1.2,0.1,2.3,0.3,3.4C325.1,178.1,335.5,168.8,348.1,168.8z"/>
</g>
<g id="XMLID_1_">
<path id="XMLID_5_" class="st0" d="M192.7,137.1c-5.4,0-10.6,1.1-15.3,3.1c-10.7-20.9-32.1-35.3-57.2-35.3s-46.5,14.4-57.2,35.3
c-4.7-1.9-9.9-3.1-15.3-3.1c-22.3,0-40.3,18.1-40.3,40.3s18.1,40.3,40.3,40.3c8.6,0,16.6-2.8,23.2-7.4
c11.8,14.3,29.4,23.5,49.4,23.5s37.6-9.3,49.4-23.5c6.5,4.6,14.5,7.4,23.2,7.4c22.3,0,40.3-18.1,40.3-40.3S214.9,137.1,192.7,137.1
z"/>
<path id="XMLID_4_" class="st1" d="M125.5,172c-43.4-4.4-84.1,1.7-116.2,15.2c4,18.1,20.1,31.5,39.3,31.5c8.6,0,16.6-2.8,23.2-7.4
c11.8,14.3,29.4,23.5,49.4,23.5s37.6-9.3,49.4-23.5c6.5,4.6,14.5,7.4,23.2,7.4c12.9,0,24.4-6.1,31.8-15.6
C198,187.2,163.6,175.8,125.5,172z"/>
<path id="XMLID_3_" class="st2" d="M192.7,143.6c-5.4,0-10.6,1.1-15.3,3.1c-10.7-20.9-32.1-35.3-57.2-35.3s-46.5,14.4-57.2,35.3
c-4.7-1.9-9.9-3.1-15.3-3.1c-22.3,0-40.3,18.1-40.3,40.3s18.1,40.3,40.3,40.3c8.6,0,16.6-2.8,23.2-7.4
c11.8,14.3,29.4,23.5,49.4,23.5s37.6-9.3,49.4-23.5c6.5,4.6,14.5,7.4,23.2,7.4c22.3,0,40.3-18.1,40.3-40.3S214.9,143.6,192.7,143.6
z"/>
<path id="XMLID_2_" class="st0" d="M75.1,168.8c3.4,0,6.5,0.7,9.5,1.9c6.6-12.9,19.9-21.8,35.3-21.8s28.7,8.9,35.3,21.8
c2.9-1.2,6.1-1.9,9.5-1.9c12.6,0,23,9.3,24.6,21.5c0.1-1.1,0.3-2.3,0.3-3.4c0-13.8-11.1-24.9-24.9-24.9c-3.3,0-6.5,0.7-9.5,1.9
c-6.6-12.9-19.9-21.8-35.3-21.8s-28.7,8.9-35.3,21.8c-2.9-1.2-6.1-1.9-9.5-1.9c-13.8,0-24.9,11.1-24.9,24.9c0,1.2,0.1,2.3,0.3,3.4
C52.1,178.1,62.5,168.8,75.1,168.8z"/>
</g>
<g id="XMLID_78_">
<path id="XMLID_637_" class="st0" d="M416.7,177.4c-12,0-23.5,2.5-34,6.8C359.1,138,311.5,106,256,106s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,177.4,6,217.4,6,266.7S46,356,95.3,356c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,177.4,416.7,177.4z"/>
<path id="XMLID_636_" class="st1" d="M267.8,254.6c-96.2-9.7-186.3,3.7-257.5,33.7c8.9,40,44.5,69.9,87.1,69.9
c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4
c28.6,0,54-13.5,70.4-34.5C428.6,288.3,352.3,263.1,267.8,254.6z"/>
<path id="XMLID_635_" class="st2" d="M416.7,191.7c-12,0-23.5,2.5-34,6.8c-23.7-46.2-71.2-78.2-126.7-78.2s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,191.7,6,231.7,6,281s40,89.3,89.3,89.3c19.1,0,36.8-6.1,51.3-16.4C172.8,385.5,211.8,406,256,406
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,191.7,416.7,191.7z"/>
<path id="XMLID_541_" class="st0" d="M156.2,247.5c7.5,0,14.5,1.5,21,4.2c14.6-28.6,44-48.3,78.3-48.3s63.7,19.8,78.3,48.3
c6.5-2.7,13.6-4.2,21-4.2c27.9,0,50.9,20.7,54.6,47.6c0.3-2.5,0.6-5,0.6-7.5c0-30.5-24.7-55.2-55.2-55.2c-7.4,0-14.5,1.5-21,4.2
c-14.6-28.6-44-48.3-78.3-48.3s-63.7,19.8-78.3,48.3c-6.5-2.7-13.5-4.2-21-4.2c-30.5,0-55.2,24.7-55.2,55.2c0,2.6,0.2,5.1,0.6,7.5
C105.2,268.2,128.2,247.5,156.2,247.5z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{fill:#BEC6D2;}
.st1{opacity:5.000000e-002;fill:#A7A9AC;enable-background:new ;}
.st2{fill:#D3DEE2;}
.st3{fill:#00ADEE;}
</style>
<g id="XMLID_78_">
<path id="XMLID_637_" class="st0" d="M416.7,177.4c-12,0-23.5,2.5-34,6.8C359.1,138,311.5,106,256,106s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,177.4,6,217.4,6,266.7S46,356,95.3,356c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,177.4,416.7,177.4z"/>
<path id="XMLID_636_" class="st1" d="M267.8,254.6c-96.2-9.7-186.3,3.7-257.5,33.7c8.9,40,44.5,69.9,87.1,69.9
c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4
c28.6,0,54-13.5,70.4-34.5C428.6,288.3,352.3,263.1,267.8,254.6z"/>
<path id="XMLID_635_" class="st2" d="M416.7,191.7c-12,0-23.5,2.5-34,6.8c-23.7-46.2-71.2-78.2-126.7-78.2s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,191.7,6,231.7,6,281s40,89.3,89.3,89.3c19.1,0,36.8-6.1,51.3-16.4C172.8,385.5,211.8,406,256,406
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,191.7,416.7,191.7z"/>
<path id="XMLID_541_" class="st0" d="M156.2,247.5c7.5,0,14.5,1.5,21,4.2c14.6-28.6,44-48.3,78.3-48.3s63.7,19.8,78.3,48.3
c6.5-2.7,13.6-4.2,21-4.2c27.9,0,50.9,20.7,54.6,47.6c0.3-2.5,0.6-5,0.6-7.5c0-30.5-24.7-55.2-55.2-55.2c-7.4,0-14.5,1.5-21,4.2
c-14.6-28.6-44-48.3-78.3-48.3s-63.7,19.8-78.3,48.3c-6.5-2.7-13.5-4.2-21-4.2c-30.5,0-55.2,24.7-55.2,55.2c0,2.6,0.2,5.1,0.6,7.5
C105.2,268.2,128.2,247.5,156.2,247.5z"/>
</g>
<path id="XMLID_45_" class="st3" d="M360.2,458.8c5.4,13.7,20.9,20.4,34.6,15s20.4-20.9,15-34.6s-44.4-39.8-44.4-39.8
S354.8,445.1,360.2,458.8z"/>
<path id="XMLID_44_" class="st3" d="M119,458.8c5.4,13.7,20.9,20.4,34.6,15c13.7-5.4,20.4-20.9,15-34.6s-44.4-39.8-44.4-39.8
S113.6,445.1,119,458.8z"/>
<path id="XMLID_41_" class="st3" d="M239.6,478.8c5.4,13.7,20.9,20.4,34.6,15s20.4-20.9,15-34.6s-44.4-39.8-44.4-39.8
S234.2,465.1,239.6,478.8z"/>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{fill:url(#XMLID_2_);}
.st1{fill:#00AEEF;}
.st2{fill:#BEC6D2;}
.st3{opacity:5.000000e-002;fill:#A7A9AC;enable-background:new ;}
.st4{fill:#D3DEE2;}
</style>
<linearGradient id="XMLID_2_" gradientUnits="userSpaceOnUse" x1="1194.1239" y1="223.8" x2="1194.1239" y2="1" gradientTransform="matrix(-1 0 0 -1 1439.9739 512)">
<stop offset="0" style="stop-color:#F8F6C3"/>
<stop offset="2.186788e-002" style="stop-color:#F9F0B1"/>
<stop offset="8.719299e-002" style="stop-color:#FBE684"/>
<stop offset="0.1478" style="stop-color:#FDDE5B"/>
<stop offset="0.2018" style="stop-color:#FED935"/>
<stop offset="0.2472" style="stop-color:#FED616"/>
<stop offset="0.2784" style="stop-color:#FED504"/>
<stop offset="0.3882" style="stop-color:#FDD209"/>
<stop offset="0.5124" style="stop-color:#F9C713"/>
<stop offset="0.6436" style="stop-color:#F3B61B"/>
<stop offset="0.7796" style="stop-color:#EC9E21"/>
<stop offset="0.918" style="stop-color:#E48225"/>
<stop offset="1" style="stop-color:#DF6E26"/>
</linearGradient>
<polygon id="XMLID_287_" class="st0" points="309.7,405.1 261.6,419.1 276.4,511 182,394 230.1,380.1 215.2,288.2 "/>
<path id="XMLID_67_" class="st1" d="M103,456.7c5.6,14.3,21.7,21.2,36,15.6s21.2-21.7,15.6-36c-5.6-14.3-46.2-41.4-46.2-41.4
S97.4,442.4,103,456.7z"/>
<path id="XMLID_38_" class="st1" d="M373,456.6c5.6,14.3,21.7,21.2,36,15.6s21.2-21.7,15.6-36s-46.2-41.4-46.2-41.4
S367.4,442.4,373,456.6z"/>
<g id="XMLID_78_">
<path id="XMLID_637_" class="st2" d="M416.7,177.4c-12,0-23.5,2.5-34,6.8C359.1,138,311.5,106,256,106s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,177.4,6,217.4,6,266.7S46,356,95.3,356c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,177.4,416.7,177.4z"/>
<path id="XMLID_636_" class="st3" d="M267.8,254.6c-96.2-9.7-186.3,3.7-257.5,33.7c8.9,40,44.5,69.9,87.1,69.9
c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4
c28.6,0,54-13.5,70.4-34.5C428.6,288.3,352.3,263.1,267.8,254.6z"/>
<path id="XMLID_635_" class="st4" d="M416.7,191.7c-12,0-23.5,2.5-34,6.8c-23.7-46.2-71.2-78.2-126.7-78.2s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,191.7,6,231.7,6,281s40,89.3,89.3,89.3c19.1,0,36.8-6.1,51.3-16.4C172.8,385.5,211.8,406,256,406
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,191.7,416.7,191.7z"/>
<path id="XMLID_541_" class="st2" d="M156.2,247.5c7.5,0,14.5,1.5,21,4.2c14.6-28.6,44-48.3,78.3-48.3s63.7,19.8,78.3,48.3
c6.5-2.7,13.6-4.2,21-4.2c27.9,0,50.9,20.7,54.6,47.6c0.3-2.5,0.6-5,0.6-7.5c0-30.5-24.7-55.2-55.2-55.2c-7.4,0-14.5,1.5-21,4.2
c-14.6-28.6-44-48.3-78.3-48.3s-63.7,19.8-78.3,48.3c-6.5-2.7-13.5-4.2-21-4.2c-30.5,0-55.2,24.7-55.2,55.2c0,2.6,0.2,5.1,0.6,7.5
C105.2,268.2,128.2,247.5,156.2,247.5z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{fill:#00ADEE;}
.st1{fill:#BEC6D2;}
.st2{opacity:5.000000e-002;fill:#A7A9AC;enable-background:new ;}
.st3{fill:#D3DEE2;}
.st4{fill:url(#XMLID_3_);}
.st5{fill:url(#XMLID_4_);}
</style>
<path id="XMLID_257_" class="st0" d="M289.4,471.2c4.1,10.5,16,15.6,26.5,11.5s15.6-16,11.5-26.5s-34-30.5-34-30.5
S285.3,460.7,289.4,471.2z"/>
<g id="XMLID_78_">
<path id="XMLID_637_" class="st1" d="M416.7,177.4c-12,0-23.5,2.5-34,6.8C359.1,138,311.5,106,256,106s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,177.4,6,217.4,6,266.7S46,356,95.3,356c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,177.4,416.7,177.4z"/>
<path id="XMLID_636_" class="st2" d="M267.8,254.6c-96.2-9.7-186.3,3.7-257.5,33.7c8.9,40,44.5,69.9,87.1,69.9
c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4
c28.6,0,54-13.5,70.4-34.5C428.6,288.3,352.3,263.1,267.8,254.6z"/>
<path id="XMLID_635_" class="st3" d="M416.7,191.7c-12,0-23.5,2.5-34,6.8c-23.7-46.2-71.2-78.2-126.7-78.2s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,191.7,6,231.7,6,281s40,89.3,89.3,89.3c19.1,0,36.8-6.1,51.3-16.4C172.8,385.5,211.8,406,256,406
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,191.7,416.7,191.7z"/>
<path id="XMLID_541_" class="st1" d="M156.2,247.5c7.5,0,14.5,1.5,21,4.2c14.6-28.6,44-48.3,78.3-48.3s63.7,19.8,78.3,48.3
c6.5-2.7,13.6-4.2,21-4.2c27.9,0,50.9,20.7,54.6,47.6c0.3-2.5,0.6-5,0.6-7.5c0-30.5-24.7-55.2-55.2-55.2c-7.4,0-14.5,1.5-21,4.2
c-14.6-28.6-44-48.3-78.3-48.3s-63.7,19.8-78.3,48.3c-6.5-2.7-13.5-4.2-21-4.2c-30.5,0-55.2,24.7-55.2,55.2c0,2.6,0.2,5.1,0.6,7.5
C105.2,268.2,128.2,247.5,156.2,247.5z"/>
</g>
<radialGradient id="XMLID_3_" cx="375.5" cy="91.6" r="32" gradientTransform="matrix(1 0 0 -1 0 512)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#CEECFB"/>
<stop offset="1" style="stop-color:#E1F3FC"/>
</radialGradient>
<path id="XMLID_215_" class="st4" d="M403,415.9h-16.7l11.8-11.8c1.7-1.7,1.7-4.6,0-6.3c-1.7-1.7-4.6-1.7-6.3,0L380,409.6v-16.7
c0-2.5-2-4.5-4.5-4.5s-4.5,2-4.5,4.5v16.7l-11.8-11.8c-1.7-1.7-4.6-1.7-6.3,0c-1.7,1.7-1.7,4.6,0,6.3l11.8,11.8H348
c-2.5,0-4.5,2-4.5,4.5s2,4.5,4.5,4.5h16.7l-11.8,11.8c-1.7,1.7-1.7,4.6,0,6.3c1.7,1.7,4.6,1.7,6.3,0l11.8-11.8v16.7
c0,2.5,2,4.5,4.5,4.5s4.5-2,4.5-4.5v-16.7l11.8,11.8c1.7,1.7,4.6,1.7,6.3,0c1.7-1.7,1.7-4.6,0-6.3l-11.8-11.8H403
c2.5,0,4.5-2,4.5-4.5S405.5,415.9,403,415.9z"/>
<radialGradient id="XMLID_4_" cx="129.5" cy="87.171" r="31.9645" gradientTransform="matrix(1 0 0 -1 0 512)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#CEECFB"/>
<stop offset="1" style="stop-color:#E1F3FC"/>
</radialGradient>
<path id="XMLID_213_" class="st5" d="M157,420.4h-16.7l11.8-11.8c1.7-1.7,1.7-4.6,0-6.3c-1.7-1.7-4.6-1.7-6.3,0L134,414.1v-16.7
c0-2.5-2-4.5-4.5-4.5s-4.5,2-4.5,4.5v16.7l-11.8-11.8c-1.7-1.7-4.6-1.7-6.3,0c-1.7,1.7-1.7,4.6,0,6.3l11.8,11.8H102
c-2.5,0-4.5,2-4.5,4.5s2,4.5,4.5,4.5h16.7l-11.8,11.8c-1.7,1.7-1.7,4.6,0,6.3c1.7,1.7,4.6,1.7,6.3,0l11.8-11.8v16.7
c0,2.5,2,4.5,4.5,4.5s4.5-2,4.5-4.5v-16.7l11.8,11.8c1.7,1.7,4.6,1.7,6.3,0s1.7-4.6,0-6.3l-11.8-11.8H157c2.5,0,4.5-2,4.5-4.5
S159.4,420.4,157,420.4z"/>
<path id="XMLID_1_" class="st0" d="M189.4,471.2c4.1,10.5,16,15.6,26.5,11.5s15.6-16,11.5-26.5s-34-30.5-34-30.5
S185.3,460.7,189.4,471.2z"/>
</svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{fill:#BEC6D2;}
.st1{opacity:5.000000e-002;fill:#A7A9AC;enable-background:new ;}
.st2{fill:#D3DEE2;}
.st3{fill:url(#XMLID_3_);}
.st4{fill:url(#XMLID_4_);}
.st5{fill:url(#XMLID_5_);}
</style>
<g id="XMLID_78_">
<path id="XMLID_637_" class="st0" d="M416.7,177.4c-12,0-23.5,2.5-34,6.8C359.1,138,311.5,106,256,106s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,177.4,6,217.4,6,266.7S46,356,95.3,356c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,177.4,416.7,177.4z"/>
<path id="XMLID_636_" class="st1" d="M267.8,254.6c-96.2-9.7-186.3,3.7-257.5,33.7c8.9,40,44.5,69.9,87.1,69.9
c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4
c28.6,0,54-13.5,70.4-34.5C428.6,288.3,352.3,263.1,267.8,254.6z"/>
<path id="XMLID_635_" class="st2" d="M416.7,191.7c-12,0-23.5,2.5-34,6.8c-23.7-46.2-71.2-78.2-126.7-78.2s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,191.7,6,231.7,6,281s40,89.3,89.3,89.3c19.1,0,36.8-6.1,51.3-16.4C172.8,385.5,211.8,406,256,406
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,191.7,416.7,191.7z"/>
<path id="XMLID_541_" class="st0" d="M156.2,247.5c7.5,0,14.5,1.5,21,4.2c14.6-28.6,44-48.3,78.3-48.3s63.7,19.8,78.3,48.3
c6.5-2.7,13.6-4.2,21-4.2c27.9,0,50.9,20.7,54.6,47.6c0.3-2.5,0.6-5,0.6-7.5c0-30.5-24.7-55.2-55.2-55.2c-7.4,0-14.5,1.5-21,4.2
c-14.6-28.6-44-48.3-78.3-48.3s-63.7,19.8-78.3,48.3c-6.5-2.7-13.5-4.2-21-4.2c-30.5,0-55.2,24.7-55.2,55.2c0,2.6,0.2,5.1,0.6,7.5
C105.2,268.2,128.2,247.5,156.2,247.5z"/>
</g>
<radialGradient id="XMLID_3_" cx="375.5" cy="91.6" r="32" gradientTransform="matrix(1 0 0 -1 0 512)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#CEECFB"/>
<stop offset="1" style="stop-color:#E1F3FC"/>
</radialGradient>
<path id="XMLID_215_" class="st3" d="M403,415.9h-16.7l11.8-11.8c1.7-1.7,1.7-4.6,0-6.3c-1.7-1.7-4.6-1.7-6.3,0L380,409.6v-16.7
c0-2.5-2-4.5-4.5-4.5s-4.5,2-4.5,4.5v16.7l-11.8-11.8c-1.7-1.7-4.6-1.7-6.3,0c-1.7,1.7-1.7,4.6,0,6.3l11.8,11.8H348
c-2.5,0-4.5,2-4.5,4.5s2,4.5,4.5,4.5h16.7l-11.8,11.8c-1.7,1.7-1.7,4.6,0,6.3c1.7,1.7,4.6,1.7,6.3,0l11.8-11.8v16.7
c0,2.5,2,4.5,4.5,4.5s4.5-2,4.5-4.5v-16.7l11.8,11.8c1.7,1.7,4.6,1.7,6.3,0c1.7-1.7,1.7-4.6,0-6.3l-11.8-11.8H403
c2.5,0,4.5-2,4.5-4.5S405.5,415.9,403,415.9z"/>
<radialGradient id="XMLID_4_" cx="129.5" cy="87.171" r="31.9645" gradientTransform="matrix(1 0 0 -1 0 512)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#CEECFB"/>
<stop offset="1" style="stop-color:#E1F3FC"/>
</radialGradient>
<path id="XMLID_213_" class="st4" d="M157,420.4h-16.7l11.8-11.8c1.7-1.7,1.7-4.6,0-6.3c-1.7-1.7-4.6-1.7-6.3,0L134,414.1v-16.7
c0-2.5-2-4.5-4.5-4.5s-4.5,2-4.5,4.5v16.7l-11.8-11.8c-1.7-1.7-4.6-1.7-6.3,0c-1.7,1.7-1.7,4.6,0,6.3l11.8,11.8H102
c-2.5,0-4.5,2-4.5,4.5s2,4.5,4.5,4.5h16.7l-11.8,11.8c-1.7,1.7-1.7,4.6,0,6.3c1.7,1.7,4.6,1.7,6.3,0l11.8-11.8v16.7
c0,2.5,2,4.5,4.5,4.5s4.5-2,4.5-4.5v-16.7l11.8,11.8c1.7,1.7,4.6,1.7,6.3,0s1.7-4.6,0-6.3l-11.8-11.8H157c2.5,0,4.5-2,4.5-4.5
S159.4,420.4,157,420.4z"/>
<radialGradient id="XMLID_5_" cx="256.5" cy="57.171" r="31.9645" gradientTransform="matrix(1 0 0 -1 0 512)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#CEECFB"/>
<stop offset="1" style="stop-color:#E1F3FC"/>
</radialGradient>
<path id="XMLID_1_" class="st5" d="M284,450.4h-16.7l11.8-11.8c1.7-1.7,1.7-4.6,0-6.3c-1.7-1.7-4.6-1.7-6.3,0L261,444.1v-16.7
c0-2.5-2-4.5-4.5-4.5s-4.5,2-4.5,4.5v16.7l-11.8-11.8c-1.7-1.7-4.6-1.7-6.3,0s-1.7,4.6,0,6.3l11.8,11.8H229c-2.5,0-4.5,2-4.5,4.5
s2,4.5,4.5,4.5h16.7l-11.8,11.8c-1.7,1.7-1.7,4.6,0,6.3c1.7,1.7,4.6,1.7,6.3,0l11.8-11.8v16.7c0,2.5,2,4.5,4.5,4.5s4.5-2,4.5-4.5
v-16.7l11.8,11.8c1.7,1.7,4.6,1.7,6.3,0s1.7-4.6,0-6.3l-11.8-11.8H284c2.5,0,4.5-2,4.5-4.5S286.4,450.4,284,450.4z"/>
</svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@ -0,0 +1,81 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{fill:url(#XMLID_2_);}
.st1{fill:#BEC6D2;}
.st2{opacity:5.000000e-002;fill:#A7A9AC;enable-background:new ;}
.st3{fill:#D3DEE2;}
.st4{fill:url(#XMLID_3_);}
.st5{fill:url(#XMLID_4_);}
.st6{fill:url(#XMLID_5_);}
.st7{fill:url(#XMLID_6_);}
</style>
<linearGradient id="XMLID_2_" gradientUnits="userSpaceOnUse" x1="1194.1239" y1="288.2" x2="1194.1239" y2="511" gradientTransform="matrix(-1 0 0 1 1439.9739 0)">
<stop offset="0" style="stop-color:#F8F6C3"/>
<stop offset="2.186788e-002" style="stop-color:#F9F0B1"/>
<stop offset="8.719299e-002" style="stop-color:#FBE684"/>
<stop offset="0.1478" style="stop-color:#FDDE5B"/>
<stop offset="0.2018" style="stop-color:#FED935"/>
<stop offset="0.2472" style="stop-color:#FED616"/>
<stop offset="0.2784" style="stop-color:#FED504"/>
<stop offset="0.3882" style="stop-color:#FDD209"/>
<stop offset="0.5124" style="stop-color:#F9C713"/>
<stop offset="0.6436" style="stop-color:#F3B61B"/>
<stop offset="0.7796" style="stop-color:#EC9E21"/>
<stop offset="0.918" style="stop-color:#E48225"/>
<stop offset="1" style="stop-color:#DF6E26"/>
</linearGradient>
<polygon id="XMLID_287_" class="st0" points="309.7,405.1 261.6,419.1 276.4,511 182,394 230.1,380.1 215.2,288.2 "/>
<g id="XMLID_78_">
<path id="XMLID_637_" class="st1" d="M416.7,177.4c-12,0-23.5,2.5-34,6.8C359.1,138,311.5,106,256,106s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,177.4,6,217.4,6,266.7S46,356,95.3,356c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,177.4,416.7,177.4z"/>
<path id="XMLID_636_" class="st2" d="M267.8,254.6c-96.2-9.7-186.3,3.7-257.5,33.7c8.9,40,44.5,69.9,87.1,69.9
c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4
c28.6,0,54-13.5,70.4-34.5C428.6,288.3,352.3,263.1,267.8,254.6z"/>
<path id="XMLID_635_" class="st3" d="M416.7,191.7c-12,0-23.5,2.5-34,6.8c-23.7-46.2-71.2-78.2-126.7-78.2s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,191.7,6,231.7,6,281s40,89.3,89.3,89.3c19.1,0,36.8-6.1,51.3-16.4C172.8,385.5,211.8,406,256,406
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,191.7,416.7,191.7z"/>
<path id="XMLID_541_" class="st1" d="M156.2,247.5c7.5,0,14.5,1.5,21,4.2c14.6-28.6,44-48.3,78.3-48.3s63.7,19.8,78.3,48.3
c6.5-2.7,13.6-4.2,21-4.2c27.9,0,50.9,20.7,54.6,47.6c0.3-2.5,0.6-5,0.6-7.5c0-30.5-24.7-55.2-55.2-55.2c-7.4,0-14.5,1.5-21,4.2
c-14.6-28.6-44-48.3-78.3-48.3s-63.7,19.8-78.3,48.3c-6.5-2.7-13.5-4.2-21-4.2c-30.5,0-55.2,24.7-55.2,55.2c0,2.6,0.2,5.1,0.6,7.5
C105.2,268.2,128.2,247.5,156.2,247.5z"/>
</g>
<radialGradient id="XMLID_3_" cx="365.5" cy="101.6" r="32" gradientTransform="matrix(1 0 0 -1 0 512)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#CEECFB"/>
<stop offset="1" style="stop-color:#E1F3FC"/>
</radialGradient>
<path id="XMLID_215_" class="st4" d="M393,405.9h-16.7l11.8-11.8c1.7-1.7,1.7-4.6,0-6.3c-1.7-1.7-4.6-1.7-6.3,0L370,399.6v-16.7
c0-2.5-2-4.5-4.5-4.5s-4.5,2-4.5,4.5v16.7l-11.8-11.8c-1.7-1.7-4.6-1.7-6.3,0c-1.7,1.7-1.7,4.6,0,6.3l11.8,11.8H338
c-2.5,0-4.5,2-4.5,4.5s2,4.5,4.5,4.5h16.7l-11.8,11.8c-1.7,1.7-1.7,4.6,0,6.3c1.7,1.7,4.6,1.7,6.3,0l11.8-11.8v16.7
c0,2.5,2,4.5,4.5,4.5s4.5-2,4.5-4.5v-16.7l11.8,11.8c1.7,1.7,4.6,1.7,6.3,0c1.7-1.7,1.7-4.6,0-6.3l-11.8-11.8H393
c2.5,0,4.5-2,4.5-4.5S395.5,405.9,393,405.9z"/>
<radialGradient id="XMLID_4_" cx="129.5" cy="97.171" r="31.9645" gradientTransform="matrix(1 0 0 -1 0 512)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#CEECFB"/>
<stop offset="1" style="stop-color:#E1F3FC"/>
</radialGradient>
<path id="XMLID_213_" class="st5" d="M157,410.4h-16.7l11.8-11.8c1.7-1.7,1.7-4.6,0-6.3c-1.7-1.7-4.6-1.7-6.3,0L134,404.1v-16.7
c0-2.5-2-4.5-4.5-4.5s-4.5,2-4.5,4.5v16.7l-11.8-11.8c-1.7-1.7-4.6-1.7-6.3,0c-1.7,1.7-1.7,4.6,0,6.3l11.8,11.8H102
c-2.5,0-4.5,2-4.5,4.5s2,4.5,4.5,4.5h16.7l-11.8,11.8c-1.7,1.7-1.7,4.6,0,6.3c1.7,1.7,4.6,1.7,6.3,0l11.8-11.8v16.7
c0,2.5,2,4.5,4.5,4.5s4.5-2,4.5-4.5v-16.7l11.8,11.8c1.7,1.7,4.6,1.7,6.3,0s1.7-4.6,0-6.3l-11.8-11.8H157c2.5,0,4.5-2,4.5-4.5
S159.4,410.4,157,410.4z"/>
<radialGradient id="XMLID_5_" cx="152.5291" cy="50.5049" r="25.3723" gradientTransform="matrix(0.9444 0 0 -0.9444 45.527 530.1968)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#CEECFB"/>
<stop offset="1" style="stop-color:#E1F3FC"/>
</radialGradient>
<path id="XMLID_190_" class="st6" d="M210.2,479.2h-12.5l8.9-8.9c1.3-1.3,1.3-3.4,0-4.7c-1.3-1.3-3.4-1.3-4.7,0l-8.9,8.9V462
c0-1.8-1.5-3.3-3.3-3.3s-3.3,1.5-3.3,3.3v12.5l-8.9-8.9c-1.3-1.3-3.4-1.3-4.7,0s-1.3,3.4,0,4.7l8.9,8.9H169c-1.8,0-3.3,1.5-3.3,3.3
s1.5,3.3,3.3,3.3h12.5l-8.9,8.9c-1.3,1.3-1.3,3.4,0,4.7c1.3,1.3,3.4,1.3,4.7,0l8.9-8.9V503c0,1.8,1.5,3.3,3.3,3.3s3.3-1.5,3.3-3.3
v-12.5l8.9,8.9c1.3,1.3,3.4,1.3,4.7,0s1.3-3.4,0-4.7l-8.9-8.9H210c1.8,0,3.3-1.5,3.3-3.3C213.6,480.7,212,479.2,210.2,479.2z"/>
<radialGradient id="XMLID_6_" cx="298.0168" cy="67.0233" r="25.3693" gradientTransform="matrix(0.9444 0 0 -0.9444 45.527 530.1968)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#CEECFB"/>
<stop offset="1" style="stop-color:#E1F3FC"/>
</radialGradient>
<path id="XMLID_182_" class="st7" d="M347.6,463.6h-12.5l8.9-8.9c1.3-1.3,1.3-3.4,0-4.7c-1.3-1.3-3.4-1.3-4.7,0l-8.9,8.9v-12.5
c0-1.8-1.5-3.3-3.3-3.3s-3.3,1.5-3.3,3.3v12.5l-8.9-8.9c-1.3-1.3-3.4-1.3-4.7,0c-1.3,1.3-1.3,3.4,0,4.7l8.9,8.9h-12.5
c-1.8,0-3.3,1.5-3.3,3.3s1.5,3.3,3.3,3.3h12.5l-8.9,8.9c-1.3,1.3-1.3,3.4,0,4.7c1.3,1.3,3.4,1.3,4.7,0l8.9-8.9v12.5
c0,1.8,1.5,3.3,3.3,3.3s3.3-1.5,3.3-3.3V475l8.9,8.9c1.3,1.3,3.4,1.3,4.7,0c1.3-1.3,1.3-3.4,0-4.7l-8.9-8.9h12.5
c1.8,0,3.3-1.5,3.3-3.3S349.5,463.6,347.6,463.6z"/>
</svg>

After

Width:  |  Height:  |  Size: 6.0 KiB

View File

@ -0,0 +1,76 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{fill:url(#XMLID_4_);}
.st1{fill:url(#XMLID_5_);}
.st2{fill:url(#XMLID_6_);}
.st3{fill:#BEC6D2;}
.st4{opacity:5.000000e-002;fill:#A7A9AC;enable-background:new ;}
.st5{fill:#D3DEE2;}
</style>
<linearGradient id="XMLID_4_" gradientUnits="userSpaceOnUse" x1="1314.0287" y1="217.8" x2="1314.0287" y2="67" gradientTransform="matrix(-1 0 0 -1 1439.9739 512)">
<stop offset="0" style="stop-color:#F8F6C3"/>
<stop offset="2.186788e-002" style="stop-color:#F9F0B1"/>
<stop offset="8.719299e-002" style="stop-color:#FBE684"/>
<stop offset="0.1478" style="stop-color:#FDDE5B"/>
<stop offset="0.2018" style="stop-color:#FED935"/>
<stop offset="0.2472" style="stop-color:#FED616"/>
<stop offset="0.2784" style="stop-color:#FED504"/>
<stop offset="0.3882" style="stop-color:#FDD209"/>
<stop offset="0.5124" style="stop-color:#F9C713"/>
<stop offset="0.6436" style="stop-color:#F3B61B"/>
<stop offset="0.7796" style="stop-color:#EC9E21"/>
<stop offset="0.918" style="stop-color:#E48225"/>
<stop offset="1" style="stop-color:#DF6E26"/>
</linearGradient>
<polygon id="XMLID_1_" class="st0" points="169.2,373.3 136.6,382.8 146.6,445 82.7,365.8 115.3,356.4 105.2,294.2 "/>
<linearGradient id="XMLID_5_" gradientUnits="userSpaceOnUse" x1="1053.9191" y1="217.8" x2="1053.9191" y2="67" gradientTransform="matrix(1 0 0 -1 -667.8642 512)">
<stop offset="0" style="stop-color:#F8F6C3"/>
<stop offset="2.186788e-002" style="stop-color:#F9F0B1"/>
<stop offset="8.719299e-002" style="stop-color:#FBE684"/>
<stop offset="0.1478" style="stop-color:#FDDE5B"/>
<stop offset="0.2018" style="stop-color:#FED935"/>
<stop offset="0.2472" style="stop-color:#FED616"/>
<stop offset="0.2784" style="stop-color:#FED504"/>
<stop offset="0.3882" style="stop-color:#FDD209"/>
<stop offset="0.5124" style="stop-color:#F9C713"/>
<stop offset="0.6436" style="stop-color:#F3B61B"/>
<stop offset="0.7796" style="stop-color:#EC9E21"/>
<stop offset="0.918" style="stop-color:#E48225"/>
<stop offset="1" style="stop-color:#DF6E26"/>
</linearGradient>
<polygon id="XMLID_2_" class="st1" points="406.8,294.2 396.7,356.4 429.3,365.8 365.4,445 375.4,382.8 342.8,373.3 "/>
<linearGradient id="XMLID_6_" gradientUnits="userSpaceOnUse" x1="1194.1239" y1="223.8" x2="1194.1239" y2="1" gradientTransform="matrix(-1 0 0 -1 1439.9739 512)">
<stop offset="0" style="stop-color:#F8F6C3"/>
<stop offset="2.186788e-002" style="stop-color:#F9F0B1"/>
<stop offset="8.719299e-002" style="stop-color:#FBE684"/>
<stop offset="0.1478" style="stop-color:#FDDE5B"/>
<stop offset="0.2018" style="stop-color:#FED935"/>
<stop offset="0.2472" style="stop-color:#FED616"/>
<stop offset="0.2784" style="stop-color:#FED504"/>
<stop offset="0.3882" style="stop-color:#FDD209"/>
<stop offset="0.5124" style="stop-color:#F9C713"/>
<stop offset="0.6436" style="stop-color:#F3B61B"/>
<stop offset="0.7796" style="stop-color:#EC9E21"/>
<stop offset="0.918" style="stop-color:#E48225"/>
<stop offset="1" style="stop-color:#DF6E26"/>
</linearGradient>
<polygon id="XMLID_287_" class="st2" points="309.7,405.1 261.6,419.1 276.4,511 182,394 230.1,380.1 215.2,288.2 "/>
<g id="XMLID_78_">
<path id="XMLID_637_" class="st3" d="M416.7,177.4c-12,0-23.5,2.5-34,6.8C359.1,138,311.5,106,256,106s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,177.4,6,217.4,6,266.7S46,356,95.3,356c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,177.4,416.7,177.4z"/>
<path id="XMLID_636_" class="st4" d="M267.8,254.6c-96.2-9.7-186.3,3.7-257.5,33.7c8.9,40,44.5,69.9,87.1,69.9
c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4
c28.6,0,54-13.5,70.4-34.5C428.6,288.3,352.3,263.1,267.8,254.6z"/>
<path id="XMLID_635_" class="st5" d="M416.7,191.7c-12,0-23.5,2.5-34,6.8c-23.7-46.2-71.2-78.2-126.7-78.2s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,191.7,6,231.7,6,281s40,89.3,89.3,89.3c19.1,0,36.8-6.1,51.3-16.4C172.8,385.5,211.8,406,256,406
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,191.7,416.7,191.7z"/>
<path id="XMLID_541_" class="st3" d="M156.2,247.5c7.5,0,14.5,1.5,21,4.2c14.6-28.6,44-48.3,78.3-48.3s63.7,19.8,78.3,48.3
c6.5-2.7,13.6-4.2,21-4.2c27.9,0,50.9,20.7,54.6,47.6c0.3-2.5,0.6-5,0.6-7.5c0-30.5-24.7-55.2-55.2-55.2c-7.4,0-14.5,1.5-21,4.2
c-14.6-28.6-44-48.3-78.3-48.3s-63.7,19.8-78.3,48.3c-6.5-2.7-13.5-4.2-21-4.2c-30.5,0-55.2,24.7-55.2,55.2c0,2.6,0.2,5.1,0.6,7.5
C105.2,268.2,128.2,247.5,156.2,247.5z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

@ -0,0 +1,100 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#B7CAD1;}
.st1{fill-rule:evenodd;clip-rule:evenodd;fill:url(#XMLID_2_);}
.st2{fill-rule:evenodd;clip-rule:evenodd;fill:url(#XMLID_3_);}
.st3{fill-rule:evenodd;clip-rule:evenodd;fill:url(#XMLID_4_);}
.st4{fill-rule:evenodd;clip-rule:evenodd;fill:url(#XMLID_5_);}
.st5{fill-rule:evenodd;clip-rule:evenodd;fill:url(#XMLID_6_);}
.st6{fill-rule:evenodd;clip-rule:evenodd;fill:url(#XMLID_7_);}
.st7{fill-rule:evenodd;clip-rule:evenodd;fill:url(#XMLID_8_);}
.st8{fill-rule:evenodd;clip-rule:evenodd;fill:url(#XMLID_9_);}
.st9{fill-rule:evenodd;clip-rule:evenodd;fill:url(#XMLID_10_);}
</style>
<g id="XMLID_135_">
<g id="XMLID_134_">
<polygon id="XMLID_574_" class="st0" points="194.3,278.1 95.4,278.1 112.8,307.8 194.3,307.8 217.9,307.8 298.7,307.8
316.1,278.1 217.9,278.1 "/>
<polygon id="XMLID_572_" class="st0" points="238.3,89.9 261.9,89.9 470.2,89.9 496.2,45.3 6,45.3 6,50.2 29.2,89.9 "/>
<polygon id="XMLID_570_" class="st0" points="217.9,190.9 194.3,190.9 44.4,190.9 61.7,220.6 194.3,220.6 217.9,220.6
349.7,220.6 367.1,190.9 "/>
<polygon id="XMLID_569_" class="st0" points="173.9,234.5 150.3,234.5 25.9,234.5 43.3,264.2 150.3,264.2 173.9,264.2
280.2,264.2 297.6,234.5 "/>
<polygon id="XMLID_568_" class="st0" points="282.2,103.8 81.3,103.8 98.7,133.4 282.2,133.4 305.8,133.4 488.6,133.4 506,103.8
305.8,103.8 "/>
<polygon id="XMLID_567_" class="st0" points="173.9,408.8 150.3,408.8 127.9,408.8 161.8,466.7 195.6,408.8 "/>
<polygon id="XMLID_566_" class="st0" points="217.9,395 247.7,395 265.1,365.3 217.9,365.3 194.3,365.3 146.4,365.3 163.8,395
194.3,395 "/>
<polygon id="XMLID_565_" class="st0" points="261.9,147.3 238.3,147.3 62.8,147.3 80.2,177 238.3,177 261.9,177 419.2,177
436.5,147.3 "/>
<polygon id="XMLID_564_" class="st0" points="261.9,351.4 317.1,351.4 334.5,321.7 261.9,321.7 238.3,321.7 164.8,321.7
182.2,351.4 238.3,351.4 "/>
</g>
<g id="XMLID_575_">
<linearGradient id="XMLID_2_" gradientUnits="userSpaceOnUse" x1="95.3753" y1="292.9361" x2="316.0608" y2="292.9361">
<stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0"/>
<stop offset="0.5" style="stop-color:#F1F1F2;stop-opacity:0.4"/>
<stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0"/>
</linearGradient>
<polygon id="XMLID_596_" class="st1" points="194.3,278.1 95.4,278.1 112.8,307.8 194.3,307.8 217.9,307.8 298.7,307.8
316.1,278.1 217.9,278.1 "/>
<linearGradient id="XMLID_3_" gradientUnits="userSpaceOnUse" x1="6" y1="67.5962" x2="496.2175" y2="67.5962">
<stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0"/>
<stop offset="0.5" style="stop-color:#F1F1F2;stop-opacity:0.4"/>
<stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0"/>
</linearGradient>
<polygon id="XMLID_593_" class="st2" points="238.3,89.9 261.9,89.9 470.2,89.9 496.2,45.3 6,45.3 6,50.2 29.2,89.9 "/>
<linearGradient id="XMLID_4_" gradientUnits="userSpaceOnUse" x1="44.3707" y1="205.767" x2="367.0655" y2="205.767">
<stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0"/>
<stop offset="0.5" style="stop-color:#F1F1F2;stop-opacity:0.4"/>
<stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0"/>
</linearGradient>
<polygon id="XMLID_590_" class="st3" points="217.9,190.9 194.3,190.9 44.4,190.9 61.7,220.6 194.3,220.6 217.9,220.6
349.7,220.6 367.1,190.9 "/>
<linearGradient id="XMLID_5_" gradientUnits="userSpaceOnUse" x1="25.9083" y1="249.3515" x2="297.5984" y2="249.3515">
<stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0"/>
<stop offset="0.5" style="stop-color:#F1F1F2;stop-opacity:0.4"/>
<stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0"/>
</linearGradient>
<polygon id="XMLID_587_" class="st4" points="173.9,234.5 150.3,234.5 25.9,234.5 43.3,264.2 150.3,264.2 173.9,264.2
280.2,264.2 297.6,234.5 "/>
<linearGradient id="XMLID_6_" gradientUnits="userSpaceOnUse" x1="81.295" y1="118.5979" x2="506" y2="118.5979">
<stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0"/>
<stop offset="0.5" style="stop-color:#F1F1F2;stop-opacity:0.4"/>
<stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0"/>
</linearGradient>
<polygon id="XMLID_584_" class="st5" points="282.2,103.8 81.3,103.8 98.7,133.4 282.2,133.4 305.8,133.4 488.6,133.4 506,103.8
305.8,103.8 "/>
<linearGradient id="XMLID_7_" gradientUnits="userSpaceOnUse" x1="127.918" y1="437.7553" x2="195.5887" y2="437.7553">
<stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0"/>
<stop offset="0.5" style="stop-color:#F1F1F2;stop-opacity:0.4"/>
<stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0"/>
</linearGradient>
<polygon id="XMLID_583_" class="st6" points="173.9,408.8 150.3,408.8 127.9,408.8 161.8,466.7 195.6,408.8 "/>
<linearGradient id="XMLID_8_" gradientUnits="userSpaceOnUse" x1="146.3799" y1="380.1052" x2="265.0562" y2="380.1052">
<stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0"/>
<stop offset="0.5" style="stop-color:#F1F1F2;stop-opacity:0.4"/>
<stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0"/>
</linearGradient>
<polygon id="XMLID_582_" class="st7" points="217.9,395 247.7,395 265.1,365.3 217.9,365.3 194.3,365.3 146.4,365.3 163.8,395
194.3,395 "/>
<linearGradient id="XMLID_9_" gradientUnits="userSpaceOnUse" x1="62.8326" y1="162.1824" x2="436.533" y2="162.1824">
<stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0"/>
<stop offset="0.5" style="stop-color:#F1F1F2;stop-opacity:0.4"/>
<stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0"/>
</linearGradient>
<polygon id="XMLID_579_" class="st8" points="261.9,147.3 238.3,147.3 62.8,147.3 80.2,177 238.3,177 261.9,177 419.2,177
436.5,147.3 "/>
<linearGradient id="XMLID_10_" gradientUnits="userSpaceOnUse" x1="164.8423" y1="336.5206" x2="334.5232" y2="336.5206">
<stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0"/>
<stop offset="0.5" style="stop-color:#F1F1F2;stop-opacity:0.4"/>
<stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0"/>
</linearGradient>
<polygon id="XMLID_577_" class="st9" points="261.9,351.4 317.1,351.4 334.5,321.7 261.9,321.7 238.3,321.7 164.8,321.7
182.2,351.4 238.3,351.4 "/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.5 KiB

View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{fill:#BEC6D2;}
.st1{opacity:5.000000e-002;fill:#A7A9AC;enable-background:new ;}
.st2{fill:#D3DEE2;}
</style>
<g id="XMLID_78_">
<path id="XMLID_637_" class="st0" d="M416.7,177.4c-12,0-23.5,2.5-34,6.8C359.1,138,311.5,106,256,106s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,177.4,6,217.4,6,266.7S46,356,95.3,356c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,177.4,416.7,177.4z"/>
<path id="XMLID_636_" class="st1" d="M267.8,254.6c-96.2-9.7-186.3,3.7-257.5,33.7c8.9,40,44.5,69.9,87.1,69.9
c19.1,0,36.8-6.1,51.3-16.4c26.2,31.6,65.2,52.1,109.4,52.1s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4
c28.6,0,54-13.5,70.4-34.5C428.6,288.3,352.3,263.1,267.8,254.6z"/>
<path id="XMLID_635_" class="st2" d="M416.7,191.7c-12,0-23.5,2.5-34,6.8c-23.7-46.2-71.2-78.2-126.7-78.2s-103.1,32-126.7,78.2
c-10.5-4.3-21.9-6.8-34-6.8C46,191.7,6,231.7,6,281s40,89.3,89.3,89.3c19.1,0,36.8-6.1,51.3-16.4C172.8,385.5,211.8,406,256,406
s83.2-20.5,109.4-52.1c14.5,10.2,32.2,16.4,51.3,16.4c49.3,0,89.3-40,89.3-89.3S466,191.7,416.7,191.7z"/>
<path id="XMLID_541_" class="st0" d="M156.2,247.5c7.5,0,14.5,1.5,21,4.2c14.6-28.6,44-48.3,78.3-48.3s63.7,19.8,78.3,48.3
c6.5-2.7,13.6-4.2,21-4.2c27.9,0,50.9,20.7,54.6,47.6c0.3-2.5,0.6-5,0.6-7.5c0-30.5-24.7-55.2-55.2-55.2c-7.4,0-14.5,1.5-21,4.2
c-14.6-28.6-44-48.3-78.3-48.3s-63.7,19.8-78.3,48.3c-6.5-2.7-13.5-4.2-21-4.2c-30.5,0-55.2,24.7-55.2,55.2c0,2.6,0.2,5.1,0.6,7.5
C105.2,268.2,128.2,247.5,156.2,247.5z"/>
</g>
<g id="XMLID_48_">
<path id="XMLID_57_" class="st2" d="M60.2,431.6l-0.2,50l49.8,0.4l-12.9-12.9c0,0,66.5-37.1,30.3-89c-1.3,10.2-15.7,57.7-54.7,63.6
L60.2,431.6L60.2,431.6z"/>
</g>
<g id="XMLID_1_">
<path id="XMLID_2_" class="st2" d="M451.8,431.6l-12.2,12.2c-39-5.9-53.5-53.5-54.7-63.6c-36.3,51.8,30.3,89,30.3,89L402.2,482
l49.8-0.4L451.8,431.6L451.8,431.6z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -1,6 +1,12 @@
projectService=Project service: {0}
randomLabel=The random number is: {0}
shuffle=Shuffle
helloWorld=Hello world #{0}
increment=Moar
action.dev.sebastiano.jewel.ijplugin.demo.text=Jewel Demo Dialog
weather.app.temperature.text={0}\u00B0C
weather.app.time.text=Time: {0}
weather.app.humidity.text=Humidity: {0}%
weather.app.wind.direction.text=Wind: {0} km/h {1}
weather.app.my.locations.header.text=My Locations
weather.app.my.locations.empty.list.placeholder.text=No locations added yet. Go and add the first location.
weather.app.my.locations.empty.list.placeholder.icon.content.description=Empty list icon.
weather.app.search.toolbar.menu.add.button.text=Add
weather.app.search.toolbar.menu.add.button.content.description=Add a place to a watch list.
weather.app.7days.forecast.title.text=7-day Forecast
weather.app.clear.button.content.description=Clear

View File

@ -0,0 +1,46 @@
package org.jetbrains.plugins.template
import androidx.compose.runtime.Composable
import androidx.compose.ui.test.junit4.ComposeContentTestRule
import androidx.compose.ui.test.junit4.ComposeTestRule
import androidx.compose.ui.test.junit4.createComposeRule
import kotlinx.coroutines.test.runTest
import org.jetbrains.jewel.intui.standalone.theme.IntUiTheme
import org.junit.Rule
/**
* An abstract base class for Compose-based test cases.
*
* This class provides a framework for running Compose UI tests. It includes a
* test rule for composing UI content and abstracts the content under test.
*/
internal abstract class ComposeBasedTestCase {
@get:Rule
val composableRule = createComposeRule()
/**
* Provides the Composable Content under test.
*/
abstract val contentUnderTest: @Composable () -> Unit
/**
* Runs the given Compose test block in the context of a Compose content test rule.
*/
fun runComposeTest(block: suspend ComposeTestRule.() -> Unit) = runTest {
composableRule.setContentWrappedInTheme {
contentUnderTest()
}
composableRule.block()
}
private fun ComposeContentTestRule.setContentWrappedInTheme(content: @Composable () -> Unit) {
setContent {
IntUiTheme {
content()
}
}
}
}

View File

@ -0,0 +1,209 @@
package org.jetbrains.plugins.template
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.test.assertIsSelected
import androidx.compose.ui.test.junit4.ComposeTestRule
import androidx.compose.ui.test.onNodeWithContentDescription
import androidx.compose.ui.test.onNodeWithText
import androidx.compose.ui.test.performClick
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.asStateFlow
import org.jetbrains.plugins.template.weatherApp.model.Location
import org.jetbrains.plugins.template.weatherApp.ui.LocationsUIState
import org.jetbrains.plugins.template.weatherApp.ui.MyLocationsViewModelApi
import org.jetbrains.plugins.template.weatherApp.ui.MyLocationsListWithEmptyListPlaceholder
import org.junit.Test
internal class MyLocationListTest : ComposeBasedTestCase() {
private val noLocations = emptyList<Location>()
private val myLocationsViewModelApi = FakeMyLocationsViewModel(locations = noLocations)
override val contentUnderTest: @Composable () -> Unit = {
MyLocationsListWithEmptyListPlaceholder(
modifier = Modifier.fillMaxWidth(),
myLocationsViewModelApi = myLocationsViewModelApi
)
}
@Test
fun `verify placeholder is shown when no locations is added`() = runComposeTest {
val myLocationsRobot = MyLocationListRobot(this)
myLocationsRobot
.verifyNoLocationsPlaceHolderVisible()
}
@Test
fun `verify location is selected when user adds location`() = runComposeTest {
val myLocationsRobot = MyLocationListRobot(this)
myLocationsViewModelApi.onAddLocation(Location("Munich", "Germany"))
myLocationsRobot
.verifyListItemWithTextIsSelected("Munich, Germany")
}
@Test
fun `verify item selection when multiple items are present`() = runComposeTest {
val myLocationsRobot = MyLocationListRobot(this)
// Add multiple locations
myLocationsViewModelApi.onAddLocation(Location("Munich", "Germany"))
myLocationsViewModelApi.onAddLocation(Location("Berlin", "Germany"))
myLocationsViewModelApi.onAddLocation(Location("Paris", "France"))
// Initially, the last added location (Paris) should be selected
myLocationsRobot.verifyListItemWithTextIsSelected("Paris, France")
// Select a different location
myLocationsRobot.clickOnItemWithText("Berlin, Germany")
// Verify the clicked location is now selected
myLocationsRobot.verifyListItemWithTextIsSelected("Berlin, Germany")
}
@Test
fun `verify item deletion when multiple items are present`() = runComposeTest {
val myLocationsRobot = MyLocationListRobot(this)
// Add multiple locations
val munich = Location("Munich", "Germany")
val berlin = Location("Berlin", "Germany")
val paris = Location("Paris", "France")
myLocationsViewModelApi.onAddLocation(munich)
myLocationsViewModelApi.onAddLocation(berlin)
myLocationsViewModelApi.onAddLocation(paris)
// Initially, the last added location (Paris) should be selected
myLocationsRobot.verifyListItemWithTextIsSelected("Paris, France")
// Delete the selected location (Paris)
myLocationsViewModelApi.onDeleteLocation(paris)
// Verify Paris is no longer in the list and Berlin is now selected
// (as it's the last item in the list after deletion)
myLocationsRobot.verifyItemDoesNotExist("Paris, France")
myLocationsRobot.verifyListItemWithTextIsSelected("Berlin, Germany")
}
@Test
fun `verify middle item deletion when three items are present`() = runComposeTest {
val myLocationsRobot = MyLocationListRobot(this)
// Add three locations
val munich = Location("Munich", "Germany")
val berlin = Location("Berlin", "Germany")
val paris = Location("Paris", "France")
myLocationsViewModelApi.onAddLocation(munich)
myLocationsViewModelApi.onAddLocation(berlin)
myLocationsViewModelApi.onAddLocation(paris)
// Initially, the last added location (Paris) should be selected
myLocationsRobot.verifyListItemWithTextIsSelected("Paris, France")
// Delete the middle location (Berlin)
myLocationsViewModelApi.onDeleteLocation(berlin)
// Verify Berlin is no longer in the list
myLocationsRobot.verifyItemDoesNotExist("Berlin, Germany")
// Verify Munich and Paris still exist
myLocationsRobot.verifyItemExists("Munich, Germany")
myLocationsRobot.verifyItemExists("Paris, France")
// Paris should still be selected as it was the selected item before deletion
myLocationsRobot.verifyListItemWithTextIsSelected("Paris, France")
}
@Test
fun `verify deletion of the only item in list`() = runComposeTest {
val myLocationsRobot = MyLocationListRobot(this)
// Add one location
val munich = Location("Munich", "Germany")
myLocationsViewModelApi.onAddLocation(munich)
// Verify the location is selected
myLocationsRobot.verifyListItemWithTextIsSelected("Munich, Germany")
// Delete the only location
myLocationsViewModelApi.onDeleteLocation(munich)
// Verify the location is no longer in the list
myLocationsRobot.verifyItemDoesNotExist("Munich, Germany")
// Verify the empty list placeholder is shown
myLocationsRobot.verifyNoLocationsPlaceHolderVisible()
}
private class FakeMyLocationsViewModel(
locations: List<Location> = emptyList()
) : MyLocationsViewModelApi {
private val _myLocationsUIStateFlow: MutableStateFlow<LocationsUIState> =
MutableStateFlow(LocationsUIState.initial(locations))
override fun onAddLocation(locationToAdd: Location) {
_myLocationsUIStateFlow.value = _myLocationsUIStateFlow.value.withLocationAdded(locationToAdd)
}
override fun onDeleteLocation(locationToDelete: Location) {
_myLocationsUIStateFlow.value = _myLocationsUIStateFlow.value.withLocationDeleted(locationToDelete)
}
override fun onLocationSelected(selectedLocationIndex: Int) {
_myLocationsUIStateFlow.value = _myLocationsUIStateFlow.value.withItemAtIndexSelected(selectedLocationIndex)
}
override val myLocationsUIStateFlow: Flow<LocationsUIState>
get() = _myLocationsUIStateFlow.asStateFlow()
override fun dispose() {
}
}
private class MyLocationListRobot(private val composableRule: ComposeTestRule) {
fun clickOnItemWithText(text: String) {
composableRule
.onNodeWithText(text)
.performClick()
}
fun verifyNoLocationsPlaceHolderVisible() {
composableRule
.onNodeWithText("No locations added yet. Go and add the first location.")
.assertExists()
composableRule
.onNodeWithContentDescription("Empty list icon.")
.assertExists()
}
fun verifyListItemWithTextIsSelected(text: String) {
composableRule
.onNodeWithText(text)
.assertExists()
.assertIsSelected()
}
fun verifyItemDoesNotExist(text: String) {
composableRule
.onNodeWithText(text)
.assertDoesNotExist()
}
fun verifyItemExists(text: String) {
composableRule
.onNodeWithText(text)
.assertExists()
}
}
}

View File

@ -1,39 +0,0 @@
package org.jetbrains.plugins.template
import com.intellij.ide.highlighter.XmlFileType
import com.intellij.openapi.components.service
import com.intellij.psi.xml.XmlFile
import com.intellij.testFramework.TestDataPath
import com.intellij.testFramework.fixtures.BasePlatformTestCase
import com.intellij.util.PsiErrorElementUtil
import org.jetbrains.plugins.template.services.MyProjectService
@TestDataPath("\$CONTENT_ROOT/src/test/testData")
class MyPluginTest : BasePlatformTestCase() {
fun testXMLFile() {
val psiFile = myFixture.configureByText(XmlFileType.INSTANCE, "<foo>bar</foo>")
val xmlFile = assertInstanceOf(psiFile, XmlFile::class.java)
assertFalse(PsiErrorElementUtil.hasErrors(project, xmlFile.virtualFile))
assertNotNull(xmlFile.rootTag)
xmlFile.rootTag?.let {
assertEquals("foo", it.name)
assertEquals("bar", it.value.text)
}
}
fun testRename() {
myFixture.testRename("foo.xml", "foo_after.xml", "a2")
}
fun testProjectService() {
val projectService = project.service<MyProjectService>()
assertNotSame(projectService.getRandomNumber(), projectService.getRandomNumber())
}
override fun getTestDataPath() = "src/test/testData/rename"
}

View File

@ -0,0 +1,211 @@
package org.jetbrains.plugins.template.components
import org.jetbrains.plugins.template.weatherApp.model.PreviewableItem
import org.jetbrains.plugins.template.weatherApp.model.Searchable
import org.jetbrains.plugins.template.weatherApp.services.SearchAutoCompletionItemProvider
import org.junit.After
import org.junit.Assert.*
import org.junit.Before
import org.junit.Test
internal class CompletionPopupControllerTest {
private lateinit var mockProvider: MockSearchProvider
private lateinit var controller: CompletionPopupController<TestItem>
// Autocompleted items
private val selectedItems = mutableListOf<CompletionItem<TestItem>>()
@Before
fun setUp() {
val testItems = listOf(
TestItem("Paris, France"),
TestItem("Berlin, Germany"),
TestItem("Chicago, USA"),
TestItem("Rome, Italy")
)
mockProvider = MockSearchProvider(testItems)
controller = CompletionPopupController(mockProvider) { item ->
selectedItems.add(item)
}
}
@After
fun tearDown() {
selectedItems.clear()
}
@Test
fun `test query changes updates completion items`() {
// When
controller.onQueryChanged("a")
// Then
assertTrue(controller.isVisible)
assertItemCount(4)
assertOnlyItemAtIndexIsSelected(0)
}
@Test
fun `test keyboard selection with onSelectMovedDown`() {
// Given
controller.onQueryChanged("a")
assertEquals(4, controller.completionItems.size)
assertOnlyItemAtIndexIsSelected(0) // First item is initially selected
// When
moveSelectionDown(1)
// Then
assertOnlyItemAtIndexIsSelected(1) // Second item should now be selected
// When moving down again
moveSelectionDown(1)
// Then
assertOnlyItemAtIndexIsSelected(2) // Third item should now be selected
}
@Test
fun `test keyboard selection with onSelectMovedUp`() {
// Given - Initialize with query and move to the last item
controller.onQueryChanged("a")
assertOnlyItemAtIndexIsSelected(0)
assertItemCount(4)
moveSelectionDown(3) // Move to the last item (index 3)
// Test case 1: Move up from last item (index 3) to third item (index 2)
moveSelectionUp()
assertOnlyItemAtIndexIsSelected(2)
// Test case 2: Move up from third item (index 2) to second item (index 1)
moveSelectionUp()
assertOnlyItemAtIndexIsSelected(1)
// Test case 3: Move up from second item (index 1) to first item (index 0)
moveSelectionUp()
assertOnlyItemAtIndexIsSelected(0)
}
@Test
fun `test keyboard selection stays within boundaries`() {
// Given
controller.onQueryChanged("a")
assertEquals(4, controller.completionItems.size)
assertOnlyItemAtIndexIsSelected(0) // First item is initially selected
// When moving up from the first item
moveSelectionUp(1)
// Then it should stay at the first item (no wrapping)
assertOnlyItemAtIndexIsSelected(0) // First item should still be selected
// Move to the last item
moveSelectionDown(3)
assertOnlyItemAtIndexIsSelected(3) // Last item is selected
// When moving down from the last item
moveSelectionDown(1)
// Then it should stay at the last item (no wrapping)
assertOnlyItemAtIndexIsSelected(3) // Last item should still be selected
}
@Test
fun `test selection confirmation with keyboard navigation`() {
// Given
controller.onQueryChanged("a")
moveSelectionDown(1)
// When
controller.onSelectionConfirmed()
// Then
assertItemSelected("Berlin, Germany")
}
@Test
fun `test selection confirmation with explicit item (mouse click)`() {
// Given
controller.onQueryChanged("a")
val itemToSelect = controller.completionItems[2] // "Chicago, USA"
controller.onItemClicked(itemToSelect)
// Then
assertItemSelected("Chicago, USA")
}
/**
* Asserts that the given selected item label matches the expected label and verifies the state
* of the selected items list and popup visibility after a selection operation.
*
* @param selectedItemLabel The expected label of the selected item.
*/
private fun assertItemSelected(selectedItemLabel: String) {
assertEquals(1, selectedItems.size)
assertEquals(selectedItemLabel, selectedItems[0].item.label)
assertFalse(controller.isVisible) // Popup should be hidden after selection
}
/**
* Helper method to move selection down by the specified number of steps
*
* @param step Number of steps to move down
*/
private fun moveSelectionDown(step: Int) {
repeat(step) {
controller.onSelectionMovedDown()
}
}
/**
* Helper method to move selection up by the specified number of steps
*
* @param step Number of steps to move up
*/
private fun moveSelectionUp(step: Int = 1) {
repeat(step) {
controller.onSelectionMovedUp()
}
}
/**
* Asserts that the current number of completion items matches the expected count.
*
* @param count The expected number of completion items.
*/
private fun assertItemCount(count: Int) {
assertEquals(count, controller.completionItems.size)
}
/**
* Helper method to assert that only the item at the specified index is selected
*/
private fun assertOnlyItemAtIndexIsSelected(selectedIndex: Int) {
for (i in controller.completionItems.indices) {
if (i == selectedIndex) {
assertTrue(
"Item at index $selectedIndex should be selected",
controller.completionItems[i].isSelected
)
} else {
assertFalse(
"Item at index $i should not be selected",
controller.completionItems[i].isSelected
)
}
}
}
private data class TestItem(override val label: String) : Searchable, PreviewableItem {
override fun matches(query: String): Boolean = label.contains(query, ignoreCase = true)
}
private class MockSearchProvider(private val items: List<TestItem>) : SearchAutoCompletionItemProvider<TestItem> {
override fun provideSearchableItems(searchTerm: String): List<TestItem> {
return items.filter { it.matches(searchTerm) }
}
}
}

View File

@ -0,0 +1,209 @@
package org.jetbrains.plugins.template.weatherApp.services
import org.jetbrains.plugins.template.weatherApp.model.Location
import org.jetbrains.plugins.template.weatherApp.ui.LocationsUIState
import org.junit.Assert.*
import org.junit.Test
internal class LocationsUIStateTest {
@Test
fun `test initialization with empty locations`() {
val state = LocationsUIState.initial(emptyList())
assertTrue(state.locations.isEmpty())
assertEquals(-1, state.selectedIndex)
assertNull(state.selectedLocation)
}
@Test
fun `test initialization with locations and valid selection`() {
val locations = listOf(
Location("Berlin", "Germany"),
Location("Paris", "France")
)
val state = LocationsUIState.initial(locations).withItemAtIndexSelected(1)
assertEquals(2, state.locations.size)
assertEquals(1, state.selectedIndex)
assertEquals(locations[1], state.selectedLocation)
}
@Test
fun `test selecting item out of range throws exception`() {
val locations = listOf(
Location("Berlin", "Germany"),
Location("Paris", "France")
)
assertThrows(IllegalArgumentException::class.java) {
LocationsUIState.initial(locations).withItemAtIndexSelected(5)
}
}
@Test
fun `test toSelectableLocations with selection`() {
val locations = listOf(
Location("Berlin", "Germany"),
Location("Paris", "France"),
Location("Rome", "Italy")
)
val state = LocationsUIState
.initial(locations)
.withItemAtIndexSelected(1)
val selectableLocations = state.toSelectableLocations()
assertEquals(3, selectableLocations.size)
assertFalse(selectableLocations[0].isSelected)
assertTrue(selectableLocations[1].isSelected)
assertFalse(selectableLocations[2].isSelected)
assertEquals("Berlin, Germany", selectableLocations[0].location.label)
assertEquals("Paris, France", selectableLocations[1].location.label)
assertEquals("Rome, Italy", selectableLocations[2].location.label)
}
@Test
fun `test withLocationAdded adds location when location doesn't exist`() {
val locations = listOf(
Location("Berlin", "Germany"),
Location("Paris", "France")
)
val state = LocationsUIState.initial(locations).withItemAtIndexSelected(0)
val newLocation = Location("Rome", "Italy")
val newState = state.withLocationAdded(newLocation)
assertEquals(3, newState.locations.size)
assertEquals(2, newState.selectedIndex) // New location should be selected
assertEquals(newLocation, newState.selectedLocation)
}
@Test
fun `test withLocationAdded selects existing location when location already exists in list`() {
val berlin = Location("Berlin", "Germany")
val paris = Location("Paris", "France")
val locations = listOf(berlin, paris)
val state = LocationsUIState.initial(locations).withItemAtIndexSelected(0)
// Add Berlin again (already exists)
val newState = state.withLocationAdded(berlin)
assertEquals(2, newState.locations.size) // No new location added
assertEquals(0, newState.selectedIndex) // Berlin is selected
assertEquals(berlin, newState.selectedLocation)
}
@Test
fun `test withLocationRemoved removes location when location exists`() {
val berlin = Location("Berlin", "Germany")
val paris = Location("Paris", "France")
val rome = Location("Rome", "Italy")
val locations = listOf(berlin, paris, rome)
val state = LocationsUIState.initial(locations).withItemAtIndexSelected(1) // Paris selected
// Remove Paris (the selected location)
val newState = state.withLocationDeleted(paris)
assertEquals(2, newState.locations.size)
assertEquals(0, newState.selectedIndex) // Selection should move to Berlin
assertEquals(berlin, newState.selectedLocation)
}
@Test
fun `test withLocationRemoved does nothing when location to remove doesn't exist in list`() {
val berlin = Location("Berlin", "Germany")
val paris = Location("Paris", "France")
val locations = listOf(berlin, paris)
val state = LocationsUIState.initial(locations).withItemAtIndexSelected(1) // Paris selected
// Try to remove a location that doesn't exist
val newState = state.withLocationDeleted(Location("Rome", "Italy"))
// State should remain unchanged
assertEquals(2, newState.locations.size)
assertEquals(1, newState.selectedIndex)
assertEquals(paris, newState.selectedLocation)
}
@Test
fun `test withLocationRemoved when location to remove is currently selected location`() {
val berlin = Location("Berlin", "Germany")
val paris = Location("Paris", "France")
val locations = listOf(berlin, paris)
val state = LocationsUIState.initial(locations).withItemAtIndexSelected(1) // Paris selected
// Remove Paris (the selected and last location)
val newState = state.withLocationDeleted(paris)
assertEquals(1, newState.locations.size)
assertEquals(0, newState.selectedIndex) // Selection should move to Berlin
assertEquals(berlin, newState.selectedLocation)
}
@Test
fun `test withLocationRemoved when removing the only location`() {
val berlin = Location("Berlin", "Germany")
val locations = listOf(berlin)
val state = LocationsUIState.initial(locations).withItemAtIndexSelected(0) // Berlin selected
// Remove Berlin (the only location)
val newState = state.withLocationDeleted(berlin)
assertTrue(newState.locations.isEmpty())
assertEquals(-1, newState.selectedIndex) // No selection
assertNull(newState.selectedLocation)
}
@Test
fun `test withLocationRemoved moves selection when location to remove is between first location and selected location`() {
val berlin = Location("Berlin", "Germany")
val paris = Location("Paris", "France")
val rome = Location("Rome", "Italy")
val madrid = Location("Madrid", "Spain")
val locations = listOf(berlin, paris, rome, madrid)
val state = LocationsUIState.initial(locations).withItemAtIndexSelected(2) // Rome selected (index 3)
// Remove Paris (index 1) which is between 0 and selectedIndex (3)
val newState = state.withLocationDeleted(paris)
assertEquals(3, newState.locations.size)
assertEquals(1, newState.selectedIndex) // Selection should be decremented by 1
assertEquals(rome, newState.selectedLocation) // Still Rome, but at index 2 now
}
@Test
fun `test withItemAtIndexSelected with valid index`() {
val locations = listOf(
Location("Berlin", "Germany"),
Location("Paris", "France"),
Location("Rome", "Italy")
)
val state = LocationsUIState.initial(locations).withItemAtIndexSelected(0) // Berlin selected
// Select Rome
val newState = state.withItemAtIndexSelected(2)
assertEquals(3, newState.locations.size)
assertEquals(2, newState.selectedIndex)
assertEquals(locations[2], newState.selectedLocation)
}
@Test
fun `test withLocationRemoved when removed location is after the selected location in list`() {
val berlin = Location("Berlin", "Germany")
val paris = Location("Paris", "France")
val rome = Location("Rome", "Italy")
val madrid = Location("Madrid", "Spain")
val locations = listOf(berlin, paris, rome, madrid)
val state = LocationsUIState.initial(locations).withItemAtIndexSelected(1) // Paris selected (index 1)
// Remove Madrid (index 3) which is greater than selectedIndex (1)
val newState = state.withLocationDeleted(madrid)
assertEquals(3, newState.locations.size)
assertEquals(1, newState.selectedIndex) // Selection should remain unchanged
assertEquals(paris, newState.selectedLocation) // Still Paris at index 1
}
}