Merge branch 'master' into master

main
mohita-taggbox 4 years ago committed by GitHub
commit cd15ec01c1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -58,6 +58,7 @@ try {
}
})
// Validate regular expression
try {
// eslint-disable-next-line no-new
new RegExp(regex)
@ -65,6 +66,7 @@ try {
throw new Error(`${error.message} (${id})`)
}
// Count capture groups
const groups = new RegExp(`${regex}|`).exec('').length - 1
if (groups > maxGroups) {

@ -2,7 +2,8 @@
"dependencies": {
"@prantlf/jsonlint": "^10.2.0",
"adm-zip": "^0.4.14",
"convert-svg-to-png": "^0.5.0"
"convert-svg-to-png": "^0.5.0",
"languagedetect": "^2.0.0"
},
"devDependencies": {
"@nuxtjs/eslint-config": "^1.0.1",
@ -20,6 +21,7 @@
"validate": "yarn run lint && jsonlint -qV ./schema.json ./src/apps.json && node ./bin/validate.js",
"convert": "cd ./src/drivers/webextension/images/icons ; cp *.svg converted ; cd converted ; convert-svg-to-png *.svg --width 32 --height 32 ; rm *.svg",
"prettify": "jsonlint -si --trim-trailing-commas --enforce-double-quotes ./src/apps.json",
"build": "yarn run link && yarn run validate && yarn run prettify && yarn run convert && node ./bin/build.js"
"build": "yarn run link && yarn run validate && yarn run prettify && yarn run convert && node ./bin/build.js",
"build:safari": "xcrun safari-web-extension-converter --swift --project-location build --force src/drivers/webextension"
}
}

19
run

@ -1,19 +0,0 @@
#!/bin/bash
cd "$(dirname $0)"
if [[ -z "$(which docker)" ]]; then
echo "Please install Docker from https://www.docker.com"
exit 1
fi
cmd="docker run --rm -v "$(pwd):/opt/wappalyzer" -it wappalyzer/dev"
$cmd sh -c "\
yarn install; \
cd ../npm; \
yarn install"
$cmd ./bin/run links
$cmd ./bin/run $@

@ -16,7 +16,8 @@ $ npm i wappalyzer-core
const fs = require('fs')
const Wappalyzer = require('./wappalyzer')
// See https://www.wappalyzer.com/docs/dev/specification
// See https://www.wappalyzer.com/docs/dev/specification or use
// https://raw.githubusercontent.com/AliasIO/wappalyzer/master/src/apps.json
const { apps: technologies, categories } = JSON.parse(
fs.readFileSync('./apps.json')
)

File diff suppressed because it is too large Load Diff

@ -1,169 +0,0 @@
/* eslint-env browser */
/* globals wappalyzer */
;(function() {
wappalyzer.driver.document = document
const container = document.getElementById('wappalyzer-container')
const url = wappalyzer.parseUrl(window.top.location.href)
const hasOwn = Object.prototype.hasOwnProperty
/**
* Log messages to console
*/
wappalyzer.driver.log = (message, source, type) => {
// eslint-disable-next-line no-console
console.log(`[wappalyzer ${type}]`, `[${source}]`, message)
}
function getPageContent() {
wappalyzer.log('func: getPageContent', 'driver')
const scripts = Array.prototype.slice
.apply(document.scripts)
.filter((s) => s.src)
.map((s) => s.src)
let html = new window.XMLSerializer()
.serializeToString(document)
.split('\n')
html = html
.slice(0, 1000)
.concat(html.slice(html.length - 1000))
.map((line) => line.substring(0, 1000))
.join('\n')
wappalyzer.analyze(url, {
html,
scripts
})
}
function getResponseHeaders() {
wappalyzer.log('func: getResponseHeaders', 'driver')
const xhr = new XMLHttpRequest()
xhr.open('GET', url, true)
xhr.onreadystatechange = () => {
if (xhr.readyState === 4 && xhr.status) {
const headers = xhr.getAllResponseHeaders().split('\n')
if (headers.length > 0 && headers[0] !== '') {
wappalyzer.log(
`responseHeaders: ${xhr.getAllResponseHeaders()}`,
'driver'
)
const responseHeaders = {}
headers.forEach((line) => {
let name, value
if (line) {
name = line.substring(0, line.indexOf(': '))
value = line.substring(line.indexOf(': ') + 2, line.length - 1)
if (!responseHeaders[name.toLowerCase()]) {
responseHeaders[name.toLowerCase()] = []
}
responseHeaders[name.toLowerCase()].push(value)
}
})
wappalyzer.analyze(url, {
headers: responseHeaders
})
}
}
}
xhr.send()
}
/**
* Display apps
*/
wappalyzer.driver.displayApps = (detected) => {
wappalyzer.log('func: displayApps', 'driver')
let first = true
let app
let category
let html
html =
'<a id="wappalyzer-close" href="javascript: document.body.removeChild(document.getElementById(\'wappalyzer-container\')); void(0);">' +
'Close' +
'</a>' +
'<div id="wappalyzer-apps">'
if (detected != null && Object.keys(detected).length) {
for (app in detected) {
if (!hasOwn.call(detected, app)) {
continue
}
const version = detected[app].version
const confidence = detected[app].confidence
html +=
`<div class="wappalyzer-app${first ? ' wappalyzer-first' : ''}">` +
`<a target="_blank" class="wappalyzer-application" href="${
wappalyzer.config.websiteURL
}applications/${app
.toLowerCase()
.replace(/ /g, '-')
.replace(/[^a-z0-9-]/g, '')}">` +
'<strong>' +
`<img src="${wappalyzer.config.websiteURL}images/icons/${wappalyzer
.apps[app].icon ||
'default.svg'}" width="16" height="16"/> ${app}</strong>${
version ? ` ${version}` : ''
}${confidence < 100 ? ` (${confidence}% sure)` : ''}</a>`
for (const i in wappalyzer.apps[app].cats) {
if (!hasOwn.call(wappalyzer.apps[app].cats, i)) {
continue
}
category = wappalyzer.categories[wappalyzer.apps[app].cats[i]].name
html += `<a target="_blank" class="wappalyzer-category" href="${
wappalyzer.config.websiteURL
}categories/${slugify(category)}">${category}</a>`
}
html += '</div>'
first = false
}
} else {
html += '<div id="wappalyzer-empty">No applications detected</div>'
}
html += '</div>'
container.innerHTML = html
}
/**
* Open a tab
*/
// function openTab(args) {
// open(args.url)
// }
function slugify(string) {
return string
.toLowerCase()
.replace(/[^a-z0-9-]/g, '-')
.replace(/--+/g, '-')
.replace(/(?:^-|-$)/, '')
}
getPageContent()
getResponseHeaders()
})()

@ -40,12 +40,6 @@ languageDetect.setLanguageType('iso2')
const extensions = /^([^.]+$|\.(asp|aspx|cgi|htm|html|jsp|php)$)/
const errorTypes = {
RESPONSE_NOT_OK: 'Response was not ok',
NO_RESPONSE: 'No response from server',
NO_HTML_DOCUMENT: 'No HTML document'
}
const { apps: technologies, categories } = JSON.parse(
fs.readFileSync(path.resolve(`${__dirname}/apps.json`))
)
@ -137,7 +131,7 @@ class Driver {
}
open(url) {
return new Site(url, this)
return new Site(url.split('#')[0], this)
}
log(message, source = 'driver') {
@ -157,7 +151,7 @@ class Site {
try {
this.originalUrl = new URL(url)
} catch (error) {
throw new Error(error.message || error.toString())
throw new Error(error.toString())
}
this.analyzedUrls = {}
@ -288,7 +282,10 @@ class Site {
await Promise.race([
page.goto(url.href, { waitUntil: 'domcontentloaded' }),
new Promise((resolve, reject) =>
setTimeout(() => reject(new Error('Timeout')), this.options.maxWait)
setTimeout(
() => reject(new Error('The website took too long to respond')),
this.options.maxWait
)
)
])
} catch (error) {
@ -411,7 +408,7 @@ class Site {
this.log('Page closed')
throw new Error('NO_RESPONSE')
throw new Error('No response from server')
}
if (!this.language) {
@ -493,21 +490,9 @@ class Site {
await this.batch(links.slice(0, this.options.maxUrls), depth + 1)
}
} catch (error) {
const type =
error.message && errorTypes[error.message]
? error.message
: 'UNKNOWN_ERROR'
const message =
error.message && errorTypes[error.message]
? errorTypes[error.message]
: 'Unknown error'
this.analyzedUrls[url.href] = {
status: 0,
error: {
type,
message
}
error: error.message || error.toString()
}
this.error(error)
@ -515,21 +500,29 @@ class Site {
return {
urls: this.analyzedUrls,
applications: resolve(this.detections).map(
({ name, confidence, version, icon, website, cpe, categories }) => ({
technologies: resolve(this.detections).map(
({
slug,
name,
confidence,
version,
icon,
website,
cpe,
categories: categories.reduce(
(categories, { id, name }) => ({
...categories,
[id]: name
}),
{}
)
categories
}) => ({
slug,
name,
confidence,
version: version || null,
icon,
website,
cpe,
categories: categories.map(({ id, slug, name }) => ({
id,
slug,
name
}))
})
),
meta: {

@ -13,7 +13,7 @@
"software"
],
"homepage": "https://www.wappalyzer.com",
"version": "6.0.15",
"version": "6.1.1",
"author": "Wappalyzer",
"license": "MIT",
"repository": {
@ -38,4 +38,4 @@
"languagedetect": "^2.0.0",
"puppeteer": "^2.0.0"
}
}
}

@ -31,7 +31,7 @@
"categoryName13": { "message": "Rastrejadors d'incidències" },
"categoryName14": { "message": "Reproductors de vídeo" },
"categoryName15": { "message": "Sistemes de comentaris" },
"categoryName16": { "message": "Captcha" },
"categoryName16": { "message": "Security" },
"categoryName17": { "message": "Font Script" },
"categoryName18": { "message": "Marcs web" },
"categoryName19": { "message": "Miscel·lània" },
@ -81,5 +81,7 @@
"categoryName63": { "message": "IaaS" },
"categoryName64": { "message": "Proxys invers" },
"categoryName65": { "message": "Balanceigs de càrrega" },
"categoryName66": { "message": "UI Frameworks" }
"categoryName66": { "message": "UI Frameworks" },
"categoryName67": { "message": "Cookie compliance" },
"categoryName68": { "message": "Accessibility"}
}

@ -31,7 +31,7 @@
"categoryName13": { "message": "Fehlertracker" },
"categoryName14": { "message": "Videospieler" },
"categoryName15": { "message": "Kommentarsystem" },
"categoryName16": { "message": "Captcha" },
"categoryName16": { "message": "Security" },
"categoryName17": { "message": "Schrift Script" },
"categoryName18": { "message": "Web Framework" },
"categoryName19": { "message": "Sonstiges" },
@ -81,5 +81,7 @@
"categoryName63": { "message": "IaaS" },
"categoryName64": { "message": "Reverse Proxy" },
"categoryName65": { "message": "Load Balancer" },
"categoryName66": { "message": "UI Frameworks" }
"categoryName66": { "message": "UI Frameworks" },
"categoryName67": { "message": "Cookie compliance" },
"categoryName68": { "message": "Accessibility"}
}

@ -27,7 +27,7 @@
"categoryName13": { "message": "Issue Tracker" },
"categoryName14": { "message": "Πρόγραμμα αναπαραγωγής Βίντεο" },
"categoryName15": { "message": "Σύστημα Σχολίων" },
"categoryName16": { "message": "Captcha" },
"categoryName16": { "message": "Security" },
"categoryName17": { "message": "Script Γραμματοσειράς" },
"categoryName18": { "message": "Framework Διαδικτύου" },
"categoryName19": { "message": "Διάφορα" },
@ -77,5 +77,7 @@
"categoryName63": { "message": "IaaS" },
"categoryName64": { "message": "Reverse Proxy" },
"categoryName65": { "message": "Load Balancer" },
"categoryName66": { "message": "UI Frameworks" }
"categoryName66": { "message": "UI Frameworks" },
"categoryName67": { "message": "Cookie compliance" },
"categoryName68": { "message": "Accessibility"}
}

@ -11,11 +11,11 @@
"optionThemeMode": { "message": "Enable dark mode compatibility" },
"nothingToDo": { "message": "Nothing to do here." },
"noAppsDetected": { "message": "No technologies detected." },
"categoryPin": { "message": "Always show icon" },
"termsAccept": { "message": "Accept" },
"termsContent": { "message": "This extension sends anonymous information about websites you visit, including domain name and identified technologies, to <a href='https://www.wappalyzer.com'>wappalyzer.com</a>. This can be disabled in the settings." },
"privacyPolicy": { "message": "Privacy policy" },
"createAlert": { "message": "Create an alert for this website" },
"categoryPin": { "message": "Always show icon" },
"termsAccept": { "message": "Accept" },
"termsContent": { "message": "This extension sends anonymous information about websites you visit, including domain name and identified technologies, to <a href='https://www.wappalyzer.com'>wappalyzer.com</a>. This can be disabled in the settings." },
"privacyPolicy": { "message": "Privacy policy" },
"createAlert": { "message": "Create an alert for this website" },
"categoryName1": { "message": "CMS" },
"categoryName2": { "message": "Message boards" },
"categoryName3": { "message": "Database managers" },
@ -31,7 +31,7 @@
"categoryName13": { "message": "Issue trackers" },
"categoryName14": { "message": "Video players" },
"categoryName15": { "message": "Comment systems" },
"categoryName16": { "message": "Captchas" },
"categoryName16": { "message": "Security" },
"categoryName17": { "message": "Font scripts" },
"categoryName18": { "message": "Web frameworks" },
"categoryName19": { "message": "Miscellaneous" },
@ -67,7 +67,7 @@
"categoryName51": { "message": "Page builder" },
"categoryName52": { "message": "Live chat" },
"categoryName53": { "message": "CRM" },
"categoryName54": { "message": "SEO" },
"categoryName54": { "message": "SEO" },
"categoryName55": { "message": "Accounting" },
"categoryName56": { "message": "Cryptominers" },
"categoryName57": { "message": "Static site generators" },
@ -79,5 +79,7 @@
"categoryName63": { "message": "IaaS" },
"categoryName64": { "message": "Reverse proxies" },
"categoryName65": { "message": "Load balancers" },
"categoryName66": { "message": "UI frameworks" }
"categoryName66": { "message": "UI frameworks" },
"categoryName67": { "message": "Cookie compliance" },
"categoryName68": { "message": "Accessibility"}
}

@ -31,7 +31,7 @@
"categoryName13": { "message": "Gestor de Incidencias" },
"categoryName14": { "message": "Reproductor de Vídeo" },
"categoryName15": { "message": "Sistema de Comentarios" },
"categoryName16": { "message": "Captcha" },
"categoryName16": { "message": "Security" },
"categoryName17": { "message": "Tipografía" },
"categoryName18": { "message": "Framework Web" },
"categoryName19": { "message": "Miscelánea" },
@ -81,5 +81,7 @@
"categoryName63": { "message": "IaaS" },
"categoryName64": { "message": "Reverse Proxy" },
"categoryName65": { "message": "Load Balancer" },
"categoryName66": { "message": "UI Frameworks" }
"categoryName66": { "message": "UI Frameworks" },
"categoryName67": { "message": "Cookie compliance" },
"categoryName68": { "message": "Accessibility"}
}

@ -31,7 +31,7 @@
"categoryName13": { "message": "ردیاب مشکل" },
"categoryName14": { "message": "پخش کننده ویدیویی" },
"categoryName15": { "message": "سیستم نظرسنجی" },
"categoryName16": { "message": "کپچا" },
"categoryName16": { "message": "Security" },
"categoryName17": { "message": "اسکریپ فونت" },
"categoryName18": { "message": "چارچوب وب" },
"categoryName19": { "message": "متفرقه" },
@ -81,5 +81,7 @@
"categoryName63": { "message": "IaaS" },
"categoryName64": { "message": "پروکسی معکوس" },
"categoryName65": { "message": "Load Balancer" },
"categoryName66": { "message": "UI Frameworks" }
"categoryName66": { "message": "UI Frameworks" },
"categoryName67": { "message": "Cookie compliance" },
"categoryName68": { "message": "Accessibility"}
}

@ -31,7 +31,7 @@
"categoryName13": { "message": "Outil de suivi de problèmes" },
"categoryName14": { "message": "Lecteur de vidéos" },
"categoryName15": { "message": "Système de commentaires" },
"categoryName16": { "message": "Captcha" },
"categoryName16": { "message": "Security" },
"categoryName17": { "message": "Script de police" },
"categoryName18": { "message": "Framework web" },
"categoryName19": { "message": "Divers" },
@ -81,5 +81,7 @@
"categoryName63": { "message": "IaaS" },
"categoryName64": { "message": "Reverse Proxy" },
"categoryName65": { "message": "Load Balancer" },
"categoryName66": { "message": "UI Frameworks" }
"categoryName66": { "message": "UI Frameworks" },
"categoryName67": { "message": "Cookie compliance" },
"categoryName68": { "message": "Accessibility"}
}

@ -31,7 +31,7 @@
"categoryName13": { "message": "Xestor de incidencias" },
"categoryName14": { "message": "Reproductor de vídeo" },
"categoryName15": { "message": "Sistema de comentarios" },
"categoryName16": { "message": "Captcha" },
"categoryName16": { "message": "Security" },
"categoryName17": { "message": "Font Script" },
"categoryName18": { "message": "Framework Web" },
"categoryName19": { "message": "Diverso" },
@ -81,5 +81,7 @@
"categoryName63": { "message": "IaaS" },
"categoryName64": { "message": "Proxy inverso" },
"categoryName65": { "message": "Balanceador de carga" },
"categoryName66": { "message": "UI Frameworks" }
"categoryName66": { "message": "UI Frameworks" },
"categoryName67": { "message": "Cookie compliance" },
"categoryName68": { "message": "Accessibility"}
}

@ -27,7 +27,7 @@
"categoryName13": { "message": "Issue Tracker" },
"categoryName14": { "message": "Πρόγραμμα αναπαραγωγής Βίντεο" },
"categoryName15": { "message": "Σύστημα Σχολίων" },
"categoryName16": { "message": "Captcha" },
"categoryName16": { "message": "Security" },
"categoryName17": { "message": "Script Γραμματοσειράς" },
"categoryName18": { "message": "Framework Διαδικτύου" },
"categoryName19": { "message": "Διάφορα" },
@ -77,5 +77,7 @@
"categoryName63": { "message": "IaaS" },
"categoryName64": { "message": "Reverse Proxy" },
"categoryName65": { "message": "Load Balancer" },
"categoryName66": { "message": "UI Frameworks" }
"categoryName66": { "message": "UI Frameworks" },
"categoryName67": { "message": "Cookie compliance" },
"categoryName68": { "message": "Accessibility"}
}

@ -31,7 +31,7 @@
"categoryName13": { "message": "Pelacak Masalah" },
"categoryName14": { "message": "Pemutar Video" },
"categoryName15": { "message": "Sistem Komentar" },
"categoryName16": { "message": "Captcha" },
"categoryName16": { "message": "Security" },
"categoryName17": { "message": "Font Script" },
"categoryName18": { "message": "Bingkai Kerja Web" },
"categoryName19": { "message": "Serba Serbi" },
@ -81,5 +81,7 @@
"categoryName63": { "message": "IaaS" },
"categoryName64": { "message": "Reverse Proxy" },
"categoryName65": { "message": "Load Balancer" },
"categoryName66": { "message": "UI Frameworks" }
"categoryName66": { "message": "UI Frameworks" },
"categoryName67": { "message": "Cookie compliance" },
"categoryName68": { "message": "Accessibility"}
}

@ -31,7 +31,7 @@
"categoryName13": { "message": "Issue Tracker" },
"categoryName14": { "message": "Player Video" },
"categoryName15": { "message": "Sistema di commenti" },
"categoryName16": { "message": "Captcha" },
"categoryName16": { "message": "Security" },
"categoryName17": { "message": "Font Script" },
"categoryName18": { "message": "Framework Web" },
"categoryName19": { "message": "Miscellanea" },
@ -81,5 +81,7 @@
"categoryName63": { "message": "IaaS" },
"categoryName64": { "message": "Reverse Proxy" },
"categoryName65": { "message": "Load Balancer" },
"categoryName66": { "message": "UI Frameworks" }
"categoryName66": { "message": "UI Frameworks" },
"categoryName67": { "message": "Cookie compliance" },
"categoryName68": { "message": "Accessibility"}
}

@ -31,7 +31,7 @@
"categoryName13": { "message": "課題管理" },
"categoryName14": { "message": "ビデオプレーヤー" },
"categoryName15": { "message": "コメントシステム" },
"categoryName16": { "message": "Captcha" },
"categoryName16": { "message": "Security" },
"categoryName17": { "message": "Font Script" },
"categoryName18": { "message": "Webフレームワーク" },
"categoryName19": { "message": "その他" },
@ -81,5 +81,7 @@
"categoryName63": { "message": "IaaS" },
"categoryName64": { "message": "リバースプロキシ" },
"categoryName65": { "message": "ロードバランサー" },
"categoryName66": { "message": "UI Frameworks" }
"categoryName66": { "message": "UI Frameworks" },
"categoryName67": { "message": "Cookie compliance" },
"categoryName68": { "message": "Accessibility"}
}

@ -31,7 +31,7 @@
"categoryName13": { "message": "Lista problemów" },
"categoryName14": { "message": "Odtwarzacz wideo" },
"categoryName15": { "message": "System komentarzy" },
"categoryName16": { "message": "Captcha" },
"categoryName16": { "message": "Security" },
"categoryName17": { "message": "Skrypt czcionek" },
"categoryName18": { "message": "Framework webowy" },
"categoryName19": { "message": "Różne" },
@ -81,5 +81,7 @@
"categoryName63": { "message": "IaaS" },
"categoryName64": { "message": "Proxy wsteczne" },
"categoryName65": { "message": "Równoważenie obciążenia" },
"categoryName66": { "message": "UI Frameworks" }
"categoryName66": { "message": "UI Frameworks" },
"categoryName67": { "message": "Cookie compliance" },
"categoryName68": { "message": "Accessibility"}
}

@ -31,7 +31,7 @@
"categoryName13": { "message": "Localizador de Problemas" },
"categoryName14": { "message": "Leitor Vídeo" },
"categoryName15": { "message": "Sistema de Comentários" },
"categoryName16": { "message": "Captcha" },
"categoryName16": { "message": "Security" },
"categoryName17": { "message": "Tipos de Letra" },
"categoryName18": { "message": "Framework Web" },
"categoryName19": { "message": "Diversos" },
@ -79,7 +79,9 @@
"categoryName61": { "message": "SaaS" },
"categoryName62": { "message": "PaaS" },
"categoryName63": { "message": "IaaS" },
"categoryName64": { "message": "Reverse Proxy" },
"categoryName65": { "message": "Load Balancer" },
"categoryName66": { "message": "UI Frameworks" }
"categoryName64": { "message": "Reverse Proxy" },
"categoryName65": { "message": "Load Balancer" },
"categoryName66": { "message": "UI Frameworks" },
"categoryName67": { "message": "Cookie compliance" },
"categoryName68": { "message": "Accessibility"}
}

@ -31,7 +31,7 @@
"categoryName13": { "message": "Rastreamento de Problemas" },
"categoryName14": { "message": "Reprodutor de Vídeo" },
"categoryName15": { "message": "Sistema de Comentários" },
"categoryName16": { "message": "Captcha" },
"categoryName16": { "message": "Security" },
"categoryName17": { "message": "Script de Fonte" },
"categoryName18": { "message": "Framework Web" },
"categoryName19": { "message": "Diversos" },
@ -81,5 +81,7 @@
"categoryName63": { "message": "IaaS" },
"categoryName64": { "message": "Proxy Reverso" },
"categoryName65": { "message": "Balanceador de Carga" },
"categoryName66": { "message": "UI Frameworks" }
"categoryName66": { "message": "UI Frameworks" },
"categoryName67": { "message": "Cookie compliance" },
"categoryName68": { "message": "Accessibility"}
}

@ -27,7 +27,7 @@
"categoryName13": { "message": "Tracker probleme" },
"categoryName14": { "message": "Player Video" },
"categoryName15": { "message": "Sistem de comentarii" },
"categoryName16": { "message": "Verificare Captcha" },
"categoryName16": { "message": "Security" },
"categoryName17": { "message": "Script pentru fonturi" },
"categoryName18": { "message": "Framework Web" },
"categoryName19": { "message": "Divers" },
@ -77,5 +77,7 @@
"categoryName63": { "message": "IaaS" },
"categoryName64": { "message": "Reverse Proxy" },
"categoryName65": { "message": "Load Balancer" },
"categoryName66": { "message": "UI Frameworks" }
"categoryName66": { "message": "UI Frameworks" },
"categoryName67": { "message": "Cookie compliance" },
"categoryName68": { "message": "Accessibility"}
}

@ -31,7 +31,7 @@
"categoryName13": { "message": "Баг-трекер" },
"categoryName14": { "message": "Видео-плеер" },
"categoryName15": { "message": "Система комментариев" },
"categoryName16": { "message": "Капча" },
"categoryName16": { "message": "Security" },
"categoryName17": { "message": "Шрифт" },
"categoryName18": { "message": "Веб-фреймворк" },
"categoryName19": { "message": "Прочее" },
@ -79,5 +79,7 @@
"categoryName63": { "message": "IaaS" },
"categoryName64": { "message": "Обратный прокси" },
"categoryName65": { "message": "Балансировка нагрузки" },
"categoryName66": { "message": "UI Фреймворк" }
"categoryName66": { "message": "UI Фреймворк" },
"categoryName67": { "message": "Cookie compliance" },
"categoryName68": { "message": "Accessibility"}
}

@ -31,7 +31,7 @@
"categoryName13": { "message": "Issue Tracker" },
"categoryName14": { "message": "Video prehrávač" },
"categoryName15": { "message": "Systém komentárov" },
"categoryName16": { "message": "Captcha" },
"categoryName16": { "message": "Security" },
"categoryName17": { "message": "Font Script" },
"categoryName18": { "message": "Web Framework" },
"categoryName19": { "message": "Rôzne" },
@ -81,5 +81,7 @@
"categoryName63": { "message": "IaaS" },
"categoryName64": { "message": "Reverse Proxy" },
"categoryName65": { "message": "Load Balancer" },
"categoryName66": { "message": "UI Frameworks" }
"categoryName66": { "message": "UI Frameworks" },
"categoryName67": { "message": "Cookie compliance" },
"categoryName68": { "message": "Accessibility"}
}

@ -31,7 +31,7 @@
"categoryName13": { "message": "Hata Takibi" },
"categoryName14": { "message": "Video Oynatıcı" },
"categoryName15": { "message": "Yorum Sistemi" },
"categoryName16": { "message": "Captcha" },
"categoryName16": { "message": "Security" },
"categoryName17": { "message": "Yazı Tipi" },
"categoryName18": { "message": "Web Framework" },
"categoryName19": { "message": "Çeşitli" },
@ -81,5 +81,7 @@
"categoryName63": { "message": "IaaS" },
"categoryName64": { "message": "Reverse Proxy" },
"categoryName65": { "message": "Yük Dengeleyici" },
"categoryName66": { "message": "UI Frameworks" }
"categoryName66": { "message": "UI Frameworks" },
"categoryName67": { "message": "Cookie compliance" },
"categoryName68": { "message": "Accessibility"}
}

@ -31,7 +31,7 @@
"categoryName13": { "message": "Багтрекер" },
"categoryName14": { "message": "Відеопрогравач" },
"categoryName15": { "message": "Система коментарів" },
"categoryName16": { "message": "Капча" },
"categoryName16": { "message": "Security" },
"categoryName17": { "message": "Шрифт" },
"categoryName18": { "message": "Веб-фреймворк" },
"categoryName19": { "message": "Інше" },
@ -81,5 +81,7 @@
"categoryName63": { "message": "IaaS" },
"categoryName64": { "message": "Reverse Proxy" },
"categoryName65": { "message": "Load Balancer" },
"categoryName66": { "message": "UI Frameworks" }
"categoryName66": { "message": "UI Frameworks" },
"categoryName67": { "message": "Cookie compliance" },
"categoryName68": { "message": "Accessibility"}
}

@ -31,7 +31,7 @@
"categoryName13": { "message": "Bag treker" },
"categoryName14": { "message": "Video Player" },
"categoryName15": { "message": "Izohlar tizimi" },
"categoryName16": { "message": "Captcha" },
"categoryName16": { "message": "Security" },
"categoryName17": { "message": "Shrift" },
"categoryName18": { "message": "Veb Freymvork" },
"categoryName19": { "message": "Boshqalar" },
@ -81,5 +81,7 @@
"categoryName63": { "message": "IaaS" },
"categoryName64": { "message": "Reverse Proxy" },
"categoryName65": { "message": "Load Balancer" },
"categoryName66": { "message": "UI Frameworks" }
"categoryName66": { "message": "UI Frameworks" },
"categoryName67": { "message": "Cookie compliance" },
"categoryName68": { "message": "Accessibility"}
}

@ -31,7 +31,7 @@
"categoryName13": { "message": "问题跟踪器" },
"categoryName14": { "message": "视频播放器" },
"categoryName15": { "message": "评论系统" },
"categoryName16": { "message": "验证码" },
"categoryName16": { "message": "Security" },
"categoryName17": { "message": "字体脚本" },
"categoryName18": { "message": "Web 框架" },
"categoryName19": { "message": "杂项" },
@ -81,5 +81,7 @@
"categoryName63": { "message": "基础设施即服务IaaS" },
"categoryName64": { "message": "反向代理" },
"categoryName65": { "message": "负载均衡" },
"categoryName66": { "message": "用户界面UI框架" }
"categoryName66": { "message": "用户界面UI框架" },
"categoryName67": { "message": "Cookie compliance" },
"categoryName68": { "message": "Accessibility"}
}

@ -31,7 +31,7 @@
"categoryName13": { "message": "問題追蹤" },
"categoryName14": { "message": "影音播放器" },
"categoryName15": { "message": "評論系統" },
"categoryName16": { "message": "驗證碼" },
"categoryName16": { "message": "Security" },
"categoryName17": { "message": "字型" },
"categoryName18": { "message": "網頁框架" },
"categoryName19": { "message": "其他" },
@ -81,5 +81,7 @@
"categoryName63": { "message": "基礎設施即服務IaaS" },
"categoryName64": { "message": "反向代理伺服器" },
"categoryName65": { "message": "負載平衡器" },
"categoryName66": { "message": "UI 框架" }
"categoryName66": { "message": "UI 框架" },
"categoryName67": { "message": "Cookie compliance" },
"categoryName68": { "message": "Accessibility"}
}

@ -68,6 +68,10 @@ a:hover {
width: 100%;
}
.alerts--hidden {
visibility: hidden;
}
.alerts__icon {
color: var(--color-primary);
height: 1.1rem;
@ -90,12 +94,20 @@ a:hover {
padding: 1.5rem 1.5rem .5rem 1.5rem;
}
.detections--hidden {
display: none;
}
.empty {
opacity: .3;
padding: 3rem 1.5rem .5rem 1.5rem;
text-align: center;
}
.empty--hidden {
display: none;
}
.category {
page-break-inside: avoid;
break-inside: avoid-column;
@ -177,7 +189,7 @@ a:hover {
.terms {
align-items: center;
display: none;
display: flex;
flex-direction: column;
justify-content: center;
padding: 1.5rem 1.5rem 1rem 1.5rem;
@ -185,6 +197,10 @@ a:hover {
width: 36rem;
}
.terms--hidden {
display: none;
}
.terms__wrapper {
display: none;
height: 100%;

@ -69,7 +69,7 @@
<path fill="currentColor" d="M12,8H4A2,2 0 0,0 2,10V14A2,2 0 0,0 4,16H5V20A1,1 0 0,0 6,21H8A1,1 0 0,0 9,20V16H12L17,20V4L12,8M21.5,12C21.5,13.71 20.54,15.26 19,16V8C20.53,8.75 21.5,10.3 21.5,12Z" />
</svg>
<a class="alerts__link" href="https://www.wappalyzer.com/alerts/manage" data-i18n="createAlert"></a>
<a class="alerts__link" href="https://www.wappalyzer.com/alerts" data-i18n="createAlert"></a>
</div>
<svg class="footer__settings" viewBox="0 0 24 24">

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 755 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 558 B

@ -0,0 +1,6 @@
<svg width="70" height="70" viewBox="0 0 70 70" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M63.0313 47.9148C55.3966 53.5492 44.329 56.5451 34.7974 56.5451C21.4393 56.5451 9.41057 51.607 0.308754 43.3883C-0.405753 42.7427 0.230775 41.8614 1.09036 42.3619C10.9103 48.0762 23.0551 51.5181 35.5989 51.5181C44.0606 51.5181 53.3619 49.7627 61.9215 46.1321C63.2108 45.5826 64.2935 46.9808 63.0313 47.9148ZM66.2067 44.2878C67.1841 45.5391 65.1204 50.6912 64.1992 52.9925C63.9199 53.6889 64.5183 53.9699 65.1494 53.4422C69.2442 50.0166 70.3033 42.837 69.4655 41.7997C68.6331 40.7715 61.4735 39.8865 57.1031 42.9549C56.4303 43.4264 56.5463 44.0793 57.2917 43.9886C59.7525 43.6948 65.231 43.0365 66.2067 44.2878Z" fill="#FF9900"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M55.1535 35.0627L63.1002 14.837C63.267 14.4272 63.3522 14.1389 63.3522 13.9702C63.3522 13.6819 63.1836 13.5368 62.8463 13.5368H60.8243C60.438 13.5368 60.175 13.5984 60.0282 13.7181C59.8831 13.8396 59.7398 14.1044 59.5947 14.5142L54.7183 28.5269L49.6624 14.5142C49.5173 14.1044 49.374 13.8396 49.2289 13.7181C49.0839 13.5984 48.8191 13.5368 48.4328 13.5368H46.2657C45.9284 13.5368 45.7598 13.6819 45.7598 13.9702C45.7598 14.1389 45.8432 14.4272 46.0118 14.837L52.9828 32.0288L52.2973 33.8712C51.8875 35.0282 51.4305 35.8225 50.9245 36.256C50.4186 36.6894 49.7077 36.9052 48.7937 36.9052C48.3839 36.9052 48.0592 36.8798 47.8199 36.8326C47.5787 36.7855 47.3973 36.7601 47.2776 36.7601C46.9168 36.7601 46.7354 36.9886 46.7354 37.4456V38.385C46.7354 38.7223 46.7953 38.9689 46.9168 39.1249C47.0364 39.2808 47.2287 39.3969 47.4953 39.4676C48.0955 39.6345 48.7828 39.7215 49.5535 39.7215C50.9263 39.7215 52.0398 39.3606 52.894 38.637C53.7517 37.9171 54.5043 36.7238 55.1535 35.0627Z" fill="#232F3E"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M25.4888 18.5075C25.1388 17.3396 24.6401 16.3459 23.9891 15.528C23.3398 14.7101 22.5455 14.0826 21.6062 13.6492C20.6686 13.2158 19.6204 13 18.4634 13C17.3808 13 16.3199 13.2031 15.2862 13.613C14.2507 14.0228 13.2751 14.6249 12.3593 15.4192L12.1797 14.2622C12.1072 13.7816 11.8297 13.5404 11.3473 13.5404H9.75875C9.27818 13.5404 9.03699 13.7816 9.03699 14.2622V38.5699C9.03699 39.0523 9.27818 39.2917 9.75875 39.2917H11.8896C12.372 39.2917 12.6113 39.0505 12.6113 38.5699V30.1192C14.1764 31.5391 16.0424 32.25 18.2095 32.25C19.3883 32.25 20.46 32.0142 21.423 31.5464C22.386 31.0767 23.2038 30.4202 23.8784 29.5769C24.553 28.7355 25.0771 27.7127 25.4489 26.5067C25.8225 25.3026 26.0093 23.9534 26.0093 22.4609C26.0129 20.9938 25.837 19.6754 25.4888 18.5075ZM17.3808 29.3593C15.7414 29.3593 14.1528 28.7826 12.6132 27.6256V17.55C14.1292 16.442 15.7432 15.8889 17.4533 15.8889C20.7284 15.8889 22.366 18.1412 22.366 22.6422C22.3642 27.1215 20.703 29.3593 17.3808 29.3593Z" fill="#232F3E"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M41.7756 14.4181C40.6911 13.4806 39.0064 13.0109 36.7196 13.0109C35.588 13.0109 34.4564 13.1142 33.3248 13.3174C32.1914 13.5223 31.2411 13.7925 30.4704 14.1298C30.1821 14.2513 29.988 14.3764 29.8919 14.5088C29.7958 14.6412 29.7468 14.8769 29.7468 15.2124V16.1863C29.7468 16.6197 29.9028 16.8373 30.2165 16.8373C30.3126 16.8373 30.416 16.8192 30.5248 16.7829C30.6336 16.7466 30.7243 16.7176 30.795 16.6922C32.6502 16.1391 34.4183 15.8617 36.1049 15.8617C37.5484 15.8617 38.5603 16.1264 39.1388 16.6578C39.7173 17.1873 40.0056 18.1013 40.0056 19.4016V21.7845C38.3209 21.3746 36.803 21.1715 35.4538 21.1715C33.3357 21.1715 31.651 21.6956 30.3979 22.742C29.1466 23.7883 28.5191 25.192 28.5191 26.9492C28.5191 28.5886 29.0251 29.8925 30.037 30.8681C31.0471 31.8438 32.4199 32.3298 34.1536 32.3298C35.1891 32.3298 36.23 32.1249 37.2782 31.7168C38.3264 31.3088 39.2821 30.7285 40.1489 29.9832L40.3302 31.1746C40.4028 31.6316 40.6675 31.8601 41.1264 31.8601H42.6787C43.1593 31.8601 43.4023 31.6189 43.4023 31.1383V18.7886C43.4005 16.8137 42.8582 15.3575 41.7756 14.4181ZM40.0056 27.7834C39.2113 28.3855 38.3808 28.8425 37.5139 29.1562C36.6471 29.47 35.8165 29.6259 35.0222 29.6259C34.0828 29.6259 33.3611 29.3793 32.8551 28.886C32.3492 28.3927 32.0971 27.6891 32.0971 26.7733C32.0971 24.6788 33.4572 23.6306 36.1774 23.6306C36.803 23.6306 37.4468 23.6741 38.1087 23.7575C38.7707 23.8427 39.4036 23.957 40.0056 24.1003V27.7834Z" fill="#232F3E"/>
</svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="1000" height="997.51703" id="svg2" version="1.1" inkscape:version="0.91 r13725" sodipodi:docname="American_Express_2018.svg">
<defs id="defs4"/>
<sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="0.125" inkscape:cx="850.2929" inkscape:cy="357.59411" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="true" fit-margin-top="0" fit-margin-left="0" fit-margin-right="0" fit-margin-bottom="0" inkscape:window-width="1680" inkscape:window-height="931" inkscape:window-x="0" inkscape:window-y="1" inkscape:window-maximized="1">
<inkscape:grid type="xygrid" id="grid2996" empspacing="5" visible="true" enabled="true" snapvisiblegridlinesonly="true" originx="-55.5px" originy="947.50002px"/>
</sodipodi:namedview>
<metadata id="metadata7">
<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/>
</cc:Work>
</rdf:RDF>
</metadata>
<g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(-55.5,-1002.3452)">
<path sodipodi:nodetypes="ccccccccccc" inkscape:connector-curvature="0" id="path3078" d="m 55.5,1002.3454 997.5168,0 0,538.4893 -49.3744,77.1475 49.3744,68.6613 0,313.2187 -997.5168,0 0,-507.6304 L 86.358989,1456.744 55.5,1422.7991 Z" style="fill:#016fd0;fill-opacity:1;stroke:none"/>
<path sodipodi:nodetypes="cccccccccccccccccccc" inkscape:connector-curvature="0" id="path3082" d="m 249.14015,1697.4441 0,-156.6094 165.82027,0 17.79072,23.1924 18.37901,-23.1924 601.88665,0 0,145.8088 c 0,0 -15.7404,10.644 -33.9449,10.8006 l -333.27706,0 -20.05834,-24.6872 0,24.6872 -65.72965,0 0,-42.1418 c 0,0 -8.97877,5.8825 -28.39026,5.8825 l -22.37277,0 0,36.2593 -99.52024,0 -17.7653,-23.6898 -18.03807,23.6898 z" style="fill:#ffffff;stroke:none"/>
<path sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccc" inkscape:connector-curvature="0" id="path3080" d="m 55.5,1422.7991 37.393125,-87.1766 64.667505,0 21.22103,48.8328 0,-48.8328 80.38767,0 12.63289,35.2949 12.24716,-35.2949 360.8573,0 0,17.7439 c 0,0 18.96995,-17.7439 50.14586,-17.7439 l 117.08499,0.4092 20.85469,48.1937 0,-48.6029 67.27259,0 18.5154,27.6834 0,-27.6834 67.88977,0 0,156.6093 -67.88977,0 -17.74392,-27.7731 0,27.7731 -98.83835,0 -9.93959,-24.6872 -26.57108,0 -9.77781,24.6872 -67.02872,0 c -26.82589,0 -43.97406,-17.3816 -43.97406,-17.3816 l 0,17.3816 -101.06318,0 -20.05835,-24.6872 0,24.6872 -375.80462,0 -9.93274,-24.6872 -26.48635,0 -9.86254,24.6872 -46.1989,0 z" style="fill:#ffffff;stroke:none"/>
<path id="path3046" d="m 106.12803,1354.9291 -50.435161,117.2641 32.835892,0 9.305914,-23.4816 54.099665,0 9.2577,23.4816 33.55915,0 -50.38695,-117.2641 -38.23621,0 z m 18.66004,27.2909 16.49028,41.0329 -33.02877,0 16.53849,-41.0329 z" style="fill:#016fd0;fill-opacity:1;stroke:none" inkscape:connector-curvature="0"/>
<path sodipodi:nodetypes="cccccccccccccc" inkscape:connector-curvature="0" id="path3048" d="m 198.22282,1472.1735 0,-117.2642 46.66163,0.1733 27.13999,75.6045 26.4901,-75.7778 46.28848,0 0,117.2642 -29.31604,0 0,-86.4052 -31.07562,86.4052 -25.71023,0 -31.16227,-86.4052 0,86.4052 z" style="fill:#016fd0;fill-opacity:1;stroke:none"/>
<path sodipodi:nodetypes="ccccccccccccc" inkscape:connector-curvature="0" id="path3050" d="m 364.86136,1472.1735 0,-117.2642 95.66287,0 0,26.2302 -66.03824,0 0,20.0583 64.49529,0 0,24.6872 -64.49529,0 0,20.8298 66.03824,0 0,25.4587 z" style="fill:#016fd0;fill-opacity:1;stroke:none"/>
<path id="path3052" d="m 477.49667,1354.9291 0,117.2641 29.31604,0 0,-41.6596 12.34359,0 35.15032,41.6596 35.82536,0 -38.57374,-43.2025 c 15.8309,-1.3359 32.16085,-14.9233 32.16085,-36.0182 0,-24.6765 -19.36827,-38.0434 -40.98459,-38.0434 l -65.23783,0 z m 29.31604,26.2301 33.51093,0 c 8.03881,0 13.88655,6.2882 13.88655,12.3436 0,7.7905 -7.57673,12.3436 -13.45259,12.3436 l -33.94489,0 0,-24.6872 z" style="fill:#016fd0;fill-opacity:1;stroke:none" inkscape:connector-curvature="0"/>
<path sodipodi:nodetypes="ccccc" inkscape:connector-curvature="0" id="path3054" d="m 625.61982,1472.1735 -29.93322,0 0,-117.2642 29.93322,0 z" style="fill:#016fd0;fill-opacity:1;stroke:none"/>
<path sodipodi:nodetypes="ccccccccccc" inkscape:connector-curvature="0" id="path3056" d="m 696.59549,1472.1735 -6.4611,0 c -31.26172,0 -50.24229,-24.6292 -50.24229,-58.1499 0,-34.3488 18.76806,-59.1143 58.24634,-59.1143 l 32.40194,0 0,27.7731 -33.58657,0 c -16.026,0 -27.35994,12.5067 -27.35994,31.6305 0,22.7096 12.95987,32.2476 31.63047,32.2476 l 7.71474,0 z" style="fill:#016fd0;fill-opacity:1;stroke:none"/>
<path inkscape:connector-curvature="0" style="fill:#016fd0;fill-opacity:1;stroke:none" d="m 760.3868,1354.9291 -50.43515,117.2641 32.83589,0 9.30591,-23.4816 54.09967,0 9.25769,23.4816 33.55915,0 -50.38694,-117.2641 -38.23622,0 z m 18.66005,27.2909 16.49027,41.0329 -33.02876,0 16.53849,-41.0329 z" id="path3058"/>
<path sodipodi:nodetypes="ccccccccccc" inkscape:connector-curvature="0" id="path3060" d="m 852.43338,1472.1735 0,-117.2642 37.27187,0 47.59035,73.6759 0,-73.6759 29.31604,0 0,117.2642 -36.06644,0 -48.79578,-75.6045 0,75.6045 z" style="fill:#016fd0;fill-opacity:1;stroke:none"/>
<path style="fill:#016fd0;fill-opacity:1;stroke:none" d="m 269.1985,1677.3858 0,-117.2642 95.66286,0 0,26.2302 -66.03823,0 0,20.0583 64.49528,0 0,24.6872 -64.49528,0 0,20.8298 66.03823,0 0,25.4587 z" id="path3062" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccccccccccc"/>
<path sodipodi:nodetypes="ccccccccccccc" inkscape:connector-curvature="0" id="path3064" d="m 737.94653,1677.3858 0,-117.2642 95.66287,0 0,26.2302 -66.03824,0 0,20.0583 64.1867,0 0,24.6872 -64.1867,0 0,20.8298 66.03824,0 0,25.4587 z" style="fill:#016fd0;fill-opacity:1;stroke:none"/>
<path sodipodi:nodetypes="ccccccccccccc" inkscape:connector-curvature="0" id="path3066" d="m 368.57408,1677.3858 46.57779,-57.9089 -47.68678,-59.3553 36.93435,0 28.39991,36.6932 28.49635,-36.6932 35.48784,0 -47.05996,58.6321 46.66353,58.6321 -36.92851,0 -27.57537,-36.1148 -26.90518,36.1148 z" style="fill:#016fd0;fill-opacity:1;stroke:none"/>
<path style="fill:#016fd0;fill-opacity:1;stroke:none" d="m 499.86944,1560.1414 0,117.2641 30.08751,0 0,-37.0308 30.85899,0 c 26.11107,0 45.90274,-13.8524 45.90274,-40.7917 0,-22.3164 -15.52271,-39.4416 -42.09358,-39.4416 l -64.75566,0 z m 30.08751,26.5194 32.49837,0 c 8.43546,0 14.46515,5.1701 14.46515,13.5008 0,7.8262 -5.99925,13.5008 -14.56158,13.5008 l -32.40194,0 0,-27.0016 z" id="path3068" inkscape:connector-curvature="0"/>
<path inkscape:connector-curvature="0" style="fill:#016fd0;fill-opacity:1;stroke:none" d="m 619.44802,1560.1216 0,117.2642 29.31604,0 0,-41.6597 12.34359,0 35.15032,41.6597 35.82536,0 -38.57374,-43.2026 c 15.83089,-1.3361 32.16085,-14.9233 32.16085,-36.0183 0,-24.6764 -19.36827,-38.0433 -40.98459,-38.0433 l -65.23783,0 z m 29.31604,26.2302 33.51093,0 c 8.03881,0 13.88654,6.2881 13.88654,12.3435 0,7.7906 -7.57673,12.3436 -13.45259,12.3436 l -33.94488,0 0,-24.6871 z" id="path3072"/>
<path sodipodi:nodetypes="ccccccccccccccccc" inkscape:connector-curvature="0" id="path3074" d="m 847.18735,1677.3858 0,-25.4587 58.67066,0 c 8.68115,0 12.44003,-4.6912 12.44003,-9.8363 0,-4.9296 -3.74703,-9.9134 -12.44003,-9.9134 l -26.5126,0 c -23.04571,0 -35.88042,-14.0409 -35.88042,-35.1214 0,-18.8023 11.75348,-36.9344 45.99918,-36.9344 l 57.08913,0 -12.3436,26.3844 -49.37438,0 c -9.43821,0 -12.3436,4.9526 -12.3436,9.6821 0,4.8612 3.59036,10.222 10.80065,10.222 l 27.77309,0 c 25.69029,0 36.83792,14.5724 36.83792,33.6556 0,20.5163 -12.42212,37.3201 -38.23646,37.3201 z" style="fill:#016fd0;fill-opacity:1;stroke:none"/>
<path style="fill:#016fd0;fill-opacity:1;stroke:none" d="m 954.78398,1677.3858 0,-25.4587 58.67062,0 c 8.6812,0 12.4401,-4.6912 12.4401,-9.8363 0,-4.9296 -3.7471,-9.9134 -12.4401,-9.9134 l -26.51256,0 c -23.04571,0 -35.88043,-14.0409 -35.88043,-35.1214 0,-18.8023 11.75348,-36.9344 45.99918,-36.9344 l 57.08911,0 -12.3436,26.3844 -49.37436,0 c -9.4382,0 -12.34359,4.9526 -12.34359,9.6821 0,4.8612 3.59035,10.222 10.80064,10.222 l 27.77311,0 c 25.6903,0 36.8379,14.5724 36.8379,33.6556 0,20.5163 -12.4221,37.3201 -38.2365,37.3201 z" id="path3076" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccccccccccccccc"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.7 KiB

@ -1,23 +1,10 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" version="1.0" width="747.63776" height="909.28345" id="svg2811">
<defs id="defs2813">
<clipPath id="clp12">
<path d="M 45.315,71.927 L 58.235,71.927 L 58.235,87.794 L 45.315,87.794 L 45.315,71.927 z " id="path184"/>
</clipPath>
<clipPath id="clp21">
<path d="M 123.91,72.178 L 150.14,72.178 L 150.14,87.472 L 123.91,87.472 L 123.91,72.178 z " id="path592"/>
</clipPath>
<clipPath id="clp9">
<path d="M 413.96,49.857 L 445.72,49.857 L 445.72,58.576 L 413.96,58.576 L 413.96,49.857 z " id="path100"/>
</clipPath>
</defs>
<g transform="translate(-1074.235,-1639.219)" id="layer1">
<g transform="translate(19.48863,19.49672)" id="g25472">
<g transform="matrix(54.85033,0,0,-54.85033,-1411.313,6454.729)" style="fill:#b3b3b3;fill-rule:nonzero;stroke:none" clip-path="url(#clp12)" id="g186">
<path d="M 56.105,79.364 C 56.087,81.372 57.745,82.336 57.82,82.383 C 56.887,83.748 55.435,83.935 54.917,83.957 C 53.682,84.082 52.506,83.23 51.88,83.23 C 51.254,83.23 50.286,83.939 49.262,83.919 C 47.914,83.899 46.673,83.136 45.979,81.93 C 44.58,79.503 45.622,75.906 46.984,73.936 C 47.651,72.973 48.445,71.888 49.489,71.928 C 50.495,71.968 50.875,72.578 52.089,72.578 C 53.303,72.578 53.645,71.928 54.708,71.947 C 55.789,71.968 56.475,72.931 57.137,73.897 C 57.901,75.015 58.217,76.097 58.235,76.154 C 58.211,76.164 56.127,76.963 56.105,79.364" style="fill:#b3b3b3;fill-rule:nonzero;stroke:none" id="path188"/>
</g>
<path d="M 1556.5087,1778.2074 C 1586.8952,1741.403 1607.4089,1690.2272 1601.7588,1639.2187 C 1557.9852,1640.9758 1505.0032,1668.3995 1473.5732,1705.2039 C 1445.4359,1737.7314 1420.7536,1789.8374 1427.4422,1839.8074 C 1476.2605,1843.5921 1526.1172,1814.9577 1556.5087,1778.2074" style="fill:#b3b3b3;fill-rule:nonzero;stroke:none" id="path190"/>
</g>
</g>
</svg>
<svg width="1188" height="1188" viewBox="0 0 1188 1188" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0)">
<path d="M1073.04 925.187C1055.09 966.665 1033.84 1004.84 1009.21 1039.95C975.651 1087.8 948.17 1120.92 926.992 1139.32C894.162 1169.51 858.986 1184.97 821.32 1185.85C794.279 1185.85 761.668 1178.16 723.709 1162.55C685.624 1147.01 650.625 1139.32 618.623 1139.32C585.06 1139.32 549.064 1147.01 510.562 1162.55C472.001 1178.16 440.937 1186.29 417.186 1187.1C381.066 1188.63 345.063 1172.73 309.125 1139.32C286.188 1119.31 257.499 1085.01 223.129 1036.43C186.254 984.545 155.938 924.381 132.187 855.79C106.751 781.702 94 709.959 94 640.503C94 560.941 111.192 492.32 145.627 434.816C172.69 388.627 208.693 352.191 253.754 325.444C298.815 298.696 347.503 285.065 399.936 284.193C428.626 284.193 466.248 293.068 513.002 310.509C559.624 328.008 589.559 336.883 602.684 336.883C612.496 336.883 645.752 326.506 702.127 305.819C755.44 286.634 800.434 278.69 837.295 281.819C937.178 289.88 1012.22 329.254 1062.12 400.191C972.793 454.317 928.604 530.126 929.483 627.378C930.289 703.129 957.77 766.166 1011.78 816.218C1036.25 839.448 1063.59 857.402 1094 870.153C1087.41 889.279 1080.44 907.6 1073.04 925.187V925.187ZM843.964 23.7507C843.964 83.1241 822.272 138.561 779.036 189.873C726.86 250.872 663.75 286.121 595.312 280.559C594.44 273.436 593.934 265.939 593.934 258.061C593.934 201.063 618.747 140.063 662.812 90.1878C684.811 64.9349 712.79 43.9376 746.719 27.1876C780.575 10.6875 812.599 1.5626 842.718 0C843.597 7.9373 843.964 15.8751 843.964 23.7499V23.7507Z" fill="black"/>
</g>
<defs>
<clipPath id="clip0">
<rect width="1187.2" height="1187.2" fill="white"/>
</clipPath>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

@ -0,0 +1,5 @@
<?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 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24">
<path fill="#000000" d="M17,18C15.89,18 15,18.89 15,20A2,2 0 0,0 17,22A2,2 0 0,0 19,20C19,18.89 18.1,18 17,18M1,2V4H3L6.6,11.59L5.24,14.04C5.09,14.32 5,14.65 5,15A2,2 0 0,0 7,17H19V15H7.42A0.25,0.25 0 0,1 7.17,14.75C7.17,14.7 7.18,14.66 7.2,14.63L8.1,13H15.55C16.3,13 16.96,12.58 17.3,11.97L20.88,5.5C20.95,5.34 21,5.17 21,5A1,1 0 0,0 20,4H5.21L4.27,2M7,18C5.89,18 5,18.89 5,20A2,2 0 0,0 7,22A2,2 0 0,0 9,20C9,18.89 8.1,18 7,18Z" />
</svg>

After

Width:  |  Height:  |  Size: 722 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

@ -0,0 +1,19 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="8252 2133 134 27.328">
<defs>
<style>
.cls-1 {
fill: #39a8ef;
}
</style>
</defs>
<g id="Group_1203" data-name="Group 1203" transform="translate(8252 2133)">
<path id="Path_1743" data-name="Path 1743" class="cls-1" d="M67.236,21.834l-6.3-8.432,6.1-7.01H62.054L56.264,13.3V.5H52.2V21.834h4.064V17.872l1.829-1.93,4.064,5.892Z" transform="translate(0.831 0.008)"/>
<path id="Path_1744" data-name="Path 1744" class="cls-1" d="M69.738,4.876a2.472,2.472,0,0,0,2.438-2.438A2.472,2.472,0,0,0,69.738,0,2.407,2.407,0,0,0,67.3,2.438,2.407,2.407,0,0,0,69.738,4.876Z" transform="translate(1.071)"/>
<path id="Path_1745" data-name="Path 1745" class="cls-1" d="M71.562,21.942V6.5H67.6V21.942Z" transform="translate(1.076 0.103)"/>
<path id="Path_1746" data-name="Path 1746" class="cls-1" d="M94.164,21.834H90.1V.5h4.064V8.424a6.061,6.061,0,0,1,4.775-2.337c3.861,0,6.807,3.048,6.807,8.127,0,5.181-2.946,8.127-6.807,8.127a6.061,6.061,0,0,1-4.775-2.337Zm0-4.978a4.429,4.429,0,0,0,3.454,1.727c2.337,0,3.861-1.829,3.861-4.47s-1.524-4.47-3.861-4.47a4.525,4.525,0,0,0-3.454,1.829Zm35.049,5.588c-2.845,0-4.368-1.422-4.368-4.267V10.151H122.3V6.6h2.54V2.329h4.064V6.6h3.149v3.556h-3.149v7.01a1.536,1.536,0,0,0,1.422,1.727,2.368,2.368,0,0,0,1.422-.406l.813,3.048A5.749,5.749,0,0,1,129.213,22.444Z" transform="translate(1.435 0.008)"/>
<path id="Path_1747" data-name="Path 1747" class="cls-1" d="M84.993,20.635a7.842,7.842,0,0,1-11.175-2.946A7.824,7.824,0,0,1,76.663,6.716c3.962-2.235,8.331-.813,10.87,3.556l.406.813-9.854,5.689a4.14,4.14,0,0,0,5.588.914,6,6,0,0,0,2.743-3.353l2.845,1.422A9.3,9.3,0,0,1,84.993,20.635ZM83.266,10.577a3.572,3.572,0,0,0-4.978-1.118,3.73,3.73,0,0,0-1.524,4.876Z" transform="translate(1.157 0.09)"/>
<path id="Path_1748" data-name="Path 1748" class="cls-1" d="M23.061,4.868A13.236,13.236,0,0,0,0,13.91,13.311,13.311,0,0,0,13.309,27.32a13.506,13.506,0,0,0,9.854-4.368,11.424,11.424,0,0,1-3.657-2.946,8.275,8.275,0,0,1-6.1,2.641A8.534,8.534,0,1,1,19.4,8.018,9.936,9.936,0,0,1,23.061,4.868Z" transform="translate(0 0.008)"/>
<path id="Path_1749" data-name="Path 1749" class="cls-1" d="M27.026,21.955a8.128,8.128,0,1,1,8.026-8.127A8.065,8.065,0,0,1,27.026,21.955Zm0-3.861a4.267,4.267,0,1,0-4.267-4.267A4.293,4.293,0,0,0,27.026,18.094ZM43.89,21.955a8.128,8.128,0,1,1,8.026-8.127A8.065,8.065,0,0,1,43.89,21.955Zm0-3.861a4.267,4.267,0,1,0-4.267-4.267A4.293,4.293,0,0,0,43.89,18.094Z" transform="translate(0.303 0.091)"/>
<path id="Path_1750" data-name="Path 1750" class="cls-1" d="M114.326,21.955a8.128,8.128,0,1,1,8.026-8.127A8.065,8.065,0,0,1,114.326,21.955Zm.1-3.861a4.267,4.267,0,1,0-4.267-4.267A4.293,4.293,0,0,0,114.427,18.094Z" transform="translate(1.692 0.091)"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 582 B

@ -1,34 +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 755 826" enable-background="new 0 0 755 826" xml:space="preserve">
<path fill="#00598E" d="M539.2,167.8c-39.8-24.8-77.2-34.5-114.8-59.2c-23.2-15.8-55.5-53.2-82.5-85.5c-5.2,51.8-21,72.8-39,87.8
c-38.2,30-62.2,39-95.2,57C179.9,182.1,29.2,272.1,29.2,465.6s162.8,336,343.5,336s337.5-131.2,337.5-330S563.2,182.8,539.2,167.8z"
/>
<path fill="#FFFFFF" d="M478.2,633.5c12,0,24.8,0.8,33.8,6.8s14.2,19.5,17.2,27s0,12-6,15c-5.2,3-6,1.5-11.2-8.2s-9.8-19.5-36-19.5
s-34.5,9-47.2,19.5s-17.2,14.2-21.8,8.2s-3-12,5.2-19.5s21.8-19.5,34.5-24.8S466.2,633.5,478.2,633.5L478.2,633.5z"/>
<path fill="#FFFFFF" d="M353.8,719c15,12,37.5,21.8,85.5,21.8S521,727.2,536,716c6.8-5.2,9.8-0.8,10.5,2.2s2.2,7.5-3,12.8
c-3.8,3.8-38.2,27.8-78.8,31.5s-95.2,6-128.2-24c-5.2-5.2-3.8-12.8,0-15.8s6.8-5.2,11.2-5.2S351.5,717.5,353.8,719L353.8,719z"/>
<path fill="#0073BA" d="M170,662c57-0.8,67.5-10.5,117.8-33c271.5-121.5,321.8-232.5,331.5-258s24-66.8,9-112.5
c-2.9-8.8-5-15.9-6.5-21.6c-36.1-40.3-71.9-62.4-82.7-69.1c-39-24.8-77.3-34.5-114.8-59.2c-23.2-15-55.5-53.2-82.5-85.5
c-5.2,51.8-20.2,73.5-39,87.8c-38.2,30-62.2,39-95.2,57C179.8,182.8,29,272,29,465.5c0,61.8,16.6,118.4,45.1,166.8l7.4-0.3
C97.2,646.2,122,662.8,170,662z"/>
<path fill="#004975" d="M539,167.8c-39-24.8-77.2-34.5-114.8-59.2c-23.2-15-55.5-53.2-82.5-85.5c-5.2,51.8-20.2,73.5-39,87.8
c-38.2,30-62.2,39-95.2,57C179.8,182.8,29,272,29,465.5c0,61.8,16.6,118.4,45.1,166.8c60.7,103.2,175.4,169.2,298.4,169.2
c180.8,0,337.5-131.2,337.5-330c0-109.1-44.3-185.5-88.3-234.6C585.6,196.5,549.8,174.5,539,167.8z M630.2,255.5
c49.2,61.6,74.2,134.2,74.2,216c0,47.4-9,92.2-26.8,133.2c-16.9,38.8-41.2,73.2-72.3,102.3c-61.5,57.4-144.1,89-232.7,89
c-43.8,0-86.8-8.4-127.8-24.9c-40.3-16.2-76.5-39.4-107.8-69C70.9,639.7,34.6,555.7,34.6,465.5c0-80.3,26.1-151.7,77.5-212.2
c39.3-46.2,81.7-71.8,98-80.6c8-4.3,15.4-8.2,22.6-11.9c22.6-11.6,44-22.6,73.4-45.6c15.7-11.9,32.4-30.8,39.5-78.7
c24.8,29.5,53.5,62.6,75.5,76.8c19.5,12.9,39.5,21.9,58.8,30.6c18.3,8.2,37.2,16.8,55.9,28.7c0,0,0.7,0.4,0.7,0.4
C591.4,207.1,620.6,243.6,630.2,255.5z"/>
<path fill="#93C5E4" d="M345.5,38c10.5,30.8,9,46.5,9,53.2s-3.8,24.8-15.8,33.8c-5.2,3.8-6.8,6.8-6.8,7.5c0,3,6.8,5.2,6.8,12
c0,8.2-3.8,24.8-43.5,64.5s-96.8,75-141,96.8S89,326,83,315.5s2.2-33.8,30-64.5s115.5-75,115.5-75L338,99.5l6-29.2"/>
<path fill="#FFFFFF" d="M345.5,37.2c-6.8,49.5-21.8,64.5-42,80.2c-33.8,25.5-66.8,41.2-74.2,45c-19.5,9.8-90,48.8-126.8,105
c-11.2,17.2,0,24,2.2,25.5s27.8,4.5,82.5-28.5S266,212,296.8,179.8c16.5-17.2,18.8-27,18.8-31.5c0-5.2-3.8-7.5-9.8-9
c-3-0.8-3.8-2.2,0-4.5S325.2,125,329,122s21.8-15,22.5-34.5S350.8,54.5,345.5,37.2L345.5,37.2z"/>
<path fill="#FFFFFF" d="M176.8,582.5c0.8-58.5,55.5-113.2,124.5-114c87.8-0.8,148.5,87,192.8,86.2c37.5-0.8,109.5-74.2,144.8-74.2
c37.5,0,48,39,48,62.2s-7.5,65.2-25.5,91.5s-29.2,36-50.2,34.5c-27-2.2-81-86.2-115.5-87.8c-43.5-1.5-138,90.8-212.2,90.8
c-45,0-58.5-6.8-73.5-16.5C187.2,639.5,176,615.5,176.8,582.5L176.8,582.5z"/>
<path fill="none" d="M628.2,258.5c15,45.8,0.8,87-9,112.5s-60,136.5-331.5,258c-50.2,22.5-60.8,32.2-117.8,33
c-48,0.8-72.8-15.8-88.5-30l-7.4,0.3c60.7,103.2,175.4,169.2,298.4,169.2c180.8,0,337.5-131.2,337.5-330
c0-109.1-44.3-185.5-88.3-234.6C623.2,242.6,625.4,249.7,628.2,258.5z"/>
<svg width="293" height="293" viewBox="0 0 293 293" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M190.297 60.055C170.457 40.2244 151.527 21.3203 145.894 0C140.26 21.3203 121.328 40.2244 101.491 60.055C71.7361 89.7913 38 123.493 38 174.039C38 202.656 49.3677 230.1 69.6023 250.334C89.8369 270.569 117.281 281.937 145.897 281.937C174.513 281.937 201.957 270.569 222.192 250.334C242.426 230.1 253.794 202.656 253.794 174.039C253.794 123.496 220.061 89.7913 190.297 60.055V60.055ZM83.8596 199.181C77.2438 198.957 52.8276 156.872 98.1236 112.062L128.098 144.804C128.355 145.058 128.556 145.364 128.686 145.701C128.817 146.038 128.875 146.399 128.856 146.76C128.837 147.122 128.742 147.475 128.577 147.796C128.412 148.118 128.18 148.401 127.898 148.627C120.745 155.963 90.259 186.534 86.4698 197.105C85.6877 199.287 84.5454 199.205 83.8596 199.181H83.8596ZM145.897 254.648C141.024 254.648 136.199 253.688 131.696 251.823C127.194 249.958 123.103 247.225 119.657 243.779C116.212 240.333 113.478 236.242 111.613 231.74C109.748 227.238 108.789 222.412 108.789 217.539C108.789 208.144 112.524 199.771 118.038 193.028C124.729 184.846 145.892 161.833 145.892 161.833C145.892 161.833 166.731 185.184 173.697 192.95C179.764 199.695 183.085 208.467 183.006 217.539C183.006 227.381 179.096 236.82 172.137 243.779C165.178 250.738 155.739 254.648 145.897 254.648V254.648ZM216.923 194.471C216.123 196.22 214.309 199.14 211.86 199.229C207.495 199.388 207.029 197.152 203.803 192.377C196.72 181.895 134.906 117.293 123.345 104.799C113.175 93.8103 121.913 86.063 125.966 82.0031C131.051 76.9091 145.893 62.0754 145.893 62.0754C145.893 62.0754 190.151 104.067 208.587 132.759C227.023 161.45 220.669 186.278 216.923 194.471" fill="#009CDE"/>
</svg>

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

@ -0,0 +1,91 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 500 500" style="enable-background:new 0 0 500 500;" xml:space="preserve">
<style type="text/css">
.st0{fill:#007BFF;}
.st1{fill:url(#SVGID_1_);}
.st2{fill:url(#SVGID_2_);}
.st3{fill:url(#SVGID_3_);}
.st4{display:none;fill:#1D96D3;}
.st5{opacity:0.6;fill:url(#SVGID_4_);}
.st6{opacity:0.58;fill:url(#SVGID_5_);}
.st7{fill:#1D96D3;}
.st8{opacity:0.61;fill:url(#SVGID_6_);}
</style>
<g>
<path class="st0" d="M396.5,307.5L396.5,307.5c0,0.6,0,1.2,0,1.8c0,19.8-18.2,35.9-40.6,35.9s-40.6-16.1-40.6-35.9
c0-0.6,0-1.2,0.1-1.8h-0.1v-37.9h81.2V307.5z"/>
<path class="st0" d="M290.2,307.5L290.2,307.5c0,0.6,0,1.2,0,1.8c0,19.8-18.2,35.9-40.6,35.9c-22.4,0-40.6-16.1-40.6-35.9
c0-0.6,0-1.2,0.1-1.8H209v-37.9h81.2V307.5z"/>
<path class="st0" d="M184.7,307.5L184.7,307.5c0,0.6,0,1.2,0,1.8c0,19.8-18.2,35.9-40.6,35.9s-40.6-16.1-40.6-35.9
c0-0.6,0-1.2,0.1-1.8h-0.1v-37.9h81.2V307.5z"/>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="164.5571" y1="290.7507" x2="222.1396" y2="132.544">
<stop offset="8.108108e-03" style="stop-color:#66B0FF"/>
<stop offset="0.5189" style="stop-color:#007BFF"/>
<stop offset="0.6023" style="stop-color:#067EFF"/>
<stop offset="0.7133" style="stop-color:#1787FF"/>
<stop offset="0.8399" style="stop-color:#3395FF"/>
<stop offset="0.9772" style="stop-color:#59A9FF"/>
<stop offset="1" style="stop-color:#60ADFF"/>
</linearGradient>
<polygon class="st1" points="238.5,154.8 103.5,268.5 184.7,268.5 283.2,154.8 "/>
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="262.5802" y1="277.9882" x2="285.9756" y2="145.3065">
<stop offset="8.108108e-03" style="stop-color:#66B0FF"/>
<stop offset="0.5189" style="stop-color:#007BFF"/>
<stop offset="0.6023" style="stop-color:#067EFF"/>
<stop offset="0.7133" style="stop-color:#1787FF"/>
<stop offset="0.8399" style="stop-color:#3395FF"/>
<stop offset="0.9772" style="stop-color:#59A9FF"/>
<stop offset="1" style="stop-color:#60ADFF"/>
</linearGradient>
<polygon class="st2" points="294.9,154.8 209,268.5 290.2,268.5 339.6,154.8 "/>
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="355.8662" y1="268.5396" x2="355.8662" y2="154.7552">
<stop offset="8.108108e-03" style="stop-color:#66B0FF"/>
<stop offset="0.5189" style="stop-color:#007BFF"/>
<stop offset="0.6023" style="stop-color:#067EFF"/>
<stop offset="0.7133" style="stop-color:#1787FF"/>
<stop offset="0.8399" style="stop-color:#3395FF"/>
<stop offset="0.9772" style="stop-color:#59A9FF"/>
<stop offset="1" style="stop-color:#60ADFF"/>
</linearGradient>
<polygon class="st3" points="395.7,154.8 351,154.8 315.3,268.5 396.5,268.5 "/>
</g>
<g id="_x31_">
<path class="st0" d="M108.2,395.5c-71.9-70-82.6-184.5-21-267.1c35.6-47.7,88.3-75.3,143.3-80.6c-1.8-0.8-3.7-1.6-5.5-2.3
c-27.4-10.7-56.2-12.6-83.1-7.1c-32,16.3-60.1,39.9-82.2,69.5C21.7,158.8,5.9,221.3,15,284.1c3.4,23.2,10,45.4,19.6,66.1
c16,18.1,36.5,32.6,60.8,41.4C99.6,393.1,103.9,394.4,108.2,395.5z"/>
<g>
<path class="st4" d="M280.7,49.2c32,4.8,63.2,17.3,90.8,38c44.7,33.4,71.8,81.8,79.3,133.1c16,19.2,27.5,41.4,34,65.4
c3.4-22.8,3.5-46.3,0.1-69.8c-9.1-62.8-42.1-118.3-93-156.2S278.7,5.9,215.9,15c-1,0.1-2,0.3-3,0.5c7.1,1.8,14.2,4,21.2,6.7
C251.2,28.8,266.8,37.9,280.7,49.2z"/>
<path class="st0" d="M280.7,49.2c32,4.8,63.2,17.3,90.8,38c44.7,33.4,71.8,81.8,79.3,133.1c16,19.2,27.5,41.4,34,65.4
c3.4-22.8,3.5-46.3,0.1-69.8c-9.1-62.8-42.1-118.3-93-156.2S278.7,5.9,215.9,15c-1,0.1-2,0.3-3,0.5c7.1,1.8,14.2,4,21.2,6.7
C251.2,28.8,266.8,37.9,280.7,49.2z"/>
<path class="st0" d="M284.1,485c62.8-9.1,118.3-42.1,156.2-93c9.4-12.5,17.4-25.8,24-39.6c1.3-9.4,1.8-19,1.3-28.8
c-1-19.5-5.7-37.9-13.4-54.6c-3.3,35.9-16.3,71.4-39.4,102.4c-62.4,83.5-177.1,105.4-265.1,54c-20.5,0.2-41-3.3-60.9-10.4
c-4.2-1.5-8.2-3.2-12.2-4.9c10,10.9,21.2,21,33.3,30.1C158.8,478.3,221.3,494.1,284.1,485z"/>
</g>
</g>
<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="280.7048" y1="167.2448" x2="484.9043" y2="167.2448">
<stop offset="0" style="stop-color:#66B0FF"/>
<stop offset="1" style="stop-color:#FFFFFF"/>
</linearGradient>
<path class="st5" d="M384,86.5c-48.9-36-102.1-40.4-103.3-37.4c0,0,0,0,0,0c87.6,13.4,157.2,83.3,170.2,171c0.1,0.1-0.1-0.1,0,0
c28.7,33.6,34,70.1,34,65.4C484.9,281,475.2,153.6,384,86.5z"/>
<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="133.5635" y1="394.922" x2="133.5635" y2="35.4722">
<stop offset="0" style="stop-color:#66B0FF"/>
<stop offset="1" style="stop-color:#FFFFFF"/>
</linearGradient>
<path class="st6" d="M46.8,250.2c0-105.4,80.3-192,183-202c0.2-0.1,0.4-0.2,0.7-0.3c-11.3-4.9-28.7-10.8-50.5-12.1
c-15.2-0.9-28.2,0.7-38.1,2.7c-18.5,13-70.3,53.3-93.3,126.8c-6.6,21-24.4,81.1,2,148.7c16,40.9,41.5,67.4,56.9,81.1
C70,358.1,46.8,306.9,46.8,250.2z"/>
<path class="st7" d="M284,471.9"/>
<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="117.6595" y1="483.7774" x2="459.1477" y2="286.6191">
<stop offset="0" style="stop-color:#FFFFFF"/>
<stop offset="1" style="stop-color:#66B0FF"/>
</linearGradient>
<path class="st8" d="M250.7,453.5c-37.4,0-72.5-10.1-102.6-27.8c-0.1,0-0.2-0.1-0.4-0.1c-9.8,0.1-22.5-0.6-36.9-3.6
c-22.2-4.6-35-12-35.3-11.3c-0.7,1.4,55.2,47.1,134.5,57.9c26.4,3.6,81.6,10.4,138.7-20.7c49.9-27.1,73.6-68.2,80-80
c20.4-37.8,23.5-73.3,23.6-93.1C440.3,375.4,354.6,453.5,250.7,453.5z"/>
</svg>

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="140px" height="39px" viewBox="0 0 140 39" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Group</title>
<g id="Homepage---Final-Revision---1600" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="imperva_homepage_rebrand_rev4_solution_mb" transform="translate(-112.000000, -120.000000)" fill="#FFFFFF" fill-rule="nonzero">
<g id="hero">
<g id="Top-Menu" transform="translate(0.000000, 81.000000)">
<g id="Group" transform="translate(112.400000, 39.400000)">
<path d="M5.68,0 L2.84,0 L0,0 L0,5.68 L5.68,5.68 L5.68,0 Z M138.52,31.48 L135.68,31.48 L132.84,31.48 L132.84,37.16 L138.52,37.16 L138.52,31.48 L138.52,31.48 Z" id="Shape"></path>
<path d="M5.68,28.8 L0,28.8 L0,8.36 L2.84,8.36 L5.68,8.36 L5.68,28.8 Z M31.88,7.92 C36.08,7.92 38.6,10.84 38.6,15.48 L38.6,28.8 L32.92,28.8 L32.92,16.64 C32.92,14.44 31.96,13 30,13 C28.52,13 27.2,13.92 26.84,15.64 L26.84,28.8 L21.12,28.8 L21.12,16.64 C21.12,14.44 20.2,13 18.24,13 C16.76,13 15.4,13.92 15.04,15.64 L15.04,28.8 L9.4,28.8 L9.4,8.36 L15.08,8.36 L15.08,10.04 C16.08,8.76 17.96,7.88 20.24,7.88 C22.68,7.88 24.6,8.96 25.72,10.48 C27.04,9.04 29,7.92 31.88,7.92 Z M47.92,37.16 L42.24,37.16 L42.24,8.36 L47.92,8.36 L47.92,10.04 C48.84,8.96 50.84,7.88 53.04,7.88 C59,7.88 62.36,12.8 62.36,18.56 C62.36,24.32 58.96,29.2 53.04,29.2 C50.84,29.2 48.84,28.16 47.92,27.04 L47.92,37.16 Z M47.92,21.96 C48.6,23.36 50.12,24.32 51.76,24.32 C54.84,24.32 56.64,21.84 56.64,18.6 C56.64,15.32 54.8,12.84 51.76,12.84 C50.08,12.84 48.6,13.84 47.92,15.2 L47.92,21.96 Z M69.96,19.88 C70.4,23.2 72.84,24.6 75.84,24.6 C78.08,24.6 79.68,24.08 81.68,22.8 L81.68,27.48 C80,28.72 77.72,29.28 74.96,29.28 C68.76,29.28 64.48,25.24 64.48,18.76 C64.48,12.36 68.52,7.92 74.08,7.92 C80.04,7.92 83.08,12.04 83.08,18.08 L83.08,19.92 L69.96,19.92 L69.96,19.88 Z M70.16,16.2 L77.88,16.2 C77.76,14 76.52,12.44 74.28,12.44 C72.4,12.44 70.8,13.64 70.16,16.2 Z M98.56,13.96 C97.8,13.52 96.76,13.28 95.72,13.28 C93.8,13.28 92.24,14.28 91.84,16.16 L91.84,28.8 L86.16,28.8 L86.16,8.36 L91.84,8.36 L91.84,10.36 C92.72,8.88 94.4,7.88 96.4,7.88 C97.36,7.88 98.24,8.08 98.56,8.24 L98.56,13.96 L98.56,13.96 Z M107.4,28.8 L99.68,8.36 L105.6,8.36 L110.32,21.92 L114.92,8.36 L120.64,8.36 L112.88,28.8 L107.4,28.8 Z M132.88,16.04 C132.88,14.08 131.2,12.84 128.32,12.84 C126.28,12.84 124.36,13.44 122.76,14.48 L122.76,9.6 C124.24,8.68 126.88,7.92 129.56,7.92 C135.2,7.92 138.56,10.8 138.56,15.8 L138.56,28.8 L132.88,28.8 L132.88,27.72 C132.2,28.4 130.2,29.2 127.96,29.2 C123.84,29.2 120.4,26.84 120.4,22.56 C120.4,18.68 123.84,16.04 128.32,16.04 C130.12,16.04 132.08,16.64 132.88,17.24 L132.88,16.04 L132.88,16.04 Z M132.88,21.76 C132.36,20.68 130.88,19.96 129.28,19.96 C127.48,19.96 125.68,20.72 125.68,22.48 C125.68,24.28 127.52,25 129.28,25 C130.88,25 132.4,24.32 132.88,23.2 L132.88,21.76 Z" id="Shape"></path>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 680 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

@ -0,0 +1,12 @@
<svg width="1001" height="1001" viewBox="0 0 1001 1001" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0)">
<path d="M635.199 257.095H364.81V742.936H635.199V257.095Z" fill="#FF5F00"/>
<path d="M381.977 500.015C381.977 401.302 428.33 313.748 499.575 257.095C447.214 215.893 381.119 191 309.015 191C138.199 191 0 329.199 0 500.015C0 670.832 138.199 809.031 309.015 809.031C381.119 809.031 447.214 784.138 499.575 742.936C428.33 687.142 381.977 598.729 381.977 500.015Z" fill="#EB001B"/>
<path d="M1000.01 500.015C1000.01 670.832 861.81 809.031 690.993 809.031C618.889 809.031 552.794 784.138 500.433 742.936C572.537 686.283 618.031 598.729 618.031 500.015C618.031 401.302 571.679 313.748 500.433 257.095C552.794 215.893 618.889 191 690.993 191C861.81 191 1000.01 330.057 1000.01 500.015Z" fill="#F79E1B"/>
</g>
<defs>
<clipPath id="clip0">
<rect width="1000.01" height="1000.01" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 943 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

@ -1,8 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="111" height="111" enable-background="new 0 0 592.7 128" xml:space="preserve">
<g class="currentLayer">
<title>Pushnami-Logo</title>
<polygon id="svg_9" fill="#2f2674" points="55.60000133514404,55.600003242492676 55.60000133514404,0 111.19999980926514,0 "/>
<polygon id="svg_10" fill="#2f2674" points="0,111.20000171661377 0,55.600003242492676 55.60000133514404,55.600003242492676 "/>
<polygon id="svg_11" fill="#2f2674" points="0,55.600003242492676 0,0 55.60000133514404,0 "/>
</g>
</svg>
<svg width="256" height="256" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid"><g><polygon fill="#2f2674" points="128.23063370988174,128.23063810881195 128.23063370988174,0 256.4612608213682,0 "/><polygon fill="#2f2674" points="0,256.4612652202984 0,128.23063810881195 128.23063370988174,128.23063810881195 "/><polygon fill="#2f2674" points="0,128.23063810881195 0,0 128.23063370988174,0 "/></g></svg>

Before

Width:  |  Height:  |  Size: 602 B

After

Width:  |  Height:  |  Size: 440 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 660 B

After

Width:  |  Height:  |  Size: 899 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="43px" height="43px" viewBox="0 0 43 43" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
<!-- Generator: Sketch 3.0.2 (7799) - http://www.bohemiancoding.com/sketch -->
<title>logo full</title>
<description>Created with Sketch.</description>
<defs></defs>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">
<g id="logo" sketch:type="MSLayerGroup">
<path d="M0,0 L43,0 L43,43 L0,43 L0,0 L0,0 Z" id="Shape" fill="#FFFFFF" sketch:type="MSShapeGroup"></path>
<path d="M16.2,1.24 C21.62,-0.15 27.61,0.66 32.39,3.61 C38.41,7.21 42.34,14.02 42.44,21.03 C42.66,28.11 38.97,35.13 33.04,38.98 C26.44,43.42 17.31,43.59 10.57,39.37 C3.7,35.27 -0.31,27 0.72,19.06 C1.55,10.67 8.03,3.27 16.2,1.24 L16.2,1.24 Z" id="Shape" fill="#010101" sketch:type="MSShapeGroup"></path>
<path d="M15.37,4.67 C25.61,0.57 38.17,8.14 39.23,19.12 C40.88,29 32.68,39.04 22.67,39.33 C13.15,40.28 3.95,32.21 3.68,22.65 C2.97,14.91 8.07,7.23 15.37,4.67 L15.37,4.67 Z" id="Shape" fill="#FFFFFF" sketch:type="MSShapeGroup"></path>
<path d="M16.4,20.44 C20.99,16.69 25.48,12.81 30.17,9.17 C27.71,12.95 25.18,16.68 22.72,20.46 C20.61,20.47 18.5,20.47 16.4,20.44 L16.4,20.44 Z" id="Shape" fill="#010101" sketch:type="MSShapeGroup"></path>
<path d="M20.28,22.53 C22.4,22.53 24.51,22.53 26.62,22.56 C22,26.29 17.53,30.2 12.83,33.83 C15.29,30.05 17.82,26.31 20.28,22.53 L20.28,22.53 Z" id="Shape" fill="#010101" sketch:type="MSShapeGroup"></path>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 393 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 544 B

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 24.0.3, 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 300 100" style="enable-background:new 0 0 300 100;" xml:space="preserve">
<style type="text/css">
.st0{fill:none;}
.st1{fill:#004676;}
.st2{fill:#5FC323;}
</style>
<rect x="-6.89" y="2.28" class="st0" width="314.63" height="132.85"/>
<path class="st1" d="M80.95,46.68H67.66v-6.61h34.22v6.61H88.58v33.73h-7.63V46.68z M109.01,80.41V58.05
c1.29-0.74,3.19-1.17,5.46-1.17c1.53,0,3.01,0.18,4.42,0.55l1.84-6.02c-1.84-0.68-3.93-0.92-6.45-0.92
c-5.59,0-10.07,2.21-12.28,4.18v25.74H109.01z M145.36,51.5v22.44c-1.8,0.75-3.73,1.12-6.03,1.12c-5.9,0-7.15-2.67-7.15-7.46V51.5
h-7.08v18.15c0,7.15,4.1,11.69,13.3,11.69c6.52,0,11.06-1.68,14.05-3.11V51.5H145.36z M158.36,76.79c0,0,4.08,4.31,11.39,4.31
c6.96,0,11.21-3.91,11.21-8.8c0-9.44-14.26-8.92-14.26-13.07c0-1.84,1.84-2.65,3.74-2.65c4.49,0,7.19,2.53,7.19,2.53l2.7-5.41
c0,0-3.22-3.34-9.83-3.34c-6.33,0-11.22,3.17-11.22,8.63c0,9.44,14.27,8.86,14.27,13.24c0,1.73-1.78,2.65-3.85,2.65
c-4.77,0-7.99-3.22-7.99-3.22L158.36,76.79z M187.06,69.65c0,9.84,8.11,11.05,12.19,11.05c1.38,0,2.24-0.17,2.24-0.17v-6.39
c0,0-0.52,0.11-1.32,0.11c-2.01,0-5.81-0.69-5.81-5.52V57.76h6.67v-6.24h-6.67v-8.46h-7.13L187.06,69.65z M252.37,80.41V58.05
c1.29-0.74,3.19-1.17,5.47-1.17c1.53,0,3.01,0.18,4.42,0.55l1.84-6.02c-1.84-0.68-3.93-0.92-6.45-0.92
c-5.59,0-10.07,2.21-12.28,4.18v25.74H252.37z M280.52,50.89c-9.47,0-15.53,6.84-15.53,14.98c0,8.3,6.05,14.98,15.53,14.98
c7.68,0,11.77-4.66,11.77-4.66l-2.75-5.05c0,0-3.59,3.65-8.41,3.65c-5.44,0-8.91-4.15-8.91-8.98c0-4.88,3.42-8.86,8.69-8.86
c4.49,0,7.46,3.08,7.46,3.08l3.14-4.88C291.51,55.16,287.98,50.89,280.52,50.89 M230.1,69.94h-13.37l-3.6,10.24h-7.46l14.02-39.83
h7.45l14.01,39.83h-7.45L230.1,69.94z M228.03,64.04l-4.61-13.11l-4.61,13.11H228.03z"/>
<g>
<g>
<path class="st2" d="M37.78,44.26c12.74-13.67,31.87-17.79,48.47-12.08c-12.2-7.71-28.19-8.42-41.39-0.48
C31.41,39.8,24.52,54.64,25.91,69.29C27.15,60.23,31.08,51.46,37.78,44.26"/>
<path class="st2" d="M19.81,14.08c3.68-0.13,6.74,1.67,6.85,3.97c0,0,0.45,2.28-3.4,5.45c-1.02,0.91-2.01,1.87-2.96,2.89
C3.83,44.06,4.8,71.76,22.47,88.24c0.06,0.06,0.13,0.11,0.19,0.17c-5.22-7.11-8.43-15.81-8.76-25.29
c-0.88-25.11,18.75-46.17,43.83-47.04c6.1-0.21,11.96,0.79,17.35,2.79c-9.93-6.08-21.69-7.8-32.64-5.27
c-2.84,0.42-5.71-0.4-6.8-0.76C30.64,10.88,24.81,11.19,19.81,14.08"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1333.33 1333.33" shape-rendering="geometricPrecision" text-rendering="geometricPrecision" image-rendering="optimizeQuality" fill-rule="evenodd" clip-rule="evenodd"><g fill-rule="nonzero"><path d="M157.62 0h1018.09c87.04 0 157.62 70.58 157.62 157.62v1018.09c0 87.04-70.58 157.62-157.62 157.62H157.62C70.58 1333.33 0 1262.74 0 1175.7V157.62C0 70.58 70.59 0 157.63 0z" fill="#3396cd"/><path d="M995.24 271.32c28.68 47.29 41.55 96.05 41.55 157.62 0 196.38-167.62 451.42-303.67 630.49H422.45L297.88 314.34 570 288.5l66.17 530.15c61.5-100.31 137.55-257.93 137.55-365.32 0-58.84-10.08-98.84-25.84-131.78l247.36-50.23z" fill="#fff"/></g></svg>

After

Width:  |  Height:  |  Size: 688 B

@ -0,0 +1,14 @@
<svg width="750" height="750" viewBox="0 0 750 750" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0)">
<path d="M710 -108H40C17.9086 -108 0 -58.4947 0 2.57324V1083.43C0 1144.49 17.9086 1194 40 1194H710C732.091 1194 750 1144.49 750 1083.43V2.57324C750 -58.4947 732.091 -108 710 -108Z" fill="#0E4595"/>
<path d="M278 473.763L311.36 278.003H364.72L331.33 473.763H278Z" fill="white"/>
<path d="M524.11 282.223C508.779 276.674 492.584 273.891 476.28 274.003C423.56 274.003 386.42 300.553 386.1 338.603C385.81 366.733 412.62 382.423 432.86 391.783C453.63 401.383 460.61 407.503 460.51 416.073C460.38 429.193 443.93 435.183 428.59 435.183C407.23 435.183 395.89 432.183 378.36 424.913L371.49 421.803L364 465.623C376.46 471.083 399.51 475.823 423.44 476.063C479.52 476.063 515.94 449.823 516.35 409.183C516.55 386.913 502.35 369.973 471.55 355.993C452.9 346.943 441.48 340.903 441.6 331.733C441.6 323.593 451.27 314.893 472.16 314.893C485.847 314.587 499.447 317.141 512.09 322.393L516.87 324.653L524.11 282.223Z" fill="white"/>
<path d="M661.41 278.003H620.18C607.41 278.003 597.85 281.483 592.24 294.233L513 473.633H569C569 473.633 578.16 449.513 580.23 444.213C586.36 444.213 640.79 444.303 648.57 444.303C650.16 451.153 655.06 473.633 655.06 473.633H704.6L661.41 278.003ZM596 404.403C600.41 393.123 617.26 349.683 617.26 349.683C616.94 350.203 621.64 338.353 624.33 331.003L627.94 347.873C627.94 347.873 638.16 394.603 640.29 404.403H596Z" fill="white"/>
<path d="M45.68 277.993L45 282.073C64.7017 286.712 83.6819 294.005 101.42 303.753L148.8 473.453L205.26 473.383L289.26 277.993H232.7L180.46 411.533L174.9 384.403C174.64 383.573 174.36 382.743 174.07 381.913L155.91 294.533C152.68 282.143 143.31 278.443 131.72 278.003L45.68 277.993Z" fill="white"/>
</g>
<defs>
<clipPath id="clip0">
<rect width="750" height="750" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 594 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 615 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 647 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 722 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 995 B

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 21 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1008 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

@ -0,0 +1,7 @@
<svg enable-background="new 0 0 72.7 72.7" viewBox="0 0 72.7 72.7" xmlns="http://www.w3.org/2000/svg">
<style>
@media (prefers-color-scheme: dark) {
path{fill:#fff;}
}
</style>
<path clip-rule="evenodd" d="m36.4.9c20.1 0 36.4 15.9 36.4 35.5s-16.4 35.5-36.4 35.5-36.4-15.9-36.4-35.5 16.3-35.5 36.4-35.5zm16 19.1h-21.8v38.4l21-28.8h-6.3z" fill="#4672ff" fill-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 399 B

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 196.32 170.02">
<path fill="#42b883" d="M120.83 0L98.16 39.26 75.49 0H0l98.16 170.02L196.32 0h-75.49z"/>
<path fill="#35495e" d="M120.83 0L98.16 39.26 75.49 0H39.26l58.9 102.01L157.06 0h-36.23z"/>
</svg>

After

Width:  |  Height:  |  Size: 261 B

@ -0,0 +1,4 @@
<svg width="52" height="59" viewBox="0 0 52 59" fill="none" xmlns="http://www.w3.org/2000/svg">
<path opacity="0.5" d="M26 1L51 14.6986M26 1L18.4658 5.12835L8.87671 10.3826L1 14.6986M26 1V10.2466V29.4247M26 29.4247V57.8493M26 29.4247L1 44.1507M26 29.4247L51 14.6986M26 29.4247L51 44.1507M26 29.4247L8.87671 19.3383L1 14.6986M26 57.8493L1 44.1507M26 57.8493L51 44.1507M1 44.1507V24.2877V14.6986M51 44.1507V14.6986" stroke="black"/>
<path d="M1 44.1506L8.87671 48.4667M1 44.1506L8.87671 39.5109M1 44.1506V34.5616M18.4658 5.12872L26 1.00036M26 1.00036V10.2469M26 1.00036L33.5342 5.12872M1 14.6994L8.87671 10.3834M1 14.6994L8.87671 19.3391M1 14.6994V24.2884M18.4658 53.7408L26 57.8691M26 57.8691V48.6226M26 57.8691L33.5342 53.7408M18.4658 24.9737L26 29.4258M26 29.4258V38.6723M26 29.4258L33.5342 24.9737M51 44.1506L43.1233 48.4667M51 44.1506L43.1233 39.5109M51 44.1506V34.5616M51 14.6994L43.1233 10.3834M51 14.6994L43.1233 19.3391M51 14.6994V24.2884" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

@ -9,17 +9,6 @@ const Content = {
async init() {
await new Promise((resolve) => setTimeout(resolve, 1000))
// Enable messaging to and from driver.js
Content.port = chrome.runtime.connect({ name: 'content.js' })
Content.port.onMessage.addListener(({ func, args }) => {
const onFunc = `on${func.charAt(0).toUpperCase() + func.slice(1)}`
if (Content[onFunc]) {
Content[onFunc](args)
}
})
try {
// HTML
let html = new XMLSerializer().serializeToString(document)
@ -43,13 +32,15 @@ const Content = {
document.documentElement.getAttribute('lang') ||
document.documentElement.getAttribute('xml:lang') ||
(await new Promise((resolve) =>
chrome.i18n.detectLanguage(html, ({ languages }) =>
resolve(
languages
.filter(({ percentage }) => percentage >= 75)
.map(({ language: lang }) => lang)[0]
)
)
chrome.i18n.detectLanguage
? chrome.i18n.detectLanguage(html, ({ languages }) =>
resolve(
languages
.filter(({ percentage }) => percentage >= 75)
.map(({ language: lang }) => lang)[0]
)
)
: resolve()
))
// Script tags
@ -72,22 +63,40 @@ const Content = {
{}
)
Content.port.postMessage({
func: 'onContentLoad',
args: [location.href, { html, scripts, meta }, language]
})
Content.driver('onContentLoad', [
location.href,
{ html, scripts, meta },
language
])
Content.port.postMessage({ func: 'getTechnologies' })
Content.onGetTechnologies(await Content.driver('getTechnologies'))
} catch (error) {
Content.port.postMessage({ func: 'error', args: [error, 'content.js'] })
Content.driver('error', error)
}
},
driver(func, args, callback) {
return new Promise((resolve, reject) => {
chrome.runtime.sendMessage(
{
source: 'content.js',
func,
args: args ? (Array.isArray(args) ? args : [args]) : []
},
(response) => {
chrome.runtime.lastError
? reject(new Error(chrome.runtime.lastError.message))
: resolve(response)
}
)
})
},
/**
* Callback for getTechnologies
* @param {Object} technologies
* @param {Array} technologies
*/
onGetTechnologies(technologies) {
onGetTechnologies(technologies = []) {
// Inject a script tag into the page to access methods of the window object
const script = document.createElement('script')
@ -99,9 +108,10 @@ const Content = {
window.removeEventListener('message', onMessage)
Content.port.postMessage({
chrome.runtime.sendMessage({
source: 'content.js',
func: 'analyzeJs',
args: [location.href, data.wappalyzer.js]
args: [location.href.split('#')[0], data.wappalyzer.js]
})
script.remove()

@ -55,15 +55,18 @@ const Driver = {
ads: await getOption('ads', [])
}
chrome.browserAction.setBadgeBackgroundColor({ color: '#6B39BD' }, () => {})
chrome.webRequest.onCompleted.addListener(
Driver.onWebRequestComplete,
{ urls: ['http://*/*', 'https://*/*'], types: ['main_frame'] },
['responseHeaders']
)
chrome.tabs.onRemoved.addListener((id) => (Driver.cache.tabs[id] = null))
// Enable messaging between scripts
chrome.runtime.onConnect.addListener(Driver.onRuntimeConnect)
chrome.runtime.onMessage.addListener(Driver.onMessage)
const { version } = chrome.runtime.getManifest()
const previous = await getOption('version')
@ -72,7 +75,7 @@ const Driver = {
if (previous === null) {
open('https://www.wappalyzer.com/installed')
} else if (version !== previous && upgradeMessage) {
// open(`https://www.wappalyzer.com/upgraded?v${version}`, false)
open(`https://www.wappalyzer.com/upgraded?v${version}`, false)
}
await setOption('version', version)
@ -153,29 +156,28 @@ const Driver = {
/**
* Enable scripts to call Driver functions through messaging
* @param {Object} port
* @param {Object} message
* @param {Object} sender
* @param {Function} callback
*/
onRuntimeConnect(port) {
Driver.log(`Connected to ${port.name}`)
onMessage({ source, func, args }, sender, callback) {
if (!func) {
return
}
port.onMessage.addListener(async ({ func, args }) => {
if (!func) {
return
}
Driver.log({ source, func, args })
Driver.log({ port: port.name, func, args })
if (!Driver[func]) {
Driver.error(new Error(`Method does not exist: Driver.${func}`))
if (!Driver[func]) {
Driver.error(new Error(`Method does not exist: Driver.${func}`))
return
}
return
}
Promise.resolve(Driver[func].call(Driver[func], ...(args || [])))
.then(callback)
.catch(Driver.error)
port.postMessage({
func,
args: await Driver[func].call(port.sender, ...(args || []))
})
})
return !!callback
},
/**
@ -362,7 +364,7 @@ const Driver = {
* @param {Object} technologies
*/
async setIcon(url, technologies) {
const dynamicIcon = await getOption('dynamicIcon', true)
const dynamicIcon = await getOption('dynamicIcon', false)
let icon = 'default.svg'
@ -376,23 +378,30 @@ const Driver = {
;({ icon } = pinned || technologies[0] || { icon })
}
const tabs = await promisify(chrome.tabs, 'query', { url })
await Promise.all(
tabs.map(async ({ id: tabId }) => {
await promisify(chrome.pageAction, 'setIcon', {
tabId,
path: chrome.extension.getURL(
`../images/icons/${
/\.svg$/i.test(icon)
? `converted/${icon.replace(/\.svg$/, '.png')}`
: icon
}`
)
})
;(await promisify(chrome.tabs, 'query', { url })).forEach(
({ id: tabId }) => {
chrome.browserAction.setBadgeText(
{
tabId,
text: technologies.length.toString()
},
() => {}
)
chrome.pageAction.show(tabId)
})
chrome.browserAction.setIcon(
{
tabId,
path: chrome.extension.getURL(
`../images/icons/${
/\.svg$/i.test(icon)
? `converted/${icon.replace(/\.svg$/, '.png')}`
: icon
}`
)
},
() => {}
)
}
)
},
@ -519,7 +528,7 @@ const Driver = {
]
if (
!/((local|dev(elopment)?|stag(e|ing)?|test(ing)?|demo(shop)?|admin|google|cache)\.|\/admin|\.local)/.test(
!/((local|dev(elop(ment)?)?|stag(e|ing)?|preprod|test(ing)?|demo(shop)?|admin|cache)[.-]|localhost|google|\/admin|\.local|\.test|\.dev|127\.|0\.)/.test(
hostname
) &&
hits >= 3

@ -163,24 +163,15 @@
* @param {String} responseMessage
*/
sendToBackground: function(message, event, responseMessage) {
if (typeof chrome !== 'undefined') {
var port = chrome.runtime.connect({ name: 'adparser' })
port.onMessage.addListener((message) => {
if (message && typeof message.tracking_enabled !== 'undefined') {
if (message.tracking_enabled) {
utilCallback()
} else {
utilElseCallback()
}
}
})
port.postMessage(message)
} else if (window.self.port) {
window.self.port.on(responseMessage, onResponse)
window.self.port.emit(event, message)
}
chrome.runtime.sendMessage(message, (message) => {
if (message && typeof message.tracking_enabled !== 'undefined') {
if (message.tracking_enabled) {
utilCallback()
} else {
utilElseCallback()
}
}
})
},
/**
@ -1446,15 +1437,11 @@
* @param {Function} callback
*/
function addBackgroundListener(event, callback) {
if (typeof chrome !== 'undefined') {
chrome.runtime.onMessage.addListener(function(msg) {
if (msg.event === event) {
callback(msg)
}
})
} else if (window.self.port) {
window.self.port.on(event, callback)
}
chrome.runtime.onMessage.addListener(function(msg) {
if (msg.event === event) {
callback(msg)
}
})
}
exports.coordinator = {
@ -1541,7 +1528,7 @@
;(function(adparser, pageUrl) {
function onAdFound(log) {
adparser.sendToBackground(
{ func: 'onAd', args: [log] },
{ source: 'iframe.js', func: 'onAd', args: [log] },
'onAd',
'',
function() {}

@ -730,20 +730,18 @@
}
);
chrome.runtime.onConnect.addListener((port) => {
port.onMessage.addListener((message) => {
if ( message === 'is_tracking_enabled' ) {
ifTrackingEnabled(
port.sender.tab,
function() {
try {port.postMessage({'tracking_enabled': true});}
catch(err) {} },
function() {
try {port.postMessage({'tracking_enabled': false});}
catch(err) {} }
);
}
return true;
});
});
chrome.runtime.onMessage.addListener((message, sender, callback) => {
if ( message === 'is_tracking_enabled' ) {
ifTrackingEnabled(
sender.tab,
function() {
try {callback({'tracking_enabled': true});}
catch(err) {} },
function() {
try {callback({'tracking_enabled': false});}
catch(err) {} }
);
}
return true;
});
})();

@ -18,7 +18,7 @@ const Options = {
;[
['upgradeMessage', true],
['dynamicIcon', true],
['dynamicIcon', false],
['tracking', true],
['themeMode', false]
].map(async ([option, defaultValue]) => {

@ -2,11 +2,17 @@
/* eslint-env browser */
/* globals chrome, Utils */
const { agent, open, i18n, getOption, setOption, promisify } = Utils
const {
agent,
open,
i18n,
getOption,
setOption,
promisify,
sendMessage
} = Utils
const Popup = {
port: chrome.runtime.connect({ name: 'popup.js' }),
/**
* Initialise popup
*/
@ -34,50 +40,57 @@ const Popup = {
agent === 'chrome' || (await getOption('termsAccepted', false))
if (termsAccepted) {
Popup.driver('getDetections')
document.querySelector('.terms').classList.add('terms--hidden')
document.querySelector('.empty').classList.remove('empty--hidden')
Popup.onGetDetections(await Popup.driver('getDetections'))
} else {
document.querySelector('.terms').style.display = 'flex'
document.querySelector('.detections').style.display = 'none'
document.querySelector('.empty').style.display = 'none'
document.querySelector('.terms').classList.remove('terms--hidden')
document.querySelector('.detections').classList.add('detections--hidden')
document.querySelector('.empty').classList.add('empty--hidden')
document.querySelector('.terms').addEventListener('click', async () => {
await setOption('termsAccepted', true)
document.querySelector('.terms').remove()
document.querySelector('.detections').style.display = 'block'
document.querySelector('.empty').style.display = 'block'
document.querySelector('.terms').classList.add('terms--hidden')
document.querySelector('.empty').classList.remove('empty--hidden')
Popup.driver('getDetections')
chrome.runtime.sendMessage('getDetections', Popup.onGetDetections)
})
// Apply internationalization
i18n()
}
// Alert
const [{ url }] = await promisify(chrome.tabs, 'query', {
const tabs = await promisify(chrome.tabs, 'query', {
active: true,
currentWindow: true
})
document.querySelector(
'.alerts__link'
).href = `https://www.wappalyzer.com/alerts/manage?url=${encodeURIComponent(
`${url}`
)}`
if (tabs && tabs.length) {
const [{ url }] = tabs
if (url.startsWith('http')) {
document.querySelector('.alerts').classList.remove('alerts--hidden')
document.querySelector(
'.alerts__link'
).href = `https://www.wappalyzer.com/alerts?url=${encodeURIComponent(
`${url}`
)}`
} else {
document.querySelector('.alerts').classList.add('alerts--hidden')
}
}
document
.querySelector('.footer__settings')
.addEventListener('click', () => chrome.runtime.openOptionsPage())
// Apply internationalization
i18n()
},
/**
* Call a function on driver.js through messaging
* @param {function} func
* @param {...any} args
*/
driver(func, ...args) {
Popup.port.postMessage({ func, args })
driver(func, args) {
return sendMessage('popup.js', func, args)
},
/**
@ -85,7 +98,7 @@ const Popup = {
* @param {String} message
*/
log(message) {
Popup.driver('log', message, 'popup.js')
Popup.driver('log', message)
},
/**
@ -113,13 +126,16 @@ const Popup = {
* Callback for getDetection listener
* @param {Array} detections
*/
async onGetDetections(detections) {
const pinnedCategory = await getOption('pinnedCategory')
if (detections.length) {
document.querySelector('.empty').remove()
async onGetDetections(detections = []) {
if (!detections || !detections.length) {
return
}
document.querySelector('.empty').classList.add('empty--hidden')
document.querySelector('.detections').classList.remove('empty--hidden')
const pinnedCategory = await getOption('pinnedCategory')
const categorised = Popup.categorise(detections)
categorised.forEach(({ id, name, slug: categorySlug, technologies }) => {
@ -216,15 +232,6 @@ const Popup = {
}
}
// Add listener for popup PostMessage API
Popup.port.onMessage.addListener(({ func, args }) => {
const onFunc = `on${func.charAt(0).toUpperCase() + func.slice(1)}`
if (Popup[onFunc]) {
Popup[onFunc](args)
}
})
if (/complete|interactive|loaded/.test(document.readyState)) {
Popup.init()
} else {

@ -75,5 +75,22 @@ const Utils = {
Array.from(document.querySelectorAll('[data-i18n]')).forEach(
(node) => (node.innerHTML = chrome.i18n.getMessage(node.dataset.i18n))
)
},
sendMessage(source, func, args) {
return new Promise((resolve, reject) => {
chrome.runtime.sendMessage(
{
source,
func,
args: args ? (Array.isArray(args) ? args : [args]) : []
},
(response) => {
chrome.runtime.lastError
? reject(new Error(chrome.runtime.lastError.message))
: resolve(response)
}
)
})
}
}

@ -4,7 +4,7 @@
"author": "Wappalyzer",
"homepage_url": "https://www.wappalyzer.com",
"description": "Identify web technologies",
"version": "6.0.15",
"version": "6.0.16",
"default_locale": "en",
"manifest_version": 2,
"icons": {
@ -14,7 +14,7 @@
"38": "images/icon_38.png",
"128": "images/icon_128.png"
},
"page_action": {
"browser_action": {
"default_icon": {
"16": "images/icon_16.png",
"19": "images/icon_19.png",

@ -13,7 +13,7 @@
"software"
],
"homepage": "https://www.wappalyzer.com",
"version": "6.0.15",
"version": "6.1.1",
"author": "Wappalyzer",
"license": "MIT",
"repository": {
@ -27,4 +27,4 @@
"files": [
"wappalyzer.js"
]
}
}

@ -1242,6 +1242,11 @@ jsonfile@^4.0.0:
optionalDependencies:
graceful-fs "^4.1.6"
languagedetect@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/languagedetect/-/languagedetect-2.0.0.tgz#4b8fa2b7593b2a3a02fb1100891041c53238936c"
integrity sha512-AZb/liiQ+6ZoTj4f1J0aE6OkzhCo8fyH+tuSaPfSo8YHCWLFJrdSixhtO2TYdIkjcDQNaR4RmGaV2A5FJklDMQ==
levn@^0.3.0, levn@~0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"