Compare commits

...

134 Commits

Author SHA1 Message Date
grandwizard28
cccc25e2ee fix(legacyalertmanager): pick the first organization 2025-03-06 01:46:40 +05:30
grandwizard28
9580da0478 fix(migration): make it idempotent 2025-03-06 01:20:56 +05:30
grandwizard28
8534b798c7 fix(migration): make it idempotent 2025-03-06 01:10:19 +05:30
grandwizard28
3bedd10ef9 fix(migration): add an alertmanager config by default 2025-03-06 00:49:35 +05:30
grandwizard28
b6f2ff052d fix(ruler): fix db query 2025-03-05 23:04:19 +05:30
grandwizard28
d02dc8687c refactor(ruler): add BaseModel 2025-03-05 22:48:25 +05:30
grandwizard28
04835d14e1 refactor(alertmanager): cleanup 2025-03-05 21:14:34 +05:30
grandwizard28
5bd60d3f03 feat(ruler): cleanup 2025-03-05 20:13:34 +05:30
grandwizard28
5168e0de2b Merge branch 'main' of github.com:SigNoz/signoz into integration-ruler 2025-03-05 18:51:50 +05:30
grandwizard28
f8a6c1940d Merge branch 'tx-support-sqlstore' into integration-ruler 2025-03-05 18:51:19 +05:30
Vibhu Pandey
02865cf49e feat(sqlstore): add transaction support for sqlstore (#7224)
### Summary

- add transaction support for sqlstore
- use transactions in alertmanager
2025-03-05 18:50:48 +05:30
grandwizard28
81945dd73b feat(alertmanager): do everything transactionally 2025-03-05 18:30:40 +05:30
grandwizard28
6bfae83779 feat(alertmanager): do everything transactionally 2025-03-05 18:29:19 +05:30
grandwizard28
116b1ac607 Merge branch 'tx-support-sqlstore' into integration-ruler 2025-03-05 17:41:26 +05:30
grandwizard28
5915866ef6 feat(alertmanager): do everything transactionally 2025-03-05 17:41:09 +05:30
grandwizard28
6362cfb482 refactor(sqlstore): add documentation 2025-03-05 16:01:15 +05:30
grandwizard28
a6be05b047 feat(sqlstore): add transaction support for sqlstore 2025-03-05 16:00:39 +05:30
Amlan Kumar Nandy
c2d038c025 feat: implement metrics explorer summary section (#7200) 2025-03-05 15:23:23 +05:30
grandwizard28
b6be22c687 ci(main): merge with main 2025-03-05 15:15:49 +05:30
SagarRajput-7
52693eb53e fix: added safety checks for buildgraph functions and revert upgrades (#7215) 2025-03-05 05:43:51 +00:00
Shaheer Kochai
2f3cee814e feat: logs explorer context log line redirection (#7142)
* feat: display select columns from user preferences for context log line

* feat: add support for redirecting context log line to logs explorer

* feat: open context log line in new tab

* feat: pass all the filters on opening context log line in a new tab

* chore: make log context line cursor pointer
2025-03-05 04:39:41 +00:00
Vibhu Pandey
8a01312967 feat(alertmanager): simplify and test e2e alertmanager (#7217)
* refactor(alertmanager): complete e2e testing and simplify

* fix(alertmanager): fix typo

* fix(alertmanager): set to true for prometheus
2025-03-05 10:01:02 +05:30
grandwizard28
0abb5fca93 refactor(alertmanager): simplify 2025-03-05 02:21:52 +05:30
grandwizard28
ad58342319 Merge branch 'alertmanager-testing' into integration-ruler 2025-03-05 02:21:29 +05:30
grandwizard28
4abd67c67e refactor(alertmanager): simplify 2025-03-05 02:19:59 +05:30
grandwizard28
7de1fbe13f Merge branch 'alertmanager-testing' into integration-ruler 2025-03-05 00:59:47 +05:30
grandwizard28
5606f73074 refactor(alertmanager): simplify 2025-03-05 00:59:43 +05:30
grandwizard28
076b33dcba refactor(alertmanager): simplify 2025-03-05 00:55:55 +05:30
grandwizard28
e770c3054c feat(ruler): integrate with ruler 2025-03-05 00:27:07 +05:30
grandwizard28
4df43463da feat(alertmanager): add remaining scaffold 2025-03-05 00:26:22 +05:30
Shaheer Kochai
2117075f50 feat: add default interval of 30s when the user enables auto refresh (#7143) 2025-03-04 11:19:14 +00:00
Raj Kamal Singh
7bc52fb92b feat: aws integration: add service definition for ALB (#7185)
* feat: aws integration: add service definition for ALB

* chore: add overview and icon for ALB

* chore: some cleanup

* feat: aws integration: alb: use sum aggregation for appropriate metrics
2025-03-04 13:18:42 +05:30
SagarRajput-7
c731a74727 chore: upgraded path-to-regexp (#7198)
* chore: upgraded path-to-regexp

* chore: upgraded path-to-regexp

* chore: upgraded path-to-regexp

* chore: upgraded path-to-regexp

* chore: upgraded path-to-regexp
2025-03-04 10:00:10 +05:30
primus-bot[bot]
e72322e4f7 chore(release): bump to v0.75.0 (#7199)
#### Summary
 - Release SigNoz v0.75.0

 Created by [Primus-Bot](https://github.com/apps/primus-bot)
2025-03-03 14:34:23 +05:30
Srikanth Chekuri
a26cdf1089 chore: bump github.com/SigNoz/prometheus (#7182) 2025-03-03 08:34:16 +00:00
SagarRajput-7
fe73ca63a0 fix: fixed view trace or logs button on graph not disappearing on outside click (#7177)
* fix: fixed view trace or logs button on graph not disappearing on outside click

* fix: removed older function
2025-03-03 11:22:14 +05:30
Sahil
b4a1d72123 feat: minor improvement 2025-03-02 13:26:55 +05:30
Sahil
2e585acc78 fix: added a filter on initial log fetch based on activelogid param 2025-03-02 13:26:55 +05:30
Yunus M
3661fd878e feat: (onboarding): new flow part 3 (#6358)
* feat: onboarding v2 base setup

* feat: add onboarding v2 base setup and styles

- added header
- questionnaire blocks
- basic styling
- search based on UI config method (basic for UI behaviour)
- empty state result UI

* refactor: update class names in OnboardingPageV2 styles

* refactor(onboarding): components for QuestionBlock structural changes

* feat(onboarding): question block filterByCategory added

* feat(onboarding): component structure update and style updates

filterByCategory styling
spacing and styling fixes for options
steps style for question block
header styling update for sticky
added actions on header

* refactor(onboarding): bem SCSS nested way, this is the way

* refactor: moved the flow to another file

* feat: onboarding v2 base setup

* refactor: color variable fixes

* feat: onboarding part 3 changes

* feat: update handle select framework logic

* feat: add logos

* chore: remove old files

* feat: remove unwanted styles

* feat: minor ui updates

* feat: integrate invite team members and ingestion key details api

* feat: update docs links

* feat: added logos and fixed links

* feat: added and fixed links

* feat: handle routing after onboarding

* chore: update base url for docs links - testing

* feat: improve ux

* chore: update file

* feat: reset filters on next and back

* feat: update config

* feat: update api to use getIngestionData

* feat: show region and ingestion details

* feat: push changes behind feature flag

* feat: adding padding to onboarding container

* feat: add log events

* feat: handle back button state

* feat: redirect to onboarding v3 if ff is true and current path is get_started

* fix: update multi ingestion key test case

* feat: enable copy to clipboard

---------

Co-authored-by: Sudeep MP <sudipmelepunathilmp@gmail.com>
Co-authored-by: CheetoDa <Chitgupta24@gmail.com>
2025-03-02 13:05:22 +05:30
aniketio-ctrl
735b565992 feat(explorer): added related metrics (#7193) 2025-02-28 13:06:41 +05:30
Prashant Shahi
2a56f79e1d chore: update restart policy of Docker containers (#7190)
### Summary

- update the restart policy of Docker containers

---------

Signed-off-by: Prashant Shahi <prashant@signoz.io>
2025-02-28 10:25:20 +05:30
aniketio-ctrl
4134eb621c feat(summary): added alerts and basic query updates (#7174) 2025-02-27 06:55:58 +00:00
Raj Kamal Singh
a3bc290500 chore: aws integration UI events (#7172)
* chore: add constants for AWS Integration UI event names

* chore: log event for account viewed and account connection attempt started

* chore: log telemetry event on successful account connection

* chore: log telemetry event when an account connection attempt times out

* chore: log telemetry event on redirecting to AWS for account connection

* chore: log telemetry event on opening account settings

* chore: log telemetry event on saving account settings

* chore: log telemetry event on removing account

* chore: log telemetry event on viewing details of a service

* chore: log telemetry event on opening service settings

* chore: log telemetry event on saving service settings

* chore: some cleanup

* chore: address PR comment

* chore: minor cleanup
2025-02-26 17:44:00 +00:00
primus-bot[bot]
ae73033826 chore(release): bump to v0.74.0 (#7188) 2025-02-26 18:19:02 +05:30
Shaheer Kochai
da9f112bee fix: fix the issue of service to logs/traces explorer caused by similar start and end timestamps (#7181)
* fix: fix the issue of service to logs/traces explorer caused by similar start and end timestamps

* refactor: extract seconds to milliseconds conversion utility

* docs: add JSDoc for onViewTracePopupClick function

* fix: handle seconds to milli seconds in onErrorTrackHandler

* chore: add jsdoc to onErrorTrackHandler
2025-02-25 14:30:19 +05:30
Yunus M
e18bda8480 feat: show a alert if api takes more than 5 secs (#7112)
* feat: show a banner if api takes more than 5 secs

* Update frontend/src/container/AppLayout/index.tsx

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

* feat: show a banner if api takes more than 5 secs

* feat: show toast message with upgrade option

* feat: log api delays

* feat: igmore /events calls

---------

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
2025-02-21 14:50:29 +05:30
Raj Kamal Singh
bc907b9e61 chore: AWS Integration: include CWAgent metrics namespace for ec2 (#7165)
* chore: include CWAgent namespace for ec2 metrics

* chore: update aws integration service metrics connection status queried labels

* chore: fix breaking test
2025-02-21 10:45:56 +05:30
Nityananda Gohain
b6858fbfd9 fix: materialize columns api fixed (#7159) 2025-02-20 14:39:58 +00:00
grandwizard28
2b4340a3e1 feat(legacyalertmanager): fix get alerts 2025-02-20 19:29:27 +05:30
grandwizard28
309ac976cd feat(legacyalertmanager): integrate 2025-02-20 18:54:07 +05:30
grandwizard28
5ab0d77087 feat(alertmanager): add tests for config 2025-02-20 17:09:47 +05:30
grandwizard28
307afa02ff feat(sqlmigration): add org_id foreign key in notification_channels 2025-02-20 16:33:31 +05:30
Yunus M
858944d273 feat: enable ms teams channel for all users (#7144)
* feat: enable ms teams channel for all users

* fix: update copy in test files
2025-02-20 16:12:49 +05:30
grandwizard28
b9e29424ce feat(legacyalertmanager): add functions for channels 2025-02-20 15:52:16 +05:30
Vibhu Pandey
639b9a5a8a feat(legacyalertmanager): add legacyalertmanager (#7156) 2025-02-20 14:14:09 +05:30
aniketio-ctrl
972a7a9dac feat(summary-view): add summary view endpoints 2025-02-20 13:49:44 +05:30
Shivanshu Raj Shrivastava
407654e68e feat: add APIs for third party api feat (#7005)
* feat: add APIs for third party api feat

Signed-off-by: Shivanshu Raj Shrivastava <shivanshu1333@gmail.com>

* fix: minor fixes

Signed-off-by: Shivanshu Raj Shrivastava <shivanshu1333@gmail.com>

* test: add unit tests

Signed-off-by: Shivanshu Raj Shrivastava <shivanshu1333@gmail.com>

* chore: minor changes

Signed-off-by: Shivanshu Raj Shrivastava <shivanshu1333@gmail.com>

* fix: review comments

Signed-off-by: Shivanshu Raj Shrivastava <shivanshu1333@gmail.com>

* test: add unit tests

Signed-off-by: Shivanshu Raj Shrivastava <shivanshu1333@gmail.com>

* chore: cleanup

Signed-off-by: Shivanshu Raj Shrivastava <shivanshu1333@gmail.com>

* chore: review comments

Signed-off-by: Shivanshu Raj Shrivastava <shivanshu1333@gmail.com>

* chore: review comments

Signed-off-by: Shivanshu Raj Shrivastava <shivanshu1333@gmail.com>

---------

Signed-off-by: Shivanshu Raj Shrivastava <shivanshu1333@gmail.com>
2025-02-19 10:38:58 +00:00
primus-bot[bot]
3b6952abf2 chore(release): bump to v0.73.0 (#7153)
#### Summary
 - Release SigNoz v0.73.0
 - Bump SigNoz OTel Collector to v0.111.29

 Created by [Primus-Bot](https://github.com/apps/primus-bot)

Co-authored-by: primus-bot[bot] <171087277+primus-bot[bot]@users.noreply.github.com>
2025-02-19 15:29:03 +05:30
Amlan Kumar Nandy
1925b6b4cb chore: reset filters while going from hosts list to host details (#7150) 2025-02-19 14:58:04 +05:30
Vibhu Pandey
3d85fd831a refactor(registry): move into factory (#7147) 2025-02-19 00:35:53 +05:30
Nityananda Gohain
ecbc4acc78 fix: org domain (#7148)
Fixes the updated_at type of org domain
2025-02-18 16:11:37 +00:00
Vibhu Pandey
918c8942c4 feat(alertmanager): add service for alertmanager (#7136)
### Summary

- adds an alertmanager service
2025-02-18 07:36:31 +00:00
Shaheer Kochai
7e1301b8d2 fix: prefer local storage list options over url query options and handle an edge case (#7120)
* fix(LogsExplorer): prefer local storage options of url query options

* fix(LogsExplorer): don't add timestamp/body if local storage selectColumns exist & already migrated

* fix(LogsExplorer): improve query migration logic for local storage options

---------

Co-authored-by: Nityananda Gohain <nityanandagohain@gmail.com>
2025-02-18 07:07:14 +00:00
Nityananda Gohain
eba2049a4d fix: signoz shouldn't panic with postgres provider (#7138)
All necessary changes so that whatever initalize SQL commans run, they are moved to bun so that it works with both sqlite and postgres.
2025-02-18 11:08:09 +05:30
Vibhu Pandey
2a939e813d feat(sqlstorehook): add sqlstore logging hook (#7137)
### Summary

add sqlstore logging hook
2025-02-17 21:13:40 +05:30
Nityananda Gohain
c3951afdfd fix: refactor auth package (#7110)
* fix: refactor auth package

* fix: minor changes

* fix: refactor jwt

* fix: add tests and address comments

* fix: address comments

* fix: add uncomitted file

* fix: address comments

* fix: update tests
2025-02-17 18:16:41 +05:30
SagarRajput-7
fbf0e4efc7 fix: fixed paths to unblock lint check failing locally (#7114)
* fix: fixed paths to unblock lint check failing locally

* fix: fixed folder name path

* fix: fixed folder name path - api
2025-02-17 09:51:19 +00:00
SagarRajput-7
1f52139ed3 chore: added kakfa analytics (#7127) 2025-02-17 09:34:57 +00:00
SagarRajput-7
e86c7c970a chore: added mq overview page analytics (#7128) 2025-02-17 14:56:11 +05:30
Nityananda Gohain
8bfca9b564 fix: analytics middleware fixed (#7133) 2025-02-17 14:38:13 +05:30
SagarRajput-7
5a107f33f2 chore: added mq celery analytics (#7129) 2025-02-17 13:59:16 +05:30
Vibhu Pandey
a6cfb63036 fix(alertmanager): fix a flaky test (#7123) 2025-02-16 19:02:33 +05:30
Yunus M
042f31116a update project maintainers (#7116)
Co-authored-by: Shaheer Kochai <ashaheerki@gmail.com>
2025-02-15 13:52:05 +00:00
Srikanth Chekuri
e7587612e7 Revert "fix(otelcol): remove the v2 metrics exporter configuration (#… …7105)" (#7118) 2025-02-15 16:29:56 +05:30
SagarRajput-7
43a1fa53aa fix: fixed selected value getting reset for variables and refetch not going (#7115) 2025-02-15 00:23:33 +05:30
Raj Kamal Singh
966f11fd5c chore: enable AWS integrations for all (#7111)
* chore: enable AWS integrations for all

* chore: don't show either of configure/enable for a service when not in ctx of a cloud account

* chore: remove AWS integration feature flag
2025-02-14 13:19:52 +00:00
Raj Kamal Singh
52f41e0064 Chore: aws integrations: ec2 and rds dashboards and collected metric details with gauges (#7113)
* chore: aws integration: update agent version

* chore: aws integration: gauges based ec2 overview dashboard

* chore: aws integration: gauges based rds overview dashboard

* chore: aws integrations: ec2 metrics collected

* chore: aws integrations: rds metrics collected
2025-02-14 18:40:46 +05:30
Shaheer Kochai
82d84c041c Feat: back navigation support throughout the app (#6701)
* feat: custom hook to prevent redundant navigation and handle default params with URL comparison

* feat: implement useSafeNavigation to QB, to ensure that the back navigation works properly

* fix: handle syncing the relativeTime param with the time picker selected relative time

* feat: add support for absolute and relative time sync with time picker component

* refactor: integrate safeNavigate in LogsExplorerChart and deprecate the existing back navigation

* feat: update pagination query params on pressing next/prev page

* fix: fix the issue of NOOP getting converted to Count on coming back from alert creation page

* refactor: replace history navigation with safeNavigate in DateTimeSelectionV2 component

it also fixes the issue of relativeTime not being added to the url on mounting

* feat: integrate useSafeNavigate across service details tabs

* fix: fix duplicate redirections by converting the timestamp to milliseconds

* fix: replace history navigation with useSafeNavigate in LogsExplorerViews and useUrlQueryData

* fix: replace history navigation with useSafeNavigate across dashboard components

* fix: use safeNavigate in alert components

* fix: fix the issue of back navigation in alert table and sync the pagination with url param

* fix: handle back navigation for resource filter and sync the state with url query

* fix: fix the issue of double redirection from top operations to traces

* fix: replace history.push with safeNavigate in TracesExplorer's updateDashboard

* fix: prevent unnecessary query re-runs by checking stagedQuery before redirecting in NewWidget

* chore: cleanup

* fix: fix the failing tests

* fix: fix the documentation redirection failing tests

* test: mock useSafeNavigate hook in WidgetGraphComponent test

* test: mock useSafeNavigate hook in ExplorerCard test
2025-02-14 03:54:49 +00:00
Raj Kamal Singh
ef635b6b60 Chore: aws integrations UI improvements (#7068)
* chore: handle race between initial setting of ?cloudAccountId and ?service

* chore: invalidate accounts query after successful account connection

* chore: show service status only when enabled and disable save btn only if no change in svc config

* chore: re-trigger CI
2025-02-13 14:32:17 +00:00
Raj Kamal Singh
169bd3f65b Feat: aws integrations: dashboards (#7058)
* chore: get started on dashboards plumbing for AWS integration services

* feat: cloud integrations: include cloud integrations dashboards in dashboards list

* feat: cloud integrations: get cloud integration dashboard by id

* feat: dashboard url in cloud integrations svc detail

* feat: ec2 overview dashboard

* chore: add ec2 overview dashboard image

* chore: finish up with v0 definitions for EC2 and RDS

* chore: some cleanup

* chore: fix broken test

* chore: add connection url composition

---------

Co-authored-by: Srikanth Chekuri <srikanth.chekuri92@gmail.com>
2025-02-13 14:15:51 +00:00
SagarRajput-7
50ecf768fa fix: fixed widgets not visible after saving in the dashboard detail (#7106) 2025-02-13 17:04:24 +05:30
Vibhu Pandey
2d6131c291 feat(alertmanager): add server implementation for alertmanager (#7103) 2025-02-13 09:08:58 +00:00
Aarif Mohammad
7359c0a825 fix[FE]: fix the update view button not visible on changes to Not Updating in Logs and Traces List View. (#6454)
* fix[FE]: fix the update view button not visible on changes to columns in logs and traces list view

* fix: pass the missing options to isStagedQueryUpdated in ExplorerCard

* test: mock useHistory hook for ExplorerCard tests

---------

Co-authored-by: ahmadshaheer <ashaheerki@gmail.com>
2025-02-13 04:18:18 +00:00
Prashant Shahi
846b6a9346 fix(otelcol): remove the v2 metrics exporter configuration (#7105) 2025-02-13 04:31:25 +05:30
Vibhu Pandey
bcf7bf38fc feat(alertmanager): add alertmanagertypes (#7101)
add alertmanagertypes
2025-02-12 17:23:18 +00:00
Prashant Shahi
5511c0230b fix(otelcol): rename clickhousemetricswritev2 to signozclickhousemetrics (#7099)
### Summary

- rename exporter `clickhousemetricswritev2` to `signozclickhousemetrics` in collector config

Signed-off-by: Prashant Shahi <prashant@signoz.io>
2025-02-12 19:25:29 +05:30
Nityananda Gohain
7a03a09ac1 fix: add migration and postgres provider (#7089)
* fix: move migrations to bun

* fix: use anonymous structs and move modes to types package

* fix: minor changes after tests

* fix: remove bun relations and add foreign keys

* fix: minor changes

* Update pkg/types/agent.go

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

* fix: add migration and postgres provider

* fix: address minor comments

* fix: use bun create index

* fix: add migration

* fix: support for postgres in migrations

* Update pkg/sqlstore/pgstore/provider.go

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

* Update pkg/sqlmigration/001_add_organization.go

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

* fix: address comments

* fix: move max connection to base config

* fix: update scope

---------

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
2025-02-12 13:23:40 +00:00
primus-bot[bot]
0d281e694d chore(release): bump to v0.72.0 (#7096)
#### Summary
 - Release SigNoz v0.72.0
 - Bump SigNoz OTel Collector to v0.111.27

 Created by [Primus-Bot](https://github.com/apps/primus-bot)

Co-authored-by: primus-bot[bot] <171087277+primus-bot[bot]@users.noreply.github.com>
2025-02-12 15:52:55 +05:30
SagarRajput-7
b772a0fb56 feat: changed visible Panel name for Value Panel to Number (#7092)
* feat: changed visible Panel name for Value Panel to Number

* feat: added display values to enum
2025-02-12 11:29:07 +05:30
Nityananda Gohain
962e75c6d4 fix: move migrations to bun (#7055)
* fix: move migrations to bun

* fix: use anonymous structs and move modes to types package

* fix: minor changes after tests

* fix: remove bun relations and add foreign keys

* fix: minor changes

* Update pkg/types/agent.go

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

* fix: address minor comments

* fix: use bun create index

* fix: remove extra comma

---------

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
2025-02-12 09:58:49 +05:30
SagarRajput-7
42fad23cb0 feat: added feat to add new panel in a section (#6999)
* feat: added common util and took possible space available in last row in account

* feat: added different test cases

* feat: remove console.log

* feat: added default value to widgetWidth

* feat: added feat to add new panel in a section

* feat: added different test cases
2025-02-11 22:55:42 +05:30
SagarRajput-7
d22ecb9f7c feat: allowed user to edit panel while the API is loading (#7007)
* feat: allowed user to edit panel while the API is loading

* feat: added test case
2025-02-11 18:32:13 +05:30
SagarRajput-7
02c2b55d5e feat: added new and cloned panel at the bottom of the page (#6993)
* feat: added new and cloned panel at the bottom of the page

* feat: added common util and took possible space available in last row in account

* feat: added changes for empty layout

* feat: added different test cases

* feat: remove console.log

* feat: added default value to widgetWidth
2025-02-11 17:01:17 +05:30
Vishal Sharma
9a75e27ec3 chore: add customerio identity calls (#7079) 2025-02-11 11:20:15 +00:00
SagarRajput-7
1fb3953614 feat: added create alerts option for panel in locked dashboard (#7071) 2025-02-11 16:32:25 +05:30
Vishal Sharma
37558facbe chore: add customerio to frontend (#7062) 2025-02-07 20:13:35 +05:30
Vikrant Gupta
12f65f4a72 Revert "chore: add related values (#6619)" (#7067)
This reverts commit c5219ac157.
2025-02-07 11:51:11 +00:00
Srikanth Chekuri
398760006b fix: address the first point increase without previous measurement value (#7054) 2025-02-07 07:44:18 +00:00
Raj Kamal Singh
37323a64cf chore: also use signoz_api_key from connection params (#7061) 2025-02-07 11:26:42 +05:30
Srikanth Chekuri
6d8d2e6b11 chore: use any of [cpu.usage, cpu.utilization] for cpu (#7017) 2025-02-06 11:56:58 +00:00
Srikanth Chekuri
a8e8f31b00 chore: parse string values for __value filter (#7035) 2025-02-06 11:47:29 +00:00
Shaheer Kochai
c3164912e6 AWS Integration changes (#7025)
* fix: update AWS accounts API response to return accounts list

* feat: display skeleton UI for account actions and refactored rendering logic

* chore: update AWS service naming from "AWS Web Services" to "Amazon Web Services"

* feat: aws integration success modal changes

* feat: auto-select first service when no service is active

* feat: display 'enable service' if service hasn't been configured and 'Configure (x/2)' if configured

* fix: display no data yet if status is not available

* feat: properly handle remove integration account flow

* fix: rename accountId param to cloudAccountId

* fix: update the aws service list and details api parameter from account_id to cloud_account_id

* fix: fix the issue of stale service config modal enabled/disabled state

* chore: improve the UI of configure button

* feat: add connection parameters support for AWS cloud integration

* feat: add optional link support for cloud service dashboards

* fix: get the correct supported signals count + a minor refactoring

* fix: remove cloudAccountId on success of account remove

* chore: update the remove integration copy

* refactor: add react query key for AWS connection parameters

* fix: correct typo in integration loading state variable name

* refactor: move skeleton inline styles to style file and do overall refactoring

* chore: address the requested changes
2025-02-06 15:13:19 +04:30
Shaheer Kochai
b215c6a0ce feat: aws integration feature flag changes (#7033)
* feat: aws integration feature flag changes

* fix: fix the failing build
2025-02-06 09:26:10 +00:00
Ekansh Gupta
94c2398a08 feat: bug fix for segregating entrypoint spans and root spans in span filtering (#7046) 2025-02-06 13:26:18 +05:30
Raj Kamal Singh
acd9b97ee3 Feat: aws integrations: service connection status (#7032)
* feat: add ability to get latest metric received ts by labelValues filter

* feat: svc metrics connection status check

* feat: aws integration svc logs connection check

* chore: fix broken test

* chore: address PR review comments

* chore: address PR feedback

* chore: fix broken test expectation

* fix: use resource filter for logs connection status
2025-02-06 13:08:47 +05:30
Srikanth Chekuri
c5219ac157 chore: add related values (#6619) 2025-02-06 05:09:01 +00:00
Vikrant Gupta
2b32ce190f task(licenses): update the license events and the state names (#7034)
* Revert "Revert "chore(licenses): update the license events and the state name…"

This reverts commit 66adc7fbf9.

* chore(license): fix comment
2025-02-05 18:25:36 +00:00
Amlan Kumar Nandy
c7c7b25651 feat: metrics explorer base setup (#7024) 2025-02-05 12:57:12 +00:00
Amlan Kumar Nandy
f548afe284 chore: share filters across logs and traces views in entity details (#7014) 2025-02-05 18:18:35 +05:30
primus-bot[bot]
586f5255f0 chore(release): bump to v0.71.0 (#7031)
#### Summary
 - Release SigNoz v0.71.0
 - Bump SigNoz OTel Collector to v0.111.26

 Created by [Primus-Bot](https://github.com/apps/primus-bot)
2025-02-05 15:13:58 +05:30
SagarRajput-7
62064f136d feat: corrected the color map for error % and added throughput unit (#7030) 2025-02-05 14:56:31 +05:30
Vikrant Gupta
66adc7fbf9 Revert "chore(licenses): update the license events and the state names (#7021)" (#7029)
This reverts commit e414215786.
2025-02-05 12:38:56 +05:30
Yunus M
f6b2d5a519 feat: change grid to flex - flower metrics section (#7027) 2025-02-05 11:48:44 +05:30
Vibhu Pandey
035999250e fix(add_pats): fix name of column (#7026) 2025-02-05 11:02:17 +05:30
Shaheer Kochai
aecbb71ce4 feat: truncate very long lines in traces explorer list view (#6987)
* feat: truncate very long lines in traces explorer list view

* fix: update snapshot tests with new line-clamped text class to fix the failing test
2025-02-04 13:29:23 +00:00
Ekansh Gupta
01b6e22bbd feat: bug fix for the issue in span filtering feature. No spans returned in traces tab (#7023)
* feat: bug fix for the issue in span filtering feature. No spans returned in traces tab

* feat: bug fix for the issue in span filtering feature. No spans returned in traces tab
2025-02-04 18:36:07 +05:30
Vibhu Pandey
dc15ee8176 feat(sqlmigration): consolidate all sqlmigrations into one package (#7018)
* feat(sqlmigration): add sqlmigrations

* feat(sqlmigration): test sqlmigrations

* feat(sqlmigration): add remaining factories

* feat(sqlmigration): consolidate into single package

* fix(telemetrystore): remove existing env variables

* fix(telemetrystore): fix DSN
2025-02-04 09:23:36 +00:00
Vikrant Gupta
e414215786 chore(licenses): update the license events and the state names (#7021) 2025-02-04 14:11:13 +05:30
Amlan Kumar Nandy
5fe04078e5 chore: update logs in infra monitoring for analytics (#6994) 2025-02-04 06:01:37 +00:00
SagarRajput-7
cf95b15ba1 feat: celery - misc feedback fixes (#7019)
* feat: celery - misc feedback fixes

* feat: enabled better sharing and auto-refresh

* feat: made task name filter more visible
2025-02-04 09:41:27 +05:30
Raj Kamal Singh
3b550c485d Feat: cloud integrations: agent check-in api (#7004)
* chore: cloudintegrations: rename rds def

* feat: cloudintegrations: shape of agent check in response for v0 release

* chore: cloudintegrations: add validation for response expected after agent check in

* chore: cloudintegrations: accumulate teletry collection strategies for enabled services

* chore: cloudintegrations: use map struct to parse from map to struct with json tags

* chore: cloudintegrations: telemetry collection strategy for services

* chore: cloudintegrations: wrap up test for agent check in resp

* chore: some cleanup

* chore: some cleanup

* chore: some minor renaming

* chore: address review comment

* chore: some cleanup

---------

Co-authored-by: Srikanth Chekuri <srikanth.chekuri92@gmail.com>
2025-02-03 20:52:15 +05:30
Amlan Kumar Nandy
784dccf298 feat: fix incorrect suggestions while moving between explores (#7008) 2025-02-03 14:31:01 +05:30
Shaheer Kochai
aa26dc77af fix(styles): fix the gap between text and button in logs quick filters (#7006) 2025-02-03 04:54:21 +00:00
Raj Kamal Singh
e33a0fdd47 Feat/cloud integrations connection params api key (#6997)
* feat: get started on PAT provisioning for AWS integration

* chore: include cloud integration PAT in connection params

* chore: some cleanup

---------

Co-authored-by: Srikanth Chekuri <srikanth.chekuri92@gmail.com>
2025-02-01 20:12:56 +05:30
Srikanth Chekuri
c8032f771e chore: add k8s metrics receiving status (#6977) 2025-01-31 15:07:04 +00:00
primus-bot[bot]
536656281d chore(release): bump to v0.70.1 (#7000)
#### Summary
 - Release SigNoz v0.70.1
 - Bump SigNoz OTel Collector to v0.111.25

 Created by [Primus-Bot](https://github.com/apps/primus-bot)

Co-authored-by: primus-bot[bot] <171087277+primus-bot[bot]@users.noreply.github.com>
Co-authored-by: Prashant Shahi <prashant@signoz.io>
2025-01-31 18:50:32 +05:30
Prashant Shahi
c6fda99b9b fix(query-service): skip preloading non-json files under dashboards (#6979)
### Summary

- query-service: skip preloading non-json files under dashboards

Resolves the error log:

```
{"level":"INFO","timestamp":"2025-01-29T17:37:18.635Z","caller":"dashboards/provision.go:26","msg":"Provisioning dashboard: ","filename":".gitkeep"}
{"level":"ERROR","timestamp":"2025-01-29T17:37:18.635Z","caller":"dashboards/provision.go:38","msg":"Creating Dashboards: Error in unmarshalling json from file","filename":".gitkeep","error":"unexpected end of JSON input","stacktrace":"go.signoz.io/signoz/pkg/query-service/app/dashboards.readCurrentDir\n\t/home/sa_100696978840572610735/signoz/pkg/query-service/app/dashboards/provision.go:38\ngo.signoz.io/signoz/pkg/query-service/app/dashboards.LoadDashboardFiles\n\t/home/sa_100696978840572610735/signoz/pkg/query-service/app/dashboards/provision.go:79\ngo.signoz.io/signoz/pkg/query-service/app.NewAPIHandler\n\t/home/sa_100696978840572610735/signoz/pkg/query-service/app/http_handler.go:271\ngo.signoz.io/signoz/ee/query-service/app/api.NewAPIHandler\n\t/home/sa_100696978840572610735/signoz/ee/query-service/app/api/api.go:56\ngo.signoz.io/signoz/ee/query-service/app.NewServer\n\t/home/sa_100696978840572610735/signoz/ee/query-service/app/server.go:287\nmain.main\n\t/home/sa_100696978840572610735/signoz/ee/query-service/main.go:191\nruntime.main\n\t/home/sa_100696978840572610735/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.22.7.linux-amd64/src/runtime/proc.go:271"}
```

Signed-off-by: Prashant Shahi <prashant@signoz.io>
2025-01-31 13:09:47 +00:00
Vikrant Gupta
bbf64a7b52 fix(trace-detail): trace details improvements (#6998)
* fix(trace-detail): query service and ux improvements

* fix(trace-detail): added query service events

* fix(trace-detail): address review comments
2025-01-31 15:04:21 +05:30
Amlan Kumar Nandy
5783f1555f chore: add functionality to open entity details from nested table items in groupby mode (#6981) 2025-01-31 07:54:14 +00:00
Raj Kamal Singh
93a8f97355 Feat: cloud integrations: generate connection params (#6982)
* feat: include GatewayUrl in APIHandler options

* feat: logic for getting or creating an ingestion key when available

* feat: helper for generating ingestion url

* feat: also include deduced SigNoz API URL in connection params response

* chore: some cleanup

* chore: some more cleanup

* chore: address a PR comment

* chore: some cleanup

* chore: pass down context
2025-01-31 12:40:04 +05:30
Shaheer Kochai
a84e462a65 Fix/check the flows of toggling logs timestamp and body columns (#6992)
* fix: add default timestamp and body columns to live logs

* refactor: use convertKeysToColumnFields instead of re-modifying the default columns

* fix: remove the local storage selectColumns when clear view is clicked

* fix: improve selectColumns migration handling
2025-01-31 11:25:47 +05:30
Shaheer Kochai
d910d99689 fix: raw log data not rendering in log context (#6991)
* feat: add default selected fields for log context view

* fix: add null check to to traceData

* refactor: address review comment
2025-01-30 18:16:55 +00:00
Yunus M
e542e96031 feat: aws integration (#6954)
* feat: aws Integration skeleton UI (#6758)

* feat: add AWS integration in the integrations list and redirect to the new Cloud Integration page

* feat: cloud integration details page header (i.e. breadcrumb and get help button) UI

* feat: hero section UI

* refactor: extract Header and HeroSection components from CloudIntegrationPage

* feat: services tab bar and sidebar UI

* feat: cloud integration details services UI

* refactor: group and extract cloud integration components to files

* fix: set default active service to the first service in the list if no service is specified

* feat: add NEW flag for AWS integration in the integrations list page

* chore: overall improvements

* chore: move cloud integration pages to /container

* fix: hero section background

* feat: aws Integration: Account setup basic UI and functionality (#6806)

* feat: implement basic cloud account management UI in HeroSection

* feat: aws Integration: Integrate now modal (#6807)

* feat: implement basic cloud account management UI in HeroSection

* feat: start working on integrate now modal UI

* feat: integrate now modal UI

* feat: integrate now modal states and json server API integration

* feat: get accounts from json-server API, and redirect Add new account to the integrations modal

* feat: display error state if last_heartbeat_ts_ms is null even after 5 minutes

* chore: update import path for regions data in useRegionSelection hook

* chore: move hero section components inside the HeroSection/components

* feat: create a reusable modal component

* refactor: make the cloud account setup modal readable / DRYer

* feat: aws Integration: Account settings modal (#6808)

* feat: implement basic cloud account management UI in HeroSection

* feat: start working on integrate now modal UI

* feat: get accounts from json-server API, and redirect Add new account to the integrations modal

* feat: integrate now modal UI

* feat: integrate now modal states and json server API integration

* feat: account settings

* feat: service status UI

* refactor: make account settings modal more readable and overall improvements

* feat: Get data from json server api data in service sections (#6809)

* feat: implement basic cloud account management UI in HeroSection

* feat: start working on integrate now modal UI

* feat: get accounts from json-server API, and redirect Add new account to the integrations modal

* refactor: make the cloud account setup modal readable / DRYer

* feat: integrate now modal states and json server API integration

* refactor: make account settings modal more readable and overall improvements

* feat: integrate now modal states and json server API integration

* feat: display error state if last_heartbeat_ts_ms is null even after 5 minutes

* feat: get the services list and details from json server API response

* feat: update account actions to set accountId in URL query on initial account load

* feat: configure service modal (#6814)

* feat: implement basic cloud account management UI in HeroSection

* feat: start working on integrate now modal UI

* feat: get accounts from json-server API, and redirect Add new account to the integrations modal

* refactor: make the cloud account setup modal readable / DRYer

* feat: integrate now modal states and json server API integration

* feat: get accounts from json-server API, and redirect Add new account to the integrations modal

* feat: integrate now modal states and json server API integration

* feat: get accounts from json-server API, and redirect Add new account to the integrations modal

* feat: display error state if last_heartbeat_ts_ms is null even after 5 minutes

* feat: account settings

* feat: service status UI

* feat: get the services list and details from json server API response

* feat: update account actions to set accountId in URL query on initial account load

* feat: configure service modal UI

* feat: configure service modal functionality and API changes

* feat: replace loading indicators with Spinner component in ServiceDetails and ServicesList

* fix: make the configure service modal work

* feat: light mode support and overall improvements to AWS integration page (#6817)

* refactor: make the cloud account setup modal readable / DRYer

* feat: integrate now modal states and json server API integration

* refactor: make account settings modal more readable and overall improvements

* fix: integrate now modal button improvements

* feat: aws integrations light mode

* refactor: overall improvements

* refactor: define react query keys in constant

* feat: services filter

* feat: render service overview as markdown

* feat: integrate AWS integration page API (#6851)

* feat: replace json-server APIs with actual APIs

* fix: add null checks and fix the issues

* chore: remove the console.log

* feat: temporarily hide AWS Integration from integrations list

* chore: add optimized png

* refactor: extract service filter types into an enum

* chore: remove console.log

* chore: remove duplicate files

* refactor: move regions to utils

* fix: get account id from url param

* chore: address PR review comments

* refactor: use the IntegrateNowFormSections inside RegionForm

* chore: move integrations select inline style to a common class

---------

Co-authored-by: Shaheer Kochai <ashaheerki@gmail.com>
2025-01-30 20:51:49 +04:30
SagarRajput-7
3849ca1ecc feat: celery task page restructuring and other misc fixes (#6985)
* feat: celery task page restructuring and other misc fixes

* feat: added custom series hook

* feat: code fix and typo

* feat: added feedback fixes

* feat: configured error % graphs

* feat: resolved comments
2025-01-30 21:23:37 +05:30
575 changed files with 49924 additions and 5084 deletions

View File

@@ -68,6 +68,8 @@ jobs:
echo 'TUNNEL_URL="${{ secrets.TUNNEL_URL }}"' >> frontend/.env
echo 'TUNNEL_DOMAIN="${{ secrets.TUNNEL_DOMAIN }}"' >> frontend/.env
echo 'POSTHOG_KEY="${{ secrets.POSTHOG_KEY }}"' >> frontend/.env
echo 'CUSTOMERIO_ID="${{ secrets.CUSTOMERIO_ID }}"' >> frontend/.env
echo 'CUSTOMERIO_SITE_ID="${{ secrets.CUSTOMERIO_SITE_ID }}"' >> frontend/.env
- name: Setup golang
uses: actions/setup-go@v4
with:

2
.gitignore vendored
View File

@@ -76,3 +76,5 @@ dist/
# ignore user_scripts that is fetched by init-clickhouse
deploy/common/clickhouse/user_scripts/
queries.active

View File

@@ -219,12 +219,18 @@ Not sure how to get started? Just ping us on `#contributing` in our [slack commu
- [Nityananda Gohain](https://github.com/nityanandagohain)
- [Srikanth Chekuri](https://github.com/srikanthccv)
- [Vishal Sharma](https://github.com/makeavish)
- [Shivanshu Raj Shrivastava](https://github.com/shivanshuraj1333)
- [Ekansh Gupta](https://github.com/eKuG)
- [Aniket Agarwal](https://github.com/aniketio-ctrl)
#### Frontend
- [Yunus M](https://github.com/YounixM)
- [Vikrant Gupta](https://github.com/vikrantgupta25)
- [Sagar Rajput](https://github.com/SagarRajput-7)
- [Shaheer Kochai](https://github.com/ahmadshaheer)
- [Amlan Kumar Nandy](https://github.com/amlannandy)
- [Sahil Khan](https://github.com/sawhil)
#### DevOps

View File

@@ -76,6 +76,9 @@ services:
wget -O histogram-quantile.tar.gz "https://github.com/SigNoz/signoz/releases/download/histogram-quantile%2F$${version}/histogram-quantile_$${node_os}_$${node_arch}.tar.gz"
tar -xvzf histogram-quantile.tar.gz
mv histogram-quantile /var/lib/clickhouse/user_scripts/histogramQuantile
deploy:
restart_policy:
condition: on-failure
volumes:
- ../common/clickhouse/user_scripts:/var/lib/clickhouse/user_scripts/
zookeeper-1:
@@ -181,7 +184,7 @@ services:
- query-service
query-service:
!!merge <<: *db-depend
image: signoz/query-service:0.70.0
image: signoz/query-service:0.75.0
command:
- --config=/root/config/prometheus.yml
- --use-logs-new-schema=true
@@ -214,7 +217,7 @@ services:
retries: 3
frontend:
!!merge <<: *common
image: signoz/frontend:0.70.0
image: signoz/frontend:0.75.0
depends_on:
- alertmanager
- query-service
@@ -224,7 +227,7 @@ services:
- ../common/signoz/nginx-config.conf:/etc/nginx/conf.d/default.conf
otel-collector:
!!merge <<: *db-depend
image: signoz/signoz-otel-collector:0.111.24
image: signoz/signoz-otel-collector:0.111.29
command:
- --config=/etc/otel-collector-config.yaml
- --manager-config=/etc/manager-config.yaml
@@ -248,7 +251,7 @@ services:
- query-service
schema-migrator:
!!merge <<: *common
image: signoz/signoz-schema-migrator:0.111.24
image: signoz/signoz-schema-migrator:0.111.29
deploy:
restart_policy:
condition: on-failure
@@ -262,7 +265,6 @@ services:
networks:
signoz-net:
name: signoz-net
volumes:
alertmanager:
name: signoz-alertmanager

View File

@@ -73,6 +73,9 @@ services:
wget -O histogram-quantile.tar.gz "https://github.com/SigNoz/signoz/releases/download/histogram-quantile%2F$${version}/histogram-quantile_$${node_os}_$${node_arch}.tar.gz"
tar -xvzf histogram-quantile.tar.gz
mv histogram-quantile /var/lib/clickhouse/user_scripts/histogramQuantile
deploy:
restart_policy:
condition: on-failure
volumes:
- ../common/clickhouse/user_scripts:/var/lib/clickhouse/user_scripts/
zookeeper-1:
@@ -117,7 +120,7 @@ services:
- query-service
query-service:
!!merge <<: *db-depend
image: signoz/query-service:0.70.0
image: signoz/query-service:0.75.0
command:
- --config=/root/config/prometheus.yml
- --use-logs-new-schema=true
@@ -150,7 +153,7 @@ services:
retries: 3
frontend:
!!merge <<: *common
image: signoz/frontend:0.70.0
image: signoz/frontend:0.75.0
depends_on:
- alertmanager
- query-service
@@ -160,7 +163,7 @@ services:
- ../common/signoz/nginx-config.conf:/etc/nginx/conf.d/default.conf
otel-collector:
!!merge <<: *db-depend
image: signoz/signoz-otel-collector:0.111.24
image: signoz/signoz-otel-collector:0.111.29
command:
- --config=/etc/otel-collector-config.yaml
- --manager-config=/etc/manager-config.yaml
@@ -184,7 +187,7 @@ services:
- query-service
schema-migrator:
!!merge <<: *common
image: signoz/signoz-schema-migrator:0.111.24
image: signoz/signoz-schema-migrator:0.111.29
deploy:
restart_policy:
condition: on-failure
@@ -198,7 +201,6 @@ services:
networks:
signoz-net:
name: signoz-net
volumes:
alertmanager:
name: signoz-alertmanager

View File

@@ -66,7 +66,7 @@ exporters:
enabled: true
clickhousemetricswrite/prometheus:
endpoint: tcp://clickhouse:9000/signoz_metrics
clickhousemetricswritev2:
signozclickhousemetrics:
dsn: tcp://clickhouse:9000/signoz_metrics
clickhouselogsexporter:
dsn: tcp://clickhouse:9000/signoz_logs
@@ -90,11 +90,11 @@ service:
metrics:
receivers: [otlp]
processors: [batch]
exporters: [clickhousemetricswrite, clickhousemetricswritev2]
exporters: [clickhousemetricswrite, signozclickhousemetrics]
metrics/prometheus:
receivers: [prometheus]
processors: [batch]
exporters: [clickhousemetricswrite/prometheus, clickhousemetricswritev2]
exporters: [clickhousemetricswrite/prometheus, signozclickhousemetrics]
logs:
receivers: [otlp]
processors: [batch]

View File

@@ -2,7 +2,7 @@ version: "3"
x-common: &common
networks:
- signoz-net
restart: on-failure
restart: unless-stopped
logging:
options:
max-size: 50m
@@ -79,6 +79,7 @@ services:
wget -O histogram-quantile.tar.gz "https://github.com/SigNoz/signoz/releases/download/histogram-quantile%2F$${version}/histogram-quantile_$${node_os}_$${node_arch}.tar.gz"
tar -xvzf histogram-quantile.tar.gz
mv histogram-quantile /var/lib/clickhouse/user_scripts/histogramQuantile
restart: on-failure
volumes:
- ../common/clickhouse/user_scripts:/var/lib/clickhouse/user_scripts/
zookeeper-1:
@@ -188,7 +189,7 @@ services:
condition: service_healthy
query-service:
!!merge <<: *db-depend
image: signoz/query-service:${DOCKER_TAG:-0.70.0}
image: signoz/query-service:${DOCKER_TAG:-0.75.0}
container_name: signoz-query-service
command:
- --config=/root/config/prometheus.yml
@@ -222,7 +223,7 @@ services:
retries: 3
frontend:
!!merge <<: *common
image: signoz/frontend:${DOCKER_TAG:-0.70.0}
image: signoz/frontend:${DOCKER_TAG:-0.75.0}
container_name: signoz-frontend
depends_on:
- alertmanager
@@ -234,7 +235,7 @@ services:
# TODO: support otel-collector multiple replicas. Nginx/Traefik for loadbalancing?
otel-collector:
!!merge <<: *db-depend
image: signoz/signoz-otel-collector:${OTELCOL_TAG:-0.111.24}
image: signoz/signoz-otel-collector:${OTELCOL_TAG:-0.111.29}
container_name: signoz-otel-collector
command:
- --config=/etc/otel-collector-config.yaml
@@ -260,7 +261,7 @@ services:
condition: service_healthy
schema-migrator-sync:
!!merge <<: *common
image: signoz/signoz-schema-migrator:${OTELCOL_TAG:-0.111.24}
image: signoz/signoz-schema-migrator:${OTELCOL_TAG:-0.111.29}
container_name: schema-migrator-sync
command:
- sync
@@ -271,16 +272,16 @@ services:
condition: service_healthy
schema-migrator-async:
!!merge <<: *db-depend
image: signoz/signoz-schema-migrator:${OTELCOL_TAG:-0.111.24}
image: signoz/signoz-schema-migrator:${OTELCOL_TAG:-0.111.29}
container_name: schema-migrator-async
command:
- async
- --dsn=tcp://clickhouse:9000
- --up=
restart: on-failure
networks:
signoz-net:
name: signoz-net
volumes:
alertmanager:
name: signoz-alertmanager

View File

@@ -2,7 +2,7 @@ version: "3"
x-common: &common
networks:
- signoz-net
restart: on-failure
restart: unless-stopped
logging:
options:
max-size: 50m
@@ -75,6 +75,7 @@ services:
wget -O histogram-quantile.tar.gz "https://github.com/SigNoz/signoz/releases/download/histogram-quantile%2F$${version}/histogram-quantile_$${node_os}_$${node_arch}.tar.gz"
tar -xvzf histogram-quantile.tar.gz
mv histogram-quantile /var/lib/clickhouse/user_scripts/histogramQuantile
restart: on-failure
volumes:
- ../common/clickhouse/user_scripts:/var/lib/clickhouse/user_scripts/
zookeeper-1:
@@ -121,7 +122,7 @@ services:
condition: service_healthy
query-service:
!!merge <<: *db-depend
image: signoz/query-service:${DOCKER_TAG:-0.70.0}
image: signoz/query-service:${DOCKER_TAG:-0.75.0}
container_name: signoz-query-service
command:
- --config=/root/config/prometheus.yml
@@ -157,7 +158,7 @@ services:
retries: 3
frontend:
!!merge <<: *common
image: signoz/frontend:${DOCKER_TAG:-0.70.0}
image: signoz/frontend:${DOCKER_TAG:-0.75.0}
container_name: signoz-frontend
depends_on:
- alertmanager
@@ -168,7 +169,7 @@ services:
- ../common/signoz/nginx-config.conf:/etc/nginx/conf.d/default.conf
otel-collector:
!!merge <<: *db-depend
image: signoz/signoz-otel-collector:${OTELCOL_TAG:-0.111.24}
image: signoz/signoz-otel-collector:${OTELCOL_TAG:-0.111.29}
container_name: signoz-otel-collector
command:
- --config=/etc/otel-collector-config.yaml
@@ -190,7 +191,7 @@ services:
condition: service_healthy
schema-migrator-sync:
!!merge <<: *common
image: signoz/signoz-schema-migrator:${OTELCOL_TAG:-0.111.24}
image: signoz/signoz-schema-migrator:${OTELCOL_TAG:-0.111.29}
container_name: schema-migrator-sync
command:
- sync
@@ -199,18 +200,19 @@ services:
depends_on:
clickhouse:
condition: service_healthy
restart: on-failure
schema-migrator-async:
!!merge <<: *db-depend
image: signoz/signoz-schema-migrator:${OTELCOL_TAG:-0.111.24}
image: signoz/signoz-schema-migrator:${OTELCOL_TAG:-0.111.29}
container_name: schema-migrator-async
command:
- async
- --dsn=tcp://clickhouse:9000
- --up=
restart: on-failure
networks:
signoz-net:
name: signoz-net
volumes:
alertmanager:
name: signoz-alertmanager

View File

@@ -2,7 +2,7 @@ version: "3"
x-common: &common
networks:
- signoz-net
restart: on-failure
restart: unless-stopped
logging:
options:
max-size: 50m
@@ -75,6 +75,7 @@ services:
wget -O histogram-quantile.tar.gz "https://github.com/SigNoz/signoz/releases/download/histogram-quantile%2F$${version}/histogram-quantile_$${node_os}_$${node_arch}.tar.gz"
tar -xvzf histogram-quantile.tar.gz
mv histogram-quantile /var/lib/clickhouse/user_scripts/histogramQuantile
restart: on-failure
volumes:
- ../common/clickhouse/user_scripts:/var/lib/clickhouse/user_scripts/
zookeeper-1:
@@ -121,7 +122,7 @@ services:
condition: service_healthy
query-service:
!!merge <<: *db-depend
image: signoz/query-service:${DOCKER_TAG:-0.70.0}
image: signoz/query-service:${DOCKER_TAG:-0.75.0}
container_name: signoz-query-service
command:
- --config=/root/config/prometheus.yml
@@ -155,7 +156,7 @@ services:
retries: 3
frontend:
!!merge <<: *common
image: signoz/frontend:${DOCKER_TAG:-0.70.0}
image: signoz/frontend:${DOCKER_TAG:-0.75.0}
container_name: signoz-frontend
depends_on:
- alertmanager
@@ -166,7 +167,7 @@ services:
- ../common/signoz/nginx-config.conf:/etc/nginx/conf.d/default.conf
otel-collector:
!!merge <<: *db-depend
image: signoz/signoz-otel-collector:${OTELCOL_TAG:-0.111.24}
image: signoz/signoz-otel-collector:${OTELCOL_TAG:-0.111.29}
container_name: signoz-otel-collector
command:
- --config=/etc/otel-collector-config.yaml
@@ -188,7 +189,7 @@ services:
condition: service_healthy
schema-migrator-sync:
!!merge <<: *common
image: signoz/signoz-schema-migrator:${OTELCOL_TAG:-0.111.24}
image: signoz/signoz-schema-migrator:${OTELCOL_TAG:-0.111.29}
container_name: schema-migrator-sync
command:
- sync
@@ -197,18 +198,19 @@ services:
depends_on:
clickhouse:
condition: service_healthy
restart: on-failure
schema-migrator-async:
!!merge <<: *db-depend
image: signoz/signoz-schema-migrator:${OTELCOL_TAG:-0.111.24}
image: signoz/signoz-schema-migrator:${OTELCOL_TAG:-0.111.29}
container_name: schema-migrator-async
command:
- async
- --dsn=tcp://clickhouse:9000
- --up=
restart: on-failure
networks:
signoz-net:
name: signoz-net
volumes:
alertmanager:
name: signoz-alertmanager

View File

@@ -8,7 +8,7 @@ x-common: &common
options:
max-size: 50m
max-file: "3"
restart: on-failure
restart: unless-stopped
services:
hotrod:
<<: *common

View File

@@ -8,7 +8,7 @@ x-common: &common
options:
max-size: 50m
max-file: "3"
restart: on-failure
restart: unless-stopped
services:
otel-agent:
<<: *common

View File

@@ -66,7 +66,7 @@ exporters:
enabled: true
clickhousemetricswrite/prometheus:
endpoint: tcp://clickhouse:9000/signoz_metrics
clickhousemetricswritev2:
signozclickhousemetrics:
dsn: tcp://clickhouse:9000/signoz_metrics
clickhouselogsexporter:
dsn: tcp://clickhouse:9000/signoz_logs
@@ -90,11 +90,11 @@ service:
metrics:
receivers: [otlp]
processors: [batch]
exporters: [clickhousemetricswrite, clickhousemetricswritev2]
exporters: [clickhousemetricswrite, signozclickhousemetrics]
metrics/prometheus:
receivers: [prometheus]
processors: [batch]
exporters: [clickhousemetricswrite/prometheus, clickhousemetricswritev2]
exporters: [clickhousemetricswrite/prometheus, signozclickhousemetrics]
logs:
receivers: [otlp]
processors: [batch]

36
ee/http/middleware/pat.go Normal file
View File

@@ -0,0 +1,36 @@
package middleware
import (
"net/http"
"go.signoz.io/signoz/pkg/types/authtypes"
)
type Pat struct {
uuid *authtypes.UUID
headers []string
}
func NewPat(headers []string) *Pat {
return &Pat{uuid: authtypes.NewUUID(), headers: headers}
}
func (p *Pat) Wrap(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
var values []string
for _, header := range p.headers {
values = append(values, r.Header.Get(header))
}
ctx, err := p.uuid.ContextFromRequest(r.Context(), values...)
if err != nil {
next.ServeHTTP(w, r)
return
}
r = r.WithContext(ctx)
next.ServeHTTP(w, r)
})
}

View File

@@ -11,6 +11,7 @@ import (
"go.signoz.io/signoz/ee/query-service/interfaces"
"go.signoz.io/signoz/ee/query-service/license"
"go.signoz.io/signoz/ee/query-service/usage"
"go.signoz.io/signoz/pkg/alertmanager"
baseapp "go.signoz.io/signoz/pkg/query-service/app"
"go.signoz.io/signoz/pkg/query-service/app/cloudintegrations"
"go.signoz.io/signoz/pkg/query-service/app/integrations"
@@ -20,6 +21,8 @@ import (
basemodel "go.signoz.io/signoz/pkg/query-service/model"
rules "go.signoz.io/signoz/pkg/query-service/rules"
"go.signoz.io/signoz/pkg/query-service/version"
"go.signoz.io/signoz/pkg/signoz"
"go.signoz.io/signoz/pkg/types/authtypes"
)
type APIHandlerOptions struct {
@@ -36,10 +39,12 @@ type APIHandlerOptions struct {
LogsParsingPipelineController *logparsingpipeline.LogParsingPipelineController
Cache cache.Cache
Gateway *httputil.ReverseProxy
GatewayUrl string
// Querier Influx Interval
FluxInterval time.Duration
UseLogsNewSchema bool
UseTraceNewSchema bool
JWT *authtypes.JWT
}
type APIHandler struct {
@@ -48,7 +53,7 @@ type APIHandler struct {
}
// NewAPIHandler returns an APIHandler
func NewAPIHandler(opts APIHandlerOptions) (*APIHandler, error) {
func NewAPIHandler(opts APIHandlerOptions, signoz *signoz.SigNoz) (*APIHandler, error) {
baseHandler, err := baseapp.NewAPIHandler(baseapp.APIHandlerOpts{
Reader: opts.DataConnector,
@@ -64,6 +69,7 @@ func NewAPIHandler(opts APIHandlerOptions) (*APIHandler, error) {
FluxInterval: opts.FluxInterval,
UseLogsNewSchema: opts.UseLogsNewSchema,
UseTraceNewSchema: opts.UseTraceNewSchema,
AlertmanagerAPI: alertmanager.NewAPI(signoz.Alertmanager),
})
if err != nil {
@@ -181,6 +187,17 @@ func (ah *APIHandler) RegisterRoutes(router *mux.Router, am *baseapp.AuthMiddlew
}
func (ah *APIHandler) RegisterCloudIntegrationsRoutes(router *mux.Router, am *baseapp.AuthMiddleware) {
ah.APIHandler.RegisterCloudIntegrationsRoutes(router, am)
router.HandleFunc(
"/api/v1/cloud-integrations/{cloudProvider}/accounts/generate-connection-params",
am.EditAccess(ah.CloudIntegrationsGenerateConnectionParams),
).Methods(http.MethodGet)
}
func (ah *APIHandler) getVersion(w http.ResponseWriter, r *http.Request) {
version := version.GetVersion()
versionResponse := basemodel.GetVersionResponse{

View File

@@ -50,7 +50,7 @@ func (ah *APIHandler) loginUser(w http.ResponseWriter, r *http.Request) {
}
// if all looks good, call auth
resp, err := baseauth.Login(ctx, &req)
resp, err := baseauth.Login(ctx, &req, ah.opts.JWT)
if ah.HandleError(w, err, http.StatusUnauthorized) {
return
}
@@ -253,7 +253,7 @@ func (ah *APIHandler) receiveGoogleAuth(w http.ResponseWriter, r *http.Request)
return
}
nextPage, err := ah.AppDao().PrepareSsoRedirect(ctx, redirectUri, identity.Email)
nextPage, err := ah.AppDao().PrepareSsoRedirect(ctx, redirectUri, identity.Email, ah.opts.JWT)
if err != nil {
zap.L().Error("[receiveGoogleAuth] failed to generate redirect URI after successful login ", zap.String("domain", domain.String()), zap.Error(err))
handleSsoError(w, r, redirectUri)
@@ -331,7 +331,7 @@ func (ah *APIHandler) receiveSAML(w http.ResponseWriter, r *http.Request) {
return
}
nextPage, err := ah.AppDao().PrepareSsoRedirect(ctx, redirectUri, email)
nextPage, err := ah.AppDao().PrepareSsoRedirect(ctx, redirectUri, email, ah.opts.JWT)
if err != nil {
zap.L().Error("[receiveSAML] failed to generate redirect URI after successful login ", zap.String("domain", domain.String()), zap.Error(err))
handleSsoError(w, r, redirectUri)

View File

@@ -0,0 +1,425 @@
package api
import (
"bytes"
"context"
"encoding/json"
"fmt"
"io"
"net/http"
"strings"
"time"
"github.com/google/uuid"
"github.com/gorilla/mux"
"go.signoz.io/signoz/ee/query-service/constants"
"go.signoz.io/signoz/ee/query-service/model"
"go.signoz.io/signoz/pkg/query-service/auth"
baseconstants "go.signoz.io/signoz/pkg/query-service/constants"
"go.signoz.io/signoz/pkg/query-service/dao"
basemodel "go.signoz.io/signoz/pkg/query-service/model"
"go.uber.org/zap"
)
type CloudIntegrationConnectionParamsResponse struct {
IngestionUrl string `json:"ingestion_url,omitempty"`
IngestionKey string `json:"ingestion_key,omitempty"`
SigNozAPIUrl string `json:"signoz_api_url,omitempty"`
SigNozAPIKey string `json:"signoz_api_key,omitempty"`
}
func (ah *APIHandler) CloudIntegrationsGenerateConnectionParams(w http.ResponseWriter, r *http.Request) {
cloudProvider := mux.Vars(r)["cloudProvider"]
if cloudProvider != "aws" {
RespondError(w, basemodel.BadRequest(fmt.Errorf(
"cloud provider not supported: %s", cloudProvider,
)), nil)
return
}
currentUser, err := auth.GetUserFromReqContext(r.Context())
if err != nil {
RespondError(w, basemodel.UnauthorizedError(fmt.Errorf(
"couldn't deduce current user: %w", err,
)), nil)
return
}
apiKey, apiErr := ah.getOrCreateCloudIntegrationPAT(r.Context(), currentUser.OrgId, cloudProvider)
if apiErr != nil {
RespondError(w, basemodel.WrapApiError(
apiErr, "couldn't provision PAT for cloud integration:",
), nil)
return
}
result := CloudIntegrationConnectionParamsResponse{
SigNozAPIKey: apiKey,
}
license, apiErr := ah.LM().GetRepo().GetActiveLicense(r.Context())
if apiErr != nil {
RespondError(w, basemodel.WrapApiError(
apiErr, "couldn't look for active license",
), nil)
return
}
if license == nil {
// Return the API Key (PAT) even if the rest of the params can not be deduced.
// Params not returned from here will be requested from the user via form inputs.
// This enables gracefully degraded but working experience even for non-cloud deployments.
zap.L().Info("ingestion params and signoz api url can not be deduced since no license was found")
ah.Respond(w, result)
return
}
ingestionUrl, signozApiUrl, apiErr := getIngestionUrlAndSigNozAPIUrl(r.Context(), license.Key)
if apiErr != nil {
RespondError(w, basemodel.WrapApiError(
apiErr, "couldn't deduce ingestion url and signoz api url",
), nil)
return
}
result.IngestionUrl = ingestionUrl
result.SigNozAPIUrl = signozApiUrl
gatewayUrl := ah.opts.GatewayUrl
if len(gatewayUrl) > 0 {
ingestionKey, apiErr := getOrCreateCloudProviderIngestionKey(
r.Context(), gatewayUrl, license.Key, cloudProvider,
)
if apiErr != nil {
RespondError(w, basemodel.WrapApiError(
apiErr, "couldn't get or create ingestion key",
), nil)
return
}
result.IngestionKey = ingestionKey
} else {
zap.L().Info("ingestion key can't be deduced since no gateway url has been configured")
}
ah.Respond(w, result)
}
func (ah *APIHandler) getOrCreateCloudIntegrationPAT(ctx context.Context, orgId string, cloudProvider string) (
string, *basemodel.ApiError,
) {
integrationPATName := fmt.Sprintf("%s integration", cloudProvider)
integrationUser, apiErr := ah.getOrCreateCloudIntegrationUser(ctx, orgId, cloudProvider)
if apiErr != nil {
return "", apiErr
}
allPats, err := ah.AppDao().ListPATs(ctx)
if err != nil {
return "", basemodel.InternalError(fmt.Errorf(
"couldn't list PATs: %w", err.Error(),
))
}
for _, p := range allPats {
if p.UserID == integrationUser.Id && p.Name == integrationPATName {
return p.Token, nil
}
}
zap.L().Info(
"no PAT found for cloud integration, creating a new one",
zap.String("cloudProvider", cloudProvider),
)
newPAT := model.PAT{
Token: generatePATToken(),
UserID: integrationUser.Id,
Name: integrationPATName,
Role: baseconstants.ViewerGroup,
ExpiresAt: 0,
CreatedAt: time.Now().Unix(),
UpdatedAt: time.Now().Unix(),
}
integrationPAT, err := ah.AppDao().CreatePAT(ctx, newPAT)
if err != nil {
return "", basemodel.InternalError(fmt.Errorf(
"couldn't create cloud integration PAT: %w", err.Error(),
))
}
return integrationPAT.Token, nil
}
func (ah *APIHandler) getOrCreateCloudIntegrationUser(
ctx context.Context, orgId string, cloudProvider string,
) (*basemodel.User, *basemodel.ApiError) {
cloudIntegrationUserId := fmt.Sprintf("%s-integration", cloudProvider)
integrationUserResult, apiErr := ah.AppDao().GetUser(ctx, cloudIntegrationUserId)
if apiErr != nil {
return nil, basemodel.WrapApiError(apiErr, "couldn't look for integration user")
}
if integrationUserResult != nil {
return &integrationUserResult.User, nil
}
zap.L().Info(
"cloud integration user not found. Attempting to create the user",
zap.String("cloudProvider", cloudProvider),
)
newUser := &basemodel.User{
Id: cloudIntegrationUserId,
Name: fmt.Sprintf("%s integration", cloudProvider),
Email: fmt.Sprintf("%s@signoz.io", cloudIntegrationUserId),
CreatedAt: time.Now().Unix(),
OrgId: orgId,
}
viewerGroup, apiErr := dao.DB().GetGroupByName(ctx, baseconstants.ViewerGroup)
if apiErr != nil {
return nil, basemodel.WrapApiError(apiErr, "couldn't get viewer group for creating integration user")
}
newUser.GroupId = viewerGroup.ID
passwordHash, err := auth.PasswordHash(uuid.NewString())
if err != nil {
return nil, basemodel.InternalError(fmt.Errorf(
"couldn't hash random password for cloud integration user: %w", err,
))
}
newUser.Password = passwordHash
integrationUser, apiErr := ah.AppDao().CreateUser(ctx, newUser, false)
if apiErr != nil {
return nil, basemodel.WrapApiError(apiErr, "couldn't create cloud integration user")
}
return integrationUser, nil
}
func getIngestionUrlAndSigNozAPIUrl(ctx context.Context, licenseKey string) (
string, string, *basemodel.ApiError,
) {
url := fmt.Sprintf(
"%s%s",
strings.TrimSuffix(constants.ZeusURL, "/"),
"/v2/deployments/me",
)
type deploymentResponse struct {
Status string `json:"status"`
Error string `json:"error"`
Data struct {
Name string `json:"name"`
ClusterInfo struct {
Region struct {
DNS string `json:"dns"`
} `json:"region"`
} `json:"cluster"`
} `json:"data"`
}
resp, apiErr := requestAndParseResponse[deploymentResponse](
ctx, url, map[string]string{"X-Signoz-Cloud-Api-Key": licenseKey}, nil,
)
if apiErr != nil {
return "", "", basemodel.WrapApiError(
apiErr, "couldn't query for deployment info",
)
}
if resp.Status != "success" {
return "", "", basemodel.InternalError(fmt.Errorf(
"couldn't query for deployment info: status: %s, error: %s",
resp.Status, resp.Error,
))
}
regionDns := resp.Data.ClusterInfo.Region.DNS
deploymentName := resp.Data.Name
if len(regionDns) < 1 || len(deploymentName) < 1 {
// Fail early if actual response structure and expectation here ever diverge
return "", "", basemodel.InternalError(fmt.Errorf(
"deployment info response not in expected shape. couldn't determine region dns and deployment name",
))
}
ingestionUrl := fmt.Sprintf("https://ingest.%s", regionDns)
signozApiUrl := fmt.Sprintf("https://%s.%s", deploymentName, regionDns)
return ingestionUrl, signozApiUrl, nil
}
type ingestionKey struct {
Name string `json:"name"`
Value string `json:"value"`
// other attributes from gateway response not included here since they are not being used.
}
type ingestionKeysSearchResponse struct {
Status string `json:"status"`
Data []ingestionKey `json:"data"`
Error string `json:"error"`
}
type createIngestionKeyResponse struct {
Status string `json:"status"`
Data ingestionKey `json:"data"`
Error string `json:"error"`
}
func getOrCreateCloudProviderIngestionKey(
ctx context.Context, gatewayUrl string, licenseKey string, cloudProvider string,
) (string, *basemodel.ApiError) {
cloudProviderKeyName := fmt.Sprintf("%s-integration", cloudProvider)
// see if the key already exists
searchResult, apiErr := requestGateway[ingestionKeysSearchResponse](
ctx,
gatewayUrl,
licenseKey,
fmt.Sprintf("/v1/workspaces/me/keys/search?name=%s", cloudProviderKeyName),
nil,
)
if apiErr != nil {
return "", basemodel.WrapApiError(
apiErr, "couldn't search for cloudprovider ingestion key",
)
}
if searchResult.Status != "success" {
return "", basemodel.InternalError(fmt.Errorf(
"couldn't search for cloudprovider ingestion key: status: %s, error: %s",
searchResult.Status, searchResult.Error,
))
}
for _, k := range searchResult.Data {
if k.Name == cloudProviderKeyName {
if len(k.Value) < 1 {
// Fail early if actual response structure and expectation here ever diverge
return "", basemodel.InternalError(fmt.Errorf(
"ingestion keys search response not as expected",
))
}
return k.Value, nil
}
}
zap.L().Info(
"no existing ingestion key found for cloud integration, creating a new one",
zap.String("cloudProvider", cloudProvider),
)
createKeyResult, apiErr := requestGateway[createIngestionKeyResponse](
ctx, gatewayUrl, licenseKey, "/v1/workspaces/me/keys",
map[string]any{
"name": cloudProviderKeyName,
"tags": []string{"integration", cloudProvider},
},
)
if apiErr != nil {
return "", basemodel.WrapApiError(
apiErr, "couldn't create cloudprovider ingestion key",
)
}
if createKeyResult.Status != "success" {
return "", basemodel.InternalError(fmt.Errorf(
"couldn't create cloudprovider ingestion key: status: %s, error: %s",
createKeyResult.Status, createKeyResult.Error,
))
}
ingestionKey := createKeyResult.Data.Value
if len(ingestionKey) < 1 {
// Fail early if actual response structure and expectation here ever diverge
return "", basemodel.InternalError(fmt.Errorf(
"ingestion key creation response not as expected",
))
}
return ingestionKey, nil
}
func requestGateway[ResponseType any](
ctx context.Context, gatewayUrl string, licenseKey string, path string, payload any,
) (*ResponseType, *basemodel.ApiError) {
baseUrl := strings.TrimSuffix(gatewayUrl, "/")
reqUrl := fmt.Sprintf("%s%s", baseUrl, path)
headers := map[string]string{
"X-Signoz-Cloud-Api-Key": licenseKey,
"X-Consumer-Username": "lid:00000000-0000-0000-0000-000000000000",
"X-Consumer-Groups": "ns:default",
}
return requestAndParseResponse[ResponseType](ctx, reqUrl, headers, payload)
}
func requestAndParseResponse[ResponseType any](
ctx context.Context, url string, headers map[string]string, payload any,
) (*ResponseType, *basemodel.ApiError) {
reqMethod := http.MethodGet
var reqBody io.Reader
if payload != nil {
reqMethod = http.MethodPost
bodyJson, err := json.Marshal(payload)
if err != nil {
return nil, basemodel.InternalError(fmt.Errorf(
"couldn't serialize request payload to JSON: %w", err,
))
}
reqBody = bytes.NewBuffer([]byte(bodyJson))
}
req, err := http.NewRequestWithContext(ctx, reqMethod, url, reqBody)
if err != nil {
return nil, basemodel.InternalError(fmt.Errorf(
"couldn't prepare request: %w", err,
))
}
for k, v := range headers {
req.Header.Set(k, v)
}
client := &http.Client{
Timeout: 10 * time.Second,
}
response, err := client.Do(req)
if err != nil {
return nil, basemodel.InternalError(fmt.Errorf("couldn't make request: %w", err))
}
defer response.Body.Close()
respBody, err := io.ReadAll(response.Body)
if err != nil {
return nil, basemodel.InternalError(fmt.Errorf("couldn't read response: %w", err))
}
var resp ResponseType
err = json.Unmarshal(respBody, &resp)
if err != nil {
return nil, basemodel.InternalError(fmt.Errorf(
"couldn't unmarshal gateway response into %T", resp,
))
}
return &resp, nil
}

View File

@@ -34,7 +34,7 @@ func (ah *APIHandler) createPAT(w http.ResponseWriter, r *http.Request) {
RespondError(w, model.BadRequest(err), nil)
return
}
user, err := auth.GetUserFromRequest(r)
user, err := auth.GetUserFromReqContext(r.Context())
if err != nil {
RespondError(w, &model.ApiError{
Typ: model.ErrorUnauthorized,
@@ -97,7 +97,7 @@ func (ah *APIHandler) updatePAT(w http.ResponseWriter, r *http.Request) {
return
}
user, err := auth.GetUserFromRequest(r)
user, err := auth.GetUserFromReqContext(r.Context())
if err != nil {
RespondError(w, &model.ApiError{
Typ: model.ErrorUnauthorized,
@@ -127,7 +127,7 @@ func (ah *APIHandler) updatePAT(w http.ResponseWriter, r *http.Request) {
func (ah *APIHandler) getPATs(w http.ResponseWriter, r *http.Request) {
ctx := context.Background()
user, err := auth.GetUserFromRequest(r)
user, err := auth.GetUserFromReqContext(r.Context())
if err != nil {
RespondError(w, &model.ApiError{
Typ: model.ErrorUnauthorized,
@@ -147,7 +147,7 @@ func (ah *APIHandler) getPATs(w http.ResponseWriter, r *http.Request) {
func (ah *APIHandler) revokePAT(w http.ResponseWriter, r *http.Request) {
ctx := context.Background()
id := mux.Vars(r)["id"]
user, err := auth.GetUserFromRequest(r)
user, err := auth.GetUserFromReqContext(r.Context())
if err != nil {
RespondError(w, &model.ApiError{
Typ: model.ErrorUnauthorized,

View File

@@ -1,26 +1,20 @@
package app
import (
"bufio"
"bytes"
"context"
"encoding/json"
"errors"
"fmt"
"io"
"net"
"net/http"
_ "net/http/pprof" // http profiler
"os"
"regexp"
"time"
"github.com/gorilla/handlers"
"github.com/gorilla/mux"
"github.com/jmoiron/sqlx"
"github.com/rs/cors"
"github.com/soheilhy/cmux"
eemiddleware "go.signoz.io/signoz/ee/http/middleware"
"go.signoz.io/signoz/ee/query-service/app/api"
"go.signoz.io/signoz/ee/query-service/app/db"
"go.signoz.io/signoz/ee/query-service/auth"
@@ -29,10 +23,11 @@ import (
"go.signoz.io/signoz/ee/query-service/integrations/gateway"
"go.signoz.io/signoz/ee/query-service/interfaces"
"go.signoz.io/signoz/ee/query-service/rules"
"go.signoz.io/signoz/pkg/alertmanager"
"go.signoz.io/signoz/pkg/http/middleware"
baseauth "go.signoz.io/signoz/pkg/query-service/auth"
v3 "go.signoz.io/signoz/pkg/query-service/model/v3"
"go.signoz.io/signoz/pkg/signoz"
"go.signoz.io/signoz/pkg/sqlstore"
"go.signoz.io/signoz/pkg/types/authtypes"
"go.signoz.io/signoz/pkg/web"
licensepkg "go.signoz.io/signoz/ee/query-service/license"
@@ -51,7 +46,6 @@ import (
"go.signoz.io/signoz/pkg/query-service/cache"
baseconst "go.signoz.io/signoz/pkg/query-service/constants"
"go.signoz.io/signoz/pkg/query-service/healthcheck"
basealm "go.signoz.io/signoz/pkg/query-service/integrations/alertManager"
baseint "go.signoz.io/signoz/pkg/query-service/interfaces"
basemodel "go.signoz.io/signoz/pkg/query-service/model"
pqle "go.signoz.io/signoz/pkg/query-service/pqlEngine"
@@ -81,6 +75,7 @@ type ServerOptions struct {
GatewayUrl string
UseLogsNewSchema bool
UseTraceNewSchema bool
Jwt *authtypes.JWT
}
// Server runs HTTP api service
@@ -111,7 +106,7 @@ func (s Server) HealthCheckStatus() chan healthcheck.Status {
// NewServer creates and initializes Server
func NewServer(serverOptions *ServerOptions) (*Server, error) {
modelDao, err := dao.InitDao(serverOptions.SigNoz.SQLStore.SQLxDB())
modelDao, err := dao.InitDao(serverOptions.SigNoz.SQLStore)
if err != nil {
return nil, err
}
@@ -134,7 +129,7 @@ func NewServer(serverOptions *ServerOptions) (*Server, error) {
}
// initiate license manager
lm, err := licensepkg.StartManager(serverOptions.SigNoz.SQLStore.SQLxDB())
lm, err := licensepkg.StartManager(serverOptions.SigNoz.SQLStore.SQLxDB(), serverOptions.SigNoz.SQLStore.BunDB())
if err != nil {
return nil, err
}
@@ -149,25 +144,20 @@ func NewServer(serverOptions *ServerOptions) (*Server, error) {
}
var reader interfaces.DataConnector
storage := os.Getenv("STORAGE")
if storage == "clickhouse" {
zap.L().Info("Using ClickHouse as datastore ...")
qb := db.NewDataConnector(
serverOptions.SigNoz.SQLStore.SQLxDB(),
serverOptions.SigNoz.TelemetryStore.ClickHouseDB(),
serverOptions.PromConfigPath,
lm,
serverOptions.Cluster,
serverOptions.UseLogsNewSchema,
serverOptions.UseTraceNewSchema,
fluxIntervalForTraceDetail,
serverOptions.SigNoz.Cache,
)
go qb.Start(readerReady)
reader = qb
} else {
return nil, fmt.Errorf("storage type: %s is not supported in query service", storage)
}
qb := db.NewDataConnector(
serverOptions.SigNoz.SQLStore.SQLxDB(),
serverOptions.SigNoz.TelemetryStore.ClickHouseDB(),
serverOptions.PromConfigPath,
lm,
serverOptions.Cluster,
serverOptions.UseLogsNewSchema,
serverOptions.UseTraceNewSchema,
fluxIntervalForTraceDetail,
serverOptions.SigNoz.Cache,
)
go qb.Start(readerReady)
reader = qb
skipConfig := &basemodel.SkipConfig{}
if serverOptions.SkipTopLvlOpsPath != "" {
// read skip config
@@ -186,8 +176,8 @@ func NewServer(serverOptions *ServerOptions) (*Server, error) {
}
<-readerReady
rm, err := makeRulesManager(serverOptions.PromConfigPath,
baseconst.GetAlertManagerApiPrefix(),
rm, err := makeRulesManager(
serverOptions.PromConfigPath,
serverOptions.RuleRepoURL,
serverOptions.SigNoz.SQLStore.SQLxDB(),
reader,
@@ -196,6 +186,8 @@ func NewServer(serverOptions *ServerOptions) (*Server, error) {
lm,
serverOptions.UseLogsNewSchema,
serverOptions.UseTraceNewSchema,
serverOptions.SigNoz.Alertmanager,
serverOptions.SigNoz.SQLStore,
)
if err != nil {
@@ -208,14 +200,14 @@ func NewServer(serverOptions *ServerOptions) (*Server, error) {
return nil, err
}
integrationsController, err := integrations.NewController(serverOptions.SigNoz.SQLStore.SQLxDB())
integrationsController, err := integrations.NewController(serverOptions.SigNoz.SQLStore)
if err != nil {
return nil, fmt.Errorf(
"couldn't create integrations controller: %w", err,
)
}
cloudIntegrationsController, err := cloudintegrations.NewController(serverOptions.SigNoz.SQLStore.SQLxDB())
cloudIntegrationsController, err := cloudintegrations.NewController(serverOptions.SigNoz.SQLStore)
if err != nil {
return nil, fmt.Errorf(
"couldn't create cloud provider integrations controller: %w", err,
@@ -272,11 +264,13 @@ func NewServer(serverOptions *ServerOptions) (*Server, error) {
Cache: c,
FluxInterval: fluxInterval,
Gateway: gatewayProxy,
GatewayUrl: serverOptions.GatewayUrl,
UseLogsNewSchema: serverOptions.UseLogsNewSchema,
UseTraceNewSchema: serverOptions.UseTraceNewSchema,
JWT: serverOptions.Jwt,
}
apiHandler, err := api.NewAPIHandler(apiOpts)
apiHandler, err := api.NewAPIHandler(apiOpts, serverOptions.SigNoz)
if err != nil {
return nil, err
}
@@ -316,6 +310,8 @@ func (s *Server) createPrivateServer(apiHandler *api.APIHandler) (*http.Server,
r := baseapp.NewRouter()
r.Use(middleware.NewAuth(zap.L(), s.serverOptions.Jwt, []string{"Authorization", "Sec-WebSocket-Protocol"}).Wrap)
r.Use(eemiddleware.NewPat([]string{"SIGNOZ-API-KEY"}).Wrap)
r.Use(middleware.NewTimeout(zap.L(),
s.serverOptions.Config.APIServer.Timeout.ExcludedRoutes,
s.serverOptions.Config.APIServer.Timeout.Default,
@@ -347,8 +343,8 @@ func (s *Server) createPublicServer(apiHandler *api.APIHandler, web web.Web) (*h
r := baseapp.NewRouter()
// add auth middleware
getUserFromRequest := func(r *http.Request) (*basemodel.UserPayload, error) {
user, err := auth.GetUserFromRequest(r, apiHandler)
getUserFromRequest := func(ctx context.Context) (*basemodel.UserPayload, error) {
user, err := auth.GetUserFromRequestContext(ctx, apiHandler)
if err != nil {
return nil, err
@@ -362,6 +358,8 @@ func (s *Server) createPublicServer(apiHandler *api.APIHandler, web web.Web) (*h
}
am := baseapp.NewAuthMiddleware(getUserFromRequest)
r.Use(middleware.NewAuth(zap.L(), s.serverOptions.Jwt, []string{"Authorization", "Sec-WebSocket-Protocol"}).Wrap)
r.Use(eemiddleware.NewPat([]string{"SIGNOZ-API-KEY"}).Wrap)
r.Use(middleware.NewTimeout(zap.L(),
s.serverOptions.Config.APIServer.Timeout.ExcludedRoutes,
s.serverOptions.Config.APIServer.Timeout.Default,
@@ -379,6 +377,8 @@ func (s *Server) createPublicServer(apiHandler *api.APIHandler, web web.Web) (*h
apiHandler.RegisterQueryRangeV4Routes(r, am)
apiHandler.RegisterWebSocketPaths(r, am)
apiHandler.RegisterMessagingQueuesRoutes(r, am)
apiHandler.RegisterThirdPartyApiRoutes(r, am)
apiHandler.MetricExplorerRoutes(r, am)
c := cors.New(cors.Options{
AllowedOrigins: []string{"*"},
@@ -400,174 +400,6 @@ func (s *Server) createPublicServer(apiHandler *api.APIHandler, web web.Web) (*h
}, nil
}
// TODO(remove): Implemented at pkg/http/middleware/logging.go
type loggingResponseWriter struct {
http.ResponseWriter
statusCode int
}
// TODO(remove): Implemented at pkg/http/middleware/logging.go
func NewLoggingResponseWriter(w http.ResponseWriter) *loggingResponseWriter {
// WriteHeader(int) is not called if our response implicitly returns 200 OK, so
// we default to that status code.
return &loggingResponseWriter{w, http.StatusOK}
}
// TODO(remove): Implemented at pkg/http/middleware/logging.go
func (lrw *loggingResponseWriter) WriteHeader(code int) {
lrw.statusCode = code
lrw.ResponseWriter.WriteHeader(code)
}
// TODO(remove): Implemented at pkg/http/middleware/logging.go
// Flush implements the http.Flush interface.
func (lrw *loggingResponseWriter) Flush() {
lrw.ResponseWriter.(http.Flusher).Flush()
}
// TODO(remove): Implemented at pkg/http/middleware/logging.go
// Support websockets
func (lrw *loggingResponseWriter) Hijack() (net.Conn, *bufio.ReadWriter, error) {
h, ok := lrw.ResponseWriter.(http.Hijacker)
if !ok {
return nil, nil, errors.New("hijack not supported")
}
return h.Hijack()
}
func extractQueryRangeData(path string, r *http.Request) (map[string]interface{}, bool) {
pathToExtractBodyFromV3 := "/api/v3/query_range"
pathToExtractBodyFromV4 := "/api/v4/query_range"
data := map[string]interface{}{}
var postData *v3.QueryRangeParamsV3
if (r.Method == "POST") && ((path == pathToExtractBodyFromV3) || (path == pathToExtractBodyFromV4)) {
if r.Body != nil {
bodyBytes, err := io.ReadAll(r.Body)
if err != nil {
return nil, false
}
r.Body.Close() // must close
r.Body = io.NopCloser(bytes.NewBuffer(bodyBytes))
json.Unmarshal(bodyBytes, &postData)
} else {
return nil, false
}
} else {
return nil, false
}
referrer := r.Header.Get("Referer")
dashboardMatched, err := regexp.MatchString(`/dashboard/[a-zA-Z0-9\-]+/(new|edit)(?:\?.*)?$`, referrer)
if err != nil {
zap.L().Error("error while matching the referrer", zap.Error(err))
}
alertMatched, err := regexp.MatchString(`/alerts/(new|edit)(?:\?.*)?$`, referrer)
if err != nil {
zap.L().Error("error while matching the alert: ", zap.Error(err))
}
logsExplorerMatched, err := regexp.MatchString(`/logs/logs-explorer(?:\?.*)?$`, referrer)
if err != nil {
zap.L().Error("error while matching the logs explorer: ", zap.Error(err))
}
traceExplorerMatched, err := regexp.MatchString(`/traces-explorer(?:\?.*)?$`, referrer)
if err != nil {
zap.L().Error("error while matching the trace explorer: ", zap.Error(err))
}
queryInfoResult := telemetry.GetInstance().CheckQueryInfo(postData)
if (queryInfoResult.MetricsUsed || queryInfoResult.LogsUsed || queryInfoResult.TracesUsed) && (queryInfoResult.FilterApplied) {
if queryInfoResult.MetricsUsed {
telemetry.GetInstance().AddActiveMetricsUser()
}
if queryInfoResult.LogsUsed {
telemetry.GetInstance().AddActiveLogsUser()
}
if queryInfoResult.TracesUsed {
telemetry.GetInstance().AddActiveTracesUser()
}
data["metricsUsed"] = queryInfoResult.MetricsUsed
data["logsUsed"] = queryInfoResult.LogsUsed
data["tracesUsed"] = queryInfoResult.TracesUsed
data["filterApplied"] = queryInfoResult.FilterApplied
data["groupByApplied"] = queryInfoResult.GroupByApplied
data["aggregateOperator"] = queryInfoResult.AggregateOperator
data["aggregateAttributeKey"] = queryInfoResult.AggregateAttributeKey
data["numberOfQueries"] = queryInfoResult.NumberOfQueries
data["queryType"] = queryInfoResult.QueryType
data["panelType"] = queryInfoResult.PanelType
userEmail, err := baseauth.GetEmailFromJwt(r.Context())
if err == nil {
// switch case to set data["screen"] based on the referrer
switch {
case dashboardMatched:
data["screen"] = "panel"
case alertMatched:
data["screen"] = "alert"
case logsExplorerMatched:
data["screen"] = "logs-explorer"
case traceExplorerMatched:
data["screen"] = "traces-explorer"
default:
data["screen"] = "unknown"
return data, true
}
telemetry.GetInstance().SendEvent(telemetry.TELEMETRY_EVENT_QUERY_RANGE_API, data, userEmail, true, false)
}
}
return data, true
}
func getActiveLogs(path string, r *http.Request) {
// if path == "/api/v1/dashboards/{uuid}" {
// telemetry.GetInstance().AddActiveMetricsUser()
// }
if path == "/api/v1/logs" {
hasFilters := len(r.URL.Query().Get("q"))
if hasFilters > 0 {
telemetry.GetInstance().AddActiveLogsUser()
}
}
}
func (s *Server) analyticsMiddleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
ctx := baseauth.AttachJwtToContext(r.Context(), r)
r = r.WithContext(ctx)
route := mux.CurrentRoute(r)
path, _ := route.GetPathTemplate()
queryRangeData, metadataExists := extractQueryRangeData(path, r)
getActiveLogs(path, r)
lrw := NewLoggingResponseWriter(w)
next.ServeHTTP(lrw, r)
data := map[string]interface{}{"path": path, "statusCode": lrw.statusCode}
if metadataExists {
for key, value := range queryRangeData {
data[key] = value
}
}
if _, ok := telemetry.EnabledPaths()[path]; ok {
userEmail, err := baseauth.GetEmailFromJwt(r.Context())
if err == nil {
telemetry.GetInstance().SendEvent(telemetry.TELEMETRY_EVENT_PATH, data, userEmail, true, false)
}
}
})
}
// initListeners initialises listeners of the server
func (s *Server) initListeners() error {
// listen on public port
@@ -700,7 +532,6 @@ func (s *Server) Stop() error {
func makeRulesManager(
promConfigPath,
alertManagerURL string,
ruleRepoURL string,
db *sqlx.DB,
ch baseint.Reader,
@@ -708,39 +539,34 @@ func makeRulesManager(
disableRules bool,
fm baseint.FeatureLookup,
useLogsNewSchema bool,
useTraceNewSchema bool) (*baserules.Manager, error) {
useTraceNewSchema bool,
alertmanager alertmanager.Alertmanager,
sqlstore sqlstore.SQLStore,
) (*baserules.Manager, error) {
// create engine
pqle, err := pqle.FromConfigPath(promConfigPath)
if err != nil {
return nil, fmt.Errorf("failed to create pql engine : %v", err)
}
// notifier opts
notifierOpts := basealm.NotifierOptions{
QueueCapacity: 10000,
Timeout: 1 * time.Second,
AlertManagerURLs: []string{alertManagerURL},
}
// create manager opts
managerOpts := &baserules.ManagerOptions{
NotifierOpts: notifierOpts,
PqlEngine: pqle,
RepoURL: ruleRepoURL,
DBConn: db,
Context: context.Background(),
Logger: zap.L(),
DisableRules: disableRules,
FeatureFlags: fm,
Reader: ch,
Cache: cache,
EvalDelay: baseconst.GetEvalDelay(),
PqlEngine: pqle,
RepoURL: ruleRepoURL,
DBConn: db,
Context: context.Background(),
Logger: zap.L(),
DisableRules: disableRules,
FeatureFlags: fm,
Reader: ch,
Cache: cache,
EvalDelay: baseconst.GetEvalDelay(),
PrepareTaskFunc: rules.PrepareTaskFunc,
UseLogsNewSchema: useLogsNewSchema,
UseTraceNewSchema: useTraceNewSchema,
PrepareTestRuleFunc: rules.TestNotification,
Alertmanager: alertmanager,
SQLStore: sqlstore,
}
// create Manager

View File

@@ -3,20 +3,20 @@ package auth
import (
"context"
"fmt"
"net/http"
"time"
"go.signoz.io/signoz/ee/query-service/app/api"
baseauth "go.signoz.io/signoz/pkg/query-service/auth"
basemodel "go.signoz.io/signoz/pkg/query-service/model"
"go.signoz.io/signoz/pkg/query-service/telemetry"
"go.signoz.io/signoz/pkg/types/authtypes"
"go.uber.org/zap"
)
func GetUserFromRequest(r *http.Request, apiHandler *api.APIHandler) (*basemodel.UserPayload, error) {
patToken := r.Header.Get("SIGNOZ-API-KEY")
if len(patToken) > 0 {
func GetUserFromRequestContext(ctx context.Context, apiHandler *api.APIHandler) (*basemodel.UserPayload, error) {
patToken, ok := authtypes.UUIDFromContext(ctx)
if ok && patToken != "" {
zap.L().Debug("Received a non-zero length PAT token")
ctx := context.Background()
dao := apiHandler.AppDao()
@@ -40,7 +40,7 @@ func GetUserFromRequest(r *http.Request, apiHandler *api.APIHandler) (*basemodel
}
telemetry.GetInstance().SetPatTokenUser()
dao.UpdatePATLastUsed(ctx, patToken, time.Now().Unix())
user.User.GroupId = group.Id
user.User.GroupId = group.ID
user.User.Id = pat.Id
return &basemodel.UserPayload{
User: user.User,
@@ -52,5 +52,5 @@ func GetUserFromRequest(r *http.Request, apiHandler *api.APIHandler) (*basemodel
return nil, err
}
}
return baseauth.GetUserFromRequest(r)
return baseauth.GetUserFromReqContext(ctx)
}

View File

@@ -1,10 +1,10 @@
package dao
import (
"github.com/jmoiron/sqlx"
"go.signoz.io/signoz/ee/query-service/dao/sqlite"
"go.signoz.io/signoz/pkg/sqlstore"
)
func InitDao(inputDB *sqlx.DB) (ModelDao, error) {
return sqlite.InitDB(inputDB)
func InitDao(sqlStore sqlstore.SQLStore) (ModelDao, error) {
return sqlite.InitDB(sqlStore)
}

View File

@@ -10,6 +10,7 @@ import (
basedao "go.signoz.io/signoz/pkg/query-service/dao"
baseint "go.signoz.io/signoz/pkg/query-service/interfaces"
basemodel "go.signoz.io/signoz/pkg/query-service/model"
"go.signoz.io/signoz/pkg/types/authtypes"
)
type ModelDao interface {
@@ -22,7 +23,7 @@ type ModelDao interface {
// auth methods
CanUsePassword(ctx context.Context, email string) (bool, basemodel.BaseApiError)
PrepareSsoRedirect(ctx context.Context, redirectUri, email string) (redirectURL string, apierr basemodel.BaseApiError)
PrepareSsoRedirect(ctx context.Context, redirectUri, email string, jwt *authtypes.JWT) (redirectURL string, apierr basemodel.BaseApiError)
GetDomainFromSsoResponse(ctx context.Context, relayState *url.URL) (*model.OrgDomain, error)
// org domain (auth domains) CRUD ops

View File

@@ -14,6 +14,7 @@ import (
baseconst "go.signoz.io/signoz/pkg/query-service/constants"
basemodel "go.signoz.io/signoz/pkg/query-service/model"
"go.signoz.io/signoz/pkg/query-service/utils"
"go.signoz.io/signoz/pkg/types/authtypes"
"go.uber.org/zap"
)
@@ -48,7 +49,7 @@ func (m *modelDao) createUserForSAMLRequest(ctx context.Context, email string) (
Password: hash,
CreatedAt: time.Now().Unix(),
ProfilePictureURL: "", // Currently unused
GroupId: group.Id,
GroupId: group.ID,
OrgId: domain.OrgId,
}
@@ -64,7 +65,7 @@ func (m *modelDao) createUserForSAMLRequest(ctx context.Context, email string) (
// PrepareSsoRedirect prepares redirect page link after SSO response
// is successfully parsed (i.e. valid email is available)
func (m *modelDao) PrepareSsoRedirect(ctx context.Context, redirectUri, email string) (redirectURL string, apierr basemodel.BaseApiError) {
func (m *modelDao) PrepareSsoRedirect(ctx context.Context, redirectUri, email string, jwt *authtypes.JWT) (redirectURL string, apierr basemodel.BaseApiError) {
userPayload, apierr := m.GetUserByEmail(ctx, email)
if !apierr.IsNil() {
@@ -85,7 +86,7 @@ func (m *modelDao) PrepareSsoRedirect(ctx context.Context, redirectUri, email st
user = &userPayload.User
}
tokenStore, err := baseauth.GenerateJWTForUser(user)
tokenStore, err := baseauth.GenerateJWTForUser(user, jwt)
if err != nil {
zap.L().Error("failed to generate token for SSO login user", zap.Error(err))
return "", model.InternalErrorStr("failed to generate token for the user")

View File

@@ -7,7 +7,7 @@ import (
basedao "go.signoz.io/signoz/pkg/query-service/dao"
basedsql "go.signoz.io/signoz/pkg/query-service/dao/sqlite"
baseint "go.signoz.io/signoz/pkg/query-service/interfaces"
"go.uber.org/zap"
"go.signoz.io/signoz/pkg/sqlstore"
)
type modelDao struct {
@@ -29,113 +29,15 @@ func (m *modelDao) checkFeature(key string) error {
return m.flags.CheckFeature(key)
}
func columnExists(db *sqlx.DB, tableName, columnName string) bool {
query := fmt.Sprintf("PRAGMA table_info(%s);", tableName)
rows, err := db.Query(query)
if err != nil {
zap.L().Error("Failed to query table info", zap.Error(err))
return false
}
defer rows.Close()
var (
cid int
name string
ctype string
notnull int
dflt_value *string
pk int
)
for rows.Next() {
err := rows.Scan(&cid, &name, &ctype, &notnull, &dflt_value, &pk)
if err != nil {
zap.L().Error("Failed to scan table info", zap.Error(err))
return false
}
if name == columnName {
return true
}
}
err = rows.Err()
if err != nil {
zap.L().Error("Failed to scan table info", zap.Error(err))
return false
}
return false
}
// InitDB creates and extends base model DB repository
func InitDB(inputDB *sqlx.DB) (*modelDao, error) {
dao, err := basedsql.InitDB(inputDB)
func InitDB(sqlStore sqlstore.SQLStore) (*modelDao, error) {
dao, err := basedsql.InitDB(sqlStore)
if err != nil {
return nil, err
}
// set package variable so dependent base methods (e.g. AuthCache) will work
basedao.SetDB(dao)
m := &modelDao{ModelDaoSqlite: dao}
table_schema := `
PRAGMA foreign_keys = ON;
CREATE TABLE IF NOT EXISTS org_domains(
id TEXT PRIMARY KEY,
org_id TEXT NOT NULL,
name VARCHAR(50) NOT NULL UNIQUE,
created_at INTEGER NOT NULL,
updated_at INTEGER,
data TEXT NOT NULL,
FOREIGN KEY(org_id) REFERENCES organizations(id)
);
CREATE TABLE IF NOT EXISTS personal_access_tokens (
id INTEGER PRIMARY KEY AUTOINCREMENT,
role TEXT NOT NULL,
user_id TEXT NOT NULL,
token TEXT NOT NULL UNIQUE,
name TEXT NOT NULL,
created_at INTEGER NOT NULL,
expires_at INTEGER NOT NULL,
updated_at INTEGER NOT NULL,
last_used INTEGER NOT NULL,
revoked BOOLEAN NOT NULL,
updated_by_user_id TEXT NOT NULL,
FOREIGN KEY(user_id) REFERENCES users(id)
);
`
_, err = m.DB().Exec(table_schema)
if err != nil {
return nil, fmt.Errorf("error in creating tables: %v", err.Error())
}
if !columnExists(m.DB(), "personal_access_tokens", "role") {
_, err = m.DB().Exec("ALTER TABLE personal_access_tokens ADD COLUMN role TEXT NOT NULL DEFAULT 'ADMIN';")
if err != nil {
return nil, fmt.Errorf("error in adding column: %v", err.Error())
}
}
if !columnExists(m.DB(), "personal_access_tokens", "updated_at") {
_, err = m.DB().Exec("ALTER TABLE personal_access_tokens ADD COLUMN updated_at INTEGER NOT NULL DEFAULT 0;")
if err != nil {
return nil, fmt.Errorf("error in adding column: %v", err.Error())
}
}
if !columnExists(m.DB(), "personal_access_tokens", "last_used") {
_, err = m.DB().Exec("ALTER TABLE personal_access_tokens ADD COLUMN last_used INTEGER NOT NULL DEFAULT 0;")
if err != nil {
return nil, fmt.Errorf("error in adding column: %v", err.Error())
}
}
if !columnExists(m.DB(), "personal_access_tokens", "revoked") {
_, err = m.DB().Exec("ALTER TABLE personal_access_tokens ADD COLUMN revoked BOOLEAN NOT NULL DEFAULT FALSE;")
if err != nil {
return nil, fmt.Errorf("error in adding column: %v", err.Error())
}
}
if !columnExists(m.DB(), "personal_access_tokens", "updated_by_user_id") {
_, err = m.DB().Exec("ALTER TABLE personal_access_tokens ADD COLUMN updated_by_user_id TEXT NOT NULL DEFAULT '';")
if err != nil {
return nil, fmt.Errorf("error in adding column: %v", err.Error())
}
}
return m, nil
}

View File

@@ -9,29 +9,28 @@ import (
"github.com/jmoiron/sqlx"
"github.com/mattn/go-sqlite3"
"github.com/uptrace/bun"
"go.signoz.io/signoz/ee/query-service/license/sqlite"
"go.signoz.io/signoz/ee/query-service/model"
basemodel "go.signoz.io/signoz/pkg/query-service/model"
"go.signoz.io/signoz/pkg/types"
"go.uber.org/zap"
)
// Repo is license repo. stores license keys in a secured DB
type Repo struct {
db *sqlx.DB
db *sqlx.DB
bundb *bun.DB
}
// NewLicenseRepo initiates a new license repo
func NewLicenseRepo(db *sqlx.DB) Repo {
func NewLicenseRepo(db *sqlx.DB, bundb *bun.DB) Repo {
return Repo{
db: db,
db: db,
bundb: bundb,
}
}
func (r *Repo) InitDB(inputDB *sqlx.DB) error {
return sqlite.InitDB(inputDB)
}
func (r *Repo) GetLicensesV3(ctx context.Context) ([]*model.LicenseV3, error) {
licensesData := []model.LicenseDB{}
licenseV3Data := []*model.LicenseV3{}
@@ -170,24 +169,25 @@ func (r *Repo) UpdateLicenseV3(ctx context.Context, l *model.LicenseV3) error {
return nil
}
func (r *Repo) CreateFeature(req *basemodel.Feature) *basemodel.ApiError {
func (r *Repo) CreateFeature(req *types.FeatureStatus) *basemodel.ApiError {
_, err := r.db.Exec(
`INSERT INTO feature_status (name, active, usage, usage_limit, route)
VALUES (?, ?, ?, ?, ?);`,
req.Name, req.Active, req.Usage, req.UsageLimit, req.Route)
_, err := r.bundb.NewInsert().
Model(req).
Exec(context.Background())
if err != nil {
return &basemodel.ApiError{Typ: basemodel.ErrorInternal, Err: err}
}
return nil
}
func (r *Repo) GetFeature(featureName string) (basemodel.Feature, error) {
func (r *Repo) GetFeature(featureName string) (types.FeatureStatus, error) {
var feature types.FeatureStatus
var feature basemodel.Feature
err := r.bundb.NewSelect().
Model(&feature).
Where("name = ?", featureName).
Scan(context.Background())
err := r.db.Get(&feature,
`SELECT * FROM feature_status WHERE name = ?;`, featureName)
if err != nil {
return feature, err
}
@@ -210,18 +210,19 @@ func (r *Repo) GetAllFeatures() ([]basemodel.Feature, error) {
return feature, nil
}
func (r *Repo) UpdateFeature(req basemodel.Feature) error {
func (r *Repo) UpdateFeature(req types.FeatureStatus) error {
_, err := r.db.Exec(
`UPDATE feature_status SET active = ?, usage = ?, usage_limit = ?, route = ? WHERE name = ?;`,
req.Active, req.Usage, req.UsageLimit, req.Route, req.Name)
_, err := r.bundb.NewUpdate().
Model(&req).
Where("name = ?", req.Name).
Exec(context.Background())
if err != nil {
return err
}
return nil
}
func (r *Repo) InitFeatures(req basemodel.FeatureSet) error {
func (r *Repo) InitFeatures(req []types.FeatureStatus) error {
// get a feature by name, if it doesn't exist, create it. If it does exist, update it.
for _, feature := range req {
currentFeature, err := r.GetFeature(feature.Name)
@@ -234,7 +235,7 @@ func (r *Repo) InitFeatures(req basemodel.FeatureSet) error {
} else if err != nil {
return err
}
feature.Usage = currentFeature.Usage
feature.Usage = int(currentFeature.Usage)
if feature.Usage >= feature.UsageLimit && feature.UsageLimit != -1 {
feature.Active = false
}

View File

@@ -2,17 +2,18 @@ package license
import (
"context"
"fmt"
"sync/atomic"
"time"
"github.com/jmoiron/sqlx"
"github.com/pkg/errors"
"github.com/uptrace/bun"
"sync"
"go.signoz.io/signoz/pkg/query-service/auth"
baseconstants "go.signoz.io/signoz/pkg/query-service/constants"
"go.signoz.io/signoz/pkg/types"
"go.signoz.io/signoz/pkg/types/authtypes"
validate "go.signoz.io/signoz/ee/query-service/integrations/signozio"
"go.signoz.io/signoz/ee/query-service/model"
@@ -44,17 +45,12 @@ type Manager struct {
activeFeatures basemodel.FeatureSet
}
func StartManager(db *sqlx.DB, features ...basemodel.Feature) (*Manager, error) {
func StartManager(db *sqlx.DB, bundb *bun.DB, features ...basemodel.Feature) (*Manager, error) {
if LM != nil {
return LM, nil
}
repo := NewLicenseRepo(db)
err := repo.InitDB(db)
if err != nil {
return nil, fmt.Errorf("failed to initiate license repo: %v", err)
}
repo := NewLicenseRepo(db, bundb)
m := &Manager{
repo: &repo,
}
@@ -243,10 +239,10 @@ func (lm *Manager) ValidateV3(ctx context.Context) (reterr error) {
func (lm *Manager) ActivateV3(ctx context.Context, licenseKey string) (licenseResponse *model.LicenseV3, errResponse *model.ApiError) {
defer func() {
if errResponse != nil {
userEmail, err := auth.GetEmailFromJwt(ctx)
if err == nil {
claims, ok := authtypes.ClaimsFromContext(ctx)
if ok {
telemetry.GetInstance().SendEvent(telemetry.TELEMETRY_LICENSE_ACT_FAILED,
map[string]interface{}{"err": errResponse.Err.Error()}, userEmail, true, false)
map[string]interface{}{"err": errResponse.Err.Error()}, claims.Email, true, false)
}
}
}()
@@ -288,15 +284,41 @@ func (lm *Manager) GetFeatureFlags() (basemodel.FeatureSet, error) {
}
func (lm *Manager) InitFeatures(features basemodel.FeatureSet) error {
return lm.repo.InitFeatures(features)
featureStatus := make([]types.FeatureStatus, len(features))
for i, f := range features {
featureStatus[i] = types.FeatureStatus{
Name: f.Name,
Active: f.Active,
Usage: int(f.Usage),
UsageLimit: int(f.UsageLimit),
Route: f.Route,
}
}
return lm.repo.InitFeatures(featureStatus)
}
func (lm *Manager) UpdateFeatureFlag(feature basemodel.Feature) error {
return lm.repo.UpdateFeature(feature)
return lm.repo.UpdateFeature(types.FeatureStatus{
Name: feature.Name,
Active: feature.Active,
Usage: int(feature.Usage),
UsageLimit: int(feature.UsageLimit),
Route: feature.Route,
})
}
func (lm *Manager) GetFeatureFlag(key string) (basemodel.Feature, error) {
return lm.repo.GetFeature(key)
featureStatus, err := lm.repo.GetFeature(key)
if err != nil {
return basemodel.Feature{}, err
}
return basemodel.Feature{
Name: featureStatus.Name,
Active: featureStatus.Active,
Usage: int64(featureStatus.Usage),
UsageLimit: int64(featureStatus.UsageLimit),
Route: featureStatus.Route,
}, nil
}
// GetRepo return the license repo

View File

@@ -1,63 +0,0 @@
package sqlite
import (
"fmt"
"github.com/jmoiron/sqlx"
)
func InitDB(db *sqlx.DB) error {
var err error
if db == nil {
return fmt.Errorf("invalid db connection")
}
table_schema := `CREATE TABLE IF NOT EXISTS licenses(
key TEXT PRIMARY KEY,
createdAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
planDetails TEXT,
activationId TEXT,
validationMessage TEXT,
lastValidated TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE IF NOT EXISTS sites(
uuid TEXT PRIMARY KEY,
alias VARCHAR(180) DEFAULT 'PROD',
url VARCHAR(300),
createdAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
`
_, err = db.Exec(table_schema)
if err != nil {
return fmt.Errorf("error in creating licenses table: %s", err.Error())
}
table_schema = `CREATE TABLE IF NOT EXISTS feature_status (
name TEXT PRIMARY KEY,
active bool,
usage INTEGER DEFAULT 0,
usage_limit INTEGER DEFAULT 0,
route TEXT
);`
_, err = db.Exec(table_schema)
if err != nil {
return fmt.Errorf("error in creating feature_status table: %s", err.Error())
}
table_schema = `CREATE TABLE IF NOT EXISTS licenses_v3 (
id TEXT PRIMARY KEY,
key TEXT NOT NULL UNIQUE,
data TEXT
);`
_, err = db.Exec(table_schema)
if err != nil {
return fmt.Errorf("error in creating licenses_v3 table: %s", err.Error())
}
return nil
}

View File

@@ -7,7 +7,6 @@ import (
"os"
"os/signal"
"strconv"
"syscall"
"time"
"go.opentelemetry.io/otel/sdk/resource"
@@ -18,9 +17,9 @@ import (
"go.signoz.io/signoz/pkg/config/fileprovider"
"go.signoz.io/signoz/pkg/query-service/auth"
baseconst "go.signoz.io/signoz/pkg/query-service/constants"
"go.signoz.io/signoz/pkg/query-service/migrate"
"go.signoz.io/signoz/pkg/query-service/version"
"go.signoz.io/signoz/pkg/signoz"
"go.signoz.io/signoz/pkg/types/authtypes"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
@@ -155,6 +154,16 @@ func main() {
zap.L().Fatal("Failed to create signoz struct", zap.Error(err))
}
jwtSecret := os.Getenv("SIGNOZ_JWT_SECRET")
if len(jwtSecret) == 0 {
zap.L().Warn("No JWT secret key is specified.")
} else {
zap.L().Info("JWT secret key set successfully.")
}
jwt := authtypes.NewJWT(jwtSecret, 30*time.Minute, 30*24*time.Hour)
serverOptions := &app.ServerOptions{
Config: config,
SigNoz: signoz,
@@ -172,21 +181,7 @@ func main() {
GatewayUrl: gatewayUrl,
UseLogsNewSchema: useLogsNewSchema,
UseTraceNewSchema: useTraceNewSchema,
}
// Read the jwt secret key
auth.JwtSecret = os.Getenv("SIGNOZ_JWT_SECRET")
if len(auth.JwtSecret) == 0 {
zap.L().Warn("No JWT secret key is specified.")
} else {
zap.L().Info("JWT secret key set successfully.")
}
if err := migrate.Migrate(signoz.SQLStore.SQLxDB()); err != nil {
zap.L().Error("Failed to migrate", zap.Error(err))
} else {
zap.L().Info("Migration successful")
Jwt: jwt,
}
server, err := app.NewServer(serverOptions)
@@ -202,16 +197,19 @@ func main() {
zap.L().Fatal("Failed to initialize auth cache", zap.Error(err))
}
signalsChannel := make(chan os.Signal, 1)
signal.Notify(signalsChannel, os.Interrupt, syscall.SIGTERM)
signoz.Start(context.Background())
for {
select {
case status := <-server.HealthCheckStatus():
zap.L().Info("Received HealthCheck status: ", zap.Int("status", int(status)))
case <-signalsChannel:
zap.L().Fatal("Received OS Interrupt Signal ... ")
server.Stop()
}
if err := signoz.Wait(context.Background()); err != nil {
zap.L().Fatal("Failed to start signoz", zap.Error(err))
}
err = server.Stop()
if err != nil {
zap.L().Fatal("Failed to stop server", zap.Error(err))
}
err = signoz.Stop(context.Background())
if err != nil {
zap.L().Fatal("Failed to stop signoz", zap.Error(err))
}
}

View File

@@ -139,8 +139,8 @@ func NewLicenseV3(data map[string]interface{}) (*LicenseV3, error) {
if err != nil {
return nil, err
}
// if license status is inactive then default it to basic
if status == LicenseStatusInactive {
// if license status is invalid then default it to basic
if status == LicenseStatusInvalid {
planName = PlanNameBasic
}

View File

@@ -21,7 +21,7 @@ var (
)
var (
LicenseStatusInactive = "INACTIVE"
LicenseStatusInvalid = "INVALID"
)
const DisableUpsell = "DISABLE_UPSELL"

View File

@@ -28,6 +28,7 @@ func PrepareTaskFunc(opts baserules.PrepareTaskOptions) (baserules.Task, error)
opts.UseLogsNewSchema,
opts.UseTraceNewSchema,
baserules.WithEvalDelay(opts.ManagerOpts.EvalDelay),
baserules.WithSQLStore(opts.SQLStore),
)
if err != nil {
@@ -48,6 +49,7 @@ func PrepareTaskFunc(opts baserules.PrepareTaskOptions) (baserules.Task, error)
opts.Logger,
opts.Reader,
opts.ManagerOpts.PqlEngine,
baserules.WithSQLStore(opts.SQLStore),
)
if err != nil {
@@ -68,6 +70,7 @@ func PrepareTaskFunc(opts baserules.PrepareTaskOptions) (baserules.Task, error)
opts.Reader,
opts.Cache,
baserules.WithEvalDelay(opts.ManagerOpts.EvalDelay),
baserules.WithSQLStore(opts.SQLStore),
)
if err != nil {
return task, err
@@ -126,6 +129,7 @@ func TestNotification(opts baserules.PrepareTestRuleOptions) (int, *basemodel.Ap
opts.UseTraceNewSchema,
baserules.WithSendAlways(),
baserules.WithSendUnmatched(),
baserules.WithSQLStore(opts.SQLStore),
)
if err != nil {
@@ -144,6 +148,7 @@ func TestNotification(opts baserules.PrepareTestRuleOptions) (int, *basemodel.Ap
opts.ManagerOpts.PqlEngine,
baserules.WithSendAlways(),
baserules.WithSendUnmatched(),
baserules.WithSQLStore(opts.SQLStore),
)
if err != nil {
@@ -160,6 +165,7 @@ func TestNotification(opts baserules.PrepareTestRuleOptions) (int, *basemodel.Ap
opts.Cache,
baserules.WithSendAlways(),
baserules.WithSendUnmatched(),
baserules.WithSQLStore(opts.SQLStore),
)
if err != nil {
zap.L().Error("failed to prepare a new anomaly rule for test", zap.String("name", rule.Name()), zap.Error(err))

View File

@@ -47,6 +47,7 @@
"@tanstack/react-virtual": "3.11.2",
"@uiw/react-md-editor": "3.23.5",
"@visx/group": "3.3.0",
"@visx/hierarchy": "3.12.0",
"@visx/shape": "3.5.0",
"@visx/tooltip": "3.3.0",
"@xstate/react": "^3.0.0",
@@ -69,6 +70,7 @@
"cross-env": "^7.0.3",
"css-loader": "5.0.0",
"css-minimizer-webpack-plugin": "5.0.1",
"d3-hierarchy": "3.1.2",
"dayjs": "^1.10.7",
"dompurify": "3.1.3",
"dotenv": "8.2.0",
@@ -92,7 +94,7 @@
"overlayscrollbars": "^2.8.1",
"overlayscrollbars-react": "^0.5.6",
"papaparse": "5.4.1",
"posthog-js": "1.160.3",
"posthog-js": "1.215.5",
"rc-tween-one": "3.0.6",
"react": "18.2.0",
"react-addons-update": "15.6.3",
@@ -107,6 +109,7 @@
"react-grid-layout": "^1.3.4",
"react-helmet-async": "1.3.0",
"react-i18next": "^11.16.1",
"react-lottie": "1.2.10",
"react-markdown": "8.0.7",
"react-query": "3.39.3",
"react-redux": "^7.2.2",
@@ -178,6 +181,7 @@
"@types/react-dom": "18.0.10",
"@types/react-grid-layout": "^1.1.2",
"@types/react-helmet-async": "1.0.3",
"@types/react-lottie": "1.2.10",
"@types/react-redux": "^7.1.11",
"@types/react-resizable": "3.0.3",
"@types/react-router-dom": "^5.1.6",
@@ -218,6 +222,7 @@
"portfinder-sync": "^0.0.2",
"postcss": "8.4.38",
"prettier": "2.2.1",
"prop-types": "15.8.1",
"raw-loader": "4.0.2",
"react-hooks-testing-library": "0.6.0",
"react-hot-loader": "^4.13.0",

View File

@@ -0,0 +1,6 @@
<svg width="57" height="57" viewBox="0 0 57 57" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="solid-check-circle-2">
<path id="Vector" d="M28.2498 51.9638C41.1368 51.9638 51.5832 41.5175 51.5832 28.6305C51.5832 15.7435 41.1368 5.29712 28.2498 5.29712C15.3628 5.29712 4.9165 15.7435 4.9165 28.6305C4.9165 41.5175 15.3628 51.9638 28.2498 51.9638Z" fill="#4E74F8" stroke="#4E74F8" stroke-width="4.66667" stroke-linecap="round" stroke-linejoin="round"/>
<path id="Vector_2" d="M16.25 27.6304L24.2115 36.6304L39.25 22.6304" stroke="#121317" stroke-width="4.66667" stroke-linecap="round" stroke-linejoin="round"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 629 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 KiB

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="19.932999999999996 68.509 228.155 228.155" xmlns="http://www.w3.org/2000/svg"><path d="M101.885 207.092c7.865 0 14.241 6.376 14.241 14.241v61.09c0 7.865-6.376 14.24-14.241 14.24-7.864 0-14.24-6.375-14.24-14.24v-61.09c0-7.864 6.376-14.24 14.24-14.24z" fill="#a4c639"/><path d="M69.374 133.645c-.047.54-.088 1.086-.088 1.638v92.557c0 9.954 7.879 17.973 17.66 17.973h94.124c9.782 0 17.661-8.02 17.661-17.973v-92.557c0-.552-.02-1.1-.066-1.638H69.374z" fill="#a4c639"/><path d="M166.133 207.092c7.865 0 14.241 6.376 14.241 14.241v61.09c0 7.865-6.376 14.24-14.241 14.24-7.864 0-14.24-6.375-14.24-14.24v-61.09c0-7.864 6.376-14.24 14.24-14.24zM46.405 141.882c7.864 0 14.24 6.376 14.24 14.241v61.09c0 7.865-6.376 14.241-14.24 14.241-7.865 0-14.241-6.376-14.241-14.24v-61.09c-.001-7.865 6.375-14.242 14.241-14.242zM221.614 141.882c7.864 0 14.24 6.376 14.24 14.241v61.09c0 7.865-6.376 14.241-14.24 14.241-7.865 0-14.241-6.376-14.241-14.24v-61.09c0-7.865 6.376-14.242 14.241-14.242zM69.79 127.565c.396-28.43 25.21-51.74 57.062-54.812h14.312c31.854 3.073 56.666 26.384 57.062 54.812H69.79z" fill="#a4c639"/><path d="M74.743 70.009l15.022 26.02M193.276 70.009l-15.023 26.02" fill="none" stroke="#a4c639" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/><path d="M114.878 102.087c.012 3.974-3.277 7.205-7.347 7.216-4.068.01-7.376-3.202-7.388-7.176v-.04c-.011-3.975 3.278-7.205 7.347-7.216 4.068-.011 7.376 3.2 7.388 7.176v.04zM169.874 102.087c.012 3.974-3.277 7.205-7.347 7.216-4.068.01-7.376-3.202-7.388-7.176v-.04c-.011-3.975 3.278-7.205 7.347-7.216 4.068-.011 7.376 3.2 7.388 7.176v.04z" fill="#ffffff"/></svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.1.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 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve">
<g>
<linearGradient id="XMLID_3_" gradientUnits="userSpaceOnUse" x1="15.9594" y1="-13.0143" x2="44.3068" y2="15.3332" gradientTransform="matrix(1 0 0 -1 0 61)">
<stop offset="9.677000e-02" style="stop-color:#0095D5"/>
<stop offset="0.3007" style="stop-color:#238AD9"/>
<stop offset="0.6211" style="stop-color:#557BDE"/>
<stop offset="0.8643" style="stop-color:#7472E2"/>
<stop offset="1" style="stop-color:#806EE3"/>
</linearGradient>
<polygon id="XMLID_2_" style="fill:url(#XMLID_3_);" points="0,60 30.1,29.9 60,60 "/>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="4.2092" y1="48.9409" x2="20.6734" y2="65.405" gradientTransform="matrix(1 0 0 -1 0 61)">
<stop offset="0.1183" style="stop-color:#0095D5"/>
<stop offset="0.4178" style="stop-color:#3C83DC"/>
<stop offset="0.6962" style="stop-color:#6D74E1"/>
<stop offset="0.8333" style="stop-color:#806EE3"/>
</linearGradient>
<polygon style="fill:url(#SVGID_1_);" points="0,0 30.1,0 0,32.5 "/>
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="-10.1017" y1="5.8362" x2="45.7315" y2="61.6694" gradientTransform="matrix(1 0 0 -1 0 61)">
<stop offset="0.1075" style="stop-color:#C757BC"/>
<stop offset="0.2138" style="stop-color:#D0609A"/>
<stop offset="0.4254" style="stop-color:#E1725C"/>
<stop offset="0.6048" style="stop-color:#EE7E2F"/>
<stop offset="0.743" style="stop-color:#F58613"/>
<stop offset="0.8232" style="stop-color:#F88909"/>
</linearGradient>
<polygon style="fill:url(#SVGID_2_);" points="30.1,0 0,31.7 0,60 30.1,29.9 60,0 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -0,0 +1 @@
<svg width="2370" height="2500" viewBox="0 0 256 270" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet"><path d="M127.606.341L.849 44.95 20.88 211.022l106.86 58.732 107.412-59.528L255.175 44.16 127.606.341z" fill="#B3B3B3"/><path d="M242.532 53.758L127.31 14.466v241.256l96.561-53.441 18.66-148.523z" fill="#A6120D"/><path d="M15.073 54.466l17.165 148.525 95.07 52.731V14.462L15.074 54.465z" fill="#DD1B16"/><path d="M159.027 142.898L127.31 157.73H93.881l-15.714 39.305-29.228.54L127.31 23.227l31.717 119.672zm-3.066-7.467l-28.44-56.303-23.329 55.334h23.117l28.652.97z" fill="#F2F2F2"/><path d="M127.309 23.226l.21 55.902 26.47 55.377h-26.62l-.06 23.189 36.81.035 17.204 39.852 27.967.518-81.981-174.873z" fill="#B3B3B3"/></svg>

After

Width:  |  Height:  |  Size: 749 B

View File

@@ -0,0 +1 @@
<?xml version="1.0" encoding="utf-8"?><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 122.88 98.18" style="enable-background:new 0 0 122.88 98.18" xml:space="preserve"><style type="text/css">.st0{fill-rule:evenodd;clip-rule:evenodd;} .st0{fill:#1668dc;} .st1{fill:#FFFFFF;}</style><g><path class="st0" d="M3.42,0h116.05c1.88,0,3.41,1.54,3.41,3.41v91.36c0,1.88-1.54,3.41-3.41,3.41l-116.05,0 C1.54,98.18,0,96.65,0,94.77L0,3.41C0,1.53,1.54,0,3.42,0L3.42,0L3.42,0z M25.89,8.19c2.05,0,3.72,1.67,3.72,3.72 c0,2.05-1.67,3.72-3.72,3.72c-2.05,0-3.72-1.67-3.72-3.72C22.17,9.85,23.83,8.19,25.89,8.19L25.89,8.19z M103.07,7.69l2.52,2.77 l2.52-2.77l1.97,1.79l-2.69,2.96l2.69,2.96l-1.97,1.79l-2.52-2.77l-2.52,2.77l-1.97-1.79l2.69-2.96l-2.69-2.96L103.07,7.69 L103.07,7.69z M14.52,8.19c2.05,0,3.72,1.67,3.72,3.72c0,2.05-1.67,3.72-3.72,3.72c-2.05,0-3.72-1.67-3.72-3.72 C10.79,9.85,12.46,8.19,14.52,8.19L14.52,8.19z M37.26,8.19c2.05,0,3.72,1.67,3.72,3.72c0,2.05-1.67,3.72-3.72,3.72 c-2.05,0-3.72-1.67-3.72-3.72C33.54,9.85,35.21,8.19,37.26,8.19L37.26,8.19z M14.05,22.75h93.33c1.77,0,3.22,1.49,3.22,3.22v59.2 c0,1.73-1.49,3.22-3.22,3.22l-93.33,0c-1.73,0-3.22-1.45-3.22-3.22v-59.2C10.84,24.2,12.29,22.75,14.05,22.75L14.05,22.75 L14.05,22.75z"/></g></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1,23 @@
<svg width="24" height="16" viewBox="0 0 24 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="amazon_web_services_logo.svg" clip-path="url(#clip0_2552_26387)">
<g id="Group">
<path id="Vector" d="M6.82058 6.05151C6.82058 6.34672 6.85997 6.58289 6.89935 6.76001C6.95843 6.93714 7.03721 7.11426 7.15537 7.33075C7.19476 7.38979 7.21445 7.44883 7.21445 7.50788C7.21445 7.5866 7.17506 7.66532 7.0569 7.74404L6.56456 8.07861C6.48579 8.11797 6.42671 8.15733 6.36762 8.15733C6.28885 8.15733 6.21008 8.11797 6.1313 8.03925C6.01314 7.92117 5.93437 7.80308 5.85559 7.66532C5.77682 7.52756 5.69804 7.38979 5.61927 7.19299C5.00876 7.92117 4.24071 8.27542 3.29542 8.27542C2.62584 8.27542 2.1138 8.07861 1.71993 7.70468C1.32606 7.33075 1.12912 6.81906 1.12912 6.18928C1.12912 5.52014 1.36544 4.96908 1.83809 4.57547C2.31074 4.18186 2.96063 3.96538 3.76807 3.96538C4.04378 3.96538 4.31949 3.98506 4.5952 4.02442C4.8906 4.06378 5.18601 4.12282 5.50111 4.20154V3.63081C5.50111 3.04039 5.38294 2.60742 5.12693 2.37125C4.87091 2.13508 4.45734 2.017 3.84684 2.017C3.57113 2.017 3.29542 2.05636 3.00001 2.1154C2.70461 2.19413 2.4289 2.27285 2.15319 2.39093C2.03503 2.43029 1.93656 2.46965 1.87748 2.48933C1.8184 2.48933 1.77901 2.50901 1.75932 2.50901C1.64115 2.50901 1.60177 2.43029 1.60177 2.27285V1.87924C1.60177 1.76115 1.62146 1.66275 1.66085 1.60371C1.70024 1.54467 1.77901 1.48563 1.87748 1.44626C2.15319 1.3085 2.48798 1.19042 2.86216 1.09201C3.25603 0.993612 3.6499 0.93457 4.08316 0.93457C5.02846 0.93457 5.69804 1.15106 6.15099 1.56435C6.58425 1.99732 6.80088 2.6271 6.80088 3.51272L6.82058 6.05151ZM3.63021 7.25203C3.88623 7.25203 4.16194 7.21267 4.43765 7.11426C4.71336 7.01586 4.96938 6.83874 5.18601 6.60257C5.30417 6.44513 5.40264 6.28768 5.46172 6.09088C5.50111 5.89407 5.54049 5.67758 5.54049 5.40206V5.06749C5.30417 5.00845 5.06785 4.96908 4.81183 4.92972C4.55581 4.89036 4.31949 4.89036 4.06347 4.89036C3.53174 4.89036 3.15756 4.98876 2.88185 5.20525C2.62584 5.42174 2.48798 5.71695 2.48798 6.11056C2.48798 6.48449 2.58645 6.76001 2.78338 6.93714C2.98032 7.17331 3.25603 7.25203 3.63021 7.25203ZM9.95187 8.11797C9.81401 8.11797 9.71554 8.09829 9.65646 8.03925C9.59738 7.99989 9.5383 7.88181 9.49891 7.72436L7.64771 1.62339C7.60832 1.46595 7.56894 1.36754 7.56894 1.3085C7.56894 1.19042 7.62802 1.1117 7.76587 1.1117H8.53392C8.69147 1.1117 8.78994 1.13138 8.84902 1.19042C8.9081 1.22978 8.96718 1.34786 9.00657 1.50531L10.326 6.72065L11.547 1.50531C11.5864 1.34786 11.6258 1.24946 11.7046 1.19042C11.7637 1.15106 11.8818 1.1117 12.0197 1.1117H12.6499C12.8074 1.1117 12.9059 1.13138 12.965 1.19042C13.0241 1.22978 13.0832 1.34786 13.1225 1.50531L14.3632 6.7797L15.7221 1.50531C15.7615 1.34786 15.8206 1.24946 15.8796 1.19042C15.9387 1.15106 16.0372 1.1117 16.1947 1.1117H16.9234C17.0416 1.1117 17.1203 1.17074 17.1203 1.3085C17.1203 1.34786 17.1203 1.38722 17.1007 1.42658C17.1007 1.46595 17.081 1.54467 17.0416 1.62339L15.1313 7.72436C15.0919 7.88181 15.0328 7.98021 14.9737 8.03925C14.9147 8.07861 14.8162 8.11797 14.6783 8.11797H14.0088C13.8512 8.11797 13.7527 8.09829 13.6937 8.03925C13.6346 7.98021 13.5755 7.88181 13.5361 7.72436L12.3151 2.64678L11.0941 7.72436C11.0547 7.88181 11.0153 7.98021 10.9365 8.03925C10.8775 8.09829 10.7593 8.11797 10.6214 8.11797H9.95187ZM20.0941 8.31478C19.6805 8.31478 19.267 8.27542 18.8731 8.17702C18.4792 8.07861 18.1641 7.98021 17.9672 7.86213C17.849 7.7834 17.7505 7.70468 17.7308 7.64564C17.7112 7.5866 17.6718 7.4882 17.6718 7.42915V7.03554C17.6718 6.8781 17.7308 6.79938 17.849 6.79938C17.8884 6.79938 17.9475 6.79938 17.9869 6.81906C18.0263 6.83874 18.105 6.85842 18.1838 6.89778C18.4595 7.01586 18.7352 7.11426 19.0503 7.17331C19.3654 7.23235 19.6805 7.27171 19.9956 7.27171C20.488 7.27171 20.8818 7.19299 21.1378 7.01586C21.4136 6.83874 21.5514 6.58289 21.5514 6.268C21.5514 6.05151 21.4726 5.87439 21.3348 5.71695C21.1969 5.5595 20.9212 5.44142 20.547 5.30365L19.4048 4.9494C18.8337 4.77228 18.4004 4.49675 18.1444 4.1425C17.8884 3.78825 17.7505 3.41432 17.7505 3.00103C17.7505 2.66646 17.8293 2.37125 17.9672 2.13508C18.105 1.89892 18.302 1.66275 18.5383 1.48563C18.7746 1.3085 19.0503 1.17074 19.3654 1.07233C19.6805 0.973931 20.0153 0.93457 20.3501 0.93457C20.5273 0.93457 20.7046 0.93457 20.8818 0.973931C21.0591 0.993612 21.2363 1.03297 21.3939 1.05265C21.5514 1.09201 21.709 1.13138 21.8468 1.17074C21.9847 1.2101 22.1028 1.26914 22.1816 1.3085C22.2998 1.36754 22.3785 1.42658 22.4179 1.50531C22.4573 1.56435 22.4967 1.66275 22.4967 1.76115V2.13508C22.4967 2.29253 22.4376 2.39093 22.3195 2.39093C22.2604 2.39093 22.1619 2.35157 22.0241 2.29253C21.5711 2.09572 21.0788 1.97764 20.5077 1.97764C20.0547 1.97764 19.7002 2.05636 19.4639 2.19413C19.2276 2.33189 19.0897 2.56806 19.0897 2.90263C19.0897 3.11911 19.1685 3.31592 19.326 3.45368C19.4836 3.61113 19.779 3.74889 20.1926 3.88665L21.3151 4.2409C21.8862 4.41803 22.2998 4.67388 22.5361 4.98876C22.7724 5.30365 22.8906 5.67758 22.8906 6.09088C22.8906 6.42545 22.8118 6.74033 22.6936 6.99618C22.5558 7.27171 22.3589 7.50788 22.1225 7.685C21.8862 7.88181 21.5908 8.01957 21.256 8.11797C20.8621 8.27542 20.488 8.31478 20.0941 8.31478Z" fill="white"/>
<g id="Group_2">
<path id="Vector_2" fill-rule="evenodd" clip-rule="evenodd" d="M21.5908 12.1525C18.9912 14.0615 15.2101 15.0849 11.9803 15.0849C7.43108 15.0849 3.33481 13.4121 0.242906 10.6174C0.00658259 10.4009 0.223213 10.1057 0.518617 10.2632C3.86653 12.2115 7.9825 13.3727 12.256 13.3727C15.1313 13.3727 18.302 12.7823 21.2166 11.5424C21.6302 11.3653 22.0044 11.8376 21.5908 12.1525Z" fill="#FF9900"/>
<path id="Vector_3" fill-rule="evenodd" clip-rule="evenodd" d="M22.6543 10.9324C22.3195 10.4994 20.4683 10.7356 19.6214 10.834C19.3654 10.8734 19.326 10.6372 19.5624 10.4798C21.0394 9.43669 23.4814 9.7319 23.7571 10.0861C24.0328 10.4404 23.6783 12.8808 22.2998 14.0419C22.0831 14.2191 21.8862 14.1207 21.9847 13.8845C22.2998 13.0973 22.989 11.3457 22.6543 10.9324Z" fill="#FF9900"/>
</g>
</g>
<g id="Group_3">
<path id="Vector_4" d="M6.82058 6.05151C6.82058 6.34672 6.85997 6.58289 6.89935 6.76001C6.95843 6.93714 7.03721 7.11426 7.15537 7.33075C7.19476 7.38979 7.21445 7.44883 7.21445 7.50788C7.21445 7.5866 7.17506 7.66532 7.0569 7.74404L6.56456 8.07861C6.48579 8.11797 6.42671 8.15733 6.36762 8.15733C6.28885 8.15733 6.21008 8.11797 6.1313 8.03925C6.01314 7.92117 5.93437 7.80308 5.85559 7.66532C5.77682 7.52756 5.69804 7.38979 5.61927 7.19299C5.00876 7.92117 4.24071 8.27542 3.29542 8.27542C2.62584 8.27542 2.1138 8.07861 1.71993 7.70468C1.32606 7.33075 1.12912 6.81906 1.12912 6.18928C1.12912 5.52014 1.36544 4.96908 1.83809 4.57547C2.31074 4.18186 2.96063 3.96538 3.76807 3.96538C4.04378 3.96538 4.31949 3.98506 4.5952 4.02442C4.8906 4.06378 5.18601 4.12282 5.50111 4.20154V3.63081C5.50111 3.04039 5.38294 2.60742 5.12693 2.37125C4.87091 2.13508 4.45734 2.017 3.84684 2.017C3.57113 2.017 3.29542 2.05636 3.00001 2.1154C2.70461 2.19413 2.4289 2.27285 2.15319 2.39093C2.03503 2.43029 1.93656 2.46965 1.87748 2.48933C1.8184 2.48933 1.77901 2.50901 1.75932 2.50901C1.64115 2.50901 1.60177 2.43029 1.60177 2.27285V1.87924C1.60177 1.76115 1.62146 1.66275 1.66085 1.60371C1.70024 1.54467 1.77901 1.48563 1.87748 1.44626C2.15319 1.3085 2.48798 1.19042 2.86216 1.09201C3.25603 0.993612 3.6499 0.93457 4.08316 0.93457C5.02846 0.93457 5.69804 1.15106 6.15099 1.56435C6.58425 1.99732 6.80088 2.6271 6.80088 3.51272L6.82058 6.05151ZM3.63021 7.25203C3.88623 7.25203 4.16194 7.21267 4.43765 7.11426C4.71336 7.01586 4.96938 6.83874 5.18601 6.60257C5.30417 6.44513 5.40264 6.28768 5.46172 6.09088C5.50111 5.89407 5.54049 5.67758 5.54049 5.40206V5.06749C5.30417 5.00845 5.06785 4.96908 4.81183 4.92972C4.55581 4.89036 4.31949 4.89036 4.06347 4.89036C3.53174 4.89036 3.15756 4.98876 2.88185 5.20525C2.62584 5.42174 2.48798 5.71695 2.48798 6.11056C2.48798 6.48449 2.58645 6.76001 2.78338 6.93714C2.98032 7.17331 3.25603 7.25203 3.63021 7.25203ZM9.95187 8.11797C9.81401 8.11797 9.71554 8.09829 9.65646 8.03925C9.59738 7.99989 9.5383 7.88181 9.49891 7.72436L7.64771 1.62339C7.60832 1.46595 7.56894 1.36754 7.56894 1.3085C7.56894 1.19042 7.62802 1.1117 7.76587 1.1117H8.53392C8.69147 1.1117 8.78994 1.13138 8.84902 1.19042C8.9081 1.22978 8.96718 1.34786 9.00657 1.50531L10.326 6.72065L11.547 1.50531C11.5864 1.34786 11.6258 1.24946 11.7046 1.19042C11.7637 1.15106 11.8818 1.1117 12.0197 1.1117H12.6499C12.8074 1.1117 12.9059 1.13138 12.965 1.19042C13.0241 1.22978 13.0832 1.34786 13.1225 1.50531L14.3632 6.7797L15.7221 1.50531C15.7615 1.34786 15.8206 1.24946 15.8796 1.19042C15.9387 1.15106 16.0372 1.1117 16.1947 1.1117H16.9234C17.0416 1.1117 17.1203 1.17074 17.1203 1.3085C17.1203 1.34786 17.1203 1.38722 17.1007 1.42658C17.1007 1.46595 17.081 1.54467 17.0416 1.62339L15.1313 7.72436C15.0919 7.88181 15.0328 7.98021 14.9737 8.03925C14.9147 8.07861 14.8162 8.11797 14.6783 8.11797H14.0088C13.8512 8.11797 13.7527 8.09829 13.6937 8.03925C13.6346 7.98021 13.5755 7.88181 13.5361 7.72436L12.3151 2.64678L11.0941 7.72436C11.0547 7.88181 11.0153 7.98021 10.9365 8.03925C10.8775 8.09829 10.7593 8.11797 10.6214 8.11797H9.95187ZM20.0941 8.31478C19.6805 8.31478 19.267 8.27542 18.8731 8.17702C18.4792 8.07861 18.1641 7.98021 17.9672 7.86213C17.849 7.7834 17.7505 7.70468 17.7308 7.64564C17.7112 7.5866 17.6718 7.4882 17.6718 7.42915V7.03554C17.6718 6.8781 17.7308 6.79938 17.849 6.79938C17.8884 6.79938 17.9475 6.79938 17.9869 6.81906C18.0263 6.83874 18.105 6.85842 18.1838 6.89778C18.4595 7.01586 18.7352 7.11426 19.0503 7.17331C19.3654 7.23235 19.6805 7.27171 19.9956 7.27171C20.488 7.27171 20.8818 7.19299 21.1378 7.01586C21.4136 6.83874 21.5514 6.58289 21.5514 6.268C21.5514 6.05151 21.4726 5.87439 21.3348 5.71695C21.1969 5.5595 20.9212 5.44142 20.547 5.30365L19.4048 4.9494C18.8337 4.77228 18.4004 4.49675 18.1444 4.1425C17.8884 3.78825 17.7505 3.41432 17.7505 3.00103C17.7505 2.66646 17.8293 2.37125 17.9672 2.13508C18.105 1.89892 18.302 1.66275 18.5383 1.48563C18.7746 1.3085 19.0503 1.17074 19.3654 1.07233C19.6805 0.973931 20.0153 0.93457 20.3501 0.93457C20.5273 0.93457 20.7046 0.93457 20.8818 0.973931C21.0591 0.993612 21.2363 1.03297 21.3939 1.05265C21.5514 1.09201 21.709 1.13138 21.8468 1.17074C21.9847 1.2101 22.1028 1.26914 22.1816 1.3085C22.2998 1.36754 22.3785 1.42658 22.4179 1.50531C22.4573 1.56435 22.4967 1.66275 22.4967 1.76115V2.13508C22.4967 2.29253 22.4376 2.39093 22.3195 2.39093C22.2604 2.39093 22.1619 2.35157 22.0241 2.29253C21.5711 2.09572 21.0788 1.97764 20.5077 1.97764C20.0547 1.97764 19.7002 2.05636 19.4639 2.19413C19.2276 2.33189 19.0897 2.56806 19.0897 2.90263C19.0897 3.11911 19.1685 3.31592 19.326 3.45368C19.4836 3.61113 19.779 3.74889 20.1926 3.88665L21.3151 4.2409C21.8862 4.41803 22.2998 4.67388 22.5361 4.98876C22.7724 5.30365 22.8906 5.67758 22.8906 6.09088C22.8906 6.42545 22.8118 6.74033 22.6936 6.99618C22.5558 7.27171 22.3589 7.50788 22.1225 7.685C21.8862 7.88181 21.5908 8.01957 21.256 8.11797C20.8621 8.27542 20.488 8.31478 20.0941 8.31478Z" fill="white"/>
<g id="Group_4">
<path id="Vector_5" fill-rule="evenodd" clip-rule="evenodd" d="M21.5908 12.1525C18.9912 14.0615 15.2101 15.0849 11.9803 15.0849C7.43108 15.0849 3.33481 13.4121 0.242906 10.6174C0.00658259 10.4009 0.223213 10.1057 0.518617 10.2632C3.86653 12.2115 7.9825 13.3727 12.256 13.3727C15.1313 13.3727 18.302 12.7823 21.2166 11.5424C21.6302 11.3653 22.0044 11.8376 21.5908 12.1525Z" fill="#FF9900"/>
<path id="Vector_6" fill-rule="evenodd" clip-rule="evenodd" d="M22.6543 10.9324C22.3195 10.4994 20.4683 10.7356 19.6214 10.834C19.3654 10.8734 19.326 10.6372 19.5624 10.4798C21.0394 9.43669 23.4814 9.7319 23.7571 10.0861C24.0328 10.4404 23.6783 12.8808 22.2998 14.0419C22.0831 14.2191 21.8862 14.1207 21.9847 13.8845C22.2998 13.0973 22.989 11.3457 22.6543 10.9324Z" fill="#FF9900"/>
</g>
</g>
</g>
<defs>
<clipPath id="clip0_2552_26387">
<rect width="23.7111" height="14.17" fill="white" transform="translate(0.14444 0.915039)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="none">
<path fill="#252F3E" d="M4.51 7.687c0 .197.02.357.058.475.042.117.096.245.17.384a.233.233 0 01.037.123c0 .053-.032.107-.1.16l-.336.224a.255.255 0 01-.138.048c-.054 0-.107-.026-.16-.074a1.652 1.652 0 01-.192-.251 4.137 4.137 0 01-.165-.315c-.415.491-.936.737-1.564.737-.447 0-.804-.129-1.064-.385-.261-.256-.394-.598-.394-1.025 0-.454.16-.822.484-1.1.325-.278.756-.416 1.304-.416.18 0 .367.016.564.042.197.027.4.07.612.118v-.39c0-.406-.085-.689-.25-.854-.17-.166-.458-.246-.868-.246-.186 0-.377.022-.574.07a4.23 4.23 0 00-.575.181 1.525 1.525 0 01-.186.07.326.326 0 01-.085.016c-.075 0-.112-.054-.112-.166v-.262c0-.085.01-.15.037-.186a.399.399 0 01.15-.113c.185-.096.409-.176.67-.24.26-.07.537-.101.83-.101.633 0 1.096.144 1.394.432.293.288.442.726.442 1.314v1.73h.01zm-2.161.811c.175 0 .356-.032.548-.096.191-.064.362-.182.505-.342a.848.848 0 00.181-.341c.032-.129.054-.283.054-.465V7.03a4.43 4.43 0 00-.49-.09 3.996 3.996 0 00-.5-.033c-.357 0-.618.07-.793.214-.176.144-.26.347-.26.614 0 .25.063.437.196.566.128.133.314.197.559.197zm4.273.577c-.096 0-.16-.016-.202-.054-.043-.032-.08-.106-.112-.208l-1.25-4.127a.938.938 0 01-.049-.214c0-.085.043-.133.128-.133h.522c.1 0 .17.016.207.053.043.032.075.107.107.208l.894 3.535.83-3.535c.026-.106.058-.176.1-.208a.365.365 0 01.214-.053h.425c.102 0 .17.016.213.053.043.032.08.107.101.208l.841 3.578.92-3.578a.458.458 0 01.107-.208.346.346 0 01.208-.053h.495c.085 0 .133.043.133.133 0 .027-.006.054-.01.086a.76.76 0 01-.038.133l-1.283 4.127c-.032.107-.069.177-.111.209a.34.34 0 01-.203.053h-.457c-.101 0-.17-.016-.213-.053-.043-.038-.08-.107-.101-.214L8.213 5.37l-.82 3.439c-.026.107-.058.176-.1.213-.043.038-.118.054-.213.054h-.458zm6.838.144a3.51 3.51 0 01-.82-.096c-.266-.064-.473-.134-.612-.214-.085-.048-.143-.101-.165-.15a.378.378 0 01-.031-.149v-.272c0-.112.042-.166.122-.166a.3.3 0 01.096.016c.032.011.08.032.133.054.18.08.378.144.585.187.213.042.42.064.633.064.336 0 .596-.059.777-.176a.575.575 0 00.277-.508.52.52 0 00-.144-.373c-.095-.102-.276-.193-.537-.278l-.772-.24c-.388-.123-.676-.305-.851-.545a1.275 1.275 0 01-.266-.774c0-.224.048-.422.143-.593.096-.17.224-.32.384-.438.16-.122.34-.213.553-.277.213-.064.436-.091.67-.091.118 0 .24.005.357.021.122.016.234.038.346.06.106.026.208.052.303.085.096.032.17.064.224.096a.46.46 0 01.16.133.289.289 0 01.047.176v.251c0 .112-.042.171-.122.171a.552.552 0 01-.202-.064 2.427 2.427 0 00-1.022-.208c-.303 0-.543.048-.708.15-.165.1-.25.256-.25.475 0 .149.053.277.16.379.106.101.303.202.585.293l.756.24c.383.123.66.294.825.513.165.219.244.47.244.748 0 .23-.047.437-.138.619a1.436 1.436 0 01-.388.47c-.165.133-.362.23-.591.299-.24.075-.49.112-.761.112z"/>
<g fill="#F90" fill-rule="evenodd" clip-rule="evenodd">

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

@@ -0,0 +1 @@
<svg width="2207" height="2500" viewBox="0 0 256 290" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid"><path d="M256 199.305l-127.957-18.797L0 199.329l128.01 47.439L256 199.305" fill="#B7CA9D"/><path d="M25.621 197.113l21.63 6.761 1.971-2.238V50.284l-1.971-2.585-21.63 8.274v141.14" fill="#4B612C"/><path d="M123.832 190.423l-76.581 13.451V47.703l76.581 17.222v125.498" fill="#759C3E"/><path d="M89.686 216.889l-29.848-9.201V14.928L89.686.004l2.612 2.845v210.858l-2.612 3.182" fill="#4B612C"/><path d="M191.967 192.894L89.686 216.889V0l102.281 39.866v153.028" fill="#759C3E"/><path d="M127.965 244.714L0 199.329v26.324l127.965 63.983v-44.922" fill="#4B612C"/><path d="M256 225.622l-128.035 64.014v-44.922L256 199.305v26.317" fill="#759C3E"/><path d="M220.039 155.692h-31.026l-88.445 6.026L128 166.775l92.039-11.083" fill="#B7CA9D"/><path d="M100.568 219.906l27.42 8.226.789-.849-.023-61.849-.789-.758-27.397-2.958v58.188" fill="#4B612C"/><path d="M220.039 155.692l-92.074 8.98.023 63.46 92.051-27.711v-44.729" fill="#759C3E"/></svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" [
<!ENTITY ns_svg "http://www.w3.org/2000/svg">
<!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
]>
<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="504.09" height="215.994"
viewBox="0 0 504.09 215.994" overflow="visible" enable-background="new 0 0 504.09 215.994" xml:space="preserve">
<path fill="#092E20" d="M504.09,187.994c0,15.464-12.536,28-28,28H28c-15.464,0-28-12.536-28-28V28C0,12.536,12.536,0,28,0h448.09
c15.464,0,28,12.536,28,28V187.994z"/>
<g>
<g>
<path fill="#FFFFFF" d="M86.945,33.919h23.872v110.496c-12.246,2.325-21.237,3.255-31.002,3.255
c-29.142,0-44.333-13.174-44.333-38.443c0-24.336,16.122-40.147,41.078-40.147c3.875,0,6.82,0.311,10.386,1.239V33.919z
M86.945,89.539c-2.79-0.929-5.115-1.239-8.06-1.239c-12.091,0-19.067,7.441-19.067,20.46c0,12.713,6.666,19.688,18.912,19.688
c2.634,0,4.805-0.155,8.215-0.618V89.539z"/>
<path fill="#FFFFFF" d="M148.793,70.783v55.341c0,19.065-1.395,28.21-5.58,36.117c-3.876,7.596-8.992,12.399-19.532,17.67
l-22.167-10.541c10.541-4.96,15.656-9.297,18.911-15.966c3.411-6.819,4.497-14.727,4.497-35.498V70.783H148.793z M124.922,34.046
h23.871v24.493h-23.871V34.046z"/>
<path fill="#FFFFFF" d="M163.212,76.209c10.542-4.961,20.617-7.13,31.623-7.13c12.246,0,20.306,3.255,23.872,9.611
c2.014,3.564,2.634,8.214,2.634,18.137v48.517c-10.697,1.552-24.182,2.636-34.102,2.636c-19.996,0-28.988-6.977-28.988-22.476
c0-16.744,11.936-24.493,41.234-26.975v-5.271c0-4.339-2.17-5.888-8.216-5.888c-8.835,0-18.756,2.479-28.058,7.285V76.209z
M200.57,114.187c-15.812,1.552-20.927,4.031-20.927,10.231c0,4.65,2.946,6.821,9.456,6.821c3.566,0,6.82-0.311,11.471-1.084
V114.187z"/>
<path fill="#FFFFFF" d="M232.968,74.505c14.105-3.722,25.731-5.426,37.512-5.426c12.246,0,21.082,2.788,26.354,8.216
c4.96,5.113,6.509,10.693,6.509,22.632v46.813h-23.871v-45.884c0-9.145-3.1-12.557-11.625-12.557c-3.255,0-6.2,0.311-11.007,1.706
v56.734h-23.871V74.505z"/>
<path fill="#FFFFFF" d="M312.623,159.761c8.372,4.339,16.742,6.354,25.577,6.354c15.655,0,22.321-6.354,22.321-21.546
c0-0.154,0-0.31,0-0.467c-4.65,2.326-9.301,3.257-15.5,3.257c-20.927,0-34.26-13.797-34.26-35.652
c0-27.128,19.688-42.473,54.564-42.473c10.232,0,19.688,1.084,31.159,3.407l-8.174,17.222c-6.356-1.241-0.509-0.167-5.312-0.632
v2.48l0.309,10.074l0.154,13.022c0.155,3.253,0.155,6.51,0.311,9.764c0,2.945,0,4.342,0,6.512c0,20.462-1.705,30.073-6.82,37.977
c-7.441,11.627-20.307,17.362-38.598,17.362c-9.301,0-17.36-1.396-25.732-4.651V159.761z M360.057,88.455c-0.31,0-0.619,0-0.774,0
h-1.706c-4.649-0.155-10.074,1.084-13.796,3.409c-5.734,3.257-8.681,9.146-8.681,17.518c0,11.937,5.892,18.756,16.432,18.756
c3.255,0,5.891-0.62,8.99-1.55v-1.705v-6.51c0-2.79-0.154-5.892-0.154-9.146l-0.154-11.006l-0.156-7.905V88.455z"/>
<path fill="#FFFFFF" d="M433.543,68.77c23.871,0,38.443,15.037,38.443,39.371c0,24.957-15.19,40.613-39.373,40.613
c-23.873,0-38.599-15.036-38.599-39.216C394.015,84.424,409.207,68.77,433.543,68.77z M433.076,129.533
c9.147,0,14.573-7.596,14.573-20.773c0-13.019-5.271-20.771-14.415-20.771c-9.457,0-14.884,7.598-14.884,20.771
C418.351,121.938,423.777,129.533,433.076,129.533z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

@@ -0,0 +1,7 @@
<svg width="456" height="456" viewBox="0 0 456 456" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="456" height="456" fill="#512BD4"/>
<path d="M81.2738 291.333C78.0496 291.333 75.309 290.259 73.052 288.11C70.795 285.906 69.6665 283.289 69.6665 280.259C69.6665 277.173 70.795 274.529 73.052 272.325C75.309 270.121 78.0496 269.019 81.2738 269.019C84.5518 269.019 87.3193 270.121 89.5763 272.325C91.887 274.529 93.0424 277.173 93.0424 280.259C93.0424 283.289 91.887 285.906 89.5763 288.11C87.3193 290.259 84.5518 291.333 81.2738 291.333Z" fill="white"/>
<path d="M210.167 289.515H189.209L133.994 202.406C132.597 200.202 131.441 197.915 130.528 195.546H130.044C130.474 198.081 130.689 203.508 130.689 211.827V289.515H112.149V171H134.477L187.839 256.043C190.096 259.57 191.547 261.994 192.192 263.316H192.514C191.977 260.176 191.708 254.859 191.708 247.365V171H210.167V289.515Z" fill="white"/>
<path d="M300.449 289.515H235.561V171H297.87V187.695H254.746V221.249H294.485V237.861H254.746V272.903H300.449V289.515Z" fill="white"/>
<path d="M392.667 187.695H359.457V289.515H340.272V187.695H307.143V171H392.667V187.695Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 70 80" fill="#fff" fill-rule="evenodd" width="2188" height="2500"><style>.B{fill:#f58536}.C{fill:#9d5025}</style><use xlink:href="#A" x="2.188" y="2.5"/><symbol id="A" overflow="visible"><path d="M3.51 14.898L0 16.56v46.88l3.51 1.662L17.423 40 3.51 14.898z" class="C"/><path d="M11.694 63.285L3.51 65.102V14.898l8.183 1.77v46.618z" class="B"/><path d="M7.382 13.06l4.312-2.03L21.9 40 11.694 68.97l-4.312-2.03V13.06z" class="C"/><path d="M21.9 66.24l-10.205 2.73V11.03L21.9 13.77v52.47z" class="B"/><path d="M16.5 8.747l5.4-2.556L55.616 40 21.9 73.8l-5.4-2.546V8.747z" class="C"/><path d="M58.357 61.03L21.9 73.8V6.19l36.458 12.614V61.03z" class="B"/><path d="M53.634 33.693l-6.807.418-18.82-1.506L35 0l18.645 33.693z" fill="#6b3a19"/><path d="M35 31.934V0l-6.982 3.304v29.3l6.982-.67z" class="C"/><path d="M53.635 33.693V8.824L35 0v31.934l18.645 1.76z" class="B"/><path d="M53.634 46.094l-6.448-.39-19.18 1.536L35 80l18.645-33.907z" fill="#fbbf93"/><path d="M28.008 47.24v29.465L35 80V47.842l-6.982-.602z" class="C"/><path d="M35 47.842V80l18.645-8.824V46.093L35 47.842z" class="B"/><path d="M70 44.558l-4.004-.156-10.38.865L60 68.163l10-23.605z" fill="#fbbf93"/><path d="M60 45.49v22.672l10-4.733V44.558l-10 .933z" class="B"/><path d="M70 35.248l-4.004.155-10.38-.875L60 11.837l10 23.41z" fill="#6b3a19"/><path d="M70 35.248V16.57l-10-4.733v22.46l10 .952z" class="B"/><path d="M55.616 67.065L60 68.163V45.5l-4.394-.224v21.798zm0-54.13L60 11.837v22.46l-4.394.233V12.935z" class="C"/></symbol></svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.3 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="64" height="64"><path d="M32 24.795c-1.164.296-1.884.013-2.53-.957l-4.594-6.356-.664-.88-5.365 7.257c-.613.873-1.256 1.253-2.4.944l6.87-9.222-6.396-8.33c1.1-.214 1.86-.105 2.535.88l4.765 6.435 4.8-6.4c.615-.873 1.276-1.205 2.38-.883l-2.48 3.288-3.36 4.375c-.4.5-.345.842.023 1.325L32 24.795zM.008 15.427l.562-2.764C2.1 7.193 8.37 4.92 12.694 8.3c2.527 1.988 3.155 4.8 3.03 7.95H1.48c-.214 5.67 3.867 9.092 9.07 7.346 1.825-.613 2.9-2.042 3.438-3.83.273-.896.725-1.036 1.567-.78-.43 2.236-1.4 4.104-3.45 5.273-3.063 1.75-7.435 1.184-9.735-1.248C1 21.6.434 19.812.18 17.9c-.04-.316-.12-.617-.18-.92q.008-.776.008-1.552zm1.498-.38h12.872c-.084-4.1-2.637-7.012-6.126-7.037-3.83-.03-6.58 2.813-6.746 7.037z"/></svg>

After

Width:  |  Height:  |  Size: 777 B

View File

@@ -0,0 +1 @@
<svg height="376pt" viewBox="31 16.6 309.2 337.4" width="376pt" xmlns="http://www.w3.org/2000/svg"><g fill="#f0ad4e"><path d="m65.9 24.7c-23.2 24-34.9 48.2-34.9 72.3 0 5.5.4 10.2 1 10.5s1 1.6 1 2.8c0 2.8 2.4 9.7 5.6 16.2 4.2 8.7 10.3 14.8 26.9 26.8 13 9.4 20.2 20 22.6 33.4l1.3 7.2 3.6-1.5c9.1-3.9 16.1-5.3 37-7.5 13.4-1.4 18.6-3.4 24.8-9.5 8.8-8.8 4.6-14.5-22.9-30.8-29.6-17.6-40.2-25.8-51.7-40.1-9.2-11.5-13.9-21-16.2-32.8-2.2-11 .8-28.4 7.5-44 1.9-4.6 3.5-8.6 3.5-9 0-2.1-3.3.1-9.1 6z"/><path d="m332.5 32.8c-.5.4-1.8 2.4-2.7 4.4-5.8 12.4-25 24.1-55.3 33.5-2.7.9-7.5 2.3-10.5 3.3-3 .9-8.9 2.8-13 4-50.9 15.5-59.8 23.5-78 69.5-8.2 20.6-12.5 27.5-21 33.1-7.1 4.8-12.9 6.4-29 8.4-25.6 3.1-35.5 6.1-43.5 13.2-4.9 4.2-6.5 8.6-6.5 17.4 0 4-.4 7.5-.8 7.8-.5.3-1.4 3-2.1 6.1-1 4.2-1 6.3-.1 9 1.4 4.1 5.3 7.5 8.8 7.5 2.5 0 2.6-.7.7-5.2-.4-1.1.2-2.5 1.9-4.3 2.2-2.2 3.3-2.5 10.1-2.5 7.8 0 10.4-.8 14.1-4.2 2.1-1.9 2.2-1.9 5 1.2 5.9 6.5 21.3 15.7 40.5 24.3 9.1 4.1 14.8 9 19.1 16.6 2.9 5 3.3 6.4 3.3 13.6 0 11.7-4.2 19.7-12.4 23.5-1.4.7-3.4 1.6-4.3 2.1-1 .5-4.7.9-8.3.9h-6.5l-2.1 4.7c-1.2 2.7-2.7 6-3.5 7.4-1.1 2.2-1.1 2.9 0 4.5 1.3 1.7 1.7 1.5 6.5-3.4 5-5.1 8.1-6.6 8.1-3.8 0 .8-1.8 2.8-3.9 4.5-4.9 3.9-5.6 6.7-3.3 13.3 1.9 5.4 4.4 7 5 3.3.2-1.1 1.7-3.3 3.3-4.9 1.6-1.5 2.9-3.4 2.9-4.1s.7-1.8 1.5-2.5c2.2-1.8 3.1 1.4 1.7 6.4-.9 3.4-.8 4.4.5 5.8 1 1.1 1.3 2.6.9 4.3-.4 1.8-.2 2.5.7 2.5 1.4 0 4.7-3.1 4.7-4.4 0-.4.9-2.1 2.1-3.7 2.1-3 2.2-3.6.3-14.2-.3-2-.2-3.7.2-3.7 2.1 0 9.3 4.6 9.7 6.2.7 2.6 3.7 1.1 3.7-1.9 0-3.8-2.7-8-6-9.5-3.3-1.4-3.9-3.6-1.2-4.4 6.3-2 12.2-5.6 17.5-10.9 6.4-6.2 7.5-7.5 11.6-13.5 5.7-8.3 11-12 17.1-12 8.4 0 34.8 11.8 55.2 24.7 9.5 6 28.1 19 31.2 21.8.6.6 4 3.1 7.6 5.7 3.6 2.5 9.8 7.3 13.8 10.7 4 3.3 7.6 6.1 8 6.1 3.3 0 4.4-8.6 1.5-11.2-1-.8-4.5-3-7.8-4.8-7.3-4.1-21.4-13.6-27.5-18.7-13.8-11.3-31.4-33.4-43.1-54.1-1.1-1.7-2.8-4.8-3.9-6.8-8.4-14.7-24.4-33.4-28.7-33.4-1.7 0-1.7-.1 1-13 .8-4.1 2-11.1 2.6-15.5 1.8-12.2 4.4-26.1 6.3-33 5.4-20.3 16.9-34.4 37.8-46.2 29.3-16.7 41-27 49.4-43.7 4.5-8.9 5.4-11.1 8.1-21.1 1.4-5.1 3.1-17.5 2.4-17.5-.2 0-.8.4-1.4.8z"/><path d="m159.5 269.3c-.2.7-.5 3.2-.8 5.8-.6 7-5.3 16.3-10.7 21.3-6.5 6.1-10.5 8-13.9 6.7-1.4-.5-5.4-1.3-8.8-1.6-5-.6-6.8-.3-9.2 1.1-2.6 1.5-3.1 2.5-3.1 5.6 0 4.4-.1 4.3 3.6 2.3 1.6-.8 3.5-1.5 4.2-1.5 2.1 0 1.3 2-1.3 3.2-2.9 1.3-3.7 3.8-3.9 11.6-.1 5.9 1.7 8.2 3.3 4 .5-1.3 2.4-3.1 4.2-4.1 1.9-1 4.5-3.6 5.9-5.7 2.6-4.4 4-5.1 4-2.1 0 6.4 3.3 6.7 6.1.5 1.7-3.4 2.6-4.3 3.8-3.8 3.3 1.4 7.2 1.6 8.6.4s1.3-1.6-.6-3.6c-1.2-1.3-2.1-2.5-1.8-2.7 2.2-1.6 7-2.7 11.9-2.7 8.8 0 10-1.5 10-12.8 0-11.5-3-19.7-7.9-21.8-2.5-1-3.3-1.1-3.6-.1zm80.5 21.5c0 .5 3.7 2.8 8.3 5.1 22.1 11.7 35.7 24.4 40.8 38.5 2.3 6.1 2.4 8.3.4 12.9-2.5 6.1-2.9 6 13.3 5.5 14.6-.5 23.2-2.1 23.2-4.4 0-1.1-12-12.4-16.4-15.3-1.2-.8-2.3-1.8-2.6-2.1s-2.3-1.9-4.5-3.6c-2.2-1.6-4.6-3.4-5.2-3.9-.7-.6-2.3-1.8-3.5-2.7-1.3-1-4.1-3.2-6.3-4.9s-5.6-4-7.5-5c-4.6-2.5-7.4-4.3-8-5-.7-.8-14.5-8.3-21-11.4-3-1.4-6.3-3-7.2-3.5-2.2-1.2-3.8-1.3-3.8-.2z"/></g></svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128"><path d="M56.813 127.586c-1.903-.227-3.899-.52-4.434-.652a48.078 48.078 0 00-2.375-.5 36.042 36.042 0 01-2.703-.633c-4.145-1.188-4.442-1.285-7.567-2.563-2.875-1.172-8.172-3.91-9.984-5.156-.496-.344-.96-.621-1.031-.621-.07 0-1.23-.816-2.578-1.813-8.57-6.343-15.004-14.043-19.653-23.527-.8-1.629-1.453-3.074-1.453-3.21 0-.134-.144-.505-.32-.817-.363-.649-.88-2.047-1.297-3.492a20.047 20.047 0 00-.625-1.813c-.195-.46-.352-1.02-.352-1.246 0-.227-.195-.965-.433-1.645-.238-.675-.43-1.472-.43-1.77 0-.296-.187-1.32-.418-2.276C.598 73.492 0 67.379 0 63.953c0-3.422.598-9.535 1.16-11.894.23-.957.418-2 .418-2.32 0-.321.145-.95.32-1.4.18-.448.41-1.253.516-1.788.11-.535.36-1.457.563-2.055l.59-1.726c.433-1.293.835-2.387 1.027-2.813.11-.238.539-1.21.957-2.16.676-1.535 2.125-4.43 2.972-5.945.309-.555.426-.739 2.098-3.352 2.649-4.148 7.176-9.309 11.39-12.988 1.485-1.297 6.446-5.063 6.669-5.063.062 0 .53-.281 1.043-.625 1.347-.902 2.668-1.668 4.39-2.531a53.06 53.06 0 001.836-.953c.285-.164.82-.41 3.567-1.64.605-.27 1.257-.516 3.136-1.173.414-.144 1.246-.449 1.84-.672.598-.222 1.301-.406 1.563-.406.258 0 .937-.18 1.508-.402.57-.223 1.605-.477 2.304-.563.696-.082 1.621-.277 2.055-.43.43-.148 1.61-.34 2.621-.425a72.572 72.572 0 003.941-.465c2.688-.394 8.532-.394 11.192 0a75.02 75.02 0 003.781.445c.953.079 2.168.278 2.703.442.535.16 1.461.36 2.055.433.594.079 1.594.325 2.222.551.63.23 1.344.414 1.59.414s.754.137 1.125.309c.375.168 1.168.449 1.766.625.594.18 1.613.535 2.27.797.652.261 1.527.605 1.945.761.77.29 6.46 3.137 7.234 3.622 6.281 3.917 9.512 6.476 13.856 10.964 5.238 5.414 8.715 10.57 12.254 18.16.25.536.632 1.329.851 1.758.215.434.395.942.395 1.13 0 .19.18.76.402 1.269.602 1.383 1.117 2.957 1.36 4.16.12.59.343 1.32.495 1.621.153.3.332 1.063.403 1.688.07.624.277 1.648.453 2.269 1.02 3.531 1.527 13.934.91 18.535-.183 1.367-.39 3.02-.46 3.672-.118 1.117-.708 4.004-1.212 5.945l-.52 2.055c-.98 3.957-3.402 9.594-6.359 14.809-1.172 2.07-5.101 7.668-5.843 8.324-.067.058-.399.45-.735.863-.336.418-1.414 1.586-2.39 2.594-4.301 4.441-7.77 7.187-13.86 10.969-.722.449-6.847 3.441-7.992 3.906-.594.238-1.586.64-2.203.89-.613.247-1.297.454-1.512.458-.215.003-.781.195-1.258.425-.476.23-1.082.422-1.351.426-.266.004-1.043.192-1.727.418-.683.23-1.633.477-2.11.55-.476.075-1.495.278-2.269.45-.773.172-3.11.508-5.187.746a59.06 59.06 0 01-13.945-.031zm4.703-12.5c.3-.234.609-.7.691-1.027.18-.723 29.234-58.97 29.781-59.7.461-.617.504-1.605.082-1.953-.222-.187-3.004-.246-10.43-.234-5.57.012-10.253.016-10.406.012-.226-.008-.273-3.73-.25-19.672.016-10.817-.035-19.766-.113-19.89-.078-.126-.383-.227-.68-.227-.418 0-.613.18-.87.808-.485 1.168-1.825 3.82-8.348 16.485a3554.569 3554.569 0 00-4.055 7.89c-1.156 2.262-2.98 5.813-4.047 7.89a8751.248 8751.248 0 00-8.598 16.759c-4.933 9.636-5.53 10.785-5.742 11.039-.41.496-.633 1.64-.402 2.07.21.394.629.41 11.043.394 5.953-.007 10.863.024 10.914.07.137.141.086 37.31-.055 38.196-.093.582-.031.89.235 1.156.46.461.586.457 1.25-.066zm0 0" fill="#049688"/></svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -0,0 +1,242 @@
<svg version="1.1" id="Layer_1" xmlns:x="ns_extend;" xmlns:i="ns_ai;" xmlns:graph="ns_graphs;" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 108.6 78" style="enable-background:new 0 0 108.6 78;" xml:space="preserve">
<style type="text/css">
.st0{fill:url(#SVGID_1_);}
.st1{fill:url(#SVGID_2_);}
.st2{opacity:0.8;fill:url(#SVGID_3_);enable-background:new ;}
.st3{opacity:0.8;fill:url(#SVGID_4_);enable-background:new ;}
.st4{opacity:0.8;fill:url(#SVGID_5_);enable-background:new ;}
.st5{fill:url(#SVGID_6_);}
.st6{opacity:0.8;fill:url(#SVGID_7_);enable-background:new ;}
.st7{opacity:0.3;fill:url(#SVGID_8_);enable-background:new ;}
.st8{opacity:0.3;fill:url(#SVGID_9_);enable-background:new ;}
.st9{opacity:0.3;fill:url(#SVGID_10_);enable-background:new ;}
.st10{opacity:0.3;fill:url(#SVGID_11_);enable-background:new ;}
.st11{fill:url(#SVGID_12_);}
.st12{opacity:0.3;fill:url(#SVGID_13_);enable-background:new ;}
.st13{opacity:0.8;fill:url(#SVGID_14_);enable-background:new ;}
.st14{fill:url(#SVGID_15_);}
.st15{fill:url(#SVGID_16_);}
.st16{fill:#282E38;}
</style>
<metadata>
<sfw xmlns="ns_sfw;">
<slices>
</slices>
<sliceSourceBounds bottomLeftOrigin="true" height="78" width="108.6" x="-147.2" y="2.8">
</sliceSourceBounds>
</sfw>
</metadata>
<g>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="110.5698" y1="70.9492" x2="2.0982" y2="62.3315" gradientTransform="matrix(1 0 0 -1 0 113.5125)">
<stop offset="0.2986" style="stop-color:#0097CE">
</stop>
<stop offset="0.3791" style="stop-color:#0999C5">
</stop>
<stop offset="0.5119" style="stop-color:#229DAD">
</stop>
<stop offset="0.6469" style="stop-color:#42A38F">
</stop>
<stop offset="0.7352" style="stop-color:#5DAD82">
</stop>
<stop offset="0.9239" style="stop-color:#A1C661">
</stop>
<stop offset="1" style="stop-color:#BED153">
</stop>
</linearGradient>
<path class="st0" d="M108.3,17.3c-2.5-0.4-8-0.5-18.9,1.8c-1.3,0.3-2.6,0.5-3.9,0.4c-1.4-0.2-2.9-0.5-4.2-0.9
c-6-2.1-10.9-1.4-13.8,0.1c-1.7,0.9-3.2,2.3-4.3,3.9c-1.8,2.5-5.6,10-10.7,12c-2.9,1.9-6,3.8-8.8,6.6c-1.7,1.8-2.2,6.1-6.8,10.3
c-4.5,6.7-10.2,12.5-16.9,17c-8.6,6.1-15.9,8-15.9,8s19.2,5.4,40.2-4.7c16-7.7,24.3-22.6,26.2-25.9L81,28c0.9-1.6,2.6-3.8,4.2-4.6
c0.5-0.3,1-0.5,1.1-0.6c1.2-0.6,2.4-1.1,3.6-1.5c7.3-2.7,14.9-2.9,18.4-3.3C108.7,17.9,108.7,17.4,108.3,17.3z">
</path>
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="-3.3872" y1="99.1067" x2="101.7764" y2="70.6323" gradientTransform="matrix(1 0 0 -1 0 113.5125)">
<stop offset="8.199000e-02" style="stop-color:#3D65AF">
</stop>
<stop offset="0.2305" style="stop-color:#2372B8">
</stop>
<stop offset="0.5058" style="stop-color:#00B8BB">
</stop>
</linearGradient>
<path class="st1" d="M108.3,17.3c-2.5-0.4-8-0.5-18.9,1.8c-1.3,0.3-2.6,0.5-3.9,0.4c-1.4-0.2-2.9-0.5-4.2-0.9
c-6.1-2.1-10.8-1.5-13.8,0.1c-1.7,0.9-3.2,2.3-4.3,3.9c-1.8,2.5-5.6,10-10.7,12c-5.8-5.5-10.9-10.2-15.8-14.3
c-2.8-2.2-5.5-4.4-7.8-5.9c-5.7-4-11.6-7.6-17.8-10.7C8.3,2.5,5.5,1.4,2.4,0.2C1.1-0.2,0.3,0.4,0.1,1.5C0,1.8-0.1,2.8,0.5,4.4
C2,8.6,3.9,12.6,6.1,16.5C7,18.1,8,19.7,9,21.4c4.9,7.8,10.6,15,17,21.4c1.3,1.3,2.6,2.5,4,3.6c1.7,1.4,3.4,2.7,5.2,3.9
c0.2,0.1,1,0.6,1.6,1c1.2,0.6,2.7,1.4,3.7,1.8c4,1.9,8.4,2.8,12.8,2.8c6.4,0.2,11.6-1.9,14.2-5.4c1.1-1.5,2.1-3,3-4.6L81,28
c0.9-1.6,2.6-3.8,4.2-4.6c0.5-0.3,1-0.5,1.1-0.6c1.1-0.5,1.1-0.4,2.3-0.8c7.4-2.7,16.3-3.6,19.8-4c0.1,0,0.1,0,0.2-0.1
c0.1-0.1,0.1-0.1,0.1-0.2c0-0.1,0-0.2-0.1-0.2C108.5,17.4,108.4,17.3,108.3,17.3z">
</path>
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="-4.240106e-02" y1="111.6313" x2="57.0864" y2="96.1629" gradientTransform="matrix(1 0 0 -1 0 113.5125)">
<stop offset="0.1297" style="stop-color:#000000">
</stop>
<stop offset="0.3277" style="stop-color:#00334B">
</stop>
<stop offset="0.5276" style="stop-color:#006190">
</stop>
<stop offset="0.6723" style="stop-color:#007FBB">
</stop>
<stop offset="0.7457" style="stop-color:#008ACC">
</stop>
</linearGradient>
<path class="st2" d="M0,2.1C0,2,0.1,1.8,0,1.7C0.1,1.8,0.1,2,0,2.1z">
</path>
<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="14.2865" y1="112.4456" x2="67.4928" y2="112.4456" gradientTransform="matrix(1 0 0 -1 0 113.5125)">
<stop offset="0.1297" style="stop-color:#000000">
</stop>
<stop offset="0.3277" style="stop-color:#00334B">
</stop>
<stop offset="0.5276" style="stop-color:#006190">
</stop>
<stop offset="0.6723" style="stop-color:#007FBB">
</stop>
<stop offset="0.7457" style="stop-color:#008ACC">
</stop>
</linearGradient>
<path class="st3" d="M4.9,1C4.8,1,4.7,0.9,4.6,1C4.8,1,4.9,1.1,5.1,1.2C5.1,1.1,5,1.1,4.9,1z">
</path>
<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="15.0621" y1="111.7076" x2="62.3568" y2="111.7076" gradientTransform="matrix(1 0 0 -1 0 113.5125)">
<stop offset="0.1297" style="stop-color:#000000">
</stop>
<stop offset="0.3277" style="stop-color:#00334B">
</stop>
<stop offset="0.5276" style="stop-color:#006190">
</stop>
<stop offset="0.6723" style="stop-color:#007FBB">
</stop>
<stop offset="0.7457" style="stop-color:#008ACC">
</stop>
</linearGradient>
<path class="st4" d="M6.7,1.8c-0.1,0-0.2-0.1-0.2-0.1c0.1,0.1,0.3,0.1,0.5,0.2C6.8,1.8,6.7,1.8,6.7,1.8z">
</path>
<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="5.8502" y1="99.4376" x2="54.3686" y2="86.3005" gradientTransform="matrix(1 0 0 -1 0 113.5125)">
<stop offset="0.1297" style="stop-color:#2483C5">
</stop>
<stop offset="0.1672" style="stop-color:#2486C7">
</stop>
<stop offset="0.676" style="stop-color:#29B1DF">
</stop>
<stop offset="0.9352" style="stop-color:#2BC2E8">
</stop>
</linearGradient>
<path class="st5" d="M40.7,35.7c3.9,0.6,8,0.2,11.7-1.2c-3.5-3.3-6.8-6.3-9.9-9c-1.6-1.4-3.1-2.7-4.5-3.9c-0.1-0.1-0.2-0.1-0.2-0.2
c-0.4-0.4-0.8-0.6-1.1-0.9c-0.1-0.1-0.2-0.2-0.2-0.2C33.7,18,31,16,28.8,14.4C22.9,10.3,17,6.5,11,3.7c-0.5-0.3-1-0.5-1.6-0.8
C9.2,2.8,9.1,2.8,8.9,2.7C32,15.4,39.4,26.9,40.7,35.7z">
</path>
<linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="9.0343" y1="108.5579" x2="56.3287" y2="108.5579" gradientTransform="matrix(1 0 0 -1 0 113.5125)">
<stop offset="0.1297" style="stop-color:#000000">
</stop>
<stop offset="0.3277" style="stop-color:#00334B">
</stop>
<stop offset="0.5276" style="stop-color:#006190">
</stop>
<stop offset="0.6723" style="stop-color:#007FBB">
</stop>
<stop offset="0.7457" style="stop-color:#008ACC">
</stop>
</linearGradient>
<path class="st6" d="M0.9,5.5C0.7,5.2,0.6,4.8,0.4,4.4C0.6,4.7,0.7,5.1,0.9,5.5z">
</path>
<linearGradient id="SVGID_8_" gradientUnits="userSpaceOnUse" x1="0" y1="111.2669" x2="5.794769e-02" y2="111.2669" gradientTransform="matrix(1 0 0 -1 0 113.5125)">
<stop offset="0" style="stop-color:#682C90">
</stop>
<stop offset="0.496" style="stop-color:#817CB9">
</stop>
<stop offset="1" style="stop-color:#FFFFFF">
</stop>
</linearGradient>
<path class="st7" d="M0,2.3c0-0.1,0-0.1,0.1-0.1C0.1,2.2,0.1,2.2,0,2.3z">
</path>
<linearGradient id="SVGID_9_" gradientUnits="userSpaceOnUse" x1="228.4462" y1="112.9745" x2="117.6531" y2="112.9745" gradientTransform="matrix(1 0 0 -1 0 113.5125)">
<stop offset="0" style="stop-color:#682C90">
</stop>
<stop offset="0.496" style="stop-color:#817CB9">
</stop>
<stop offset="1" style="stop-color:#FFFFFF">
</stop>
</linearGradient>
<path class="st8" d="M2.5,0.1C3.2,0.4,3.9,0.7,4.6,1C3.9,0.7,3.2,0.4,2.5,0.1z">
</path>
<linearGradient id="SVGID_10_" gradientUnits="userSpaceOnUse" x1="42.7481" y1="110.1772" x2="21.7874" y2="110.1772" gradientTransform="matrix(1 0 0 -1 0 113.5125)">
<stop offset="0" style="stop-color:#682C90">
</stop>
<stop offset="0.496" style="stop-color:#817CB9">
</stop>
<stop offset="1" style="stop-color:#FFFFFF">
</stop>
</linearGradient>
<path class="st9" d="M0,2.3C0,3,0.2,3.7,0.4,4.4C0.2,3.7,0,3,0,2.3z">
</path>
<linearGradient id="SVGID_11_" gradientUnits="userSpaceOnUse" x1="220.6359" y1="111.1786" x2="115.833" y2="111.1786" gradientTransform="matrix(1 0 0 -1 0 113.5125)">
<stop offset="0" style="stop-color:#682C90">
</stop>
<stop offset="0.496" style="stop-color:#817CB9">
</stop>
<stop offset="1" style="stop-color:#FFFFFF">
</stop>
</linearGradient>
<path class="st10" d="M8.6,2.6l0.3,0.2c-0.6-0.3-1.3-0.6-2-0.9C7.1,2,7.3,2.1,7.5,2.2C7.9,2.3,8.2,2.4,8.6,2.6z">
</path>
<linearGradient id="SVGID_12_" gradientUnits="userSpaceOnUse" x1="-3.6727" y1="91.1328" x2="42.6712" y2="78.5846" gradientTransform="matrix(1 0 0 -1 0 113.5125)">
<stop offset="0.1297" style="stop-color:#3B67AD">
</stop>
<stop offset="0.5697" style="stop-color:#227CAA">
</stop>
<stop offset="0.9352" style="stop-color:#118AA8">
</stop>
</linearGradient>
<path class="st11" d="M15.4,23.3C9.2,18.3,3.4,11.2,0.9,5.6c5.8,14.9,20.9,36,34.3,44.8c0.2,0.2,1,0.6,1.7,1
c1.7-2.7,4.9-8.3,3.8-15.7C32.4,34.6,23.5,30,15.4,23.3z">
</path>
<linearGradient id="SVGID_13_" gradientUnits="userSpaceOnUse" x1="133.4601" y1="112.0615" x2="70.578" y2="112.0615" gradientTransform="matrix(1 0 0 -1 0 113.5125)">
<stop offset="0" style="stop-color:#682C90">
</stop>
<stop offset="0.496" style="stop-color:#817CB9">
</stop>
<stop offset="1" style="stop-color:#FFFFFF">
</stop>
</linearGradient>
<path class="st12" d="M6.4,1.7L5.2,1.2c0.1,0,0.1,0.1,0.2,0.1C5.7,1.4,6,1.5,6.4,1.7z">
</path>
<linearGradient id="SVGID_14_" gradientUnits="userSpaceOnUse" x1="755.9692" y1="95.6936" x2="4900.1494" y2="95.6936" gradientTransform="matrix(1 0 0 -1 0 113.5125)">
<stop offset="0.1297" style="stop-color:#000000">
</stop>
<stop offset="0.3277" style="stop-color:#00334B">
</stop>
<stop offset="0.5276" style="stop-color:#006190">
</stop>
<stop offset="0.6723" style="stop-color:#007FBB">
</stop>
<stop offset="0.7457" style="stop-color:#008ACC">
</stop>
</linearGradient>
<path class="st13" d="M15.4,23.3c8.1,6.7,17,11.2,25.3,12.3C39.4,26.9,32,15.3,8.9,2.8c-0.1,0-0.2-0.1-0.3-0.2
c-0.3-0.2-0.7-0.3-1-0.5C7.4,2,7.2,2,7,1.8C6.8,1.8,6.7,1.7,6.5,1.7C6.1,1.5,5.8,1.3,5.4,1.2c-0.1,0-0.1-0.1-0.2-0.1
C5,1.1,4.9,1,4.7,1C4,0.7,3.3,0.4,2.6,0.1C1.2-0.3,0.5,0.4,0.2,1.4c0,0.1,0,0.2-0.1,0.4c-0.1,0.1,0,0.3,0,0.5c0,0.1,0,0.1-0.1,0.1
c0,0.7,0.2,1.4,0.4,2.1c0.1,0.4,0.3,0.8,0.5,1.2C3.4,11.2,9.3,18.3,15.4,23.3z">
</path>
<linearGradient id="SVGID_15_" gradientUnits="userSpaceOnUse" x1="-2.6385" y1="102.0505" x2="43.843" y2="89.4649" gradientTransform="matrix(1 0 0 -1 0 113.5125)">
<stop offset="0.1297" style="stop-color:#3A67B0">
</stop>
<stop offset="0.5622" style="stop-color:#357FBD">
</stop>
<stop offset="0.9352" style="stop-color:#3290C6">
</stop>
</linearGradient>
<path class="st14" d="M15.4,23.3c8.1,6.7,17,11.2,25.3,12.3C39.4,26.9,32,15.3,8.9,2.8c-0.1,0-0.2-0.1-0.3-0.2
c-0.3-0.2-0.7-0.3-1-0.5C7.4,2,7.2,2,7,1.8C6.8,1.8,6.7,1.7,6.5,1.7C6.1,1.5,5.8,1.3,5.4,1.2c-0.1,0-0.1-0.1-0.2-0.1
C5,1.1,4.9,1,4.7,1C4,0.7,3.3,0.4,2.6,0.1C1.2-0.3,0.5,0.4,0.2,1.4c0,0.1,0,0.2-0.1,0.4c-0.1,0.1,0,0.3,0,0.5c0,0.1,0,0.1-0.1,0.1
c0,0.7,0.2,1.4,0.4,2.1c0.1,0.4,0.3,0.8,0.5,1.2C3.4,11.2,9.3,18.3,15.4,23.3z">
</path>
<linearGradient id="SVGID_16_" gradientUnits="userSpaceOnUse" x1="56.1575" y1="92.6466" x2="104.2326" y2="79.6295" gradientTransform="matrix(1 0 0 -1 0 113.5125)">
<stop offset="0.1724" style="stop-color:#4E5CA8">
</stop>
<stop offset="0.9937" style="stop-color:#1FC3F3">
</stop>
</linearGradient>
<path class="st15" d="M108.3,17.3c-2.5-0.4-8-0.5-18.9,1.8c-1.3,0.3-2.6,0.5-3.9,0.4c-1.4-0.2-2.9-0.5-4.2-0.9
c-2.8-1-5.8-1.5-8.8-1.4c-2.1,0.1-4,0.8-5.7,2c-1.4,0.9-2.5,2.1-3.5,3.4c-1.8,2.5-5.6,10-10.7,12c4.1,3.9,10.3,7.1,16.2,5.2
c5.6-1.9,9.1-6.9,10.2-8.6c1.1-1.7,2.4-3.4,3.7-4.9c1.9-2,4.3-3.5,6.9-4.4c6.6-2.2,16.6-3.6,19-3.8
C108.7,17.9,108.7,17.4,108.3,17.3z">
</path>
<path class="st16" d="M75.9,25.5c1,0,1.7-0.8,1.7-1.8c0-1-0.8-1.8-1.7-1.8c-1,0-1.7,0.8-1.7,1.8C74.2,24.7,74.9,25.5,75.9,25.5z">
</path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -0,0 +1,91 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.2.1, 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 1274 1047" style="enable-background:new 0 0 1274 1047;" xml:space="preserve">
<style type="text/css">
.st0{fill:url(#SVGID_1_);}
.st1{fill:url(#SVGID_2_);}
.st2{fill:url(#SVGID_3_);}
.st3{fill:url(#SVGID_4_);}
.st4{fill:url(#SVGID_5_);}
.st5{fill:url(#SVGID_6_);}
.st6{fill:url(#SVGID_7_);}
.st7{fill:url(#SVGID_8_);}
.st8{fill:#FFFFFF;}
</style>
<g>
<g>
<g>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="21.0001" y1="1105.2095" x2="1258.6993" y2="1105.2095" gradientTransform="matrix(1 0 0 -1 0 1630)">
<stop offset="0" style="stop-color:#2A59A2"/>
<stop offset="1" style="stop-color:#2A59A2"/>
</linearGradient>
<path class="st0" d="M1252.1,450.3c-6.5,0-16.5,0-22.1,0c-40.2-0.5-117.3,3.8-187.2,64.2c-166.9,144.5-205,357.2-490.6,472
C314.3,1082.1,21,991.6,21,991.6s261.7-18.2,296.4-217.9c27.1-156.2-115-267.1-204.2-408C22.5,222.2-0.8,103,42.9,51.5
C166.8-94.8,508,300.7,677.4,354c165.8,52.1,277.7-68.9,415-51.1c43.8,5.6,65.2,24.5,79.4,48.6c4.8,8.1,16.6,35.7,27.1,45.9
c10.3,10,24,17.4,36.8,24.9C1252,431.9,1268.1,450.3,1252.1,450.3z"/>
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="-28.9755" y1="1316.5281" x2="1280.1417" y2="1316.5281" gradientTransform="matrix(1 0 0 -1 0 1630)">
<stop offset="0" style="stop-color:#91D3F2"/>
<stop offset="0.2664" style="stop-color:#6FB2DE"/>
<stop offset="0.5214" style="stop-color:#5598CE"/>
<stop offset="0.6729" style="stop-color:#4B8FC8"/>
</linearGradient>
<path class="st1" d="M468,221.5c-41-31.2-83.3-63.9-124.9-93.7l0,0c-9.4-6.7-18.8-13.3-28.1-19.7l0,0
C203.5,31.8,100.1-16,42.9,51.5C-0.8,103,22.5,222.2,113.3,365.7c0.9,1.5,1.9,2.9,2.8,4.4c47.3,73.2,184.5,244.7,509.7,237.4
c21.4-22.7,53.9-65.6,95.9-112.3C653.6,385.1,551,289.1,468,221.5z"/>
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="21.1001" y1="817.0737" x2="1267.8341" y2="817.0737" gradientTransform="matrix(1 0 0 -1 0 1630)">
<stop offset="0" style="stop-color:#2C9EC7"/>
<stop offset="0.4037" style="stop-color:#2C63A5"/>
<stop offset="1" style="stop-color:#395DA1"/>
</linearGradient>
<path class="st2" d="M795.8,738.9c1.3-48.8-7.6-96.9-24.5-143.4c-42.7,6.4-90.8,10.8-145.5,12C586,649.8,495.1,762.8,344.5,864.6
c-200.5,135.6-323.4,127-323.4,127s293.4,90.5,531.2-5.1c85.3-34.3,148.6-77.3,199.8-124.7C760.5,853.8,794,812,795.8,738.9z"/>
<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="21.0793" y1="1078.65" x2="1267.8134" y2="1078.65" gradientTransform="matrix(1 0 0 -1 0 1630)">
<stop offset="0" style="stop-color:#4FAAC4"/>
<stop offset="1.554530e-03" style="stop-color:#2F75B1"/>
<stop offset="1" style="stop-color:#356EAC"/>
</linearGradient>
<path class="st3" d="M721.8,495.2c-42,46.6-74.6,89.6-95.9,112.3c54.8-1.2,102.9-5.6,145.5-12c-5-13.9-10.8-27.6-17.2-41.1
C744.6,534.3,733.7,514.5,721.8,495.2z"/>
<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="467.9999" y1="1271.65" x2="1274.9838" y2="1271.65" gradientTransform="matrix(1 0 0 -1 0 1630)">
<stop offset="0" style="stop-color:#4FAAC4"/>
<stop offset="1.554530e-03" style="stop-color:#2F81B6"/>
<stop offset="1" style="stop-color:#3B5EA9"/>
</linearGradient>
<path class="st4" d="M965.6,318.3c-87.8,26.6-175.5,71.1-288.2,35.7c-55.8-17.5-130.3-72.2-209.4-132.5
c83,67.6,185.6,163.5,253.8,273.7C784,426.3,867,349.3,965.6,318.3z"/>
<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="467.9684" y1="962.7" x2="1274.9521" y2="962.7" gradientTransform="matrix(1 0 0 -1 0 1630)">
<stop offset="0" style="stop-color:#4FAAC4"/>
<stop offset="1.554530e-03" style="stop-color:#1E3773"/>
<stop offset="1" style="stop-color:#203370"/>
</linearGradient>
<path class="st5" d="M771.4,595.5c16.9,46.5,25.8,94.6,24.5,143.4c-1.9,73-35.4,114.8-43.8,122.9
c120.1-111.1,173.8-246,290.8-347.3c21.8-18.8,44.2-32.2,66.1-41.7h-0.1C1032.2,505,949,568.7,771.4,595.5z"/>
<linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="990.2508" y1="895.2981" x2="990.2508" y2="1337.8136" gradientTransform="matrix(1 0 0 -1 0 1630)">
<stop offset="0" style="stop-color:#4FAAC4"/>
<stop offset="1.554530e-03" style="stop-color:#2C5A9A"/>
<stop offset="1" style="stop-color:#374580"/>
</linearGradient>
<path class="st6" d="M1252.1,450.3c16,0-0.1-18.4-16.3-27.9c-12.8-7.6-26.5-15-36.8-24.9c-10.6-10.2-22.4-37.9-27.1-45.9
c-14.3-24.2-35.6-43-79.4-48.6c-44-5.7-85.4,2.9-126.8,15.4c-98.6,31-181.7,108-243.9,176.9c11.9,19.3,22.9,39,32.4,59.1
c6.4,13.6,12.2,27.3,17.2,41.1c177.7-26.8,260.8-90.5,337.5-122.7h0.1c48.3-21,93.5-22.9,121.1-22.5
C1235.7,450.3,1245.7,450.3,1252.1,450.3z"/>
<linearGradient id="SVGID_8_" gradientUnits="userSpaceOnUse" x1="-113.5052" y1="949.0955" x2="804.8284" y2="949.0955" gradientTransform="matrix(1 0 0 -1 0 1630)">
<stop offset="0.1115" style="stop-color:#38B1DA"/>
<stop offset="1" style="stop-color:#326FB5"/>
</linearGradient>
<path class="st7" d="M344.5,864.6C495.1,762.8,586,649.8,625.8,607.5c-325.2,7.3-462.4-164.2-509.7-237.4
C205.4,509,344.3,619.2,317.5,773.7C282.8,973.4,21.1,991.6,21.1,991.6S144,1000.2,344.5,864.6z"/>
<ellipse class="st8" cx="1083.4" cy="377.4" rx="26" ry="25.8"/>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="64" height="64"><g transform="matrix(.061615 0 0 .061615 -1.430818 -1.2754)"><defs><path id="A" d="M959.4 500L679.8 779.7l279.6 279.7H639.9L360.2 779.7 639.9 500h319.5zM639.9 20.7L120.6 540l159.8 159.8 679-679.1H639.9z"/></defs><clipPath id="B"><use xlink:href="#A"/></clipPath><g clip-path="url(#B)"><path d="M360.3 779.7L520 939.5 959.4 500H639.9z" fill="#39cefd"/></g><defs><path id="C" d="M959.4 500L679.8 779.7l279.6 279.7H639.9L360.2 779.7 639.9 500h319.5zM639.9 20.7L120.6 540l159.8 159.8 679-679.1H639.9z"/></defs><clipPath id="D"><use xlink:href="#C"/></clipPath><path clip-path="url(#D)" d="M639.9 20.7h319.5l-679 679.1L120.6 540z" fill="#39cefd"/><defs><path id="E" d="M959.4 500L679.8 779.7l279.6 279.7H639.9L360.2 779.7 639.9 500h319.5zM639.9 20.7L120.6 540l159.8 159.8 679-679.1H639.9z"/></defs><clipPath id="F"><use xlink:href="#E"/></clipPath><path clip-path="url(#F)" d="M520 939.5l119.9 119.8h319.5L679.8 779.7z" fill="#03569b"/><defs><path id="G" d="M959.4 500L679.8 779.7l279.6 279.7H639.9L360.2 779.7 639.9 500h319.5zM639.9 20.7L120.6 540l159.8 159.8 679-679.1H639.9z"/></defs><clipPath id="H"><use xlink:href="#G"/></clipPath><linearGradient id="I" gradientUnits="userSpaceOnUse" x1="566.635" y1="970.339" x2="685.65" y2="851.324"><stop offset="0" stop-color="#1a237e" stop-opacity=".4"/><stop offset="1" stop-color="#1a237e" stop-opacity="0"/></linearGradient><path clip-path="url(#H)" d="M757 857.4l-77.2-77.7L520 939.5z" fill="url(#I)"/><defs><path id="J" d="M959.4 500L679.8 779.7l279.6 279.7H639.9L360.2 779.7 639.9 500h319.5zM639.9 20.7L120.6 540l159.8 159.8 679-679.1H639.9z"/></defs><clipPath id="K"><use xlink:href="#J"/></clipPath><g clip-path="url(#K)"><path d="M360.282 779.645L520.086 619.84 679.9 779.645 520.086 939.45z" fill="#16b9fd"/></g><radialGradient id="L" cx="7824.659" cy="-2855.979" r="5082.889" gradientTransform="matrix(0.25,0,0,-0.25,-1812,-622.5)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#fff" stop-opacity=".1"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></radialGradient><path d="M959.4 500L679.8 779.7l279.6 279.7H639.9L360.2 779.7 639.9 500h319.5zM639.9 20.7L120.6 540l159.8 159.8 679-679.1H639.9z" fill="url(#L)"/></g></svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -0,0 +1 @@
<?xml version="1.0" encoding="utf-8"?><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 115.28 122.88" style="enable-background:new 0 0 115.28 122.88" xml:space="preserve"><style type="text/css">.st0{fill-rule:evenodd;clip-rule:evenodd;}</style><g><path class="st0" d="M25.38,57h64.88V37.34H69.59c-2.17,0-5.19-1.17-6.62-2.6c-1.43-1.43-2.3-4.01-2.3-6.17V7.64l0,0H8.15 c-0.18,0-0.32,0.09-0.41,0.18C7.59,7.92,7.55,8.05,7.55,8.24v106.45c0,0.14,0.09,0.32,0.18,0.41c0.09,0.14,0.28,0.18,0.41,0.18 c22.78,0,58.09,0,81.51,0c0.18,0,0.17-0.09,0.27-0.18c0.14-0.09,0.33-0.28,0.33-0.41v-11.16H25.38c-4.14,0-7.56-3.4-7.56-7.56 V64.55C17.82,60.4,21.22,57,25.38,57L25.38,57z M29.49,68.38h7.43v18.15h11.63v5.92H29.49V68.38L29.49,68.38z M49.89,80.43 c0-3.93,1.09-6.99,3.28-9.17c2.19-2.19,5.24-3.28,9.15-3.28c4.01,0,7.09,1.08,9.26,3.22c2.17,2.15,3.25,5.16,3.25,9.04 c0,2.81-0.47,5.11-1.42,6.91c-0.95,1.8-2.32,3.2-4.11,4.2c-1.79,1-4.02,1.5-6.69,1.5c-2.71,0-4.96-0.43-6.74-1.29 c-1.78-0.87-3.22-2.23-4.32-4.11C50.44,85.58,49.89,83.24,49.89,80.43L49.89,80.43z M57.31,80.44c0,2.43,0.45,4.17,1.36,5.23 c0.91,1.06,2.14,1.59,3.7,1.59c1.6,0,2.84-0.52,3.71-1.56c0.88-1.04,1.32-2.9,1.32-5.6c0-2.26-0.46-3.92-1.37-4.96 c-0.92-1.05-2.16-1.57-3.73-1.57c-1.5,0-2.71,0.53-3.62,1.59C57.77,76.24,57.31,77.99,57.31,80.44L57.31,80.44z M90.42,83.74v-5.01 h11.49v10.23c-2.2,1.5-4.15,2.53-5.83,3.07c-1.69,0.54-3.7,0.81-6.02,0.81c-2.86,0-5.19-0.49-6.99-1.46 c-1.8-0.97-3.19-2.42-4.18-4.35c-0.99-1.92-1.48-4.13-1.48-6.63c0-2.63,0.54-4.91,1.62-6.85c1.08-1.94,2.67-3.41,4.76-4.42 c1.63-0.78,3.83-1.17,6.58-1.17c2.66,0,4.64,0.24,5.96,0.72c1.32,0.48,2.41,1.23,3.28,2.24c0.87,1.01,1.52,2.3,1.96,3.85 l-7.16,1.29c-0.3-0.91-0.8-1.61-1.5-2.09c-0.71-0.49-1.6-0.73-2.7-0.73c-1.62,0-2.92,0.57-3.89,1.7c-0.97,1.13-1.45,2.92-1.45,5.37 c0,2.6,0.49,4.46,1.47,5.57c0.97,1.11,2.34,1.68,4.09,1.68c0.83,0,1.62-0.12,2.37-0.36c0.75-0.24,1.61-0.65,2.59-1.22v-2.25H90.42 L90.42,83.74z M97.79,57h9.93c4.16,0,7.56,3.41,7.56,7.56v31.42c0,4.15-3.41,7.56-7.56,7.56h-9.93v13.55c0,1.61-0.65,3.04-1.7,4.1 c-1.06,1.06-2.49,1.7-4.1,1.7c-29.44,0-56.59,0-86.18,0c-1.61,0-3.04-0.64-4.1-1.7c-1.06-1.06-1.7-2.49-1.7-4.1V5.85 c0-1.61,0.65-3.04,1.7-4.1c1.06-1.06,2.53-1.7,4.1-1.7h58.72C64.66,0,64.8,0,64.94,0c0.64,0,1.29,0.28,1.75,0.69h0.09 c0.09,0.05,0.14,0.09,0.23,0.18l29.99,30.36c0.51,0.51,0.88,1.2,0.88,1.98c0,0.23-0.05,0.41-0.09,0.65V57L97.79,57z M67.52,27.97 V8.94l21.43,21.7H70.19c-0.74,0-1.38-0.32-1.89-0.78C67.84,29.4,67.52,28.71,67.52,27.97L67.52,27.97z"/></g></svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 7.5 KiB

View File

@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 -12.5 256 256" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid">
<defs>
<path d="M252.925854,103.237077 L200.327344,11.759667 C196.302579,4.62225703 188.80054,0.148424726 180.607902,0 L75.3908814,0 C67.1970912,0.14438548 59.6931984,4.61932363 55.6714398,11.759667 L3.05292985,102.997083 C-1.01764328,110.080373 -1.01764328,118.793146 3.05292985,125.876436 L55.6514404,217.87383 C59.6319755,225.112707 67.1159052,229.735134 75.370882,230.053486 L180.587903,230.053486 C188.842442,229.770144 196.339809,225.166896 200.327344,217.933829 L252.925854,126.456419 C257.024715,119.259311 257.024715,110.434185 252.925854,103.237077 Z" id="path-1">
</path>
</defs>
<g>
<mask id="mask-2" fill="white">
<use xlink:href="#path-1">
</use>
</mask>
<g fill-rule="nonzero">
</g>
<path d="M252.925854,103.237077 L200.327344,11.759667 C196.302579,4.62225703 188.80054,0.148424726 180.607902,0 L75.3908814,0 C67.1970912,0.14438548 59.6931984,4.61932363 55.6714398,11.759667 L3.05292985,102.997083 C-1.01764328,110.080373 -1.01764328,118.793146 3.05292985,125.876436 L55.6514404,217.87383 C59.6319755,225.112707 67.1159052,229.735134 75.370882,230.053486 L180.587903,230.053486 C188.842442,229.770144 196.339809,225.166896 200.327344,217.933829 L252.925854,126.456419 C257.024715,119.259311 257.024715,110.434185 252.925854,103.237077 Z" fill="#4285F4" fill-rule="nonzero" mask="url(#mask-2)">
</path>
<path d="M187.167605,84.731603 L179.915711,92.6409485 L181.549379,139.638797 L174.676019,149.60019 L170.691462,145.615633 L174.357254,145.615633 L174.357254,129.318795 L156.765435,111.726976 L143.468746,118.373047 L99.3678929,74.1725271 L78.1302045,85.5484371 L75.500397,107.583037 L82.9515184,147.906753 L93.7496677,158.485752 L88.8287399,165.478649 L153.076098,231.236816 L179.915711,231.236816 C188.138614,230.95456 197.044276,225.565698 201.016528,218.360352 L244.795336,142.356934 L187.167605,84.731603 Z" fill="#000000" fill-rule="nonzero" opacity="0.0700000003" mask="url(#mask-2)">
</path>
<polygon fill="#FFFFFF" fill-rule="nonzero" mask="url(#mask-2)" points="88.8287399 165.478649 99.3678929 154.939496 83.5691247 139.140728 83.5691247 89.9712953 99.3678929 74.1725271 88.8287399 63.6333741 67.730511 84.731603 67.730511 144.38042">
</polygon>
<circle fill="#FFFFFF" fill-rule="nonzero" mask="url(#mask-2)" cx="105.1455" cy="114.556012" r="7.47104423">
</circle>
<circle fill="#FFFFFF" fill-rule="nonzero" mask="url(#mask-2)" cx="127.498865" cy="114.556012" r="7.47104423">

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<defs>
<style>.cls-1{fill:none;}.cls-2{fill:#669df6;}.cls-3{fill:#4285f4;}.cls-4{fill:#aecbfa;}</style>
</defs>
<title>Icon_24px_LoadBalancing_Color</title>
<g data-name="Product Icons">
<g data-name="colored-32/load-balancing">
<rect class="cls-1" width="24" height="24"/>
<g >
<rect class="cls-2" x="18" y="12" width="2" height="4"/>
<rect class="cls-2" x="11" y="12" width="2" height="4"/>
<rect class="cls-2" x="4" y="12" width="2" height="4"/>
<polygon id="Fill-2" class="cls-3" points="13 11 11 11 11 7 13 7 13 11"/>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24px" height="24px" viewBox="0 0 24 24"><defs><style>.cls-1{fill:#669df6;}.cls-2{fill:#4285f4;}</style></defs><title>Icon_24px_Monitoring_Color</title><g data-name="Product Icons"><rect class="cls-1" x="10.83" y="15.84" width="2.33" height="2.64"/><path class="cls-2" d="M18.48,13.87a.56.56,0,0,1-.4-.17L14,9.47l-2.74,2.89a.57.57,0,0,1-.76.05L8.42,10.73l-2.2,2.92a.56.56,0,0,1-.45.22H2v1.71a.75.75,0,0,0,.74.75H21.26a.75.75,0,0,0,.74-.75V13.87Z"/><path class="cls-1" d="M5.5,12.76,7.88,9.6a.55.55,0,0,1,.37-.22.63.63,0,0,1,.42.12l2.12,1.72,2.8-2.94a.54.54,0,0,1,.4-.17h0a.54.54,0,0,1,.4.17l4.33,4.48H22V6a.74.74,0,0,0-.74-.74H2.74A.74.74,0,0,0,2,6v6.81Z"/><rect class="cls-2" x="8.67" y="18.18" width="6.67" height="0.61" rx="0.3"/></g></svg>

After

Width:  |  Height:  |  Size: 789 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24px" height="24px" viewBox="0 0 24 24"><defs><style>.cls-1{fill:#aecbfa;}.cls-1,.cls-2{fill-rule:evenodd;}.cls-2{fill:#4285f4;}</style></defs><title>Icon_24px_CloudRun_Color</title><g data-name="Product Icons"><g ><polygon class="cls-1" points="8.9 2.63 12.02 12 21.38 12 8.9 2.63"/><polygon class="cls-2" points="21.38 12 12.02 12 8.9 21.38 21.38 12"/><polygon class="cls-2" points="3.44 21.38 6.57 19.81 8.9 12 5.78 12 3.44 21.38"/><polygon class="cls-1" points="3.44 2.63 5.78 12 8.9 12 6.57 4.19 3.44 2.63"/></g></g></svg>

After

Width:  |  Height:  |  Size: 574 B

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<defs>
<style>.cls-1{fill:#aecbfa;}.cls-1,.cls-2,.cls-3{fill-rule:evenodd;}.cls-2{fill:#669df6;}.cls-3{fill:#4285f4;}</style>
</defs>
<title>Icon_24px_SQL_Color</title>
<g data-name="Product Icons">
<g >
<polygon class="cls-1" points="4.67 10.44 4.67 13.45 12 17.35 12 14.34 4.67 10.44"/>
<polygon class="cls-1" points="4.67 15.09 4.67 18.1 12 22 12 18.99 4.67 15.09"/>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="800" width="1200" viewBox="-19.20015 -28.483 166.4013 170.898"><g transform="translate(0 -7.034)"><linearGradient y2="120.789" x2="64" y1="7.034" x1="64" gradientUnits="userSpaceOnUse" id="a"><stop offset="0" stop-color="#4387fd"/><stop offset="1" stop-color="#4683ea"/></linearGradient><path d="M27.79 115.217L1.54 69.749a11.499 11.499 0 010-11.499l26.25-45.467a11.5 11.5 0 019.96-5.75h52.5a11.5 11.5 0 019.959 5.75l26.25 45.467a11.499 11.499 0 010 11.5l-26.25 45.466a11.5 11.5 0 01-9.959 5.75h-52.5a11.499 11.499 0 01-9.96-5.75z" fill="url(#a)"/></g><g transform="translate(0 -7.034)"><defs><path d="M27.791 115.217L1.541 69.749a11.499 11.499 0 010-11.499l26.25-45.467a11.499 11.499 0 019.959-5.75h52.5a11.5 11.5 0 019.96 5.75l26.25 45.467a11.499 11.499 0 010 11.5l-26.25 45.466a11.499 11.499 0 01-9.96 5.75h-52.5a11.499 11.499 0 01-9.959-5.75z" id="b"/></defs><clipPath id="c"><use height="100%" width="100%" xlink:href="#b" overflow="visible"/></clipPath><path clip-path="url(#c)" opacity=".07" d="M49.313 53.875l-7.01 6.99 5.957 5.958-5.898 10.476 44.635 44.636 10.816.002L118.936 84 85.489 50.55z"/></g><path d="M84.7 43.236H43.264c-.667 0-1.212.546-1.212 1.214v8.566c0 .666.546 1.212 1.212 1.212H84.7c.667 0 1.213-.546 1.213-1.212v-8.568c0-.666-.545-1.213-1.212-1.213m-6.416 7.976a2.484 2.484 0 01-2.477-2.48 2.475 2.475 0 012.477-2.477c1.37 0 2.48 1.103 2.48 2.477a2.48 2.48 0 01-2.48 2.48m6.415 8.491l-41.436.002c-.667 0-1.212.546-1.212 1.214v8.565c0 .666.546 1.213 1.212 1.213H84.7c.667 0 1.213-.547 1.213-1.213v-8.567c0-.666-.545-1.214-1.212-1.214m-6.416 7.976a2.483 2.483 0 01-2.477-2.48 2.475 2.475 0 012.477-2.477 2.48 2.48 0 110 4.956" fill="#fff"/></svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="800" width="1200" viewBox="-19.20015 -28.483 166.4013 170.898"><g transform="translate(0 -7.034)"><linearGradient y2="120.789" x2="64" y1="7.034" x1="64" gradientUnits="userSpaceOnUse" id="a"><stop offset="0" stop-color="#4387fd"/><stop offset="1" stop-color="#4683ea"/></linearGradient><path d="M27.79 115.217L1.54 69.749a11.499 11.499 0 010-11.499l26.25-45.467a11.5 11.5 0 019.96-5.75h52.5a11.5 11.5 0 019.959 5.75l26.25 45.467a11.499 11.499 0 010 11.5l-26.25 45.466a11.5 11.5 0 01-9.959 5.75h-52.5a11.499 11.499 0 01-9.96-5.75z" fill="url(#a)"/></g><g transform="translate(0 -7.034)"><defs><path d="M27.791 115.217L1.541 69.749a11.499 11.499 0 010-11.499l26.25-45.467a11.499 11.499 0 019.959-5.75h52.5a11.5 11.5 0 019.96 5.75l26.25 45.467a11.499 11.499 0 010 11.5l-26.25 45.466a11.5 11.5 0 01-9.96 5.75h-52.5a11.499 11.499 0 01-9.959-5.75z" id="b"/></defs><clipPath id="c"><use height="100%" width="100%" xlink:href="#b" overflow="visible"/></clipPath><path clip-path="url(#c)" opacity=".07" d="M72.531 46.25l-6.75-6.75-3.125 6.687-6.671-6.671-1.641 8.088-5.938 1.02-1.232 5.282-7.683 1.835 6.884 6.884-6.81 3.033 6.81 6.81-6.854 2.928 46.682 46.682 11.464-.037 21.552-38.926L75.635 39.53z"/></g><g fill="#fff"><path d="M69.831 50.062H58.422c-.668 0-1.215.547-1.215 1.214l.001 11.407a1.22 1.22 0 001.214 1.215H69.83a1.22 1.22 0 001.215-1.215V51.276c0-.667-.546-1.214-1.213-1.214"/><path d="M87.89 49.142c.6 0 1.09-.492 1.09-1.09v-1.776c0-.598-.49-1.09-1.09-1.09h-5.55V40a1.22 1.22 0 00-1.213-1.213h-5.209l.001-5.57c0-.597-.49-1.089-1.089-1.089l-1.777.001c-.6 0-1.09.491-1.09 1.089l.001 5.568h-5.86v-5.57c0-.596-.49-1.088-1.088-1.088l-1.779.001c-.599 0-1.089.491-1.089 1.089l.001 5.568-5.86.001v-5.571c0-.596-.49-1.088-1.088-1.088h-1.778c-.598 0-1.09.492-1.09 1.09l.002 5.569h-5.207A1.22 1.22 0 0045.912 40v5.187h-5.549c-.597 0-1.088.492-1.088 1.09l.001 1.778c0 .598.49 1.088 1.088 1.088h5.548l.002 5.86h-5.55c-.598 0-1.089.49-1.089 1.088l.001 1.777c0 .6.49 1.09 1.088 1.09h5.55v5.86l-5.55-.001c-.598 0-1.089.491-1.089 1.089l.001 1.777c0 .6.49 1.089 1.088 1.089h5.55v5.19c0 .665.547 1.213 1.213 1.213h5.208v5.567c0 .6.49 1.09 1.089 1.09H55.2c.598 0 1.088-.49 1.088-1.09l.001-5.567h5.859l.001 5.567c0 .6.49 1.09 1.09 1.09h1.776c.598 0 1.088-.49 1.088-1.09l.001-5.567h5.859l.001 5.567c0 .6.49 1.09 1.09 1.09h1.775c.599 0 1.09-.49 1.09-1.09v-5.567h5.206a1.22 1.22 0 001.214-1.214l.001-5.189 5.55-.001c.599 0 1.089-.489 1.089-1.088v-1.775c0-.6-.49-1.09-1.09-1.09h-5.548v-5.86l5.549-.002c.6 0 1.09-.488 1.09-1.088v-1.775c0-.6-.49-1.09-1.09-1.09h-5.55v-5.86h5.55zm-9.647 21.955H50.009V42.862l28.236-.001z"/></g></svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@@ -0,0 +1 @@
<svg id="Artwork" xmlns="http://www.w3.org/2000/svg" width="24px" height="24px" viewBox="0 0 24 24"><path d="M19.73,6.56a1.73,1.73,0,0,0-1.68,1.68,1.83,1.83,0,0,0,.89,1.48v6.9l-5.16,3.06.8,1.28,5.55-3.25a.84.84,0,0,0,.4-.69V9.72a1.64,1.64,0,0,0,.89-1.48A1.61,1.61,0,0,0,19.73,6.56Z" style="fill:#aecbfa"/><path id="Path-2" data-name="Path" d="M18,5.48,12.39,2.32a1.18,1.18,0,0,0-.79,0L5.25,6A1.72,1.72,0,0,0,2.57,7.35,1.73,1.73,0,0,0,4.26,9,1.73,1.73,0,0,0,5.94,7.35L12,3.9l5.15,3Z" style="fill:#aecbfa"/><path id="Path-3" data-name="Path" d="M11.2,18.5a1.57,1.57,0,0,0-.89.29l-5.16-3V9.92H3.56v6.31a.84.84,0,0,0,.4.69L9.52,20v.09a1.69,1.69,0,0,0,3.37,0A1.65,1.65,0,0,0,11.2,18.5Z" style="fill:#aecbfa"/><polygon id="Path-4" data-name="Path" points="16.96 8.63 12.1 5.78 7.13 8.63 12.1 11.4 16.96 8.63" style="fill:#669df6"/><polygon points="12.1 12.38 6.84 9.32 6.84 11.79 12.1 14.75 12.1 12.38" style="fill:#669df6"/><polygon points="12.1 15.73 6.84 12.68 6.84 14.75 12.1 17.81 12.1 15.73" style="fill:#669df6"/><path d="M12.09,12.38v2.37l5.26-3.06V9.33Zm4.32-.94a.38.38,0,1,1,0-.76.38.38,0,0,1,0,.76Z" style="fill:#4285f4"/><path d="M12.09,15.73V17.8l5.26-3.05V12.68Zm4.32-1.07a.38.38,0,1,1,0-.76.38.38,0,0,1,0,.76Z" style="fill:#4285f4"/></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24px" height="24px" viewBox="0 0 24 24"><defs><style>.cls-1{fill:#aecbfa;}.cls-2{fill:#669df6;}.cls-3{fill:#4285f4;}</style></defs><title>Icon_24px_VirtualPrivateCloud_Color</title><g data-name="Product Icons"><rect class="cls-1" x="16" y="2" width="6" height="6"/><rect class="cls-2" x="19" y="2" width="3" height="6"/><rect class="cls-1" x="16" y="16" width="6" height="6"/><rect class="cls-2" x="19" y="16" width="3" height="6"/><rect class="cls-1" x="2" y="2" width="6" height="6"/><rect class="cls-2" x="5" y="2" width="3" height="6"/><rect class="cls-1" x="2" y="16" width="6" height="6"/><rect class="cls-2" x="5" y="16" width="3" height="6"/><rect class="cls-2" x="8" y="4" width="8" height="2"/><rect class="cls-2" x="8" y="18" width="8" height="2"/><rect class="cls-2" x="18" y="8" width="2" height="8"/><rect class="cls-2" x="4" y="8" width="2" height="8"/><rect class="cls-3" x="4" y="8" width="2" height="2"/><rect class="cls-3" x="18" y="8" width="2" height="2"/><rect class="cls-3" x="8" y="4" width="2" height="2"/><rect class="cls-3" x="8" y="18" width="2" height="2"/></g></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,60 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.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 254.5 225" style="enable-background:new 0 0 254.5 225;" xml:space="preserve">
<style type="text/css">
.st0{fill:#2DBCAF;}
.st1{fill:#5DC9E1;}
.st2{fill:#FDDD00;}
.st3{fill:#CE3262;}
.st4{fill:#00ACD7;}
.st5{fill:#FFFFFF;}
</style>
<g>
<g>
<g>
<g>
<path class="st4" d="M40.2,101.1c-0.4,0-0.5-0.2-0.3-0.5l2.1-2.7c0.2-0.3,0.7-0.5,1.1-0.5l35.7,0c0.4,0,0.5,0.3,0.3,0.6
l-1.7,2.6c-0.2,0.3-0.7,0.6-1,0.6L40.2,101.1z"/>
</g>
</g>
</g>
<g>
<g>
<g>
<path class="st4" d="M25.1,110.3c-0.4,0-0.5-0.2-0.3-0.5l2.1-2.7c0.2-0.3,0.7-0.5,1.1-0.5l45.6,0c0.4,0,0.6,0.3,0.5,0.6
l-0.8,2.4c-0.1,0.4-0.5,0.6-0.9,0.6L25.1,110.3z"/>
</g>
</g>
</g>
<g>
<g>
<g>
<path class="st4" d="M49.3,119.5c-0.4,0-0.5-0.3-0.3-0.6l1.4-2.5c0.2-0.3,0.6-0.6,1-0.6l20,0c0.4,0,0.6,0.3,0.6,0.7l-0.2,2.4
c0,0.4-0.4,0.7-0.7,0.7L49.3,119.5z"/>
</g>
</g>
</g>
<g>
<g id="CXHf1q_3_">
<g>
<g>
<path class="st4" d="M153.1,99.3c-6.3,1.6-10.6,2.8-16.8,4.4c-1.5,0.4-1.6,0.5-2.9-1c-1.5-1.7-2.6-2.8-4.7-3.8
c-6.3-3.1-12.4-2.2-18.1,1.5c-6.8,4.4-10.3,10.9-10.2,19c0.1,8,5.6,14.6,13.5,15.7c6.8,0.9,12.5-1.5,17-6.6
c0.9-1.1,1.7-2.3,2.7-3.7c-3.6,0-8.1,0-19.3,0c-2.1,0-2.6-1.3-1.9-3c1.3-3.1,3.7-8.3,5.1-10.9c0.3-0.6,1-1.6,2.5-1.6
c5.1,0,23.9,0,36.4,0c-0.2,2.7-0.2,5.4-0.6,8.1c-1.1,7.2-3.8,13.8-8.2,19.6c-7.2,9.5-16.6,15.4-28.5,17
c-9.8,1.3-18.9-0.6-26.9-6.6c-7.4-5.6-11.6-13-12.7-22.2c-1.3-10.9,1.9-20.7,8.5-29.3c7.1-9.3,16.5-15.2,28-17.3
c9.4-1.7,18.4-0.6,26.5,4.9c5.3,3.5,9.1,8.3,11.6,14.1C154.7,98.5,154.3,99,153.1,99.3z"/>
</g>
<g>
<path class="st4" d="M186.2,154.6c-9.1-0.2-17.4-2.8-24.4-8.8c-5.9-5.1-9.6-11.6-10.8-19.3c-1.8-11.3,1.3-21.3,8.1-30.2
c7.3-9.6,16.1-14.6,28-16.7c10.2-1.8,19.8-0.8,28.5,5.1c7.9,5.4,12.8,12.7,14.1,22.3c1.7,13.5-2.2,24.5-11.5,33.9
c-6.6,6.7-14.7,10.9-24,12.8C191.5,154.2,188.8,154.3,186.2,154.6z M210,114.2c-0.1-1.3-0.1-2.3-0.3-3.3
c-1.8-9.9-10.9-15.5-20.4-13.3c-9.3,2.1-15.3,8-17.5,17.4c-1.8,7.8,2,15.7,9.2,18.9c5.5,2.4,11,2.1,16.3-0.6
C205.2,129.2,209.5,122.8,210,114.2z"/>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Made by gilbarbara: https://github.com/gilbarbara/logos -->
<svg width="285px" height="285px" viewBox="-14.5 0 285 285" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid">
<g>
<path d="M230.4,0 C244.39552,0 255.77047,11.2315104 255.99657,25.1765997 L256,25.6 L256,258.844444 C256,272.839964 244.765005,284.214915 230.823296,284.441014 L230.4,284.444444 L25.6,284.444444 C11.60448,284.444444 0.2295296,273.209449 0.003430144,259.26774 L0,258.844444 L0,25.6 C0,11.60096 11.2349952,0.2294592 25.1767043,0.003429088 L25.6,0 L230.4,0 Z M230.4,14.2222222 L25.6,14.2222222 C19.426,14.2222222 14.3820625,19.169691 14.2259468,25.3068692 L14.2222222,25.6 L14.2222222,258.844444 C14.2222222,265.018444 19.169691,270.062382 25.3068692,270.218498 L25.6,270.222222 L230.4,270.222222 C236.5775,270.222222 241.618047,265.274753 241.774056,259.137575 L241.777778,258.844444 L241.777778,25.6 C241.777778,19.328 236.675556,14.2222222 230.4,14.2222222 Z M64,184.888889 L96,213.333333 L64,241.777778 L64,184.888889 Z M92.4444444,42.6666667 L92.4444444,123.416889 C106.645333,118.794667 126.496,113.777778 145.777778,113.777778 C163.36,113.777778 173.884444,120.689778 179.616,126.488889 C191.7248,138.738489 192.013158,154.309103 191.997015,156.385666 L191.996444,156.444444 L192,241.777778 L163.555556,241.777778 L163.555556,156.835556 C163.416889,150.197333 160.216889,142.222222 145.777778,142.222222 C117.146098,142.222222 85.0644658,156.478539 84.1117507,156.905113 L84.0924444,156.913778 L64,166.016 L64,42.6666667 L92.4444444,42.6666667 Z M192,42.6666667 C190.08,58.8231111 183.530667,74.3111111 170.666667,88.8888889 L170.666667,88.8888889 L142.222222,88.8888889 C153.400889,74.2222222 160.419556,58.7875556 163.555556,42.6666667 L163.555556,42.6666667 Z" fill="#430098"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -0,0 +1 @@
<?xml version="1.0" encoding="utf-8"?><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 122.88 98.18" style="enable-background:new 0 0 122.88 98.18" xml:space="preserve"><style type="text/css">.st0{fill-rule:evenodd;clip-rule:evenodd;} .st0{fill:#1668dc;} .st1{fill:#FFFFFF;}</style><g><path class="st0" d="M3.42,0h116.05c1.88,0,3.41,1.54,3.41,3.41v91.36c0,1.88-1.54,3.41-3.41,3.41l-116.05,0 C1.54,98.18,0,96.65,0,94.77L0,3.41C0,1.53,1.54,0,3.42,0L3.42,0L3.42,0z M25.89,8.19c2.05,0,3.72,1.67,3.72,3.72 c0,2.05-1.67,3.72-3.72,3.72c-2.05,0-3.72-1.67-3.72-3.72C22.17,9.85,23.83,8.19,25.89,8.19L25.89,8.19z M103.07,7.69l2.52,2.77 l2.52-2.77l1.97,1.79l-2.69,2.96l2.69,2.96l-1.97,1.79l-2.52-2.77l-2.52,2.77l-1.97-1.79l2.69-2.96l-2.69-2.96L103.07,7.69 L103.07,7.69z M14.52,8.19c2.05,0,3.72,1.67,3.72,3.72c0,2.05-1.67,3.72-3.72,3.72c-2.05,0-3.72-1.67-3.72-3.72 C10.79,9.85,12.46,8.19,14.52,8.19L14.52,8.19z M37.26,8.19c2.05,0,3.72,1.67,3.72,3.72c0,2.05-1.67,3.72-3.72,3.72 c-2.05,0-3.72-1.67-3.72-3.72C33.54,9.85,35.21,8.19,37.26,8.19L37.26,8.19z M14.05,22.75h93.33c1.77,0,3.22,1.49,3.22,3.22v59.2 c0,1.73-1.49,3.22-3.22,3.22l-93.33,0c-1.73,0-3.22-1.45-3.22-3.22v-59.2C10.84,24.2,12.29,22.75,14.05,22.75L14.05,22.75 L14.05,22.75z"/></g></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0" y="0" width="446" height="231" viewBox="0, 0, 446, 231">
<path d="M 13.009,0 433.107,0 C440.228,0 446,5.772 446,12.893 l0,205.214 C446,225.228 440.228,231 433.107,231 L13.009,231 C5.889,231 0.116,225.228 0.116,218.107 l0,-205.214 C0.116,5.772 5.889,0 13.009,0 z" fill="#27415E"/>
<path d="m64.431,149.881 0,-36.665 c0.243,-8.863 5.221,-13.962 10.927,-13.962 8.985,0 10.806,7.406 10.927,13.962 l0,36.665 18.212,0 0,-39.7 c0,-2.064 -0.243,-5.949 -1.215,-9.713 C101.097,91.605 89.32,87.113 83.25,87.113 c-9.227,0 -14.933,3.642 -18.697,9.227 l-0.243,-0.243 0,-33.873 -18.09,0 0,87.657 z" fill="#FFF"/>
<path d="m112.51,88.934 0,12.141 12.262,0 0,29.988 c0,13.234 3.035,20.64 17.24,20.64 2.55,0 12.262,-0.85 14.326,-1.822 l0,-10.684 c-1.942,0.122 -3.885,0.365 -5.827,0.365 -6.314,0 -7.528,-2.186 -7.528,-10.199 l0,-28.288 13.72,0 0,-12.141 -13.72,0 0,-18.576 -18.211,6.556 0,12.02 z" fill="#FFF" id="t"/>
<use transform="translate(47.228,0)" xlink:href="#t" />
<path d="m230.762,88.934 -18.454,0 c0.243,4.006 0.607,8.134 0.607,12.141 l0,72.117 18.211,0 0,-31.931 0.243,0 c3.885,7.163 10.684,10.442 18.576,10.442 17.847,0 26.224,-16.634 26.224,-32.295 0,-16.391 -9.591,-32.295 -28.531,-32.295 -6.313,0 -12.869,3.763 -16.269,8.863 l-0.243,0 z m0.364,30.474 c0,-8.378 3.279,-20.154 13.113,-20.154 11.655,0 13.112,10.805 13.112,20.154 0,9.348 -1.457,20.154 -13.112,20.154 -9.834,0 -13.113,-11.777 -13.113,-20.154 z" fill="#FFF"/>
<path d="m305.672,149.881 0,-16.147 -15.419,0 0,16.147 z m0,-44.921 0,-16.147 -15.419,0 0,16.147 z" fill="#FFF"/>
<path d="m363.584,62.224 -14.083,0 -29.624,99.313 14.205,0 z" fill="#FFF" id="slash"/>
<use transform="translate(43.472,0)" xlink:href="#slash" />
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 192.756 192.756" xmlns="http://www.w3.org/2000/svg">
<g fill-rule="evenodd" clip-rule="evenodd">
<path fill="#ffffff" d="M0 0h192.756v192.756H0V0z"/>
<path d="M80.372 101.729s-4.604 2.679 3.28 3.584c9.554 1.091 14.434.934 24.959-1.057 0 0 2.771 1.735 6.639 3.236-23.601 10.113-53.413-.585-34.878-5.763zM77.487 88.532s-5.165 3.823 2.726 4.639c10.206 1.054 18.262 1.14 32.211-1.544 0 0 1.926 1.955 4.957 3.023-28.531 8.345-60.307.657-39.894-6.118z" fill="#3174b9"/>
<path d="M101.797 66.143c5.818 6.697-1.525 12.72-1.525 12.72s14.766-7.621 7.984-17.168c-6.332-8.899-11.189-13.32 15.102-28.566-.001-.001-41.27 10.303-21.561 33.014z" fill="#ca3132"/>

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 192.756 192.756" xmlns="http://www.w3.org/2000/svg">
<g fill-rule="evenodd" clip-rule="evenodd">
<path fill="#ffffff" d="M0 0h192.756v192.756H0V0z"/>
<path d="M80.372 101.729s-4.604 2.679 3.28 3.584c9.554 1.091 14.434.934 24.959-1.057 0 0 2.771 1.735 6.639 3.236-23.601 10.113-53.413-.585-34.878-5.763zM77.487 88.532s-5.165 3.823 2.726 4.639c10.206 1.054 18.262 1.14 32.211-1.544 0 0 1.926 1.955 4.957 3.023-28.531 8.345-60.307.657-39.894-6.118z" fill="#3174b9"/>
<path d="M101.797 66.143c5.818 6.697-1.525 12.72-1.525 12.72s14.766-7.621 7.984-17.168c-6.332-8.899-11.189-13.32 15.102-28.566-.001-.001-41.27 10.303-21.561 33.014z" fill="#ca3132"/>

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 630 630">
<rect width="630" height="630" fill="#f7df1e"/>
<path d="m423.2 492.19c12.69 20.72 29.2 35.95 58.4 35.95 24.53 0 40.2-12.26 40.2-29.2 0-20.3-16.1-27.49-43.1-39.3l-14.8-6.35c-42.72-18.2-71.1-41-71.1-89.2 0-44.4 33.83-78.2 86.7-78.2 37.64 0 64.7 13.1 84.2 47.4l-46.1 29.6c-10.15-18.2-21.1-25.37-38.1-25.37-17.34 0-28.33 11-28.33 25.37 0 17.76 11 24.95 36.4 35.95l14.8 6.34c50.3 21.57 78.7 43.56 78.7 93 0 53.3-41.87 82.5-98.1 82.5-54.98 0-90.5-26.2-107.88-60.54zm-209.13 5.13c9.3 16.5 17.76 30.45 38.1 30.45 19.45 0 31.72-7.61 31.72-37.2v-201.3h59.2v202.1c0 61.3-35.94 89.2-88.4 89.2-47.4 0-74.85-24.53-88.81-54.075z"/>
</svg>

After

Width:  |  Height:  |  Size: 687 B

View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="598" viewBox="-5.64904,-5.64904,342.033,199.599" width="1024" xmlns="http://www.w3.org/2000/svg">
<path d="m215.233 169.638 4.51938 9.06669h-3.82425l-4.39355-8.78042h-4.99513v8.78042h-3.2549v-22.1919h9.70328c3.85802 0 7.11292 2.06082 7.11292 6.62726 0 3.5491-1.86454 5.73766-4.86775 6.49797zm-2.24517-9.98706h-6.44838v7.13361h6.44838c2.2129 0 3.76134-1.14045 3.76134-3.55065 0-2.31476-1.51617-3.58296-3.76134-3.58296z" fill="#c00"/>
<path d="m238.115 171.542h-10.9693c.34835 3.20129 2.14999 4.5649 4.1741 4.5649 1.39036 0 2.49683-.50635 3.60326-1.3313l1.929 2.0916c-1.45327 1.39441-3.19197 2.18702-5.72253 2.18702-3.88718 0-7.17582-3.13816-7.17582-8.65421 0-5.64379 2.97253-8.68807 7.26943-8.68807 4.7097 0 6.98705 3.83537 6.98705 8.3387 0 .60025-.06293 1.142-.09515 1.49136zm-7.11288-6.8812c-2.18223 0-3.50965 1.52061-3.79508 4.18475h7.71292c-.15654-2.28245-1.23076-4.18475-3.91784-4.18475z" fill="#c00"/>
<path d="m252.243 178.705v-1.58371c-1.20158 1.10967-2.59195 1.93307-4.33066 1.93307-3.57255 0-6.3855-2.59795-6.3855-8.94047 0-5.7069 3.0984-8.40181 6.54358-8.40181 1.67578 0 3.25641.88805 4.17411 1.9023v-6.34099l3.22421-1.68068v23.1123h-3.22574zm.03224-11.7924c-.7274-.98347-2.24515-2.18857-3.88871-2.18857-2.33874 0-3.60324 1.7761-3.60324 5.29442 0 4.18474 1.32741 6.0224 3.73063 6.0224 1.54842 0 2.90808-1.04657 3.76132-2.12238z" fill="#c00"/>
<path d="m282.775 178.705v-9.95474h-10.1806v9.95474h-3.31783v-22.1919h3.31783v8.97127h10.1806v-8.97127h3.31779v22.1919z" fill="#c00"/>
<path d="m300.882 178.705v-1.64681c-1.13714 1.14045-2.75004 1.99617-4.55164 1.99617-2.68708 0-5.75322-1.5206-5.75322-5.61146 0-3.70917 2.84512-5.38984 6.60646-5.38984 1.54994 0 2.78224.22163 3.6984.6341v-1.23742c0-1.80686-1.10647-2.82111-3.12906-2.82111-1.70649 0-3.03545.31705-4.33068 1.04656l-1.2645-2.47175c1.58065-.98348 3.35159-1.49136 5.69033-1.49136 3.69839 0 6.22895 1.80687 6.22895 5.58068v11.4122h-3.19504zm0-7.09975c-.88394-.4448-2.02262-.73106-3.79355-.73106-2.08554 0-3.41449.95115-3.41449 2.47329 0 1.64681 1.04353 2.75802 3.19198 2.75802 1.74024 0 3.25644-1.07735 4.01452-2.12392v-2.37633z" fill="#c00"/>
<path d="m316.686 178.293c-.79186.44478-1.89678.7603-3.19352.7603-2.30805 0-3.73063-1.42518-3.73063-4.40637v-9.60537h-2.37096v-2.98119h2.37096v-4.75574l3.19353-1.71145v6.46719h4.10966v2.98119h-4.10966v9.03591c0 1.55293.50487 1.99771 1.70649 1.99771.85323 0 1.80161-.31703 2.40162-.66641z" fill="#c00"/>
<path d="m163.265 78.5313c5.47854-2.75033 9.20763-7.85081 9.20763-14.1302 0-14.6351-13.2191-17.784-25.2672-17.5778h-32.5121-.18569-18.0255v46.7294c0 6.78578-2.35869 9.13595-6.5589 9.13595-4.51327 0-7.05151-2.54563-7.05151-7.16901v-6.47181h-17.1415v3.03044c0 15.6278 5.97268 26.3166 24.48 26.3166 15.0959 0 23.0774-6.70421 24.2974-19.9433v18.475h33.5756c14.9793 0 27.2193-5.10204 27.2193-21.7948 0-7.94932-4.59-14.4304-12.0374-16.6005zm-30.5417-17.5762h14.0892c3.82578 0 7.44592 1.68068 7.44592 6.77963 0 5.00661-4.30612 6.67651-7.44592 6.67651h-14.0892v-13.4561zm14.5818 41.3457h-14.5818v-16.1126h14.5818c5.48775 0 9.79691 2.07005 9.79691 8.24175 0 5.8023-4.01606 7.87082-9.79691 7.87082z" fill="#c00"/>
<path d="m138.217 166.834c0-11.8432-9.5836-21.4655-21.3985-21.4655-11.8379 0-21.4154 9.6223-21.4154 21.4655 0 11.8647 9.57746 21.467 21.4154 21.467 11.8149 0 21.3985-9.60229 21.3985-21.467z" fill="#c00"/>
<path d="m81.3524 160.062c0-10.4934-8.49098-19.006-18.9631-19.006-10.4706 0-18.9554 8.51109-18.9554 19.006 0 10.5026 8.4833 19.0184 18.9554 19.0184s18.9631-8.51571 18.9631-19.0184z" fill="#c00"/>
<path d="m38.514 125.712c0-9.47608-7.64846-17.1622-17.1108-17.1622-9.46543 0-17.1262 7.68615-17.1262 17.1622 0 9.50223 7.66075 17.1884 17.1262 17.1884 9.46084 0 17.1108-7.68615 17.1108-17.1884z" fill="#c00"/>
<path d="m30.5662 77.9003c0-8.47415-6.83666-15.323-15.277-15.323-8.43879 0-15.2893 6.84735-15.2893 15.323 0 8.46491 6.85047 15.3353 15.2893 15.3353 8.44033 0 15.277-6.87197 15.277-15.3353z" fill="#c00"/>
<path d="m51.9924 34.9662c0-7.10899-5.76398-12.8759-12.8477-12.8759-7.08834 0-12.8431 5.76691-12.8431 12.8759 0 7.11514 5.75476 12.8774 12.8431 12.8774 7.08373 0 12.8477-5.7623 12.8477-12.8774z" fill="#c00"/>
<path d="m88.6694 15.951c0-6.43334-5.19464-11.6523-11.6108-11.6523-6.41465 0-11.6185 5.219-11.6185 11.6523 0 6.4441 5.20537 11.6631 11.6185 11.6631 6.41772 0 11.6108-5.219 11.6108-11.6631z" fill="#c00"/>
<path d="m127.205 9.81468c0-5.42062-4.37209-9.81468-9.78157-9.81468-5.39567 0-9.78617 4.39406-9.78617 9.81468 0 5.42678 4.3905 9.8193 9.78617 9.8193 5.40948 0 9.78157-4.39252 9.78157-9.8193z" fill="#c00"/>
<path d="m306.505 86.4929c-7.63466-1.66528-19.3069-2.54564-19.3069-7.36755 0-3.53988 4.41813-3.82769 7.15128-3.82769 2.05482 0 3.90405.39709 5.28977 1.27282 1.35662.8865 2.14232 2.26244 2.14232 4.41099h15.3752c-.59083-13.2453-12.2462-16.4896-23.3858-16.4896-9.28129 0-21.3387 2.89654-23.0068 13.1437-2.2789-10.4365-12.8047-13.1437-22.9316-13.1437-9.99029 0-23.7265 3.34288-23.7265 15.6154 0 .21701.03222.4017.03685.61255-3.8749-9.69001-13.0288-16.228-24.8038-16.228-12.7357 0-22.2579 7.4599-25.4775 18.4627 2.46151 3.32132 3.75671 7.65382 3.75671 12.1772 0 3.71379-.58928 7.00125-1.70493 9.87933 4.37822 8.11553 12.8032 13.3838 23.4257 13.3838 11.2855 0 20.1386-5.9593 24.2698-14.9583 2.16992 11.5569 13.4462 14.9583 24.4877 14.9583 9.49459 0 19.9806-3.1197 23.2938-11.9617 3.42985 9.15595 13.6426 11.9617 23.6652 11.9617 11.4512 0 24.3787-4.51102 24.3787-18.1626-.00155-4.22014-2.65641-11.6708-12.929-13.7393zm-107.166 19.1415c-7.74208 0-10.0946-7.6492-10.0946-14.1395 0-6.47182 2.35255-14.2442 10.0946-14.2442 7.73287 0 10.179 7.77387 10.179 14.2442-.00155 6.49181-2.44617 14.1395-10.179 14.1395zm48.6592 1.95308c-2.34488 0-4.60381-.57254-6.17218-1.75762-1.6543-1.2759-2.74385-3.14125-2.74385-5.68688h-14.2074c.83022-2.69647 1.28908-5.593 1.28908-8.64805 0-1.4252-.12738-2.80728-.31307-4.16475 3.89329 6.73346 13.6656 7.3891 21.8574 9.46993 2.92497.67873 8.11959 1.4775 8.11959 5.39445 0 4.03238-4.61147 5.39292-7.82954 5.39292zm46.9574 0c-2.34335 0-4.60074-.57254-6.17062-1.75762-1.65433-1.2759-2.74389-3.14125-2.74389-5.68688h-13.569c-.03527-4.23399-2.72083-11.5954-12.926-13.65-7.63313-1.66528-18.7943-2.54564-18.7943-7.36755 0-3.53988 4.92761-3.82769 7.66074-3.82769 2.05637 0 3.90405.39709 5.28978 1.27282 1.35812.8865 2.14232 2.26244 2.14232 4.41099h14.7629c.59235 12.8574 13.8099 13.216 24.058 15.8202 2.92648.67873 8.11956 1.4775 8.11956 5.39445.00155 4.03084-4.61148 5.39138-7.82954 5.39138z" fill="#61615c"/>
<path d="m320.927 55.6529h1.48089l2.22826 3.67224h1.44405l-2.41086-3.73995c1.23841-.15699 2.17914-.81572 2.17914-2.32247 0-1.69145-.97908-2.42096-2.97407-2.42096h-3.22572v8.48338h1.27831zm0-1.0989v-2.63335h1.75405c.87014 0 1.84153.20316 1.84153 1.25434 0 1.3036-.97139 1.37901-2.05484 1.37901z" fill="#61615c"/>
<path d="m330.735 55.0989c0 4.58643-3.71373 8.29868-8.28533 8.29868-4.58233 0-8.29608-3.71225-8.29608-8.29868 0-4.59722 3.71375-8.3187 8.29608-8.3187 4.5716.00153 8.28533 3.72148 8.28533 8.3187zm-8.28687-6.83965c-3.78125 0-6.83206 3.05045-6.83206 6.83965 0 3.77227 3.05081 6.82117 6.83206 6.82117 3.75976 0 6.81057-3.0489 6.81057-6.82117.00155-3.7892-3.05081-6.83965-6.81057-6.83965z" fill="#61615c"/>
<path d="m166.086 179.053c-1.67578 0-3.25642-.8865-4.17258-1.90075v1.55292h-3.22574v-21.4316l3.22574-1.68068v8.05244c1.20006-1.11121 2.59041-1.93461 4.33065-1.93461 3.57102 0 6.38396 2.59949 6.38396 8.94049 0 5.70842-3.09684 8.4018-6.54203 8.4018zm-.4435-14.3288c-1.54995 0-2.90961 1.04657-3.76131 2.12546v7.00588c.7274.98346 2.24359 2.18702 3.88715 2.18702 2.33874 0 3.60479-1.77301 3.60479-5.29287 0-4.18629-1.32744-6.02549-3.73063-6.02549z" fill="#61615c"/>
<path d="m182.487 184.57h-3.44518l2.40166-6.18246-6.10159-16.328h3.57256l2.71778 8.1494c.50489 1.45751 1.26451 3.9308 1.45327 4.84809.28544-.98193.98062-3.3598 1.4855-4.78498l2.81447-8.21251h3.44518l-8.34365 22.5105z" fill="#61615c"/>
</svg>

After

Width:  |  Height:  |  Size: 7.8 KiB

View File

@@ -0,0 +1 @@
<svg width="2065" height="2500" viewBox="0 0 256 310" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid"><path d="M0 245.262l16.322 8.161L19 248.668V59.333l-2.678-3.494L0 64v181.262" fill="#9D5025"/><path d="M47.678 63.57l-31.356-7.731v197.584l31.356-7.302V63.57" fill="#F68536"/><path d="M143.893 78.604l22.335-11.597 74.309 28.778-19.758 2.577-76.886-19.758" fill="#6B3A19"/><path d="M144.752 230.658l21.906 11.597 74.308-28.778-19.758-2.578-76.456 19.759" fill="#FBBF93"/><path d="M150.336 198.872l39.087 5.155 2.244-4.027v-90l-2.244-4.765-39.087 5.154v88.483M35.651 45.96l24.054-12.027L62.333 39v231l-2.628 5.329-24.054-12.027V45.96" fill="#9D5025"/><path d="M108.671 259.007l-48.966 15.892V33.933l48.966 15.893v209.181" fill="#F68536"/><path d="M89.772 289.933L128 309.262l4-4.595v-299L128 0 89.772 19.329v270.604M219.919 98.362l19.759-2.577 1.697 2.465V211l-1.697 2.906-19.759-2.577V98.362" fill="#9D5025"/><path d="M189.423 105.235v99.221l40.805-49.825-40.805-49.396" fill="#F68536"/><path d="M239.678 55.839L128 0v309.262l128-64V64l-16.322-8.161zm0 158.217l-73.45 21.936V73.27l73.45 21.936v118.85z" fill="#F68536"/></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8" ?>
<svg baseProfile="full" height="200px" version="1.1" width="200px" xmlns="http://www.w3.org/2000/svg" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:xlink="http://www.w3.org/1999/xlink"><defs /><circle cx="40" cy="50" fill="#4A90E2" r="8" /><line stroke="#C0C0C0" stroke-width="1" x1="48" x2="92" y1="50" y2="50" /><line stroke="#C0C0C0" stroke-width="1" x1="48" x2="92" y1="50" y2="75" /><line stroke="#C0C0C0" stroke-width="1" x1="48" x2="92" y1="50" y2="125" /><line stroke="#C0C0C0" stroke-width="1" x1="48" x2="92" y1="50" y2="150" /><circle cx="40" cy="100" fill="#4A90E2" r="8" /><line stroke="#C0C0C0" stroke-width="1" x1="48" x2="92" y1="100" y2="50" /><line stroke="#C0C0C0" stroke-width="1" x1="48" x2="92" y1="100" y2="75" /><line stroke="#C0C0C0" stroke-width="1" x1="48" x2="92" y1="100" y2="125" /><line stroke="#C0C0C0" stroke-width="1" x1="48" x2="92" y1="100" y2="150" /><circle cx="40" cy="150" fill="#4A90E2" r="8" /><line stroke="#C0C0C0" stroke-width="1" x1="48" x2="92" y1="150" y2="50" /><line stroke="#C0C0C0" stroke-width="1" x1="48" x2="92" y1="150" y2="75" /><line stroke="#C0C0C0" stroke-width="1" x1="48" x2="92" y1="150" y2="125" /><line stroke="#C0C0C0" stroke-width="1" x1="48" x2="92" y1="150" y2="150" /><circle cx="100" cy="50" fill="#4A90E2" r="8" /><line stroke="#C0C0C0" stroke-width="1" x1="108" x2="152" y1="50" y2="100" /><circle cx="100" cy="75" fill="#4A90E2" r="8" /><line stroke="#C0C0C0" stroke-width="1" x1="108" x2="152" y1="75" y2="100" /><circle cx="100" cy="125" fill="#4A90E2" r="8" /><line stroke="#C0C0C0" stroke-width="1" x1="108" x2="152" y1="125" y2="100" /><circle cx="100" cy="150" fill="#4A90E2" r="8" /><line stroke="#C0C0C0" stroke-width="1" x1="108" x2="152" y1="150" y2="100" /><circle cx="160" cy="100" fill="#4A90E2" r="8" /></svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 256 256" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid">
<g>
<path d="M119.616813,0.0688905149 C119.066276,0.118932037 117.314565,0.294077364 115.738025,0.419181169 C79.3775171,3.69690087 45.3192571,23.3131775 23.7481916,53.4631946 C11.7364614,70.2271045 4.05395894,89.2428829 1.15112414,109.384595 C0.12512219,116.415429 0,118.492153 0,128.025062 C0,137.557972 0.12512219,139.634696 1.15112414,146.665529 C8.10791789,194.730411 42.3163245,235.11392 88.7116325,250.076335 C97.0197458,252.753556 105.778299,254.580072 115.738025,255.680985 C119.616813,256.106338 136.383187,256.106338 140.261975,255.680985 C157.453763,253.779407 172.017986,249.525878 186.382014,242.194795 C188.584164,241.068861 189.00958,240.768612 188.709286,240.518404 C188.509091,240.36828 179.124927,227.782837 167.86393,212.570214 L147.393939,184.922273 L121.743891,146.965779 C107.630108,126.098464 96.0187683,109.034305 95.9186706,109.034305 C95.8185728,109.009284 95.7184751,125.873277 95.6684262,146.465363 C95.5933529,182.52028 95.5683284,183.971484 95.1178886,184.82219 C94.4672532,186.048207 93.9667644,186.548623 92.915738,187.099079 C92.114956,187.499411 91.4142717,187.574474 87.6355816,187.574474 L83.3063539,187.574474 L82.1552297,186.848872 C81.4044966,186.373477 80.8539589,185.747958 80.4785924,185.022356 L79.9530792,183.896422 L80.0031281,133.729796 L80.0782014,83.5381493 L80.8539589,82.5623397 C81.25435,82.0369037 82.1051808,81.3613431 82.7057674,81.0360732 C83.7317693,80.535658 84.1321603,80.4856165 88.4613881,80.4856165 C93.5663734,80.4856165 94.4172043,80.6857826 95.7434995,82.1369867 C96.1188661,82.5373189 110.007429,103.454675 126.623656,128.650581 C143.239883,153.846488 165.962072,188.250034 177.122972,205.139048 L197.392766,235.839522 L198.418768,235.163961 C207.502639,229.259062 217.112023,220.852086 224.719453,212.09482 C240.910264,193.504394 251.345455,170.835585 254.848876,146.665529 C255.874878,139.634696 256,137.557972 256,128.025062 C256,118.492153 255.874878,116.415429 254.848876,109.384595 C247.892082,61.3197135 213.683675,20.9362052 167.288368,5.97379012 C159.105376,3.32158945 150.396872,1.49507389 140.637341,0.394160408 C138.234995,0.143952798 121.693842,-0.131275573 119.616813,0.0688905149 L119.616813,0.0688905149 Z M172.017986,77.4831252 C173.219159,78.0836234 174.195112,79.2345784 174.545455,80.435575 C174.74565,81.0861148 174.795699,94.9976579 174.74565,126.348671 L174.670577,171.336 L166.73783,159.17591 L158.780059,147.01582 L158.780059,114.313685 C158.780059,93.1711423 158.880156,81.2862808 159.030303,80.7108033 C159.430694,79.3096407 160.306549,78.2087272 161.507722,77.5581875 C162.533724,77.0327515 162.909091,76.98271 166.837928,76.98271 C170.541544,76.98271 171.19218,77.0327515 172.017986,77.4831252 Z" fill="#000000">
</path>
</g>

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 32 32" preserveAspectRatio="xMidYMid" fill="#8cc84b"><path d="M14.656.427c.8-.453 1.82-.455 2.6 0L29.2 7.16c.747.42 1.247 1.253 1.24 2.114v13.5c.005.897-.544 1.748-1.332 2.16l-11.88 6.702a2.6 2.6 0 0 1-2.639-.073l-3.565-2.06c-.243-.145-.516-.26-.688-.495.152-.204.422-.23.642-.32.496-.158.95-.4 1.406-.656.115-.08.256-.05.366.022l3.04 1.758c.217.125.437-.04.623-.145l11.665-6.583c.144-.07.224-.222.212-.38V9.334c.016-.18-.087-.344-.25-.417L16.19 2.244a.41.41 0 0 0-.465-.001L3.892 8.93c-.16.073-.27.235-.25.415v13.37c-.014.158.07.307.215.375l3.162 1.785c.594.32 1.323.5 1.977.265a1.5 1.5 0 0 0 .971-1.409l.003-13.29c-.014-.197.172-.36.363-.34h1.52c.2-.005.357.207.33.405L12.18 23.88c.001 1.188-.487 2.48-1.586 3.063-1.354.7-3.028.553-4.366-.12l-3.4-1.88c-.8-.4-1.337-1.264-1.332-2.16v-13.5a2.46 2.46 0 0 1 1.282-2.141L14.656.427zM18.1 9.785c1.727-.1 3.576-.066 5.13.785 1.203.652 1.87 2.02 1.892 3.358-.034.18-.222.28-.394.267-.5-.001-1.002.007-1.504-.003-.213.008-.336-.188-.363-.376-.144-.64-.493-1.273-1.095-1.582-.924-.463-1.996-.44-3.004-.43-.736.04-1.527.103-2.15.535-.48.328-.624 1-.453 1.522.16.383.603.506.964.62 2.082.544 4.287.5 6.33 1.207.845.292 1.672.86 1.962 1.745.378 1.186.213 2.604-.63 3.556-.684.784-1.68 1.2-2.675 1.442-1.323.295-2.695.302-4.038.17-1.263-.144-2.577-.476-3.552-1.336-.834-.724-1.24-1.852-1.2-2.94.01-.184.193-.312.37-.297h1.5c.202-.014.35.16.36.35.093.6.322 1.25.854 1.6 1.026.662 2.313.616 3.487.635.973-.043 2.065-.056 2.86-.7.42-.367.543-.98.43-1.508-.123-.446-.6-.653-1-.8-2.055-.65-4.285-.414-6.32-1.15-.826-.292-1.625-.844-1.942-1.693-.443-1.2-.24-2.687.693-3.607.9-.915 2.22-1.268 3.47-1.394z"/></svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -0,0 +1 @@
<?xml version="1.0" encoding="utf-8"?><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 122.88 103.53" style="enable-background:new 0 0 122.88 103.53" xml:space="preserve"><style type="text/css">.st0{fill-rule:evenodd;clip-rule:evenodd;} .st0{fill:#1668dc;} .st1{fill:#FFFFFF;}</style><g><path class="st0" d="M5.47,0h111.93c3.01,0,5.47,2.46,5.47,5.47v92.58c0,3.01-2.46,5.47-5.47,5.47H5.47 c-3.01,0-5.47-2.46-5.47-5.47V5.47C0,2.46,2.46,0,5.47,0L5.47,0z M31.84,38.55l17.79,18.42l2.14,2.13l-2.12,2.16L31.68,80.31 l-5.07-5l15.85-16.15L26.81,43.6L31.84,38.55L31.84,38.55z M94.1,79.41H54.69v-6.84H94.1V79.41L94.1,79.41z M38.19,9.83 c3.19,0,5.78,2.59,5.78,5.78s-2.59,5.78-5.78,5.78c-3.19,0-5.78-2.59-5.78-5.78S35,9.83,38.19,9.83L38.19,9.83z M18.95,9.83 c3.19,0,5.78,2.59,5.78,5.78s-2.59,5.78-5.78,5.78c-3.19,0-5.78-2.59-5.78-5.78S15.75,9.83,18.95,9.83L18.95,9.83z M7.49,5.41 h107.91c1.15,0,2.09,0.94,2.09,2.09v18.32H5.4V7.5C5.4,6.35,6.34,5.41,7.49,5.41L7.49,5.41z"/></g></svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@@ -0,0 +1,96 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg height="383.5975" id="svg3430" version="1.1" viewBox="0 0 711.20123 383.5975" width="711.20123" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg">
<title id="title3510">Official PHP Logo</title>
<metadata id="metadata3436">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title>Official PHP Logo</dc:title>
<dc:creator>
<cc:Agent>
<dc:title>Colin Viebrock</dc:title>
</cc:Agent>
</dc:creator>
<dc:description/>
<dc:contributor>
<cc:Agent>
<dc:title/>
</cc:Agent>
</dc:contributor>
<cc:license rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/"/>
<dc:rights>
<cc:Agent>
<dc:title>Copyright Colin Viebrock 1997 - All rights reserved.</dc:title>
</cc:Agent>
</dc:rights>
<dc:date>1997</dc:date>
</cc:Work>
<cc:License rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
<cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction"/>
<cc:permits rdf:resource="http://creativecommons.org/ns#Distribution"/>
<cc:requires rdf:resource="http://creativecommons.org/ns#Notice"/>
<cc:requires rdf:resource="http://creativecommons.org/ns#Attribution"/>
<cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks"/>
<cc:requires rdf:resource="http://creativecommons.org/ns#ShareAlike"/>
</cc:License>
</rdf:RDF>
</metadata>
<defs id="defs3434">
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3444">
<path d="M 11.52,162 C 11.52,81.677 135.307,16.561 288,16.561 l 0,0 c 152.693,0 276.481,65.116 276.481,145.439 l 0,0 c 0,80.322 -123.788,145.439 -276.481,145.439 l 0,0 C 135.307,307.439 11.52,242.322 11.52,162" id="path3446"/>
</clipPath>
<radialGradient cx="0" cy="0" fx="0" fy="0" gradientTransform="matrix(363.05789,0,0,-363.05789,177.52002,256.30713)" gradientUnits="userSpaceOnUse" id="radialGradient3452" r="1" spreadMethod="pad">
<stop id="stop3454" offset="0" style="stop-opacity:1;stop-color:#aeb2d5"/>
<stop id="stop3456" offset="0.3" style="stop-opacity:1;stop-color:#aeb2d5"/>
<stop id="stop3458" offset="0.75" style="stop-opacity:1;stop-color:#484c89"/>
<stop id="stop3460" offset="1" style="stop-opacity:1;stop-color:#484c89"/>
</radialGradient>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3468">
<path d="M 0,324 576,324 576,0 0,0 0,324 Z" id="path3470"/>
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3480">
<path d="M 0,324 576,324 576,0 0,0 0,324 Z" id="path3482"/>
</clipPath>
</defs>
<g id="g3438" transform="matrix(1.25,0,0,-1.25,-4.4,394.29875)">
<g id="g3440">
<g clip-path="url(#clipPath3444)" id="g3442">
<g id="g3448">
<g id="g3450">
<path d="M 11.52,162 C 11.52,81.677 135.307,16.561 288,16.561 l 0,0 c 152.693,0 276.481,65.116 276.481,145.439 l 0,0 c 0,80.322 -123.788,145.439 -276.481,145.439 l 0,0 C 135.307,307.439 11.52,242.322 11.52,162" id="path3462" style="fill:url(#radialGradient3452);stroke:none"/>
</g>
</g>
</g>
</g>
<g id="g3464">
<g clip-path="url(#clipPath3468)" id="g3466">
<g id="g3472" transform="translate(288,27.3594)">
<path d="M 0,0 C 146.729,0 265.68,60.281 265.68,134.641 265.68,209 146.729,269.282 0,269.282 -146.729,269.282 -265.68,209 -265.68,134.641 -265.68,60.281 -146.729,0 0,0" id="path3474" style="fill:#777bb3;fill-opacity:1;fill-rule:nonzero;stroke:none"/>
</g>
</g>
</g>
<g id="g3476">
<g clip-path="url(#clipPath3480)" id="g3478">
<g id="g3484" transform="translate(161.7344,145.3066)">
<path d="m 0,0 c 12.065,0 21.072,2.225 26.771,6.611 5.638,4.341 9.532,11.862 11.573,22.353 1.903,9.806 1.178,16.653 -2.154,20.348 C 32.783,53.086 25.417,55 14.297,55 L -4.984,55 -15.673,0 0,0 Z m -63.063,-67.75 c -0.895,0 -1.745,0.4 -2.314,1.092 -0.57,0.691 -0.801,1.601 -0.63,2.48 L -37.679,81.573 C -37.405,82.982 -36.17,84 -34.734,84 L 26.32,84 C 45.508,84 59.79,78.79 68.767,68.513 77.792,58.182 80.579,43.741 77.05,25.592 75.614,18.198 73.144,11.331 69.709,5.183 66.27,-0.972 61.725,-6.667 56.198,-11.747 49.582,-17.939 42.094,-22.429 33.962,-25.071 25.959,-27.678 15.681,-29 3.414,-29 l -24.722,0 -7.06,-36.322 c -0.274,-1.41 -1.508,-2.428 -2.944,-2.428 l -31.751,0 z" id="path3486" style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"/>
</g>
<g id="g3488" transform="translate(159.2236,197.3071)">
<path d="m 0,0 16.808,0 c 13.421,0 18.083,-2.945 19.667,-4.7 2.628,-2.914 3.124,-9.058 1.435,-17.767 C 36.012,-32.217 32.494,-39.13 27.452,-43.012 22.29,-46.986 13.898,-49 2.511,-49 L -9.523,-49 0,0 Z m 28.831,35 -61.055,0 c -2.872,0 -5.341,-2.036 -5.889,-4.855 l -28.328,-145.751 c -0.342,-1.759 0.12,-3.578 1.259,-4.961 1.14,-1.383 2.838,-2.183 4.63,-2.183 l 31.75,0 c 2.873,0 5.342,2.036 5.89,4.855 l 6.588,33.895 22.249,0 c 12.582,0 23.174,1.372 31.479,4.077 8.541,2.775 16.399,7.48 23.354,13.984 5.752,5.292 10.49,11.232 14.08,17.657 3.591,6.427 6.171,13.594 7.668,21.302 3.715,19.104 0.697,34.402 -8.969,45.466 C 63.965,29.444 48.923,35 28.831,35 m -45.633,-90 19.313,0 c 12.801,0 22.336,2.411 28.601,7.234 6.266,4.824 10.492,12.875 12.688,24.157 2.101,10.832 1.144,18.476 -2.871,22.929 C 36.909,3.773 28.87,6 16.808,6 L -4.946,6 -16.802,-55 M 28.831,29 C 47.198,29 60.597,24.18 69.019,14.539 77.44,4.898 79.976,-8.559 76.616,-25.836 75.233,-32.953 72.894,-39.46 69.601,-45.355 66.304,-51.254 61.999,-56.648 56.679,-61.539 50.339,-67.472 43.296,-71.7 35.546,-74.218 27.796,-76.743 17.925,-78 5.925,-78 l -27.196,0 -7.531,-38.75 -31.75,0 28.328,145.75 61.055,0" id="path3490" style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"/>
</g>
<g id="g3492" transform="translate(311.583,116.3066)">
<path d="m 0,0 c -0.896,0 -1.745,0.4 -2.314,1.092 -0.571,0.691 -0.802,1.6 -0.631,2.48 L 9.586,68.061 C 10.778,74.194 10.484,78.596 8.759,80.456 7.703,81.593 4.531,83.5 -4.848,83.5 L -27.55,83.5 -43.305,2.428 C -43.579,1.018 -44.814,0 -46.25,0 l -31.5,0 c -0.896,0 -1.745,0.4 -2.315,1.092 -0.57,0.691 -0.801,1.601 -0.63,2.48 l 28.328,145.751 c 0.274,1.409 1.509,2.427 2.945,2.427 l 31.5,0 c 0.896,0 1.745,-0.4 2.315,-1.091 0.57,-0.692 0.801,-1.601 0.63,-2.481 L -21.813,113 2.609,113 c 18.605,0 31.221,-3.28 38.569,-10.028 7.49,-6.884 9.827,-17.891 6.947,-32.719 L 34.945,2.428 C 34.671,1.018 33.437,0 32,0 L 0,0 Z" id="path3494" style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"/>
</g>
<g id="g3496" transform="translate(293.6611,271.0571)">
<path d="m 0,0 -31.5,0 c -2.873,0 -5.342,-2.036 -5.89,-4.855 l -28.328,-145.751 c -0.342,-1.759 0.12,-3.578 1.26,-4.961 1.14,-1.383 2.838,-2.183 4.63,-2.183 l 31.5,0 c 2.872,0 5.342,2.036 5.89,4.855 l 15.283,78.645 20.229,0 c 9.363,0 11.328,-2 11.407,-2.086 0.568,-0.611 1.315,-3.441 0.082,-9.781 l -12.531,-64.489 c -0.342,-1.759 0.12,-3.578 1.26,-4.961 1.14,-1.383 2.838,-2.183 4.63,-2.183 l 32,0 c 2.872,0 5.342,2.036 5.89,4.855 l 13.179,67.825 c 3.093,15.921 0.447,27.864 -7.861,35.5 -7.928,7.281 -21.208,10.82 -40.599,10.82 l -20.784,0 6.143,31.605 C 6.231,-5.386 5.77,-3.566 4.63,-2.184 3.49,-0.801 1.792,0 0,0 m 0,-6 -7.531,-38.75 28.062,0 c 17.657,0 29.836,-3.082 36.539,-9.238 6.703,-6.16 8.711,-16.141 6.032,-29.938 l -13.18,-67.824 -32,0 12.531,64.488 c 1.426,7.336 0.902,12.34 -1.574,15.008 -2.477,2.668 -7.746,4.004 -15.805,4.004 l -25.176,0 -16.226,-83.5 -31.5,0 L -31.5,-6 0,-6" id="path3498" style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"/>
</g>
<g id="g3500" transform="translate(409.5498,145.3066)">
<path d="m 0,0 c 12.065,0 21.072,2.225 26.771,6.611 5.638,4.34 9.532,11.861 11.574,22.353 1.903,9.806 1.178,16.653 -2.155,20.348 C 32.783,53.086 25.417,55 14.297,55 L -4.984,55 -15.673,0 0,0 Z m -63.062,-67.75 c -0.895,0 -1.745,0.4 -2.314,1.092 -0.57,0.691 -0.802,1.601 -0.631,2.48 L -37.679,81.573 C -37.404,82.982 -36.17,84 -34.733,84 L 26.32,84 C 45.509,84 59.79,78.79 68.768,68.513 77.793,58.183 80.579,43.742 77.051,25.592 75.613,18.198 73.144,11.331 69.709,5.183 66.27,-0.972 61.725,-6.667 56.198,-11.747 49.582,-17.939 42.094,-22.429 33.962,-25.071 25.959,-27.678 15.681,-29 3.414,-29 l -24.723,0 -7.057,-36.322 c -0.275,-1.41 -1.509,-2.428 -2.946,-2.428 l -31.75,0 z" id="path3502" style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"/>
</g>
<g id="g3504" transform="translate(407.0391,197.3071)">
<path d="M 0,0 16.808,0 C 30.229,0 34.891,-2.945 36.475,-4.7 39.104,-7.614 39.6,-13.758 37.91,-22.466 36.012,-32.217 32.493,-39.13 27.452,-43.012 22.29,-46.986 13.898,-49 2.511,-49 L -9.522,-49 0,0 Z m 28.831,35 -61.054,0 c -2.872,0 -5.341,-2.036 -5.889,-4.855 L -66.44,-115.606 c -0.342,-1.759 0.12,-3.578 1.259,-4.961 1.14,-1.383 2.838,-2.183 4.63,-2.183 l 31.75,0 c 2.872,0 5.342,2.036 5.89,4.855 l 6.587,33.895 22.249,0 c 12.582,0 23.174,1.372 31.479,4.077 8.541,2.775 16.401,7.481 23.356,13.986 5.752,5.291 10.488,11.23 14.078,17.655 3.591,6.427 6.171,13.594 7.668,21.302 3.715,19.105 0.697,34.403 -8.969,45.467 C 63.965,29.444 48.924,35 28.831,35 m -45.632,-90 19.312,0 c 12.801,0 22.336,2.411 28.601,7.234 6.267,4.824 10.492,12.875 12.688,24.157 2.102,10.832 1.145,18.476 -2.871,22.929 C 36.909,3.773 28.87,6 16.808,6 L -4.946,6 -16.801,-55 M 28.831,29 C 47.198,29 60.597,24.18 69.019,14.539 77.441,4.898 79.976,-8.559 76.616,-25.836 75.233,-32.953 72.894,-39.46 69.601,-45.355 66.304,-51.254 61.999,-56.648 56.679,-61.539 50.339,-67.472 43.296,-71.7 35.546,-74.218 27.796,-76.743 17.925,-78 5.925,-78 l -27.196,0 -7.53,-38.75 -31.75,0 28.328,145.75 61.054,0" id="path3506" style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"/>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 10 KiB

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M31.885 16c-8.124 0-7.617 3.523-7.617 3.523l.01 3.65h7.752v1.095H21.197S16 23.678 16 31.876c0 8.196 4.537 7.906 4.537 7.906h2.708v-3.804s-.146-4.537 4.465-4.537h7.688s4.32.07 4.32-4.175v-7.019S40.374 16 31.885 16zm-4.275 2.454c.771 0 1.395.624 1.395 1.395s-.624 1.395-1.395 1.395a1.393 1.393 0 0 1-1.395-1.395c0-.771.624-1.395 1.395-1.395z" fill="url(#a)"/><path d="M32.115 47.833c8.124 0 7.617-3.523 7.617-3.523l-.01-3.65H31.97v-1.095h10.832S48 40.155 48 31.958c0-8.197-4.537-7.906-4.537-7.906h-2.708v3.803s.146 4.537-4.465 4.537h-7.688s-4.32-.07-4.32 4.175v7.019s-.656 4.247 7.833 4.247zm4.275-2.454a1.393 1.393 0 0 1-1.395-1.395c0-.77.624-1.394 1.395-1.394s1.395.623 1.395 1.394c0 .772-.624 1.395-1.395 1.395z" fill="url(#b)"/><defs><linearGradient id="a" x1="19.075" y1="18.782" x2="34.898" y2="34.658" gradientUnits="userSpaceOnUse"><stop stop-color="#387EB8"/><stop offset="1" stop-color="#366994"/></linearGradient><linearGradient id="b" x1="28.809" y1="28.882" x2="45.803" y2="45.163" gradientUnits="userSpaceOnUse"><stop stop-color="#FFE052"/><stop offset="1" stop-color="#FFC331"/></linearGradient></defs></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M31.885 16c-8.124 0-7.617 3.523-7.617 3.523l.01 3.65h7.752v1.095H21.197S16 23.678 16 31.876c0 8.196 4.537 7.906 4.537 7.906h2.708v-3.804s-.146-4.537 4.465-4.537h7.688s4.32.07 4.32-4.175v-7.019S40.374 16 31.885 16zm-4.275 2.454c.771 0 1.395.624 1.395 1.395s-.624 1.395-1.395 1.395a1.393 1.393 0 0 1-1.395-1.395c0-.771.624-1.395 1.395-1.395z" fill="url(#a)"/><path d="M32.115 47.833c8.124 0 7.617-3.523 7.617-3.523l-.01-3.65H31.97v-1.095h10.832S48 40.155 48 31.958c0-8.197-4.537-7.906-4.537-7.906h-2.708v3.803s.146 4.537-4.465 4.537h-7.688s-4.32-.07-4.32 4.175v7.019s-.656 4.247 7.833 4.247zm4.275-2.454a1.393 1.393 0 0 1-1.395-1.395c0-.77.624-1.394 1.395-1.394s1.395.623 1.395 1.394c0 .772-.624 1.395-1.395 1.395z" fill="url(#b)"/><defs><linearGradient id="a" x1="19.075" y1="18.782" x2="34.898" y2="34.658" gradientUnits="userSpaceOnUse"><stop stop-color="#387EB8"/><stop offset="1" stop-color="#366994"/></linearGradient><linearGradient id="b" x1="28.809" y1="28.882" x2="45.803" y2="45.163" gradientUnits="userSpaceOnUse"><stop stop-color="#FFE052"/><stop offset="1" stop-color="#FFC331"/></linearGradient></defs></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="80px" height="80px" viewBox="0 0 80 80" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 64 (93537) - https://sketch.com -->
<title>Icon-Architecture/64/Arch_Amazon-RDS_64</title>
<desc>Created with Sketch.</desc>
<defs>
<linearGradient x1="0%" y1="100%" x2="100%" y2="0%" id="linearGradient-1">
<stop stop-color="#2E27AD" offset="0%"></stop>
<stop stop-color="#527FFF" offset="100%"></stop>
</linearGradient>
</defs>
<g id="Icon-Architecture/64/Arch_Amazon-RDS_64" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Icon-Architecture-BG/64/Database" fill="url(#linearGradient-1)">
<rect id="Rectangle" x="0" y="0" width="80" height="80"></rect>
</g>
<path d="M15.414,14 L24.707,23.293 L23.293,24.707 L14,15.414 L14,23 L12,23 L12,13 C12,12.448 12.447,12 13,12 L23,12 L23,14 L15.414,14 Z M68,13 L68,23 L66,23 L66,15.414 L56.707,24.707 L55.293,23.293 L64.586,14 L57,14 L57,12 L67,12 C67.553,12 68,12.448 68,13 L68,13 Z M66,57 L68,57 L68,67 C68,67.552 67.553,68 67,68 L57,68 L57,66 L64.586,66 L55.293,56.707 L56.707,55.293 L66,64.586 L66,57 Z M65.5,39.213 C65.5,35.894 61.668,32.615 55.25,30.442 L55.891,28.548 C63.268,31.045 67.5,34.932 67.5,39.213 C67.5,43.495 63.268,47.383 55.89,49.879 L55.249,47.984 C61.668,45.812 65.5,42.534 65.5,39.213 L65.5,39.213 Z M14.556,39.213 C14.556,42.393 18.143,45.585 24.152,47.753 L23.473,49.634 C16.535,47.131 12.556,43.333 12.556,39.213 C12.556,35.094 16.535,31.296 23.473,28.792 L24.152,30.673 C18.143,32.842 14.556,36.034 14.556,39.213 L14.556,39.213 Z M24.707,56.707 L15.414,66 L23,66 L23,68 L13,68 C12.447,68 12,67.552 12,67 L12,57 L14,57 L14,64.586 L23.293,55.293 L24.707,56.707 Z M40,31.286 C32.854,31.286 29,29.44 29,28.686 C29,27.931 32.854,26.086 40,26.086 C47.145,26.086 51,27.931 51,28.686 C51,29.44 47.145,31.286 40,31.286 L40,31.286 Z M40.029,39.031 C33.187,39.031 29,37.162 29,36.145 L29,31.284 C31.463,32.643 35.832,33.286 40,33.286 C44.168,33.286 48.537,32.643 51,31.284 L51,36.145 C51,37.163 46.835,39.031 40.029,39.031 L40.029,39.031 Z M40.029,46.667 C33.187,46.667 29,44.798 29,43.781 L29,38.862 C31.431,40.291 35.742,41.031 40.029,41.031 C44.292,41.031 48.578,40.292 51,38.867 L51,43.781 C51,44.799 46.835,46.667 40.029,46.667 L40.029,46.667 Z M40,53.518 C32.883,53.518 29,51.605 29,50.622 L29,46.498 C31.431,47.927 35.742,48.667 40.029,48.667 C44.292,48.667 48.578,47.929 51,46.503 L51,50.622 C51,51.605 47.117,53.518 40,53.518 L40,53.518 Z M40,24.086 C33.739,24.086 27,25.525 27,28.686 L27,50.622 C27,53.836 33.54,55.518 40,55.518 C46.46,55.518 53,53.836 53,50.622 L53,28.686 C53,25.525 46.261,24.086 40,24.086 L40,24.086 Z" id="Amazon-RDS_Icon_64_Squid" fill="#FFFFFF"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" fill="#d30001" viewBox="0 0 411 155">
<g>
<path d="M242.3 76.8h-19.5c-13.9 0-18.6 12.6-18.6 18.6v52.2h19.5v-12.5H242v12.5h18.9V95.4c0-15.2-13.8-18.6-18.6-18.6Zm-.4 38.1h-18.3V97.6s0-3.9 6.1-3.9h6.7c5.4 0 5.5 3.9 5.5 3.9v17.3Z"/>
<path d="M194.9 101c0-22.6-21.2-24.7-21.2-24.7h-38.2v71.3h19.2v-17.2l16.6 17.2h28.4l-22.3-22.5s17.5-1.5 17.5-24.1Zm-24.9 9.5h-15.3V94.2h15.4s4.3 1.6 4.3 8.1-4.4 8.2-4.4 8.2Z"/>
<path d="M379.374 120.643c.333.002.446.002 0 0Z"/>
<path d="M385.3 103.4H369V95h32.3V76.8h-31c-8 0-18.7 6.6-18.7 18.9v6.3c0 12.3 10.6 18.6 18.7 18.6 5.868.026 8.304.039 9.074.043-1.298-.008-5.906-.043 6.326-.043v8.8l-33.1.1v18.1h32.7c6.7 0 18.2-4.9 18.6-18.6v-7c0-11.7-9.6-18.6-18.6-18.6Z"/>
<path d="M269.8 76.8h20.3v70.8h-20.3z"/>
<path d="M318.6 76.8h-20.2v70.8h47.5v-18.3h-27.3V76.8z"/>
</g>
<g>
<path d="M180 17.8c-.9-.5-3.4-1.7-9.7-3.5l-.4 6.6c3.3 1.1 6.5 2.3 9.7 3.6l.4-6.7Z"/>
<path d="M124.9 18.9c-29.2 2.6-65 29.1-86 64.1S15 147.6 15 147.6h79s-15.1-68.9 34.9-96.8c10.9-5.3 45.6-25.1 102.4 16.9 1.8-1.5 3.5-2.7 3.5-2.7s-52-51.9-109.9-46.1Z"/>
<path d="m54.7 54.7-7.1-6.2c-2.6 2.5-5.1 5-7.4 7.5l7.7 6.6c2.1-2.7 4.4-5.4 6.8-7.9Z"/>
<path d="M92.5 25 88 18.1c-2.5 1.3-5.1 2.7-7.8 4.3l4.6 7c2.6-1.6 5.1-3.1 7.7-4.4Z"/>
<path d="M24.5 99.4 13 95.2c-1.9 4.3-4 9.3-5 12l11.5 4.2c1.3-3.4 3.4-8.3 5-12Z"/>
<path d="M133.1 14.5h1l-2-6.1c-3.1 0-6.3.2-9.6.6l1.9 5.9c2.9-.3 5.8-.4 8.7-.4Z"/>
<path d="M97 127.6c.2 5.3.7 9.6 1.2 12.6l12 4.3c-.9-3.9-1.8-8.3-2.4-13L97 127.6Z"/>
<path d="m137.9 51.3 2.3 6.9c2.9-1.4 5.8-2.6 8.7-3.5l-2.2-6.6c-3.4 1-6.3 2.1-8.8 3.2Z"/>
<path d="M169.7 52c3.3.1 6.6.5 9.9 1.2l.4-6.2c-3.4-.7-6.7-1.1-9.9-1.3l-.4 6.3Z"/>
<path d="M101.5 91.2c-1.3 3.7-2.2 7.4-3 11l8.1 6.4c.4-3.9 1.1-7.8 2.1-11.7l-7.2-5.7Z"/>
<path d="m113 70 4.8 7.2c1.7-2.5 3.7-4.8 5.9-7.1l-4.5-6.8c-2.3 2.1-4.4 4.4-6.2 6.7Z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" viewBox="0 0 1200 800" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;">
<g id="Layer-1" serif:id="Layer 1">
<g transform="matrix(1,0,0,1,597.344,637.02)">
<path d="M0,-279.559C-121.238,-279.559 -231.39,-264.983 -312.939,-241.23L-312.939,-38.329C-231.39,-14.575 -121.238,0 0,0C138.76,0 262.987,-19.092 346.431,-49.186L346.431,-230.37C262.987,-260.465 138.76,-279.559 0,-279.559" style="fill:rgb(165,43,0);fill-rule:nonzero;"/>
</g>
<g transform="matrix(1,0,0,1,1068.75,575.642)">
<path d="M0,-53.32L-14.211,-82.761C-14.138,-83.879 -14.08,-84.998 -14.08,-86.121C-14.08,-119.496 -48.786,-150.256 -107.177,-174.883L-107.177,2.643C-79.932,-8.849 -57.829,-21.674 -42.021,-35.482C-46.673,-16.775 -62.585,21.071 -75.271,47.686C-96.121,85.752 -103.671,118.889 -102.703,120.53C-102.086,121.563 -94.973,110.59 -84.484,92.809C-60.074,58.028 -13.82,-8.373 -4.575,-25.287C5.897,-44.461 0,-53.32 0,-53.32" style="fill:rgb(165,43,0);fill-rule:nonzero;"/>
</g>
<g transform="matrix(1,0,0,1,149.064,591.421)">
<path d="M0,-99.954C0,-93.526 1.293,-87.194 3.788,-80.985L-4.723,-65.835C-4.723,-65.835 -11.541,-56.989 0.465,-38.327C11.055,-21.872 64.1,42.54 92.097,76.271C104.123,93.564 112.276,104.216 112.99,103.187C114.114,101.554 105.514,69.087 81.631,32.046C70.487,12.151 57.177,-14.206 49.189,-33.675C71.492,-19.559 100.672,-6.755 135.341,4.265L135.341,-204.17C51.797,-177.622 0,-140.737 0,-99.954" style="fill:rgb(165,43,0);fill-rule:nonzero;"/>
</g>
<g transform="matrix(-65.8097,-752.207,-752.207,65.8097,621.707,796.312)">
<path d="M0.991,-0.034L0.933,0.008C0.933,0.014 0.933,0.02 0.933,0.026L0.99,0.069C0.996,0.073 0.999,0.08 0.998,0.087C0.997,0.094 0.992,0.1 0.986,0.103L0.92,0.133C0.919,0.139 0.918,0.145 0.916,0.15L0.964,0.203C0.968,0.208 0.97,0.216 0.968,0.222C0.965,0.229 0.96,0.234 0.953,0.236L0.882,0.254C0.88,0.259 0.877,0.264 0.875,0.27L0.91,0.33C0.914,0.336 0.914,0.344 0.91,0.35C0.907,0.356 0.9,0.36 0.893,0.361L0.82,0.365C0.817,0.369 0.813,0.374 0.81,0.379L0.832,0.445C0.835,0.452 0.833,0.459 0.828,0.465C0.824,0.47 0.816,0.473 0.809,0.472L0.737,0.462C0.733,0.466 0.729,0.47 0.724,0.474L0.733,0.544C0.734,0.551 0.731,0.558 0.725,0.562C0.719,0.566 0.711,0.568 0.704,0.565L0.636,0.542C0.631,0.546 0.626,0.549 0.621,0.552L0.615,0.621C0.615,0.629 0.61,0.635 0.604,0.638C0.597,0.641 0.589,0.641 0.583,0.638L0.521,0.602C0.52,0.603 0.519,0.603 0.518,0.603L0.406,0.729C0.406,0.729 0.394,0.747 0.359,0.725C0.329,0.705 0.206,0.599 0.141,0.543C0.109,0.52 0.089,0.504 0.09,0.502C0.093,0.499 0.149,0.509 0.217,0.554C0.278,0.588 0.371,0.631 0.38,0.619C0.38,0.619 0.396,0.604 0.406,0.575C0.406,0.575 0.406,0.575 0.406,0.575C0.407,0.576 0.407,0.576 0.406,0.575C0.406,0.575 0.091,0.024 0.305,-0.531C0.311,-0.593 0.275,-0.627 0.275,-0.627C0.266,-0.639 0.178,-0.598 0.12,-0.566C0.055,-0.523 0.002,-0.513 0,-0.516C-0.001,-0.518 0.018,-0.533 0.049,-0.555C0.11,-0.608 0.227,-0.707 0.256,-0.726C0.289,-0.748 0.301,-0.73 0.301,-0.73L0.402,-0.615C0.406,-0.614 0.41,-0.613 0.415,-0.613L0.47,-0.658C0.475,-0.663 0.483,-0.664 0.49,-0.662C0.497,-0.66 0.502,-0.655 0.504,-0.648L0.522,-0.58C0.527,-0.578 0.533,-0.576 0.538,-0.574L0.602,-0.608C0.608,-0.612 0.616,-0.612 0.623,-0.608C0.629,-0.605 0.633,-0.599 0.633,-0.592L0.637,-0.522C0.642,-0.519 0.647,-0.515 0.652,-0.512L0.721,-0.534C0.728,-0.536 0.736,-0.535 0.741,-0.531C0.747,-0.526 0.75,-0.519 0.749,-0.512L0.738,-0.443C0.742,-0.439 0.746,-0.435 0.751,-0.431L0.823,-0.439C0.83,-0.44 0.837,-0.437 0.842,-0.432C0.847,-0.426 0.848,-0.419 0.845,-0.412L0.821,-0.347C0.824,-0.342 0.828,-0.337 0.831,-0.332L0.903,-0.327C0.911,-0.327 0.917,-0.322 0.92,-0.316C0.924,-0.31 0.924,-0.302 0.92,-0.296L0.883,-0.236C0.885,-0.231 0.887,-0.226 0.889,-0.22L0.959,-0.202C0.966,-0.2 0.972,-0.195 0.974,-0.188C0.976,-0.181 0.974,-0.174 0.969,-0.168L0.92,-0.116C0.921,-0.111 0.923,-0.105 0.924,-0.099L0.988,-0.068C0.995,-0.065 0.999,-0.059 1,-0.052C1.001,-0.045 0.997,-0.038 0.991,-0.034ZM0.406,0.575C0.406,0.575 0.406,0.575 0.406,0.575C0.406,0.575 0.406,0.575 0.406,0.575Z" style="fill:url(#_Linear1);fill-rule:nonzero;"/>
</g>
<g transform="matrix(1,0,0,1,450.328,483.629)">
<path d="M0,167.33C-1.664,165.91 -2.536,165.068 -2.536,165.068L140.006,153.391C23.733,0 -69.418,122.193 -79.333,135.855L-79.333,167.33L0,167.33Z" style="fill-rule:nonzero;"/>
</g>
<g transform="matrix(1,0,0,1,747.12,477.333)">
<path d="M0,171.974C1.663,170.554 2.536,169.71 2.536,169.71L-134.448,159.687C-18.12,0 69.421,126.835 79.335,140.497L79.335,171.974L0,171.974Z" style="fill-rule:nonzero;"/>
</g>
<g transform="matrix(-1.53e-05,-267.211,-267.211,1.53e-05,809.465,764.23)">
<path d="M1,-0.586C1,-0.586 0.768,-0.528 0.524,-0.165L0.5,-0.064C0.5,-0.064 1.1,0.265 0.424,0.731C0.424,0.731 0.508,0.586 0.405,0.197C0.405,0.197 0.131,0.376 0.14,0.736C0.14,0.736 -0.275,0.391 0.324,-0.135C0.324,-0.135 0.539,-0.691 1,-0.736L1,-0.586Z" style="fill:url(#_Linear2);fill-rule:nonzero;"/>
</g>
<g transform="matrix(1,0,0,1,677.392,509.61)">
<path d="M0,-92.063C0,-92.063 43.486,-139.678 86.974,-92.063C86.974,-92.063 121.144,-28.571 86.974,3.171C86.974,3.171 31.062,47.615 0,3.171C0,3.171 -37.275,-31.75 0,-92.063" style="fill-rule:nonzero;"/>
</g>
<g transform="matrix(1,0,0,1,727.738,435.209)">
<path d="M0,0.002C0,18.543 -10.93,33.574 -24.408,33.574C-37.885,33.574 -48.814,18.543 -48.814,0.002C-48.814,-18.539 -37.885,-33.572 -24.408,-33.572C-10.93,-33.572 0,-18.539 0,0.002" style="fill:white;fill-rule:nonzero;"/>
</g>
<g transform="matrix(1,0,0,1,483.3,502.984)">
<path d="M0,-98.439C0,-98.439 74.596,-131.467 94.956,-57.748C94.956,-57.748 116.283,28.178 33.697,33.028C33.697,33.028 -71.613,12.745 0,-98.439" style="fill-rule:nonzero;"/>
</g>
<g transform="matrix(1,0,0,1,520.766,436.428)">
<path d="M0,0C0,19.119 -11.27,34.627 -25.173,34.627C-39.071,34.627 -50.344,19.119 -50.344,0C-50.344,-19.124 -39.071,-34.627 -25.173,-34.627C-11.27,-34.627 0,-19.124 0,0" style="fill:white;fill-rule:nonzero;"/>
</g>
<g transform="matrix(-1.53e-05,-239.021,-239.021,1.53e-05,402.161,775.388)">
<path d="M0.367,0.129C-0.364,-0.441 0.223,-0.711 0.223,-0.711C0.259,-0.391 0.472,-0.164 0.472,-0.164C0.521,-0.548 0.525,-0.77 0.525,-0.77C1.203,-0.256 0.589,0.161 0.589,0.161C0.627,0.265 0.772,0.372 0.906,0.451L1,0.77C0.376,0.403 0.367,0.129 0.367,0.129Z" style="fill:url(#_Linear3);fill-rule:nonzero;"/>
</g>
</g>
<defs>
<linearGradient id="_Linear1" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1,0,1.38778e-17,-1,0,-0.000650515)"><stop offset="0" style="stop-color:rgb(247,76,0);stop-opacity:1"/><stop offset="0.33" style="stop-color:rgb(247,76,0);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(244,150,0);stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear2" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1,0,0,-1,0,1.23438e-06)"><stop offset="0" style="stop-color:rgb(204,58,0);stop-opacity:1"/><stop offset="0.15" style="stop-color:rgb(204,58,0);stop-opacity:1"/><stop offset="0.74" style="stop-color:rgb(247,76,0);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(247,76,0);stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear3" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1,1.32349e-23,1.32349e-23,-1,0,-9.1568e-07)"><stop offset="0" style="stop-color:rgb(204,58,0);stop-opacity:1"/><stop offset="0.15" style="stop-color:rgb(204,58,0);stop-opacity:1"/><stop offset="0.74" style="stop-color:rgb(247,76,0);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(247,76,0);stop-opacity:1"/></linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 8.1 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 97.1 97"><defs><style>.cls-1{fill:#6db33f;}</style></defs><title>spring-icon</title><g id="Layer_2" data-name="Layer 2"><g id="logos"><path class="cls-1" d="M88.4,5.6a42.32,42.32,0,0,1-5.2,9.1A48.46,48.46,0,1,0,15.5,84l1.8,1.6A48.41,48.41,0,0,0,96.8,52C98.2,39.8,94.5,24.2,88.4,5.6ZM22.5,84.4a4.12,4.12,0,1,1-.6-5.8A4.21,4.21,0,0,1,22.5,84.4ZM88.1,69.9C76.2,85.8,50.6,80.4,34.3,81.2c0,0-2.9.2-5.8.6,0,0,1.1-.5,2.5-1,11.5-4,16.9-4.8,23.9-8.4C68,65.7,81.1,51,83.7,35.8c-5,14.6-20.2,27.2-34,32.3C40.2,71.6,23.1,75,23.1,75l-.7-.4c-11.6-5.7-12-30.9,9.2-39,9.3-3.6,18.1-1.6,28.2-4,10.7-2.5,23.1-10.5,28.1-21C93.5,27.5,100.3,53.7,88.1,69.9Z"/></g></g></svg>

After

Width:  |  Height:  |  Size: 703 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64"><path d="M63.93 17.608a17.91 17.91 0 0 0-.405-3.78c-.5-2.553-1.828-4.893-3.8-6.7a12.05 12.05 0 0 0-3.447-2.258c-1.243-.6-2.57-1-3.94-1.22-1.354-.25-2.85-.25-4.203-.368h-33.45a24.7 24.7 0 0 0-3.113.251c-1.027.114-2.033.36-3 .736l-.95.368a17.47 17.47 0 0 0-2.585 1.589c-.264.25-.545.368-.81.602a10.91 10.91 0 0 0-2.48 3.044C1.09 11.02.63 12.258.405 13.544A35.75 35.75 0 0 0 0 17.307V46.46a17.91 17.91 0 0 0 .405 3.78c.5 2.553 1.828 4.893 3.8 6.7a12.06 12.06 0 0 0 3.394 2.191c1.243.6 2.57 1 3.94 1.22 1.354.25 2.85.25 4.203.368h32.466a24.49 24.49 0 0 0 4.203-.368c1.344-.22 2.648-.627 3.87-1.204a15.54 15.54 0 0 0 3.517-2.191 10.9 10.9 0 0 0 2.445-3.044c.67-1.138 1.128-2.377 1.354-3.663a35.75 35.75 0 0 0 .405-3.78v-28.85z" fill="#f05138"/><path d="M42.737 47.713c-5.698 2.96-13.525 3.26-21.386.234C15.218 45.6 9.967 41.557 6.28 36.34c1.72 1.22 3.592 2.232 5.575 3.01 8.125 3.345 16.268 3.194 21.984 0-7.545-5.46-14.34-11.798-20.225-18.866a21.17 21.17 0 0 1-2.708-3.345c6.18 4.937 12.754 9.41 19.663 13.38-5.032-4.852-9.66-10.07-13.84-15.605C23.7 21.277 31.363 26.917 39.59 31.74l.88.468a15.18 15.18 0 0 0 .616-1.673c1.9-6.222-.264-13.296-5.012-19.15 10.992 5.97 17.5 17.193 14.79 26.593 0 .25-.14.502-.23.753l.088.1c5.434 6.105 3.94 12.56 3.254 11.34-2.972-5.1-8.477-3.53-11.238-2.46z" fill="#fefefe"/></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64"><path d="M63.93 17.608a17.91 17.91 0 0 0-.405-3.78c-.5-2.553-1.828-4.893-3.8-6.7a12.05 12.05 0 0 0-3.447-2.258c-1.243-.6-2.57-1-3.94-1.22-1.354-.25-2.85-.25-4.203-.368h-33.45a24.7 24.7 0 0 0-3.113.251c-1.027.114-2.033.36-3 .736l-.95.368a17.47 17.47 0 0 0-2.585 1.589c-.264.25-.545.368-.81.602a10.91 10.91 0 0 0-2.48 3.044C1.09 11.02.63 12.258.405 13.544A35.75 35.75 0 0 0 0 17.307V46.46a17.91 17.91 0 0 0 .405 3.78c.5 2.553 1.828 4.893 3.8 6.7a12.06 12.06 0 0 0 3.394 2.191c1.243.6 2.57 1 3.94 1.22 1.354.25 2.85.25 4.203.368h32.466a24.49 24.49 0 0 0 4.203-.368c1.344-.22 2.648-.627 3.87-1.204a15.54 15.54 0 0 0 3.517-2.191 10.9 10.9 0 0 0 2.445-3.044c.67-1.138 1.128-2.377 1.354-3.663a35.75 35.75 0 0 0 .405-3.78v-28.85z" fill="#f05138"/><path d="M42.737 47.713c-5.698 2.96-13.525 3.26-21.386.234C15.218 45.6 9.967 41.557 6.28 36.34c1.72 1.22 3.592 2.232 5.575 3.01 8.125 3.345 16.268 3.194 21.984 0-7.545-5.46-14.34-11.798-20.225-18.866a21.17 21.17 0 0 1-2.708-3.345c6.18 4.937 12.754 9.41 19.663 13.38-5.032-4.852-9.66-10.07-13.84-15.605C23.7 21.277 31.363 26.917 39.59 31.74l.88.468a15.18 15.18 0 0 0 .616-1.673c1.9-6.222-.264-13.296-5.012-19.15 10.992 5.97 17.5 17.193 14.79 26.593 0 .25-.14.502-.23.753l.088.1c5.434 6.105 3.94 12.56 3.254 11.34-2.972-5.1-8.477-3.53-11.238-2.46z" fill="#fefefe"/></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="595.279" height="424" viewBox="0 209.445 595.279 424" xmlns:v="https://vecta.io/nano"><path fill="#d1a41a" d="M531.64 594.445L437.037 493.74l-10.896 7.205c-52.431-30.908-91.661-75.49-111.786-142.345-71.662 17.629-155.214 62.845-209.047 124.013.01.012.021.023.03.037-53.459 57.869-87.91 112.324-97.033 132.129l52.169.334c-2.015-23.424 4.09-42.951 20-64.668 72.167-98.5 343.167 15 450.167 76.5l57-.5c-.001 0-8.501-37.5-56.001-32h0z"/><path fill="#ffdc76" d="M428.14 500.945c-110.127-54.949-140-189-113-281 0 0 20.5 9.5 40 55.5 44.646-12.799 96.667-14.001 142-1.5 0 0 5.5-36 38.5-53 4.992 21.339 38 191-107.5 280z"/><path d="M229.617 394.569L261.671 379l18.317 49.455-50.371-33.886zm-35.945 18.088l19.919-11.906 18.316 32.284-38.235-20.378zm-38.693 24.956l17.399-11.447 8.7 29.764-26.099-18.317zm308.172 82.424l-11.448-11.447-16.026 25.184 27.474-13.737zm22.896 27.474l-9.158-9.158-27.476 18.316 36.634-9.158zM315.64 346.862l-1.311-18.231 32.055 16.256-30.744 1.975zm10.139 26.644l-6.389-13.561 22.415 9.211-16.026 4.35zm210.638-19.233l4.578-13.736-25.185 10.531 20.607 3.205zm-9.158 27.933l2.289-11.219-18.316 5.495 16.027 5.724zm-222.086 35.488h59.985v7.419h-59.985v-7.419zm0-17.859h59.985v7.418h-59.985v-7.418zm183.163 17.859h59.985v7.419h-59.985v-7.419zm0-17.859h59.985v7.418h-59.985v-7.418z"/><path d="M547.277 286.323l-.1-.151c-.042-11.562-3.627-60.43-10.2-73.884-17.838 6.819-50.32 28.961-57.572 51.537-35.134-5.291-74.799-4.652-109.706 1.388-5.802-24.4-34.905-42.871-56.892-53.361-9.271 15.758-13.396 52.22-12.331 78.217-.039.027-.083.053-.122.083 4.08 108.774 57.119 176.502 126.478 217.549 71.4-41.047 122.399-121.09 120.358-221.427.029.017.061.031.087.049zM427.816 493.599c-109.027-54.727-129.652-193.147-111.064-266.803 5.168 28.505 14.552 46.291 34.905 54.957 18.88-5.445 40.823-8.739 63.263-9.765l16.179 37.412 11.968-37.497c20.707.828 40.93 3.638 58.645 8.554 18.698-13.683 26.066-34.662 29.919-52.906 4.94 21.254 4.375 67.272 4.397 67.272l.138-.755C538 384.597 492.189 456.66 427.817 493.601l-.001-.002z"/><path d="M583.444 607.021c-11.197-12.611-33.094-18.563-51.453-18.129-13.011-15.576-88.398-95.549-88.398-95.549l-5.235 6.613 91.12 98.51 3.943-.34c24.707-2.129 38.759 11.357 42.613 15.553 2.721 3.08 4.374 5.883 5.282 8.074h-50.093c-114.693-60.201-215.56-102.617-321.865-111.966.235-14.98 2.878-31.924 7.978-50.852l-9.838-2.691c-5.234 19.43-7.978 36.943-8.296 52.678a506.01 506.01 0 0 0-33.772-1.129c-9.61 0-18.361.898-26.294 2.463-10.403-10.467-19.266-20.434-26.746-29.873 49.64-51.994 131.692-99.197 202.865-116.527l-2.313-10.034c-76.612 18.585-160.479 69.095-207.171 118.124-21.669-29.418-30.373-53.59-32.866-71.833-3.218-23.032 2.26-44.239 15.866-61.343 21.307-26.68 51.453-28.505 82.731-23.26-.607 4.948.039 9.669 2.006 12.587 8.229 12.223 52.359 16.534 78.881 4.675-19.493-27.364-58.934-40.818-69.813-35.574-3.627 1.779-6.347 5.04-8.229 8.87-10.767-1.936-21.442-3.375-29.24-3.329-27.427.202-48.507 9.851-64.146 29.417-15.413 19.269-21.646 43.099-18.02 69.096 3.444 24.627 15.549 50.852 35.812 77.989l-9.768 10.764c-49.413 55.641-85.68 115.617-85.68 125.42v5.131h65.279l-1.144-6.088c-3.695-19.611 3.672-44.24 18.767-62.482 9.475-11.492 25.16-24.629 49.866-30.785 21.896 21.504 49.866 44.24 80.92 66.359h48.506v-5.131c0-5.793-2.855-10.855-8.023-14.275-7.662-5.039-19.493-5.746-30.373-2.012-10.358-11.605-16.185-27.137-17.431-46.291 105.398 9.395 206.038 52.221 319.597 111.967h62.559l-.002-4.063c-.997-12-8.38-20.736-8.38-20.736l-.002.002zM77.981 545.906c-15.458 18.768-23.573 43.557-21.76 64.764H14.968c8.273-17.992 41.254-70.008 89.759-122.686 6.71 8.348 14.167 16.762 22.372 25.313-23.801 7.229-39.666 20.66-49.413 32.609h.295zm288.822-221.515l-.003-.001-.002.005.005-.004z"/><path d="M507.276 325.238v-6.687c-24.772 0-39.609 9.799-46.707 30.68h-53.575c3.746-16.713 4.388-33.106-1.131-42.585-3.113-5.334-8.014-8.173-14.172-8.173-22.071 0-30.781 22.621-31.138 23.582l6.247 2.334c.249-.827 7.556-19.204 24.954-19.204 3.801 0 6.471 1.534 8.402 4.854 4.52 7.784 3.786 23.078.031 39.151h-30.451v6.686l28.959.027c-3.091 10.967-7.418 21.796-12.294 30.451l-1.578 2.771 38.235 24.04-21.477 14.15 3.687 5.586 24.041-15.821 25.871 16.895 3.549-5.652-24.04-14.86 37.777-24.499c-.013-.015-.02-.029-.029-.042l-.13-.076.043-.007c-7.92-11.674-10.417-21.655-7.123-32.962l31.219.041.067-6.64h-29.077c5.496-12.661 13.052-24.04 39.84-24.04h0zm-78.24 83.779l-28.16-17.744 55.178.014-27.018 17.73h0zm29.395-53.114c-2.381 7.555-1.419 18.935 4.419 28.619h-67.999c4.144-8.288 7.968-18.385 10.761-28.619h52.819z"/></svg>

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="595.279" height="424" viewBox="0 209.445 595.279 424" xmlns:v="https://vecta.io/nano"><path fill="#d1a41a" d="M531.64 594.445L437.037 493.74l-10.896 7.205c-52.431-30.908-91.661-75.49-111.786-142.345-71.662 17.629-155.214 62.845-209.047 124.013.01.012.021.023.03.037-53.459 57.869-87.91 112.324-97.033 132.129l52.169.334c-2.015-23.424 4.09-42.951 20-64.668 72.167-98.5 343.167 15 450.167 76.5l57-.5c-.001 0-8.501-37.5-56.001-32h0z"/><path fill="#ffdc76" d="M428.14 500.945c-110.127-54.949-140-189-113-281 0 0 20.5 9.5 40 55.5 44.646-12.799 96.667-14.001 142-1.5 0 0 5.5-36 38.5-53 4.992 21.339 38 191-107.5 280z"/><path d="M229.617 394.569L261.671 379l18.317 49.455-50.371-33.886zm-35.945 18.088l19.919-11.906 18.316 32.284-38.235-20.378zm-38.693 24.956l17.399-11.447 8.7 29.764-26.099-18.317zm308.172 82.424l-11.448-11.447-16.026 25.184 27.474-13.737zm22.896 27.474l-9.158-9.158-27.476 18.316 36.634-9.158zM315.64 346.862l-1.311-18.231 32.055 16.256-30.744 1.975zm10.139 26.644l-6.389-13.561 22.415 9.211-16.026 4.35zm210.638-19.233l4.578-13.736-25.185 10.531 20.607 3.205zm-9.158 27.933l2.289-11.219-18.316 5.495 16.027 5.724zm-222.086 35.488h59.985v7.419h-59.985v-7.419zm0-17.859h59.985v7.418h-59.985v-7.418zm183.163 17.859h59.985v7.419h-59.985v-7.419zm0-17.859h59.985v7.418h-59.985v-7.418z"/><path d="M547.277 286.323l-.1-.151c-.042-11.562-3.627-60.43-10.2-73.884-17.838 6.819-50.32 28.961-57.572 51.537-35.134-5.291-74.799-4.652-109.706 1.388-5.802-24.4-34.905-42.871-56.892-53.361-9.271 15.758-13.396 52.22-12.331 78.217-.039.027-.083.053-.122.083 4.08 108.774 57.119 176.502 126.478 217.549 71.4-41.047 122.399-121.09 120.358-221.427.029.017.061.031.087.049zM427.816 493.599c-109.027-54.727-129.652-193.147-111.064-266.803 5.168 28.505 14.552 46.291 34.905 54.957 18.88-5.445 40.823-8.739 63.263-9.765l16.179 37.412 11.968-37.497c20.707.828 40.93 3.638 58.645 8.554 18.698-13.683 26.066-34.662 29.919-52.906 4.94 21.254 4.375 67.272 4.397 67.272l.138-.755C538 384.597 492.189 456.66 427.817 493.601l-.001-.002z"/><path d="M583.444 607.021c-11.197-12.611-33.094-18.563-51.453-18.129-13.011-15.576-88.398-95.549-88.398-95.549l-5.235 6.613 91.12 98.51 3.943-.34c24.707-2.129 38.759 11.357 42.613 15.553 2.721 3.08 4.374 5.883 5.282 8.074h-50.093c-114.693-60.201-215.56-102.617-321.865-111.966.235-14.98 2.878-31.924 7.978-50.852l-9.838-2.691c-5.234 19.43-7.978 36.943-8.296 52.678a506.01 506.01 0 0 0-33.772-1.129c-9.61 0-18.361.898-26.294 2.463-10.403-10.467-19.266-20.434-26.746-29.873 49.64-51.994 131.692-99.197 202.865-116.527l-2.313-10.034c-76.612 18.585-160.479 69.095-207.171 118.124-21.669-29.418-30.373-53.59-32.866-71.833-3.218-23.032 2.26-44.239 15.866-61.343 21.307-26.68 51.453-28.505 82.731-23.26-.607 4.948.039 9.669 2.006 12.587 8.229 12.223 52.359 16.534 78.881 4.675-19.493-27.364-58.934-40.818-69.813-35.574-3.627 1.779-6.347 5.04-8.229 8.87-10.767-1.936-21.442-3.375-29.24-3.329-27.427.202-48.507 9.851-64.146 29.417-15.413 19.269-21.646 43.099-18.02 69.096 3.444 24.627 15.549 50.852 35.812 77.989l-9.768 10.764c-49.413 55.641-85.68 115.617-85.68 125.42v5.131h65.279l-1.144-6.088c-3.695-19.611 3.672-44.24 18.767-62.482 9.475-11.492 25.16-24.629 49.866-30.785 21.896 21.504 49.866 44.24 80.92 66.359h48.506v-5.131c0-5.793-2.855-10.855-8.023-14.275-7.662-5.039-19.493-5.746-30.373-2.012-10.358-11.605-16.185-27.137-17.431-46.291 105.398 9.395 206.038 52.221 319.597 111.967h62.559l-.002-4.063c-.997-12-8.38-20.736-8.38-20.736l-.002.002zM77.981 545.906c-15.458 18.768-23.573 43.557-21.76 64.764H14.968c8.273-17.992 41.254-70.008 89.759-122.686 6.71 8.348 14.167 16.762 22.372 25.313-23.801 7.229-39.666 20.66-49.413 32.609h.295zm288.822-221.515l-.003-.001-.002.005.005-.004z"/><path d="M507.276 325.238v-6.687c-24.772 0-39.609 9.799-46.707 30.68h-53.575c3.746-16.713 4.388-33.106-1.131-42.585-3.113-5.334-8.014-8.173-14.172-8.173-22.071 0-30.781 22.621-31.138 23.582l6.247 2.334c.249-.827 7.556-19.204 24.954-19.204 3.801 0 6.471 1.534 8.402 4.854 4.52 7.784 3.786 23.078.031 39.151h-30.451v6.686l28.959.027c-3.091 10.967-7.418 21.796-12.294 30.451l-1.578 2.771 38.235 24.04-21.477 14.15 3.687 5.586 24.041-15.821 25.871 16.895 3.549-5.652-24.04-14.86 37.777-24.499c-.013-.015-.02-.029-.029-.042l-.13-.076.043-.007c-7.92-11.674-10.417-21.655-7.123-32.962l31.219.041.067-6.64h-29.077c5.496-12.661 13.052-24.04 39.84-24.04h0zm-78.24 83.779l-28.16-17.744 55.178.014-27.018 17.73h0zm29.395-53.114c-2.381 7.555-1.419 18.935 4.419 28.619h-67.999c4.144-8.288 7.968-18.385 10.761-28.619h52.819z"/></svg>

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

@@ -0,0 +1,56 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 25.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.0" id="katman_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 800 600" style="enable-background:new 0 0 800 600;" xml:space="preserve">
<style type="text/css">
.st0{fill:url(#SVGID_1_);}
.st1{fill:url(#SVGID_2_);}
</style>
<path d="M364.7,246.1h16.9L363.2,300h-16.9l-18.5-53.9h17.1l10.2,33h0.2C355.3,279.1,364.7,246.1,364.7,246.1z M436,300h-39.4v-53.9
h39.2v13.6h-23.6v7.1h20.9v12.2h-20.9v7.4H436V300z M477.6,245.2c11.3,0,19.6,5.8,22.1,15.1l-14.7,6.4c-0.7-4.2-2.9-7.4-7.6-7.4
c-5.3,0-9.3,4.4-9.3,14c0,9.6,3.8,14.2,9.3,14.2c4.5,0,6.9-3.4,7.6-7.6l14.7,6.4c-2.5,9.3-10.9,15.1-22.1,15.1
c-16.2,0-26.1-10.7-26.1-28S461.4,245.2,477.6,245.2z M527.9,300v-40.3h-16.2v-13.6h48.5v13.6H544V300H527.9L527.9,300z
M625.6,273.1c0,17.2-10,28-26.1,28c-16,0-26.1-10.7-26.1-28s10.2-28,26.1-28C615.6,245.2,625.6,255.9,625.6,273.1z M590.2,273.1
c0,8.7,3.3,14.2,9.4,14.2s9.4-5.3,9.4-14.2c0-8.7-3.3-14.2-9.4-14.2S590.2,264.2,590.2,273.1z M674.6,300c-1.5-1.8-2-3.4-2.5-6.4
l-1.1-6c-0.7-3.8-2.5-4.9-5.8-4.9h-6.4V300h-16v-53.9h25.6c12.2,0,20.7,4.7,20.7,16.5c0,7.8-5.3,12.3-11.1,13.4v0.2
c4.7,0.7,7.4,3.6,8.5,8.5l2,8.5c0.7,2.9,1.6,4.7,3.4,6.7C692,300,674.6,300,674.6,300z M666.4,259.3h-7.8V270h7.8
c3.8,0,5.8-1.6,5.8-5.4C672.2,261.1,670.4,259.3,666.4,259.3z M344.9,340.5c3.3,0.4,5.6,2.4,5.6,6c0,4.4-2.7,7.3-8.7,7.3h-9.3v-26.1
h8.9c5.1,0,8.2,2.4,8.2,6.9C349.6,337.7,347.6,339.9,344.9,340.5L344.9,340.5z M335.8,339.4h5.4c3.3,0,5.1-1.5,5.1-4.5
s-1.8-4.5-5.1-4.5h-5.4V339.4z M335.8,351h5.8c3.6,0,5.4-1.6,5.4-4.5c0-2.9-2-4.5-5.4-4.5h-5.8V351z M363.8,340.3l7.1-12.7h3.4
l-8.9,15.8v10.2h-3.3v-10.2l-9.1-15.8h3.6L363.8,340.3L363.8,340.3z M390.5,327.6h7.6c7.3,0,12.7,4,12.7,12.9s-5.4,13.1-12.7,13.1
h-7.6V327.6z M393.7,350.8h4.4c4.7,0,9.3-2.5,9.3-10.3s-4.5-10.2-9.3-10.2h-4.4C393.7,330.3,393.7,350.8,393.7,350.8z M429.9,346.5
H419l-2.5,7.3h-3.3l9.4-26.1h3.6l9.4,26.1h-3.3L429.9,346.5L429.9,346.5z M419.9,343.6h8.9l-4.4-12.5L419.9,343.6z M444,353.7v-23.2
h-8.7v-2.9h20.9v2.9h-8.7v23.2H444z M472.3,346.5h-10.9l-2.5,7.3h-3.3l9.4-26.1h3.6l9.4,26.1h-3.3L472.3,346.5z M462.5,343.6h8.9
l-4.4-12.5L462.5,343.6z M483.2,327.6h7.6c7.3,0,12.7,4,12.7,12.9s-5.4,13.1-12.7,13.1h-7.6V327.6z M486.5,350.8h4.4
c4.7,0,9.3-2.5,9.3-10.3s-4.5-10.2-9.3-10.2h-4.4C486.5,330.3,486.5,350.8,486.5,350.8z M530.6,340.7c0,8.4-4.5,13.4-11.3,13.4
s-11.3-5.1-11.3-13.4c0-8.4,4.5-13.4,11.3-13.4S530.6,332.3,530.6,340.7z M511.6,340.7c0,6.4,2.7,10.7,7.8,10.7s7.8-4.4,7.8-10.7
c0-6.4-2.7-10.7-7.8-10.7S511.6,334.3,511.6,340.7z M556.6,340.5v13.1H554l-0.5-3.8c-0.9,2.7-3.8,4.4-7.3,4.4
c-6.5,0-11.1-4.9-11.1-13.4c0-8.7,4.9-13.6,11.4-13.6c4.7,0,8,2,9.4,6l-2.9,1.6c-0.9-3.1-3.4-4.9-6.7-4.9c-5.1,0-8,4-8,10.7
c0,6.4,2.5,10.7,8,10.7c3.4,0,6.7-1.8,6.7-6.5V343h-6.4v-2.7h9.8L556.6,340.5z"/>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="128.0459" y1="579.2074" x2="313.2256" y2="472.2935" gradientTransform="matrix(1 0 0 1 -20.96 -225.764)">
<stop offset="0" style="stop-color:#10E7FF"/>
<stop offset="0.103" style="stop-color:#33D5FF"/>
<stop offset="0.255" style="stop-color:#60BDFF"/>
<stop offset="0.408" style="stop-color:#86AAFF"/>
<stop offset="0.56" style="stop-color:#A39AFF"/>
<stop offset="0.71" style="stop-color:#B790FF"/>
<stop offset="0.858" style="stop-color:#C489FF"/>
<stop offset="1" style="stop-color:#C887FF"/>
</linearGradient>
<path class="st0" d="M199.7,408.2l-92.2-54.1V245.9l92.2-54.1l92.2,54.1v108.2L199.7,408.2z M120.3,346.5l79.1,46.5l79.1-46.5v-92.9
l-79-46.5l-79.3,46.5C120.3,253.5,120.3,346.5,120.3,346.5z"/>
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="185.3542" y1="542.0127" x2="277.202" y2="488.9837" gradientTransform="matrix(1 0 0 1 -20.96 -225.764)">
<stop offset="0" style="stop-color:#10E7FF"/>
<stop offset="0.103" style="stop-color:#33D5FF"/>
<stop offset="0.255" style="stop-color:#60BDFF"/>
<stop offset="0.408" style="stop-color:#86AAFF"/>
<stop offset="0.56" style="stop-color:#A39AFF"/>
<stop offset="0.71" style="stop-color:#B790FF"/>
<stop offset="0.858" style="stop-color:#C489FF"/>
<stop offset="1" style="stop-color:#C887FF"/>
</linearGradient>
<path class="st1" d="M239.4,270.6l-32.3,56.8l10.5,18.5l42.8-75.3C260.5,270.6,239.4,270.6,239.4,270.6z M203.3,270.6L171,327.4
l10.5,18.5l42.8-75.3C224.4,270.6,203.3,270.6,203.3,270.6z M138.9,270.6l42.8,75.3l10.5-18.5l-32.3-56.8
C159.9,270.6,138.9,270.6,138.9,270.6z M138.9,270.6l42.8,75.3l10.5-18.5l-32.3-56.8C159.9,270.6,138.9,270.6,138.9,270.6z
M203.3,270.6L171,327.4l10.5,18.5l42.8-75.3C224.4,270.6,203.3,270.6,203.3,270.6z"/>
</svg>

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

@@ -0,0 +1 @@
<svg fill="none" viewBox="0 0 1155 1000" xmlns="http://www.w3.org/2000/svg"><path d="m577.3 0 577.4 1000h-1154.7z" fill="#fff"/></svg>

After

Width:  |  Height:  |  Size: 134 B

View File

@@ -0,0 +1 @@
<svg height="58.054" width="64.06" xmlns="http://www.w3.org/2000/svg"><path d="m561.16106 571.25413c-2.21807 0-4.00374 1.7857-4.00374 4.0037v38.0355c0 2.2181 1.78567 4.0038 4.00374 4.0038h20.01869v8.0075h-8.00747v2.0018h-4.00374v2.0019h40.03738v-2.0019h-4.00373v-2.0018h-8.00748v-8.0075h20.01869c2.21807 0 4.00374-1.7857 4.00374-4.0038v-38.0355c0-2.218-1.78567-4.0037-4.00374-4.0037zm0 4.0037h56.05234v38.0355h-56.05234zm29.02711 7.5696-10.88517 5.5051 10.88517 6.5061 11.13539-6.5061zm-10.88517 7.507v12.0112l10.00935 6.0056v-12.0112zm22.02056.062-10.00934 6.0056v12.0112l10.00934-6.0056z" fill="#00bcf2" transform="translate(-557.157 -571.254)"/></svg>

After

Width:  |  Height:  |  Size: 654 B

View File

@@ -0,0 +1 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 122.88 76.64"><defs><style>.cls-1{fill:#f68633;}.cls-2{fill:#fff;}</style></defs><title>aws-vpc</title><path class="cls-1" d="M15.92,32.33c0-.31,0-.6,0-.91A31.4,31.4,0,0,1,76,18.59,15.91,15.91,0,0,1,100.86,31.2c12.39,1.06,22,13.08,22,22.65v2.08c0,10.3-11.13,20.71-24.85,20.71H24.85C11.13,76.64,0,66.23,0,55.93V53.86C0,45.93,6.62,35,15.92,32.34Z"/><path class="cls-2" d="M32,36.24h4.89l4.89,23h.07l5.18-23H52L44.68,65.1H38.82L32,36.24Zm22.88,0h9.14c5.55,0,8,3.48,8,8.41,0,5.18-3,8.53-8.45,8.53H59.54V65.11H54.93V36.24ZM59.53,49.7h3.28c2.45,0,4.6-1.33,4.6-5,0-3.11-1.24-5-4.94-5H59.52v10Zm34.16,5.06v.6c0,5.22-2.1,10.31-8.89,10.31-7.28,0-9.54-4.69-9.54-15s2.27-15,9.58-15c8.21,0,8.69,6.06,8.69,9.06v.53h-4.6v-.48c0-2.67-.81-5.74-4.13-5.62s-4.93,2.1-4.93,11.4,1.54,11.64,4.93,11.64c3.84,0,4.29-4.29,4.29-7v-.5l4.6,0Z"/></svg>

After

Width:  |  Height:  |  Size: 908 B

View File

@@ -0,0 +1,3 @@
<?xml version="1.0" encoding="utf-8"?><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 122.46 122.88" style="enable-background:new 0 0 122.46 122.88" xml:space="preserve"><style type="text/css"><![CDATA[
.st0{fill:#0078D6;}
]]></style><g><path class="st0" d="M0,17.53v41.52h50.07v-48.4L0,17.53L0,17.53z M56.11,9.68L122.46,0v58.63H56.11V9.68L56.11,9.68z M0,64.16 v41.52l50.07,7.01V64.16H0L0,64.16z M56.11,64.81h66.35v58.07l-66.35-9.4V64.81L56.11,64.81z"/></g></svg>

After

Width:  |  Height:  |  Size: 557 B

View File

@@ -0,0 +1,3 @@
<?xml version="1.0" encoding="utf-8"?><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 122.46 122.88" style="enable-background:new 0 0 122.46 122.88" xml:space="preserve"><style type="text/css"><![CDATA[
.st0{fill:#0078D6;}
]]></style><g><path class="st0" d="M0,17.53v41.52h50.07v-48.4L0,17.53L0,17.53z M56.11,9.68L122.46,0v58.63H56.11V9.68L56.11,9.68z M0,64.16 v41.52l50.07,7.01V64.16H0L0,64.16z M56.11,64.81h66.35v58.07l-66.35-9.4V64.81L56.11,64.81z"/></g></svg>

After

Width:  |  Height:  |  Size: 557 B

View File

@@ -3,13 +3,15 @@
"LOGIN": "SigNoz | Login",
"SERVICE_METRICS": "SigNoz | Service Metrics",
"SERVICE_MAP": "SigNoz | Service Map",
"GET_STARTED": "SigNoz | Get Started",
"GET_STARTED_OLD": "SigNoz | Get Started",
"ONBOARDING": "SigNoz | Get Started",
"GET_STARTED_APPLICATION_MONITORING": "SigNoz | Get Started | APM",
"GET_STARTED_LOGS_MANAGEMENT": "SigNoz | Get Started | Logs",
"GET_STARTED_INFRASTRUCTURE_MONITORING": "SigNoz | Get Started | Infrastructure",
"GET_STARTED_AWS_MONITORING": "SigNoz | Get Started | AWS",
"GET_STARTED_AZURE_MONITORING": "SigNoz | Get Started | AZURE",
"GET_STARTED": "SigNoz | Get Started with SigNoz Cloud",
"GET_STARTED_WITH_CLOUD": "SigNoz | Get Started with SigNoz Cloud",
"TRACE": "SigNoz | Trace",
"TRACE_DETAIL": "SigNoz | Trace Detail",
"TRACES_EXPLORER": "SigNoz | Traces Explorer",
@@ -57,5 +59,8 @@
"ALERT_OVERVIEW": "SigNoz | Alert Rule Overview",
"MESSAGING_QUEUES": "SigNoz | Messaging Queues",
"INFRASTRUCTURE_MONITORING_HOSTS": "SigNoz | Infra Monitoring",
"INFRASTRUCTURE_MONITORING_KUBERNETES": "SigNoz | Infra Monitoring"
"INFRASTRUCTURE_MONITORING_KUBERNETES": "SigNoz | Infra Monitoring",
"METRICS_EXPLORER": "SigNoz | Metrics Explorer",
"METRICS_EXPLORER_EXPLORER": "SigNoz | Metrics Explorer",
"METRICS_EXPLORER_VIEWS": "SigNoz | Metrics Explorer"
}

View File

@@ -1,6 +1,7 @@
import getLocalStorageApi from 'api/browser/localstorage/get';
import setLocalStorageApi from 'api/browser/localstorage/set';
import getOrgUser from 'api/user/getOrgUser';
import { FeatureKeys } from 'constants/features';
import { LOCALSTORAGE } from 'constants/localStorage';
import ROUTES from 'constants/routes';
import history from 'lib/history';
@@ -36,6 +37,7 @@ function PrivateRoute({ children }: PrivateRouteProps): JSX.Element {
isFetchingLicenses,
activeLicenseV3,
isFetchingActiveLicenseV3,
featureFlags,
} = useAppContext();
const isAdmin = user.role === USER_ROLES.ADMIN;
@@ -156,7 +158,7 @@ function PrivateRoute({ children }: PrivateRouteProps): JSX.Element {
const currentRoute = mapRoutes.get('current');
const shouldSuspendWorkspace =
activeLicenseV3.status === LicenseStatus.SUSPENDED &&
activeLicenseV3.state === LicenseState.PAYMENT_FAILED;
activeLicenseV3.state === LicenseState.DEFAULTED;
if (shouldSuspendWorkspace && currentRoute) {
navigateToWorkSpaceSuspended(currentRoute);
@@ -170,6 +172,16 @@ function PrivateRoute({ children }: PrivateRouteProps): JSX.Element {
}
}, [org]);
// if the feature flag is enabled and the current route is /get-started then redirect to /get-started-with-signoz-cloud
useEffect(() => {
if (
currentRoute?.path === ROUTES.GET_STARTED &&
featureFlags?.find((e) => e.name === FeatureKeys.ONBOARDING_V3)?.active
) {
history.push(ROUTES.GET_STARTED_WITH_CLOUD);
}
}, [currentRoute, featureFlags]);
// eslint-disable-next-line sonarjs/cognitive-complexity
useEffect(() => {
// if it is an old route navigate to the new route

View File

@@ -110,6 +110,18 @@ function App(): JSX.Element {
source: 'signoz-ui',
isPaidUser: !!licenses?.trialConvertedToSubscription,
});
if (
window.cioanalytics &&
typeof window.cioanalytics.identify === 'function'
) {
window.cioanalytics.reset();
window.cioanalytics.identify(email, {
name: user.name,
email,
role: user.role,
});
}
}
},
[hostname, isFetchingLicenses, licenses, org],

View File

@@ -73,6 +73,10 @@ export const OrgOnboarding = Loadable(
() => import(/* webpackChunkName: "OrgOnboarding" */ 'pages/OrgOnboarding'),
);
export const OnboardingV2 = Loadable(
() => import(/* webpackChunkName: "Onboarding V2" */ 'pages/OnboardingPageV2'),
);
export const DashboardPage = Loadable(
() =>
import(/* webpackChunkName: "DashboardPage" */ 'pages/DashboardsListPage'),
@@ -264,3 +268,8 @@ export const CeleryOverview = Loadable(
/* webpackChunkName: "CeleryOverview" */ 'pages/Celery/CeleryOverview/CeleryOverview'
),
);
export const MetricsExplorer = Loadable(
() =>
import(/* webpackChunkName: "MetricsExplorer" */ 'pages/MetricsExplorer'),
);

View File

@@ -28,10 +28,12 @@ import {
LogsExplorer,
LogsIndexToFields,
LogsSaveViews,
MetricsExplorer,
MySettings,
NewDashboardPage,
OldLogsExplorer,
Onboarding,
OnboardingV2,
OrganizationSettings,
OrgOnboarding,
PasswordReset,
@@ -71,6 +73,13 @@ const routes: AppRoutes[] = [
isPrivate: true,
key: 'GET_STARTED',
},
{
path: ROUTES.GET_STARTED_WITH_CLOUD,
exact: false,
component: OnboardingV2,
isPrivate: true,
key: 'GET_STARTED_WITH_CLOUD',
},
{
path: ROUTES.ONBOARDING,
exact: false,
@@ -435,6 +444,27 @@ const routes: AppRoutes[] = [
key: 'INFRASTRUCTURE_MONITORING_KUBERNETES',
isPrivate: true,
},
{
path: ROUTES.METRICS_EXPLORER,
exact: true,
component: MetricsExplorer,
key: 'METRICS_EXPLORER',
isPrivate: true,
},
{
path: ROUTES.METRICS_EXPLORER_EXPLORER,
exact: true,
component: MetricsExplorer,
key: 'METRICS_EXPLORER_EXPLORER',
isPrivate: true,
},
{
path: ROUTES.METRICS_EXPLORER_VIEWS,
exact: true,
component: MetricsExplorer,
key: 'METRICS_EXPLORER_VIEWS',
isPrivate: true,
},
];
export const SUPPORT_ROUTE: AppRoutes = {

View File

@@ -0,0 +1,19 @@
import axios from 'api';
import { ErrorResponse, SuccessResponse } from 'types/api';
const removeAwsIntegrationAccount = async (
accountId: string,
): Promise<SuccessResponse<Record<string, never>> | ErrorResponse> => {
const response = await axios.post(
`/cloud-integrations/aws/accounts/${accountId}/disconnect`,
);
return {
statusCode: 200,
error: null,
message: response.data.status,
payload: response.data.data,
};
};
export default removeAwsIntegrationAccount;

View File

@@ -13,13 +13,11 @@ const getTriggered = async (
const response = await axios.get(`/alerts?${queryParams}`);
const amData = JSON.parse(response.data.data);
return {
statusCode: 200,
error: null,
message: response.data.status,
payload: amData.data,
payload: response.data.data,
};
} catch (error) {
return ErrorResponseHandler(error as AxiosError);

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