Merge in develop.

This commit is contained in:
Will O'Beirne 2018-02-23 15:23:02 -05:00
commit 6a2b94040d
No known key found for this signature in database
GPG Key ID: 44C190DB5DEAF9F6
540 changed files with 12209 additions and 8644 deletions

1
.github/CONTRIBUTING.md vendored Normal file
View File

@ -0,0 +1 @@
Please see the [Contributor Guidelines on the wiki](https://github.com/MyCryptoHQ/MyCrypto/wiki/Contributor-Guidelines).

37
.github/ISSUE_TEMPLATE.md vendored Normal file
View File

@ -0,0 +1,37 @@
If you're having an issue with unlocking your wallet, a transaction, a swap,
or an ENS auction, please email support@mycrypto.com. Github issues are for
development only, and support questions that aren't bugs or feature requests
will not be answered.
---
If you've experienced a bug, please provide the following information:
### Description of the Issue
(Your description goes here)
### Steps to Reproduce
(Explain how you got this issue)
### Description of Your Machine
(Your browser, browser version, operating system, device)
### Console Logs / Screenshots
(Console logs or screenshots go here, if applicable)
---
If you're suggesting a feature, make sure someone hasn't already posted it. If
no one has, please provide the following information:
### Description of the Feature
(Your description goes here)
### Example(s) of Feature
(If another product or app is doing this, please link it)

29
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View File

@ -0,0 +1,29 @@
If you're contributing translations, please follow the contributor guidelines
at https://github.com/MyCryptoHQ/MyCrypto/wiki/Contributor-Guidelines#providing-translations
---
If you're contributing code, please link to the issue it resolves and follow the
contributor guidelines at https://github.com/MyCryptoHQ/MyCrypto/wiki/Contributor-Guidelines#contributing-code and fill out the following template:
Closes #(issue number goes here)
### Description
(Description goes here)
### Changes
* High level
* Changes that
* You Made
### Steps to Test
1. Steps
2. To
3. Test
### Screenshots
(Only if applicable)

2
.nvmrc
View File

@ -1 +1 @@
8
8.9.4

View File

@ -13,7 +13,8 @@ before_install:
- export CHROME_BIN=chromium-browser
- export DISPLAY=:99.0
- sh -e /etc/init.d/xvfb start
- docker pull dternyak/eth-priv-to-addr:latest
# uncomment once integration tests are included in CI
# - docker pull dternyak/eth-priv-to-addr:latest
- sudo apt-get install libusb-1.0
install:
@ -26,13 +27,7 @@ jobs:
- stage: test
script: npm run test
- stage: test
script: npm run tslint
- stage: test
script: npm run tscheck
- stage: test
script: npm run freezer
- stage: test
script: npm run freezer:validate
script: npm run tslint && npm run tscheck && npm run freezer && npm run freezer:validate
notifications:
email:

View File

@ -1,6 +1,7 @@
MIT License
Copyright (c) 2016 MyEtherWallet
Copyright (c) 2015-2017 MyEtherWallet LLC
Copyright (c) 2018 MyCrypto, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

363
README.md
View File

@ -1,35 +1,64 @@
# MyEtherWallet V4+ (ALPHA - VISIT [V3](https://github.com/kvhnuke/etherwallet) for the production site)
# MyCrypto Beta (VISIT [MyCryptoHQ/mycrypto.com](https://github.com/MyCryptoHQ/mycrypto.com) for the current site)<br/>Just looking to download? Grab our [latest release](https://github.com/MyCryptoHQ/MyCrypto/releases)
[![Greenkeeper badge](https://badges.greenkeeper.io/MyEtherWallet/MyEtherWallet.svg)](https://greenkeeper.io/)
[![Greenkeeper badge](https://badges.greenkeeper.io/MyCryptoHq/MyCrypto.svg)](https://greenkeeper.io/)
[![Coverage Status](https://coveralls.io/repos/github/MyCryptoHQ/MyCrypto/badge.svg?branch=develop)](https://coveralls.io/github/MyCryptoHQ/MyCrypto?branch=develop)
#### Run:
## Running the App
This codebase targets Node 8.9.4 (LTS). After `npm install`ing all dependencies (You may be required to install additional system dependencies, due to some node modules relying on them) you can run various commands depending on what you want to do:
#### Development
```bash
npm run dev # run app in dev mode
# run app in dev mode in browser, rebuild on file changes
npm run dev
```
#### Build:
```bash
npm run build # build app
# run app in dev mode in electron, rebuild on file changes
npm run dev:electron
```
It generates app in `dist` folder.
#### Build Releases
```bash
# builds the production server app
npm run build
```
```bash
# builds the downloadable version of the site
npm run build:downloadable
```
```bash
# builds the electron apps
npm run build:electron
# builds only one OS's electron app
npm run build:electron:(osx|linux|windows)
```
All of these builds are output to a folder in `dist/`.
#### Unit Tests:
```bash
npm run test # run tests with Jest
# run unit tests with Jest
npm run test
```
#### Integration Tests:
```bash
npm run test:int # run tests with Jest
# run integration tests with Jest
npm run test:int
```
#### Dev (HTTPS):
Some parts of the site, such as the Ledger wallet, require an HTTPS environment to work. To develop on HTTPS, do the following:
1. Create your own SSL Certificate (Heroku has a [nice guide here](https://devcenter.heroku.com/articles/ssl-certificate-self))
2. Move the `.key` and `.crt` files into `webpack_config/server.*`
3. Run the following command:
@ -69,300 +98,32 @@ npm run test:int
```
├── common
│ ├── actions - application actions
│ ├── actions - Application actions
│ ├── api - Services and XHR utils
│ ├── components - components according to "Redux philosophy"
│ ├── config - frontend config depending on REACT_WEBPACK_ENV
│ ├── containers - containers according to "Redux philosophy"
│ ├── reducers - application reducers
│ ├── routing - application routing
│ ├── index.tsx - entry
│ ├── index.html
├── static
├── webpack_config - Webpack configuration
├── jest_config - Jest configuration
│ ├── assets - Images, fonts, etc.
│ ├── components - Components according to "Redux philosophy"
│ ├── config - Various config data and hard-coded json
│ ├── containers - Containers according to "Redux philosophy"
│ ├── libs - Framework-agnostic libraries and business logic
│ ├── reducers - Redux reducers
│ ├── sagas - Redux sagas
│ ├── sass - SCSS styles, variables, mixins
│ ├── selectors - Redux selectors
│ ├── translations - Language JSON dictionaries
│ ├── typescript - Typescript definition files
│ ├── utils - Common use utility functions
│ ├── index.tsx - Entry point for app
│ ├── index.html - Html template file for html-webpack-plugin
│ ├── Root.tsx - Root component for React
│ └── store.ts - Redux reducer combiner and middleware injector
├── electron-app - Code for the native electron app
├── jest_config - Jest testing configuration
├── spec - Jest unit tests, mirror's common's structure
├── static - Files that don't get compiled, just moved to build
└── webpack_config - Webpack configuration
```
## Style Guides and Philosophies
The following are guides for developers to follow for writing compliant code.
### Redux and Actions
Each reducer has one file in `reducers/[namespace].ts` that contains the reducer
and initial state, one file in `actions/[namespace].ts` that contains the action
creators and their return types, and optionally one file in
`sagas/[namespace].ts` that handles action side effects using
[`redux-saga`](https://github.com/redux-saga/redux-saga).
The files should be laid out as follows:
#### Reducer
* State should be explicitly defined and exported
* Initial state should match state typing, define every key
```ts
import { NamespaceAction } from "actions/[namespace]";
import { TypeKeys } from 'actions/[namespace]/constants';
export interface State { /* definition for state object */ };
export const INITIAL_STATE: State = { /* Initial state shape */ };
export function [namespace](
state: State = INITIAL_STATE,
action: NamespaceAction
): State {
switch (action.type) {
case TypeKeys.NAMESPACE_NAME_OF_ACTION:
return {
...state,
// Alterations to state
};
default:
return state;
}
}
```
#### Actions
* Define each action creator in `actionCreator.ts`
* Define each action object type in `actionTypes.ts`
* Export a union of all of the action types for use by the reducer
* Define each action type as a string enum in `constants.ts`
* Export `actionCreators` and `actionTypes` from module file `index.ts`
```
├── common
├── actions - application actions
├── [namespace] - action namespace
├── actionCreators.ts - action creators
├── actionTypes.ts - action interfaces / types
├── constants.ts - string enum
├── index.ts - exports all action creators and action object types
```
##### constants.ts
```ts
export enum TypeKeys {
NAMESPACE_NAME_OF_ACTION = 'NAMESPACE_NAME_OF_ACTION'
}
```
##### actionTypes.ts
```ts
/*** Name of action ***/
export interface NameOfActionAction {
type: TypeKeys.NAMESPACE_NAME_OF_ACTION;
/* Rest of the action object shape */
}
/*** Action Union ***/
export type NamespaceAction = ActionOneAction | ActionTwoAction | ActionThreeAction;
```
##### actionCreators.ts
```ts
import * as interfaces from './actionTypes';
import { TypeKeys } from './constants';
export interface TNameOfAction = typeof nameOfAction;
export function nameOfAction(): interfaces.NameOfActionAction {
return {
type: TypeKeys.NAMESPACE_NAME_OF_ACTION,
payload: {}
};
};
```
##### index.ts
```ts
export * from './actionCreators';
export * from './actionTypes';
```
### Typing Redux-Connected Components
Components that receive props directly from redux as a result of the `connect`
function should use AppState for typing, rather than manually defining types.
This makes refactoring reducers easier by catching mismatches or changes of
types in components, and reduces the chance for inconsistency. It's also less
code overall.
```
// Do this
import { AppState } from 'reducers';
interface Props {
wallet: AppState['wallet']['inst'];
rates: AppState['rates']['rates'];
// ...
}
// Not this
import { IWallet } from 'libs/wallet';
import { Rates } from 'libs/rates';
interface Props {
wallet: IWallet;
rates: Rates;
// ...
}
```
However, if you have a sub-component that takes in props from a connected
component, it's OK to manually specify the type. Especially if you go from
being type-or-null to guaranteeing the prop will be passed (because of a
conditional render.)
### Higher Order Components
#### Typing Injected Props
Props made available through higher order components can be tricky to type. You can inherit the injected props, and in the case of react router, specialize the generic in `withRouter` so it can omit all of its injected props from the component.
```ts
import { RouteComponentProps } from 'react-router-dom';
interface MyComponentProps extends RouteComponentProps<{}> {
name: string;
countryCode?: string;
}
```
```ts
class MyComponent extends React.Component<MyComponentProps, {}> {
render() {
const { name, countryCode, location } = this.props; // location being the one of the injected props from the withRouter HOC
...
}
}
export default withRouter<Props>(MyComponent);
```
## Event Handlers
Event handlers such as `onChange` and `onClick`, should be properly typed. For example, if you have an event listener on an input element inside a form:
```ts
public onValueChange = (e: React.FormEvent<HTMLInputElement>) => {
if (this.props.onChange) {
this.props.onChange(
e.currentTarget.value,
this.props.unit
);
}
};
```
Where you type the event as a `React.FormEvent` of type `HTML<TYPE>Element`.
## Class names
Dynamic class names should use the `classnames` module to simplify how they are created instead of using string template literals with expressions inside.
### Styling
Legacy styles are housed under `common/assets/styles` and written with LESS.
However, going forward, each styled component should create a a `.scss` file of
the same name in the same folder, and import it like so:
```ts
import React from 'react';
import './MyComponent.scss';
export default class MyComponent extends React.component<{}, {}> {
render() {
return (
<div className="MyComponent">
<div className="MyComponent-child">Hello!</div>
</div>
);
}
}
```
These style modules adhere to [SuitCSS naming convention](https://github.com/suitcss/suit/blob/master/doc/naming-conventions.md):
```scss
.MyComponent {
/* Styles */
&-child {
/* Styles */
&.is-hidden {
display: none;
}
}
}
```
All elements inside of a component should extend its parent class namespace, or
create a new namespace (Potentially breaking that out into its own component.)
Variables and mixins can be imported from the files in `common/styles`:
```scss
@import 'sass/colors';
code {
color: $code-color;
}
```
#### Converting Styles
When working on a module that has styling in Less, try to do the following:
* Screenshot the component in question
* Create a new SCSS file in the same directory
* Remove styling from LESS file, convert it to the SCSS file (Mostly s/@/$)
* Convert class names to SuitCSS naming convention
* Convert any utility classes from `etherewallet-utilities.less` into mixins
* Convert as many element selectors to class name selectors as possible
* Convert as many `<br/>` tags or `&nbsp;`s to margins
* Ensure that there has been little to no deviation from screenshot
#### Adding Icon-fonts
1. Download chosen icon-font
1. Declare css font-family:
```
@font-face {
font-family: 'social-media';
src: url('../assets/fonts/social-media.eot');
src: url('../assets/fonts/social-media.eot') format('embedded-opentype'),
url('../assets/fonts/social-media.woff2') format('woff2'),
url('../assets/fonts/social-media.woff') format('woff'),
url('../assets/fonts/social-media.ttf') format('truetype'),
url('../assets/fonts/social-media.svg') format('svg');
font-weight: normal;
font-style: normal;
}
```
1. Create classes for each icon using their unicode character
```
.sm-logo-facebook:before {
content: '\ea02';
}
```
* [How to get unicode icon values?](https://stackoverflow.com/questions/27247145/get-the-unicode-icon-value-from-a-custom-font)
1. Write some markup:
```
<a href="/">
<i className={`sm-icon sm-logo-${text} sm-24px`} />
Hello World
</a>
```
### More information is available on the [Wiki Pages](https://github.com/MyCryptoHQ/MyCrypto/wiki)
## Thanks & Support

View File

@ -5,11 +5,11 @@ import { withRouter, Switch, Redirect, HashRouter, Route, BrowserRouter } from '
import Contracts from 'containers/Tabs/Contracts';
import ENS from 'containers/Tabs/ENS';
import GenerateWallet from 'containers/Tabs/GenerateWallet';
import Help from 'containers/Tabs/Help';
import SendTransaction from 'containers/Tabs/SendTransaction';
import Swap from 'containers/Tabs/Swap';
import SignAndVerifyMessage from 'containers/Tabs/SignAndVerifyMessage';
import BroadcastTx from 'containers/Tabs/BroadcastTx';
import CheckTransaction from 'containers/Tabs/CheckTransaction';
import ErrorScreen from 'components/ErrorScreen';
import PageNotFound from 'components/PageNotFound';
import LogOutPrompt from 'components/LogOutPrompt';
@ -18,6 +18,8 @@ import { Store } from 'redux';
import { pollOfflineStatus } from 'actions/config';
import { AppState } from 'reducers';
import { RouteNotFound } from 'components/RouteNotFound';
import { RedirectWithQuery } from 'components/RedirectWithQuery';
import 'what-input';
interface Props {
store: Store<AppState>;
@ -59,16 +61,15 @@ export default class Root extends Component<Props, State> {
const routes = (
<CaptureRouteNotFound>
<Switch>
<Route exact={true} path="/" component={GenerateWallet} />
<Route path="/generate" component={GenerateWallet} />
<Redirect exact={true} from="/" to="/account" />
<Route path="/account" component={SendTransaction} />
<Route path="/generate" component={GenerateWallet} />
<Route path="/swap" component={Swap} />
<Route path="/contracts" component={Contracts} />
<Route path="/ens" component={ENS} />
<Route path="/help" component={Help} />
<Route path="/ens" component={ENS} exact={true} />
<Route path="/sign-and-verify-message" component={SignAndVerifyMessage} />
<Route path="/tx-status" component={CheckTransaction} exact={true} />
<Route path="/pushTx" component={BroadcastTx} />
<Route path="/send-transaction" component={SendTransaction} />
<RouteNotFound />
</Switch>
</CaptureRouteNotFound>
@ -96,14 +97,15 @@ export default class Root extends Component<Props, State> {
const LegacyRoutes = withRouter(props => {
const { history } = props;
const { pathname, hash } = props.location;
const { pathname } = props.location;
let { hash } = props.location;
if (pathname === '/') {
hash = hash.split('?')[0];
switch (hash) {
case '#send-transaction':
case '#offline-transaction':
history.push('/send-transaction');
break;
return <RedirectWithQuery from={pathname} to={'account/send'} />;
case '#generate-wallet':
history.push('/');
break;
@ -120,16 +122,15 @@ const LegacyRoutes = withRouter(props => {
history.push('/account/info');
break;
case '#check-tx-status':
history.push('/check-tx-status');
break;
return <RedirectWithQuery from={pathname} to={'/tx-status'} />;
}
}
return (
<Switch>
<Redirect from="/signmsg.html" to="/sign-and-verify-message" />
<Redirect from="/helpers.html" to="/helpers" />
<Redirect from="/send-transaction" to="/account/send" />
<RedirectWithQuery from="/signmsg.html" to="/sign-and-verify-message" />
<RedirectWithQuery from="/helpers.html" to="/helpers" />
<RedirectWithQuery from="/send-transaction" to={'/account/send'} />
</Switch>
);
});

View File

@ -1,9 +1,8 @@
import * as interfaces from './actionTypes';
import { TypeKeys } from './constants';
import { NodeConfig, CustomNodeConfig, NetworkConfig, CustomNetworkConfig } from 'config';
export type TToggleOfflineConfig = typeof toggleOfflineConfig;
export function toggleOfflineConfig(): interfaces.ToggleOfflineAction {
export type TToggleOffline = typeof toggleOffline;
export function toggleOffline(): interfaces.ToggleOfflineAction {
return {
type: TypeKeys.CONFIG_TOGGLE_OFFLINE
};
@ -26,13 +25,11 @@ export function changeLanguage(sign: string): interfaces.ChangeLanguageAction {
export type TChangeNode = typeof changeNode;
export function changeNode(
nodeSelection: string,
node: NodeConfig,
network: NetworkConfig
payload: interfaces.ChangeNodeAction['payload']
): interfaces.ChangeNodeAction {
return {
type: TypeKeys.CONFIG_NODE_CHANGE,
payload: { nodeSelection, node, network }
payload
};
}
@ -52,7 +49,9 @@ export function changeNodeIntent(payload: string): interfaces.ChangeNodeIntentAc
}
export type TAddCustomNode = typeof addCustomNode;
export function addCustomNode(payload: CustomNodeConfig): interfaces.AddCustomNodeAction {
export function addCustomNode(
payload: interfaces.AddCustomNodeAction['payload']
): interfaces.AddCustomNodeAction {
return {
type: TypeKeys.CONFIG_ADD_CUSTOM_NODE,
payload
@ -60,7 +59,9 @@ export function addCustomNode(payload: CustomNodeConfig): interfaces.AddCustomNo
}
export type TRemoveCustomNode = typeof removeCustomNode;
export function removeCustomNode(payload: CustomNodeConfig): interfaces.RemoveCustomNodeAction {
export function removeCustomNode(
payload: interfaces.RemoveCustomNodeAction['payload']
): interfaces.RemoveCustomNodeAction {
return {
type: TypeKeys.CONFIG_REMOVE_CUSTOM_NODE,
payload
@ -68,7 +69,9 @@ export function removeCustomNode(payload: CustomNodeConfig): interfaces.RemoveCu
}
export type TAddCustomNetwork = typeof addCustomNetwork;
export function addCustomNetwork(payload: CustomNetworkConfig): interfaces.AddCustomNetworkAction {
export function addCustomNetwork(
payload: interfaces.AddCustomNetworkAction['payload']
): interfaces.AddCustomNetworkAction {
return {
type: TypeKeys.CONFIG_ADD_CUSTOM_NETWORK,
payload
@ -77,7 +80,7 @@ export function addCustomNetwork(payload: CustomNetworkConfig): interfaces.AddCu
export type TRemoveCustomNetwork = typeof removeCustomNetwork;
export function removeCustomNetwork(
payload: CustomNetworkConfig
payload: interfaces.RemoveCustomNetworkAction['payload']
): interfaces.RemoveCustomNetworkAction {
return {
type: TypeKeys.CONFIG_REMOVE_CUSTOM_NETWORK,
@ -93,6 +96,15 @@ export function setLatestBlock(payload: string): interfaces.SetLatestBlockAction
};
}
export function web3SetNode(
payload: interfaces.Web3setNodeAction['payload']
): interfaces.Web3setNodeAction {
return {
type: TypeKeys.CONFIG_NODE_WEB3_SET,
payload
};
}
export type TWeb3UnsetNode = typeof web3UnsetNode;
export function web3UnsetNode(): interfaces.Web3UnsetNodeAction {
return {

View File

@ -1,5 +1,6 @@
import { TypeKeys } from './constants';
import { NodeConfig, CustomNodeConfig, NetworkConfig, CustomNetworkConfig } from 'config';
import { CustomNodeConfig, Web3NodeConfig } from 'types/node';
import { CustomNetworkConfig } from 'types/network';
/*** Toggle Offline ***/
export interface ToggleOfflineAction {
@ -19,11 +20,9 @@ export interface ChangeLanguageAction {
/*** Change Node ***/
export interface ChangeNodeAction {
type: TypeKeys.CONFIG_NODE_CHANGE;
// FIXME $keyof?
payload: {
nodeSelection: string;
node: NodeConfig;
network: NetworkConfig;
nodeId: string;
networkId: string;
};
}
@ -41,25 +40,25 @@ export interface ChangeNodeIntentAction {
/*** Add Custom Node ***/
export interface AddCustomNodeAction {
type: TypeKeys.CONFIG_ADD_CUSTOM_NODE;
payload: CustomNodeConfig;
payload: { id: string; config: CustomNodeConfig };
}
/*** Remove Custom Node ***/
export interface RemoveCustomNodeAction {
type: TypeKeys.CONFIG_REMOVE_CUSTOM_NODE;
payload: CustomNodeConfig;
payload: { id: string };
}
/*** Add Custom Network ***/
export interface AddCustomNetworkAction {
type: TypeKeys.CONFIG_ADD_CUSTOM_NETWORK;
payload: CustomNetworkConfig;
payload: { id: string; config: CustomNetworkConfig };
}
/*** Remove Custom Network ***/
export interface RemoveCustomNetworkAction {
type: TypeKeys.CONFIG_REMOVE_CUSTOM_NETWORK;
payload: CustomNetworkConfig;
payload: { id: string };
}
/*** Set Latest Block ***/
@ -73,17 +72,28 @@ export interface Web3UnsetNodeAction {
type: TypeKeys.CONFIG_NODE_WEB3_UNSET;
}
/*** Union Type ***/
export type ConfigAction =
/*** Set Web3 as a Node ***/
export interface Web3setNodeAction {
type: TypeKeys.CONFIG_NODE_WEB3_SET;
payload: { id: 'web3'; config: Web3NodeConfig };
}
export type CustomNetworkAction = AddCustomNetworkAction | RemoveCustomNetworkAction;
export type CustomNodeAction = AddCustomNodeAction | RemoveCustomNodeAction;
export type NodeAction =
| ChangeNodeAction
| ChangeNodeIntentAction
| Web3UnsetNodeAction
| Web3setNodeAction;
export type MetaAction =
| ChangeLanguageAction
| ToggleOfflineAction
| ToggleAutoGasLimitAction
| PollOfflineStatus
| ChangeNodeIntentAction
| AddCustomNodeAction
| RemoveCustomNodeAction
| AddCustomNetworkAction
| RemoveCustomNetworkAction
| SetLatestBlockAction
| Web3UnsetNodeAction;
| SetLatestBlockAction;
/*** Union Type ***/
export type ConfigAction = CustomNetworkAction | CustomNodeAction | NodeAction | MetaAction;

View File

@ -1,14 +1,19 @@
export enum TypeKeys {
CONFIG_LANGUAGE_CHANGE = 'CONFIG_LANGUAGE_CHANGE',
CONFIG_NODE_CHANGE = 'CONFIG_NODE_CHANGE',
CONFIG_NODE_CHANGE_INTENT = 'CONFIG_NODE_CHANGE_INTENT',
CONFIG_TOGGLE_OFFLINE = 'CONFIG_TOGGLE_OFFLINE',
CONFIG_TOGGLE_AUTO_GAS_LIMIT = 'CONFIG_TOGGLE_AUTO_GAS_LIMIT',
CONFIG_POLL_OFFLINE_STATUS = 'CONFIG_POLL_OFFLINE_STATUS',
CONFIG_SET_LATEST_BLOCK = 'CONFIG_SET_LATEST_BLOCK',
CONFIG_NODE_WEB3_SET = 'CONFIG_NODE_WEB3_SET',
CONFIG_NODE_WEB3_UNSET = 'CONFIG_NODE_WEB3_UNSET',
CONFIG_NODE_CHANGE = 'CONFIG_NODE_CHANGE',
CONFIG_NODE_CHANGE_INTENT = 'CONFIG_NODE_CHANGE_INTENT',
CONFIG_ADD_CUSTOM_NODE = 'CONFIG_ADD_CUSTOM_NODE',
CONFIG_REMOVE_CUSTOM_NODE = 'CONFIG_REMOVE_CUSTOM_NODE',
CONFIG_ADD_CUSTOM_NETWORK = 'CONFIG_ADD_CUSTOM_NETWORK',
CONFIG_REMOVE_CUSTOM_NETWORK = 'CONFIG_REMOVE_CUSTOM_NETWORK',
CONFIG_SET_LATEST_BLOCK = 'CONFIG_SET_LATEST_BLOCK',
CONFIG_NODE_WEB3_UNSET = 'CONFIG_NODE_WEB3_UNSET'
CONFIG_REMOVE_CUSTOM_NETWORK = 'CONFIG_REMOVE_CUSTOM_NETWORK'
}

View File

@ -1,6 +1,6 @@
import { Token } from 'config';
import * as interfaces from './actionTypes';
import { TypeKeys } from './constants';
import { Token } from 'types/network';
export type TAddCustomToken = typeof addCustomToken;
export function addCustomToken(payload: Token): interfaces.AddCustomTokenAction {

View File

@ -1,5 +1,6 @@
import { Token } from 'config';
import { TypeKeys } from './constants';
import { Token } from 'types/network';
/*** Add custom token ***/
export interface AddCustomTokenAction {
type: TypeKeys.CUSTOM_TOKEN_ADD;

View File

@ -1,5 +1,4 @@
import { ResolveDomainAction } from './resolveDomain';
export * from './resolveDomain';
export type EnsAction = ResolveDomainAction;

View File

@ -1,6 +1,6 @@
export enum TypeKeys {
ENS_RESOLVE_DOMAIN_REQUESTED = 'ENS_RESOLVE_DOMAIN_REQUESTED',
ENS_RESOLVE_DOMAIN_SUCCEEDED = 'ENS_RESOLVE_DOMAIN_SUCCEEDED',
ENS_RESOLVE_DOMAIN_CACHED = 'ENS_RESOLVE_DOMAIN_CACHED',
ENS_RESOLVE_DOMAIN_FAILED = 'ENS_RESOLVE_DOMAIN_FAILED'
ENS_RESOLVE_DOMAIN_FAILED = 'ENS_RESOLVE_DOMAIN_FAILED',
ENS_RESOLVE_DOMAIN_CACHED = 'ENS_RESOLVE_DOMAIN_CACHED'
}

View File

@ -0,0 +1,19 @@
import * as interfaces from './actionTypes';
import { TypeKeys } from './constants';
export type TFetchGasEstimates = typeof fetchGasEstimates;
export function fetchGasEstimates(): interfaces.FetchGasEstimatesAction {
return {
type: TypeKeys.GAS_FETCH_ESTIMATES
};
}
export type TSetGasEstimates = typeof setGasEstimates;
export function setGasEstimates(
payload: interfaces.SetGasEstimatesAction['payload']
): interfaces.SetGasEstimatesAction {
return {
type: TypeKeys.GAS_SET_ESTIMATES,
payload
};
}

View File

@ -0,0 +1,14 @@
import { TypeKeys } from './constants';
import { GasEstimates } from 'api/gas';
export interface FetchGasEstimatesAction {
type: TypeKeys.GAS_FETCH_ESTIMATES;
}
export interface SetGasEstimatesAction {
type: TypeKeys.GAS_SET_ESTIMATES;
payload: GasEstimates;
}
/*** Union Type ***/
export type GasAction = FetchGasEstimatesAction | SetGasEstimatesAction;

View File

@ -0,0 +1,4 @@
export enum TypeKeys {
GAS_FETCH_ESTIMATES = 'GAS_FETCH_ESTIMATES',
GAS_SET_ESTIMATES = 'GAS_SET_ESTIMATES'
}

View File

@ -0,0 +1,3 @@
export * from './actionCreators';
export * from './actionTypes';
export * from './constants';

View File

@ -1,12 +1,12 @@
import * as interfaces from './actionTypes';
import { TypeKeys } from './constants';
import { fetchRates, CCResponse } from './actionPayloads';
import { CCResponse } from 'api/rates';
export type TFetchCCRates = typeof fetchCCRates;
export function fetchCCRates(symbols: string[] = []): interfaces.FetchCCRates {
export type TFetchCCRatesRequested = typeof fetchCCRatesRequested;
export function fetchCCRatesRequested(symbols: string[] = []): interfaces.FetchCCRatesRequested {
return {
type: TypeKeys.RATES_FETCH_CC,
payload: fetchRates(symbols)
type: TypeKeys.RATES_FETCH_CC_REQUESTED,
payload: symbols
};
}

View File

@ -1,9 +1,9 @@
import { TypeKeys } from './constants';
import { CCResponse } from './actionPayloads';
import { CCResponse } from 'api/rates';
export interface FetchCCRates {
type: TypeKeys.RATES_FETCH_CC;
payload: Promise<CCResponse>;
export interface FetchCCRatesRequested {
type: TypeKeys.RATES_FETCH_CC_REQUESTED;
payload: string[];
}
/*** Set rates ***/
@ -17,4 +17,4 @@ export interface FetchCCRatesFailed {
}
/*** Union Type ***/
export type RatesAction = FetchCCRates | FetchCCRatesSucceeded | FetchCCRatesFailed;
export type RatesAction = FetchCCRatesRequested | FetchCCRatesSucceeded | FetchCCRatesFailed;

View File

@ -1,5 +1,5 @@
export enum TypeKeys {
RATES_FETCH_CC = 'RATES_FETCH_CC',
RATES_FETCH_CC_REQUESTED = 'RATES_FETCH_CC_REQUESTED',
RATES_FETCH_CC_FAILED = 'RATES_FETCH_CC_FAILED',
RATES_FETCH_CC_SUCCEEDED = 'RATES_FETCH_CC_SUCCEEDED'
}

View File

@ -1,3 +1,2 @@
export * from './actionCreators';
export * from './actionTypes';
export * from './actionPayloads';

View File

@ -6,6 +6,7 @@ import {
SetValueFieldAction,
InputGasLimitAction,
InputGasPriceAction,
InputGasPriceIntentAction,
InputDataAction,
InputNonceAction,
ResetAction,
@ -25,6 +26,12 @@ const inputGasPrice = (payload: InputGasPriceAction['payload']) => ({
payload
});
type TInputGasPriceIntent = typeof inputGasPrice;
const inputGasPriceIntent = (payload: InputGasPriceIntentAction['payload']) => ({
type: TypeKeys.GAS_PRICE_INPUT_INTENT,
payload
});
type TInputNonce = typeof inputNonce;
const inputNonce = (payload: InputNonceAction['payload']) => ({
type: TypeKeys.NONCE_INPUT,
@ -79,6 +86,7 @@ const reset = (): ResetAction => ({ type: TypeKeys.RESET });
export {
TInputGasLimit,
TInputGasPrice,
TInputGasPriceIntent,
TInputNonce,
TInputData,
TSetGasLimitField,
@ -90,6 +98,7 @@ export {
TReset,
inputGasLimit,
inputGasPrice,
inputGasPriceIntent,
inputNonce,
inputData,
setGasLimitField,

View File

@ -1,9 +1,8 @@
import {
SignTransactionFailedAction,
SignLocalTransactionRequestedAction,
SignWeb3TransactionRequestedAction,
SignLocalTransactionSucceededAction,
SignWeb3TransactionSucceededAction
SignWeb3TransactionSucceededAction,
SignTransactionRequestedAction
} from '../actionTypes';
import { TypeKeys } from '../constants';
@ -12,6 +11,12 @@ const signTransactionFailed = (): SignTransactionFailedAction => ({
type: TypeKeys.SIGN_TRANSACTION_FAILED
});
type TSignTransactionRequested = typeof signTransactionRequested;
const signTransactionRequested = (payload: SignTransactionRequestedAction['payload']) => ({
type: TypeKeys.SIGN_TRANSACTION_REQUESTED,
payload
});
type TSignLocalTransactionSucceeded = typeof signLocalTransactionSucceeded;
const signLocalTransactionSucceeded = (
payload: SignLocalTransactionSucceededAction['payload']
@ -20,14 +25,6 @@ const signLocalTransactionSucceeded = (
payload
});
type TSignLocalTransactionRequested = typeof signLocalTransactionRequested;
const signLocalTransactionRequested = (
payload: SignLocalTransactionRequestedAction['payload']
): SignLocalTransactionRequestedAction => ({
type: TypeKeys.SIGN_LOCAL_TRANSACTION_REQUESTED,
payload
});
type TSignWeb3TransactionSucceeded = typeof signWeb3TransactionSucceeded;
const signWeb3TransactionSucceeded = (
payload: SignWeb3TransactionSucceededAction['payload']
@ -36,23 +33,13 @@ const signWeb3TransactionSucceeded = (
payload
});
type TSignWeb3TransactionRequested = typeof signWeb3TransactionRequested;
const signWeb3TransactionRequested = (
payload: SignWeb3TransactionRequestedAction['payload']
): SignWeb3TransactionRequestedAction => ({
type: TypeKeys.SIGN_WEB3_TRANSACTION_REQUESTED,
payload
});
export {
signTransactionRequested,
signTransactionFailed,
signLocalTransactionSucceeded,
signLocalTransactionRequested,
signWeb3TransactionSucceeded,
signWeb3TransactionRequested,
TSignLocalTransactionSucceeded,
TSignLocalTransactionRequested,
TSignWeb3TransactionSucceeded,
TSignWeb3TransactionRequested,
TSignTransactionFailed
TSignTransactionFailed,
TSignTransactionRequested
};

View File

@ -10,6 +10,10 @@ interface InputGasPriceAction {
type: TypeKeys.GAS_PRICE_INPUT;
payload: string;
}
interface InputGasPriceIntentAction {
type: TypeKeys.GAS_PRICE_INPUT_INTENT;
payload: string;
}
interface InputDataAction {
type: TypeKeys.DATA_FIELD_INPUT;
payload: string;
@ -84,6 +88,7 @@ type FieldAction =
export {
InputGasLimitAction,
InputGasPriceAction,
InputGasPriceIntentAction,
InputDataAction,
InputNonceAction,
SetGasLimitFieldAction,

View File

@ -8,8 +8,8 @@ import { TypeKeys } from 'actions/transaction/constants';
*/
/* Signing / Async actions */
interface SignLocalTransactionRequestedAction {
type: TypeKeys.SIGN_LOCAL_TRANSACTION_REQUESTED;
interface SignTransactionRequestedAction {
type: TypeKeys.SIGN_TRANSACTION_REQUESTED;
payload: EthTx;
}
interface SignLocalTransactionSucceededAction {
@ -17,10 +17,6 @@ interface SignLocalTransactionSucceededAction {
payload: { signedTransaction: Buffer; indexingHash: string; noVerify?: boolean }; // dont verify against fields, for pushTx
}
interface SignWeb3TransactionRequestedAction {
type: TypeKeys.SIGN_WEB3_TRANSACTION_REQUESTED;
payload: EthTx;
}
interface SignWeb3TransactionSucceededAction {
type: TypeKeys.SIGN_WEB3_TRANSACTION_SUCCEEDED;
payload: { transaction: Buffer; indexingHash: string; noVerify?: boolean };
@ -30,16 +26,14 @@ interface SignTransactionFailedAction {
}
type SignAction =
| SignLocalTransactionRequestedAction
| SignTransactionRequestedAction
| SignLocalTransactionSucceededAction
| SignWeb3TransactionRequestedAction
| SignWeb3TransactionSucceededAction
| SignTransactionFailedAction;
export {
SignLocalTransactionRequestedAction,
SignTransactionRequestedAction,
SignLocalTransactionSucceededAction,
SignWeb3TransactionRequestedAction,
SignWeb3TransactionSucceededAction,
SignTransactionFailedAction,
SignAction

View File

@ -12,9 +12,8 @@ export enum TypeKeys {
GET_NONCE_SUCCEEDED = 'GET_NONCE_SUCCEEDED',
GET_NONCE_FAILED = 'GET_NONCE_FAILED',
SIGN_WEB3_TRANSACTION_REQUESTED = 'SIGN_WEB3_TRANSACTION_REQUESTED',
SIGN_TRANSACTION_REQUESTED = 'SIGN_TRANSACTION_REQUESTED',
SIGN_WEB3_TRANSACTION_SUCCEEDED = 'SIGN_WEB3_TRANSACTION_SUCCEEDED',
SIGN_LOCAL_TRANSACTION_REQUESTED = 'SIGN_LOCAL_TRANSACTION_REQUESTED',
SIGN_LOCAL_TRANSACTION_SUCCEEDED = 'SIGN_LOCAL_TRANSACTION_SUCCEEDED',
SIGN_TRANSACTION_FAILED = 'SIGN_TRANSACTION_FAILED',
@ -30,6 +29,7 @@ export enum TypeKeys {
DATA_FIELD_INPUT = 'DATA_FIELD_INPUT',
GAS_LIMIT_INPUT = 'GAS_LIMIT_INPUT',
GAS_PRICE_INPUT = 'GAS_PRICE_INPUT',
GAS_PRICE_INPUT_INTENT = 'GAS_PRICE_INPUT_INTENT',
NONCE_INPUT = 'NONCE_INPUT',
DATA_FIELD_SET = 'DATA_FIELD_SET',

View File

@ -0,0 +1,20 @@
import * as interfaces from './actionTypes';
import { TypeKeys } from './constants';
export type TFetchTransactionData = typeof fetchTransactionData;
export function fetchTransactionData(txhash: string): interfaces.FetchTransactionDataAction {
return {
type: TypeKeys.TRANSACTIONS_FETCH_TRANSACTION_DATA,
payload: txhash
};
}
export type TSetTransactionData = typeof setTransactionData;
export function setTransactionData(
payload: interfaces.SetTransactionDataAction['payload']
): interfaces.SetTransactionDataAction {
return {
type: TypeKeys.TRANSACTIONS_SET_TRANSACTION_DATA,
payload
};
}

View File

@ -0,0 +1,20 @@
import { TypeKeys } from './constants';
import { TransactionData, TransactionReceipt } from 'libs/nodes';
export interface FetchTransactionDataAction {
type: TypeKeys.TRANSACTIONS_FETCH_TRANSACTION_DATA;
payload: string;
}
export interface SetTransactionDataAction {
type: TypeKeys.TRANSACTIONS_SET_TRANSACTION_DATA;
payload: {
txhash: string;
data: TransactionData | null;
receipt: TransactionReceipt | null;
error: string | null;
};
}
/*** Union Type ***/
export type TransactionsAction = FetchTransactionDataAction | SetTransactionDataAction;

View File

@ -0,0 +1,5 @@
export enum TypeKeys {
TRANSACTIONS_FETCH_TRANSACTION_DATA = 'TRANSACTIONS_FETCH_TRANSACTION_DATA',
TRANSACTIONS_SET_TRANSACTION_DATA = 'TRANSACTIONS_SET_TRANSACTION_DATA',
TRANSACTIONS_SET_TRANSACTION_ERROR = 'TRANSACTIONS_SET_TRANSACTION_ERROR'
}

View File

@ -0,0 +1,3 @@
export * from './actionCreators';
export * from './actionTypes';
export * from './constants';

View File

@ -159,3 +159,10 @@ export function setWalletConfig(config: WalletConfig): types.SetWalletConfigActi
payload: config
};
}
export type TSetAccountBalance = typeof setAccountBalance;
export function setAccountBalance(): types.SetAccountBalanceAction {
return {
type: TypeKeys.WALLET_SET_ACCOUNT_BALANCE
};
}

View File

@ -125,6 +125,10 @@ export interface SetPasswordPendingAction {
type: TypeKeys.WALLET_SET_PASSWORD_PENDING;
}
export interface SetAccountBalanceAction {
type: TypeKeys.WALLET_SET_ACCOUNT_BALANCE;
}
/*** Union Type ***/
export type WalletAction =
| UnlockPrivateKeyAction
@ -143,4 +147,5 @@ export type WalletAction =
| ScanWalletForTokensAction
| SetWalletTokensAction
| SetWalletConfigAction
| SetPasswordPendingAction;
| SetPasswordPendingAction
| SetAccountBalanceAction;

View File

@ -19,5 +19,6 @@ export enum TypeKeys {
WALLET_SET_WALLET_TOKENS = 'WALLET_SET_WALLET_TOKENS',
WALLET_SET_CONFIG = 'WALLET_SET_CONFIG',
WALLET_RESET = 'WALLET_RESET',
WALLET_SET_PASSWORD_PENDING = 'WALLET_SET_PASSWORD_PENDING'
WALLET_SET_PASSWORD_PENDING = 'WALLET_SET_PASSWORD_PENDING',
WALLET_SET_ACCOUNT_BALANCE = 'WALLET_SET_ACCOUNT_BALANCE'
}

71
common/api/gas.ts Normal file
View File

@ -0,0 +1,71 @@
import { checkHttpStatus, parseJSON } from './utils';
const MAX_GAS_FAST = 250;
interface RawGasEstimates {
safeLow: number;
standard: number;
fast: number;
fastest: number;
block_time: number;
blockNum: number;
}
export interface GasEstimates {
safeLow: number;
standard: number;
fast: number;
fastest: number;
time: number;
isDefault: boolean;
}
export function fetchGasEstimates(): Promise<GasEstimates> {
return fetch('https://dev.blockscale.net/api/gasexpress.json', {
mode: 'cors'
})
.then(checkHttpStatus)
.then(parseJSON)
.then((res: object) => {
// Make sure it looks like a raw gas estimate, and it has valid values
const keys = ['safeLow', 'standard', 'fast', 'fastest'];
keys.forEach(key => {
if (typeof res[key] !== 'number') {
throw new Error(
`Gas estimate API has invalid shape: Expected numeric key '${key}' in response, got '${
res[key]
}' instead`
);
}
});
// Make sure the estimate isn't totally crazy
const estimateRes = res as RawGasEstimates;
if (estimateRes.fast > MAX_GAS_FAST) {
throw new Error(
`Gas estimate response estimate too high: Max fast is ${MAX_GAS_FAST}, was given ${
estimateRes.fast
}`
);
}
if (
estimateRes.safeLow > estimateRes.standard ||
estimateRes.standard > estimateRes.fast ||
estimateRes.fast > estimateRes.fastest
) {
throw new Error(
`Gas esimates are in illogical order: should be safeLow < standard < fast < fastest, received ${
estimateRes.safeLow
} < ${estimateRes.standard} < ${estimateRes.fast} < ${estimateRes.fastest}`
);
}
return estimateRes;
})
.then((res: RawGasEstimates) => ({
...res,
time: Date.now(),
isDefault: false
}));
}

View File

@ -1,5 +1,8 @@
import { checkHttpStatus, parseJSON } from 'api/utils';
const SHAPESHIFT_API_KEY =
'8abde0f70ca69d5851702d57b10305705d7333e93263124cc2a2649dab7ff9cf86401fc8de7677e8edcd0e7f1eed5270b1b49be8806937ef95d64839e319e6d9';
const SHAPESHIFT_BASE_URL = 'https://shapeshift.io';
export const SHAPESHIFT_TOKEN_WHITELIST = [
@ -28,7 +31,7 @@ export const SHAPESHIFT_WHITELIST = [...SHAPESHIFT_TOKEN_WHITELIST, 'ETH', 'ETC'
class ShapeshiftService {
public whitelist = SHAPESHIFT_WHITELIST;
private url = SHAPESHIFT_BASE_URL;
private apiKey = '0ca1ccd50b708a3f8c02327f0caeeece06d3ddc1b0ac749a987b453ee0f4a29bdb5da2e53bc35e57fb4bb7ae1f43c93bb098c3c4716375fc1001c55d8c94c160';
private apiKey = SHAPESHIFT_API_KEY;
private postHeaders = {
'Content-Type': 'application/json'
};

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48">
<g class="nc-icon-wrapper" fill="#000000">
<path d="M38 12.83L35.17 10 24 21.17 12.83 10 10 12.83 21.17 24 10 35.17 12.83 38 24 26.83 35.17 38 38 35.17 26.83 24z"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 282 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -1,3 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!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' x='0px' y='0px' width='20px' height='20px' viewBox='0 0 511.626 511.626' style='enable-background:new 0 0 511.626 511.626;' xml:space='preserve'><path fill='#999' d='M505.918,236.117c-26.651-43.587-62.485-78.609-107.497-105.065c-45.015-26.457-92.549-39.687-142.608-39.687 c-50.059,0-97.595,13.225-142.61,39.687C68.187,157.508,32.355,192.53,5.708,236.117C1.903,242.778,0,249.345,0,255.818 c0,6.473,1.903,13.04,5.708,19.699c26.647,43.589,62.479,78.614,107.495,105.064c45.015,26.46,92.551,39.68,142.61,39.68 c50.06,0,97.594-13.176,142.608-39.536c45.012-26.361,80.852-61.432,107.497-105.208c3.806-6.659,5.708-13.223,5.708-19.699 C511.626,249.345,509.724,242.778,505.918,236.117z M194.568,158.03c17.034-17.034,37.447-25.554,61.242-25.554 c3.805,0,7.043,1.336,9.709,3.999c2.662,2.664,4,5.901,4,9.707c0,3.809-1.338,7.044-3.994,9.704 c-2.662,2.667-5.902,3.999-9.708,3.999c-16.368,0-30.362,5.808-41.971,17.416c-11.613,11.615-17.416,25.603-17.416,41.971 c0,3.811-1.336,7.044-3.999,9.71c-2.667,2.668-5.901,3.999-9.707,3.999c-3.809,0-7.044-1.334-9.71-3.999 c-2.667-2.666-3.999-5.903-3.999-9.71C169.015,195.482,177.535,175.065,194.568,158.03z M379.867,349.04 c-38.164,23.12-79.514,34.687-124.054,34.687c-44.539,0-85.889-11.56-124.051-34.687s-69.901-54.2-95.215-93.222 c28.931-44.921,65.19-78.518,108.777-100.783c-11.61,19.792-17.417,41.207-17.417,64.236c0,35.216,12.517,65.329,37.544,90.362 s55.151,37.544,90.362,37.544c35.214,0,65.329-12.518,90.362-37.544s37.545-55.146,37.545-90.362 c0-23.029-5.808-44.447-17.419-64.236c43.585,22.265,79.846,55.865,108.776,100.783C449.767,294.84,418.031,325.913,379.867,349.04 z'/></svg>

Before

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -1,11 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!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' x='0px' y='0px' width='20px' height='20px'
viewBox='0 0 511.626 511.627' style='enable-background:new 0 0 511.626 511.627;'>
<path fill='#999'
d='M361.161,291.652c15.037-21.796,22.56-45.922,22.56-72.375c0-7.422-0.76-15.417-2.286-23.984l-79.938,143.321 C326.235,329.101,346.125,313.438,361.161,291.652z'/>
<path fill='#999'
d='M372.872,94.221c0.191-0.378,0.28-1.235,0.28-2.568c0-3.237-1.522-5.802-4.571-7.715c-0.568-0.38-2.423-1.475-5.568-3.287 c-3.138-1.805-6.14-3.567-8.989-5.282c-2.854-1.713-5.989-3.472-9.422-5.28c-3.426-1.809-6.375-3.284-8.846-4.427 c-2.479-1.141-4.189-1.713-5.141-1.713c-3.426,0-6.092,1.525-7.994,4.569l-15.413,27.696c-17.316-3.234-34.451-4.854-51.391-4.854 c-51.201,0-98.404,12.946-141.613,38.831C70.998,156.08,34.836,191.385,5.711,236.114C1.903,242.019,0,248.586,0,255.819 c0,7.231,1.903,13.801,5.711,19.698c16.748,26.073,36.592,49.396,59.528,69.949c22.936,20.561,48.011,37.018,75.229,49.396 c-8.375,14.273-12.562,22.556-12.562,24.842c0,3.425,1.524,6.088,4.57,7.99c23.219,13.329,35.97,19.985,38.256,19.985 c3.422,0,6.089-1.529,7.992-4.575l13.99-25.406c20.177-35.967,50.248-89.931,90.222-161.878 C322.908,183.871,352.886,130.005,372.872,94.221z M158.456,362.885C108.97,340.616,68.33,304.93,36.547,255.822 c28.931-44.921,65.19-78.518,108.777-100.783c-11.61,19.792-17.417,41.206-17.417,64.237c0,20.365,4.661,39.68,13.99,57.955 c9.327,18.274,22.27,33.4,38.83,45.392L158.456,362.885z M265.525,155.887c-2.662,2.667-5.906,3.999-9.712,3.999 c-16.368,0-30.361,5.808-41.971,17.416c-11.613,11.615-17.416,25.603-17.416,41.971c0,3.811-1.336,7.044-3.999,9.71 c-2.668,2.667-5.902,3.999-9.707,3.999c-3.809,0-7.045-1.334-9.71-3.999c-2.667-2.666-3.999-5.903-3.999-9.71 c0-23.79,8.52-44.206,25.553-61.242c17.034-17.034,37.447-25.553,61.241-25.553c3.806,0,7.043,1.336,9.713,3.999 c2.662,2.664,3.996,5.901,3.996,9.707C269.515,149.992,268.181,153.228,265.525,155.887z'/>
<path fill='#999'
d='M505.916,236.114c-10.853-18.08-24.603-35.594-41.255-52.534c-16.646-16.939-34.022-31.496-52.105-43.68l-17.987,31.977 c31.785,21.888,58.625,49.87,80.51,83.939c-23.024,35.782-51.723,65-86.07,87.648c-34.358,22.661-71.712,35.693-112.065,39.115 l-21.129,37.688c42.257,0,82.18-9.038,119.769-27.121c37.59-18.076,70.668-43.488,99.216-76.225 c13.322-15.421,23.695-29.219,31.121-41.401c3.806-6.476,5.708-13.046,5.708-19.702 C511.626,249.157,509.724,242.59,505.916,236.114z'/>
</svg>

Before

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 884 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 174 KiB

View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="1000px" height="242px" viewBox="0 0 1000 242" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 48.2 (47327) - http://www.bohemiancoding.com/sketch -->
<title>Artboard</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Artboard" fill-rule="nonzero">
<g id="logo-mycrypto">
<g id="Group">
<circle id="Oval" fill="#0e97c0" cx="120.18" cy="121" r="120.18"></circle>
<g transform="translate(39.000000, 51.000000)" fill="#FFFFFF" id="Shape">
<path d="M93.7,100.26 C90.4608521,103.553832 86.034676,105.408954 81.415,105.408954 C76.795324,105.408954 72.3691479,103.553832 69.13,100.26 L53.47,84.43 C51.4545763,82.3796602 48.700035,81.2248104 45.825,81.2248104 C42.949965,81.2248104 40.1954237,82.3796602 38.18,84.43 C31.3962777,91.3322169 31.3962777,102.397783 38.18,109.3 L69.18,140.59 C72.4191479,143.883832 76.845324,145.738954 81.465,145.738954 C86.084676,145.738954 90.5108521,143.883832 93.75,140.59 L124.67,109.26 C131.453722,102.357783 131.453722,91.2922169 124.67,84.39 C122.654576,82.3396602 119.900035,81.1848104 117.025,81.1848104 C114.149965,81.1848104 111.395424,82.3396602 109.38,84.39 L93.7,100.26 Z"></path>
<g>
<path d="M34.94,45.16 C38.0290939,41.9502279 42.278052,40.1158435 46.7325922,40.0688348 C51.1871324,40.0218262 55.4738563,41.7661337 58.63,44.91 L73.57,60 C75.5319997,61.9549457 78.1968754,63.0401122 80.9664349,63.0119089 C83.7359945,62.9837057 86.3782187,61.8444954 88.3,59.85 C94.9182507,53.2537743 95.0162179,42.5664417 88.52,35.85 L59,6 C55.8438563,2.85613372 51.5571324,1.11182617 47.1025922,1.15883483 C42.648052,1.20584348 38.3990939,3.04022788 35.31,6.25 L5.22,36.74 C-1.39825067,43.3362257 -1.49621789,54.0235583 5,60.74 C6.96199966,62.6949457 9.62687538,63.7801122 12.3964349,63.7519089 C15.1659945,63.7237057 17.8082187,62.5844954 19.73,60.59 L34.94,45.16 Z"></path>
<path d="M103.8,44.48 C106.889094,41.2702279 111.138052,39.4358435 115.592592,39.3888348 C120.047132,39.3418262 124.333856,41.0861337 127.49,44.23 L142.43,59.34 C144.392,61.2949457 147.056875,62.3801122 149.826435,62.3519089 C152.595994,62.3237057 155.238219,61.1844954 157.16,59.19 C163.778251,52.5937743 163.876218,41.9064417 157.38,35.19 L127.84,5.32 C124.683856,2.17613372 120.397132,0.431826171 115.942592,0.478834826 C111.488052,0.525843482 107.239094,2.36022788 104.15,5.57 L74.06,36.06 C67.4417493,42.6562257 67.3437821,53.3435583 73.84,60.06 C75.8019997,62.0149457 78.4668754,63.1001122 81.2364349,63.0719089 C84.0059945,63.0437057 86.6482187,61.9044954 88.57,59.91 L103.8,44.48 Z"></path>
</g>
</g>
</g>
<g id="Group" transform="translate(313.000000, 48.000000)" fill="#FFFFFF">
<path d="M90.57,34.35 L57.26,77.22 C57.0607847,77.4766413 56.7548791,77.6277513 56.43,77.63 L52.36,77.63 C52.0368225,77.6301653 51.7312237,77.4828888 51.53,77.23 L18.22,34.7 C17.9406501,34.3482885 17.469962,34.210817 17.0452267,34.35689 C16.6204914,34.502963 16.3339266,34.9008653 16.33,35.35 L16.33,115.11 C16.33,115.695422 15.8554218,116.17 15.27,116.17 L1.71,116.17 C1.12457817,116.17 0.65,115.695422 0.65,115.11 L0.84,3.88 C0.845486214,3.29848715 1.31846128,2.82997412 1.9,2.83 L11.66,2.83 C11.9848791,2.83224872 12.2907847,2.98335873 12.49,3.24 L53.65,56.16 C53.8508989,56.4169024 54.1588724,56.567026 54.485,56.567026 C54.8111276,56.567026 55.1191011,56.4169024 55.32,56.16 L96.32,3.24 C96.5213729,2.98059322 96.8316066,2.82916965 97.16,2.83 L106.92,2.83 C107.505422,2.83 107.98,3.30457817 107.98,3.89 L107.98,115.11 C107.98,115.695422 107.505422,116.17 106.92,116.17 L93.52,116.17 C92.9345782,116.17 92.46,115.695422 92.46,115.11 L92.46,35 C92.4560734,34.5508653 92.1695086,34.152963 91.7447733,34.00689 C91.320038,33.860817 90.8493499,33.9982885 90.57,34.35 Z" id="Shape"></path>
<path d="M153.09,145.63 L139.33,145.63 C138.96872,145.651077 138.624244,145.475314 138.429281,145.170426 C138.234318,144.865537 138.219295,144.479104 138.39,144.16 L153.19,112.05 C153.319561,111.777972 153.319561,111.462028 153.19,111.19 L120.05,38.28 C119.884434,37.9616411 119.902138,37.5789774 120.096391,37.2772652 C120.290644,36.975553 120.631663,36.8010515 120.99,36.82 L135.69,36.82 C136.127612,36.7909646 136.533076,37.0504613 136.69,37.46 L159.28,92.54 C160.141442,94.2485788 160.654718,96.1113296 160.79,98.02 L161.55,98.02 C161.643757,96.160165 162.021459,94.3256148 162.67,92.58 L162.67,92.5 L185.25,37.5 C185.406924,37.0904613 185.812388,36.8309646 186.25,36.86 L199.84,36.86 C200.197183,36.8393144 200.538204,37.0110305 200.734277,37.310301 C200.930351,37.6095715 200.9516,37.990793 200.79,38.31 L154,145 C153.851125,145.374023 153.49249,145.622309 153.09,145.63 Z" id="Shape"></path>
<path d="M308.69,103.73 C309.018865,104.13929 308.975194,104.733215 308.59,105.09 L307.72,105.96 C306.311062,107.211002 304.828403,108.376426 303.28,109.45 C300.936748,111.158663 298.43927,112.645098 295.82,113.89 C292.423901,115.395363 288.877272,116.535112 285.24,117.29 C280.714671,118.309874 276.088801,118.816405 271.45,118.8 C254.703333,118.8 241.036667,113.133333 230.45,101.8 C219.863333,90.4666667 214.573333,76.4233333 214.58,59.67 C214.58,42.7966667 219.836667,28.6933333 230.35,17.36 C240.863333,6.02666667 254.56,0.36 271.44,0.36 C278.534188,0.292950459 285.580594,1.52666466 292.23,4 C298.53,6.39333333 302.936667,8.78666667 305.45,11.18 L308.55,14.13 C308.953703,14.4833365 309.006655,15.0922846 308.67,15.51 L300.94,25.82 C300.768178,26.0780963 300.486353,26.2418906 300.177042,26.2634249 C299.867732,26.2849591 299.565929,26.1617971 299.36,25.93 L298.93,25.54 C298.363333,25.0333333 297.136667,24.12 295.25,22.8 C293.371825,21.4847668 291.414825,20.2858536 289.39,19.21 C286.895807,17.964538 284.264635,17.0147654 281.55,16.38 C278.307772,15.556821 274.97509,15.1435953 271.63,15.15 C259.663333,15.15 249.84,19.4333333 242.16,28 C234.48,36.5666667 230.64,47.1466667 230.64,59.74 C230.64,72.2066667 234.48,82.7233333 242.16,91.29 C249.84,99.8566667 259.663333,104.14 271.63,104.14 C276.809748,104.160185 281.943214,103.164748 286.74,101.21 C291.5,99.27 294.95,97.36 297.09,95.48 L297.16,95.42 L299.3,93.28 C299.505994,93.0520926 299.805311,92.9315146 300.111765,92.9529859 C300.41822,92.9744572 300.697799,93.1355948 300.87,93.39 L308.69,103.73 Z" id="Shape"></path>
<path d="M365.76,48.25 C365.76,48.8022847 365.312285,49.25 364.76,49.25 L357.42,49.25 C351.952599,49.1653407 346.704109,51.3954948 342.97,55.39 C338.971926,59.5021362 336.807715,65.0569448 336.97,70.79 L336.97,115.08 C336.97,115.632285 336.522285,116.08 335.97,116.08 L322.53,116.08 C321.977715,116.08 321.53,115.632285 321.53,115.08 L321.53,37.87 C321.53,37.3177153 321.977715,36.87 322.53,36.87 L332.12,36.87 C332.672285,36.87 333.12,37.3177153 333.12,37.87 L333.53,50.27 L334.47,50.27 C336.28808,46.0751329 339.399502,42.5712792 343.35,40.27 C347.601016,37.8166962 352.442982,36.5750777 357.35,36.68 L364.69,36.68 C365.242285,36.68 365.69,37.1277153 365.69,37.68 L365.76,48.25 Z" id="Shape"></path>
<path d="M406.77,145.63 L393,145.63 C392.63399,145.65725 392.282464,145.48181 392.084205,145.172943 C391.885946,144.864076 391.872816,144.471421 392.05,144.15 L406.85,112.06 C406.982759,111.785194 406.982759,111.464806 406.85,111.19 L373.72,38.29 C373.548117,37.9692691 373.564023,37.5804856 373.761532,37.2748674 C373.95904,36.9692492 374.306972,36.7950405 374.67,36.82 L389.35,36.82 C389.790204,36.7924238 390.19649,37.0565095 390.35,37.47 L412.94,92.55 C413.94,94.82 415.35,96.64 415.35,98.03 L414.35,98.03 C414.35,96.64 415.62,94.82 416.35,92.55 L438.94,37.47 C439.09351,37.0565095 439.499796,36.7924238 439.94,36.82 L453.51,36.82 C453.878713,36.7770945 454.240854,36.9419568 454.450616,37.2482085 C454.660377,37.5544603 454.68324,37.9517047 454.51,38.28 L407.73,145 C407.574469,145.391103 407.190694,145.642955 406.77,145.63 Z" id="Shape"></path>
<path d="M477.66,106.15 L477.66,144.59 C477.66,145.142285 477.212285,145.59 476.66,145.59 L463.2,145.59 C462.647715,145.59 462.2,145.142285 462.2,144.59 L462.2,37.86 C462.2,37.3077153 462.647715,36.86 463.2,36.86 L473.5,36.86 C474.052285,36.86 474.5,37.3077153 474.5,37.86 L474.59,48.35 L475.36,48.35 C475.707077,48.3563277 476.032605,48.1822077 476.22,47.89 L476.86,46.89 C477.769596,45.7389528 478.773031,44.6652774 479.86,43.68 C481.520279,42.0868189 483.359149,40.6908884 485.34,39.52 C487.927997,38.0954841 490.69153,37.0162943 493.56,36.31 C497.163565,35.3462041 500.879835,34.8686382 504.61,34.89 C514.67076,34.6649575 524.329386,38.8387985 531.06,46.32 C538.113333,53.94 541.64,63.9833333 541.64,76.45 C541.64,88.6633333 538.146667,98.6433333 531.16,106.39 C524.646226,113.928522 515.121315,118.185425 505.16,118.01 C501.503744,118.037552 497.857479,117.624578 494.3,116.78 C491.545307,116.198027 488.899526,115.185611 486.46,113.78 C484.772182,112.729386 483.16143,111.559753 481.64,110.28 C480.625483,109.464859 479.715289,108.527796 478.93,107.49 L478.87,107.4 L478.14,106.13 L477.66,106.15 Z M483.89,97.37 C488.693432,102.811117 495.760596,105.699372 503,105.18 C508.354512,104.947793 513.442814,102.78029 517.32,99.08 C523.106667,93.4933333 526,85.9633333 526,76.49 C526,68.1766667 523.703333,61.3133333 519.11,55.9 C514.850924,50.6434869 508.404094,47.647021 501.64,47.78 C494.856152,47.6595253 488.362084,50.5262761 483.88,55.62 C479.093333,60.8466667 476.7,67.8033333 476.7,76.49 C476.7,85.1766667 479.096667,92.1366667 483.89,97.37 Z" id="Shape"></path>
<path d="M560.18,35.77 L560.18,13.7 C560.18,13.120101 560.650101,12.65 561.23,12.65 L574.61,12.65 C575.189899,12.65 575.66,13.120101 575.66,13.7 L575.66,35.77 C575.66,36.349899 576.130101,36.82 576.71,36.82 L597.27,36.82 C597.849899,36.82 598.32,37.290101 598.32,37.87 L598.32,48.04 C598.32,48.619899 597.849899,49.09 597.27,49.09 L576.71,49.09 C576.130101,49.09 575.66,49.560101 575.66,50.14 L575.66,92.91 C575.66,100.843333 579.326667,104.81 586.66,104.81 C588.426232,104.789962 590.179318,104.5034 591.86,103.96 C593.345128,103.541065 594.772658,102.939823 596.11,102.17 L596.62,101.91 C596.879745,101.779149 597.182128,101.761897 597.455071,101.862355 C597.728013,101.962813 597.947061,102.171981 598.06,102.44 L602.06,111.66 C602.268775,112.094052 602.138473,112.61526 601.75,112.9 C601.072836,113.397755 600.364744,113.852003 599.63,114.26 C598.003703,115.111766 596.299171,115.804964 594.54,116.33 C590.818705,117.549199 586.91426,118.114227 583,118 C575.493333,117.766667 569.866667,115.57 566.12,111.41 C562.12,107.003333 560.12,100.896667 560.12,93.09 L560.12,50.09 C560.12,49.510101 559.649899,49.04 559.07,49.04 L546.69,49.04 C546.411523,49.04 546.144451,48.9293753 545.947538,48.7324621 C545.750625,48.5355489 545.64,48.2684773 545.64,47.99 L545.64,37.88 C545.64,37.300101 546.110101,36.83 546.69,36.83 L559.13,36.83 C559.410219,36.8300127 559.678817,36.7180164 559.87602,36.518935 C560.073223,36.3198537 560.182669,36.0502059 560.18,35.77 Z" id="Shape"></path>
<path d="M675.29,106.72 C667.483333,114.273333 657.913333,118.05 646.58,118.05 C635.12,118.05 625.55,114.273333 617.87,106.72 C610.19,99.1666667 606.35,89.2166667 606.35,76.87 C606.35,64.4033333 610.223333,54.2966667 617.97,46.55 C625.716667,38.8033333 635.256667,34.93 646.59,34.93 C657.367065,34.6978865 667.759568,38.9366958 675.3,46.64 C683.1,54.4533333 687,64.53 687,76.87 C687,89.21 683.096667,99.16 675.29,106.72 Z M664.29,97.72 C669.076667,92.4933333 671.47,85.4733333 671.47,76.66 C671.47,67.9933333 669.076667,60.94 664.29,55.5 C659.890927,50.2621158 653.369397,47.2804252 646.53,47.38 C639.690565,47.2798792 633.156682,50.2082301 628.68,55.38 C623.833333,60.7133333 621.41,67.7966667 621.41,76.63 C621.41,85.4633333 623.803333,92.4833333 628.59,97.69 C633.180499,102.686412 639.654956,105.530149 646.44,105.530149 C653.225044,105.530149 659.699501,102.686412 664.29,97.69 L664.29,97.72 Z" id="Shape"></path>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -1,59 +0,0 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 315 70">
<defs>
<style>
.cls-1{fill:none;}.cls-2{fill:url(#linear-gradient);}.cls-3,.cls-5{fill:#fff;}.cls-4{clip-path:url(#clip-path);}.cls-5{opacity:0.2;}.cls-6{fill:url(#linear-gradient-2);}.cls-7{fill:url(#linear-gradient-3);}
</style>
<linearGradient id="linear-gradient" x1="57.55" y1="4.4" x2="-0.67" y2="90.08" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#1abc9c"/>
<stop offset="1" stop-color="#1a5daf"/>
</linearGradient>
<clipPath id="clip-path">
<circle id="SVGID" class="cls-1" cx="36.76" cy="35" r="32"/>
</clipPath>
<linearGradient id="linear-gradient-2" x1="36.72" y1="3.36" x2="27.74" y2="63.33"
xlink:href="#linear-gradient"/>
<linearGradient id="linear-gradient-3" x1="46.32" y1="4.8" x2="37.33" y2="64.77" xlink:href="#linear-gradient"/>
</defs>
<title>etherwallet-logo</title>
<circle class="cls-2" cx="36.76" cy="35" r="32"/>
<path class="cls-3" d="M23.84,27.45h0v0h0Z"/>
<g class="cls-4">
<polygon class="cls-5"
points="65.73 35.27 55.71 59.8 50.41 47.28 55.24 35.47 52.63 35.47 48.69 45.29 44.79 35.47 42.22 35.47 47.05 47.28 41.79 59.8 31.73 35.27 26.68 23.37 31.88 10.85 41.9 35.38 44.86 35.38 33.13 7.7 30.71 7.7 24.9 21.28 19.05 7.7 16.67 7.7 4.97 35.38 7.9 35.38 17.96 10.85 23.22 23.37 18.39 35.19 20.96 35.19 24.86 25.36 28.8 35.27 40.5 62.96 42.88 62.96 48.73 49.27 54.54 62.96 56.96 62.96 68.69 35.27 65.73 35.27"/>
<path class="cls-6"
d="M39.1,47.5a10.13,10.13,0,0,1-2.34.27c-5.58,0-10.33-4.25-10.67-10.56a19.86,19.86,0,0,1,.57-3.57L18,30a22.3,22.3,0,0,0-1.36,7.7c0,10.82,9.27,19.59,20.09,19.59A19.53,19.53,0,0,0,44,55.86Z"/>
<path class="cls-7"
d="M36.76,17a19.52,19.52,0,0,0-8.15,1.77l4.86,8.26a10.09,10.09,0,0,1,3.29-.55c4.94,0,10.18,4.14,10.68,9.24l-14.05.06L55.3,45.1a20,20,0,0,0,1.52-8.32C56.82,26,47.58,17,36.76,17Z"/>
<path class="cls-3" d="M23.84,27.45h0v0h0Z"/>
<path class="cls-3"
d="M39.1,45.36a10.13,10.13,0,0,1-2.34.27c-5.58,0-10.33-4.25-10.67-10.56a19.86,19.86,0,0,1,.57-3.57L18,27.82a22.3,22.3,0,0,0-1.36,7.7c0,10.82,9.27,19.59,20.09,19.59A19.53,19.53,0,0,0,44,53.72Z"/>
<path class="cls-3"
d="M36.76,14.89a19.52,19.52,0,0,0-8.15,1.77l4.86,8.26a10.09,10.09,0,0,1,3.29-.55c4.94,0,10.18,4.14,10.68,9.24l-14.05.06L55.3,43a20,20,0,0,0,1.52-8.32C56.82,23.82,47.58,14.89,36.76,14.89Z"/>
</g>
<path class="cls-3"
d="M108,44.56V30.21l-5.59,10.69H100.1L94.51,30.21V44.56H90.3V22.88h4.52l6.41,12.34,6.47-12.34h4.49V44.56H108Z"/>
<path class="cls-3"
d="M117,47.67a8,8,0,0,0,1,.23,5.53,5.53,0,0,0,.82.08,1.75,1.75,0,0,0,.73-0.15,1.57,1.57,0,0,0,.61-0.53,5.23,5.23,0,0,0,.55-1.05q0.27-.67.58-1.68l-6.32-16h4.21L123.49,41l3.85-12.46h3.85l-6.72,19.18a5.73,5.73,0,0,1-2,2.75A5.58,5.58,0,0,1,119,51.55a6.65,6.65,0,0,1-1-.08,6.36,6.36,0,0,1-1.05-.26V47.67Z"/>
<path class="cls-3" d="M149.17,40.86v3.69H134.12V22.88h14.78v3.69H138.33v5.22h9.13v3.42h-9.13v5.65h10.84Z"/>
<path class="cls-3"
d="M161.54,43.73a18.25,18.25,0,0,1-2,.73,8.47,8.47,0,0,1-2.5.37,5.82,5.82,0,0,1-1.6-.21,3.51,3.51,0,0,1-1.31-.69,3.35,3.35,0,0,1-.9-1.22,4.41,4.41,0,0,1-.34-1.82V31.7h-2.11V28.56h2.11V23.37H157v5.19h3.36V31.7H157v7.82a1.45,1.45,0,0,0,.44,1.21,1.69,1.69,0,0,0,1.08.35,3.76,3.76,0,0,0,1.25-.21q0.61-.21,1-0.37Z"/>
<path class="cls-3"
d="M178.85,44.56h-4.09v-9a4.53,4.53,0,0,0-.7-2.79,2.37,2.37,0,0,0-2-.9,3.13,3.13,0,0,0-1.16.24,4.54,4.54,0,0,0-1.16.69,5.86,5.86,0,0,0-1,1.05,4.16,4.16,0,0,0-.67,1.34v9.34H164V22.27h4.09v9.25a6.17,6.17,0,0,1,2.4-2.4,6.77,6.77,0,0,1,3.34-.84,5.27,5.27,0,0,1,2.53.53,4,4,0,0,1,1.53,1.42,5.85,5.85,0,0,1,.76,2,12.48,12.48,0,0,1,.21,2.32v10Z"/>
<path class="cls-3"
d="M190.15,44.86a8.88,8.88,0,0,1-3.48-.66,7.85,7.85,0,0,1-4.35-4.41,8.43,8.43,0,0,1-.6-3.15,8.91,8.91,0,0,1,.58-3.22A7.86,7.86,0,0,1,184,30.77,8,8,0,0,1,186.65,29a8.9,8.9,0,0,1,3.53-.67,8.68,8.68,0,0,1,3.5.67,8.05,8.05,0,0,1,2.63,1.8,7.67,7.67,0,0,1,1.65,2.63,8.75,8.75,0,0,1,.56,3.11q0,0.4,0,.76a3.14,3.14,0,0,1-.08.61H186.06a4.75,4.75,0,0,0,.46,1.68,4.11,4.11,0,0,0,2.26,2,4.31,4.31,0,0,0,1.53.27,4.72,4.72,0,0,0,2.31-.6,3.15,3.15,0,0,0,1.48-1.57l3.51,1a7.14,7.14,0,0,1-2.82,3A8.75,8.75,0,0,1,190.15,44.86Zm4.15-9.65A4.26,4.26,0,0,0,193,32.33a4.17,4.17,0,0,0-5.66,0,4.19,4.19,0,0,0-.9,1.25,4.41,4.41,0,0,0-.41,1.62h8.31Z"/>
<path class="cls-3"
d="M210.85,32.1a8.07,8.07,0,0,0-3.33.72,4.2,4.2,0,0,0-2.11,2.06v9.68h-4.09v-16h3.76V32a7.29,7.29,0,0,1,1-1.48,7.76,7.76,0,0,1,1.25-1.15,5.82,5.82,0,0,1,1.36-.75,3.76,3.76,0,0,1,1.33-.26h0.5a1.66,1.66,0,0,1,.32,0V32.1Z"/>
<path class="cls-3"
d="M221.32,22.94h3.88l2.44,7.18,2.44-7.18H234L230.3,32.8,233,39.73l6.14-16.86h4.58l-8.82,21.68H231.4l-3.76-9.1-3.76,9.1h-3.54l-8.76-21.68h4.52l6.17,16.86L225,32.8Z"/>
<path class="cls-3"
d="M248.74,44.86a6.07,6.07,0,0,1-2.17-.38,5.21,5.21,0,0,1-1.74-1.07,5,5,0,0,1-1.15-1.6,4.85,4.85,0,0,1-.41-2,4.44,4.44,0,0,1,.5-2.09,4.8,4.8,0,0,1,1.4-1.63A7,7,0,0,1,247.34,35a9.4,9.4,0,0,1,2.75-.38,11.85,11.85,0,0,1,2.09.18,8.54,8.54,0,0,1,1.82.52V34.42a3.21,3.21,0,0,0-.9-2.44,3.75,3.75,0,0,0-2.67-.85,7.08,7.08,0,0,0-2.5.46,11.63,11.63,0,0,0-2.5,1.34l-1.25-2.6a11.82,11.82,0,0,1,6.66-2A7.8,7.8,0,0,1,256.18,30a6.21,6.21,0,0,1,1.91,4.9v5a1.44,1.44,0,0,0,.23.92,1,1,0,0,0,.75.31v3.48a9.14,9.14,0,0,1-1.8.21,2.73,2.73,0,0,1-1.79-.52,2.23,2.23,0,0,1-.78-1.37L254.61,42a7.08,7.08,0,0,1-2.6,2.14A7.45,7.45,0,0,1,248.74,44.86Zm1.16-3a5.33,5.33,0,0,0,2-.37,3.58,3.58,0,0,0,1.45-1,1.47,1.47,0,0,0,.67-1.16V37.53a10,10,0,0,0-1.59-.44,8.58,8.58,0,0,0-1.65-.17,4.37,4.37,0,0,0-2.6.72,2.15,2.15,0,0,0-1,1.82,2.18,2.18,0,0,0,.79,1.73A2.88,2.88,0,0,0,249.9,41.87Z"/>
<path class="cls-3"
d="M262.18,22.27h4.09V39.43a2,2,0,0,0,.43,1.37,1.54,1.54,0,0,0,1.22.49,3.06,3.06,0,0,0,.81-0.12,5.46,5.46,0,0,0,.84-0.31L270.12,44a7.9,7.9,0,0,1-1.92.61,10.52,10.52,0,0,1-2,.21,4.1,4.1,0,0,1-3-1,3.88,3.88,0,0,1-1.05-2.92V22.27Z"/>
<path class="cls-3"
d="M272.16,22.27h4.09V39.43a2,2,0,0,0,.43,1.37,1.54,1.54,0,0,0,1.22.49,3.06,3.06,0,0,0,.81-0.12,5.46,5.46,0,0,0,.84-0.31L280.1,44a7.9,7.9,0,0,1-1.92.61,10.52,10.52,0,0,1-2,.21,4.1,4.1,0,0,1-3-1,3.88,3.88,0,0,1-1.05-2.92V22.27Z"/>
<path class="cls-3"
d="M289.6,44.86a8.88,8.88,0,0,1-3.48-.66,7.85,7.85,0,0,1-4.35-4.41,8.43,8.43,0,0,1-.6-3.15,8.91,8.91,0,0,1,.58-3.22,7.86,7.86,0,0,1,1.68-2.66A8,8,0,0,1,286.1,29a8.9,8.9,0,0,1,3.53-.67,8.68,8.68,0,0,1,3.5.67,8.05,8.05,0,0,1,2.63,1.8,7.67,7.67,0,0,1,1.65,2.63A8.75,8.75,0,0,1,298,36.5q0,0.4,0,.76a3.14,3.14,0,0,1-.08.61H285.51a4.75,4.75,0,0,0,.46,1.68,4.11,4.11,0,0,0,2.26,2,4.31,4.31,0,0,0,1.53.27,4.72,4.72,0,0,0,2.31-.6,3.15,3.15,0,0,0,1.48-1.57l3.51,1a7.14,7.14,0,0,1-2.82,3A8.75,8.75,0,0,1,289.6,44.86Zm4.15-9.65a4.26,4.26,0,0,0-1.33-2.89,4.17,4.17,0,0,0-5.66,0,4.19,4.19,0,0,0-.9,1.25,4.41,4.41,0,0,0-.41,1.62h8.31Z"/>
<path class="cls-3"
d="M310.24,43.73a18.25,18.25,0,0,1-2,.73,8.47,8.47,0,0,1-2.5.37,5.82,5.82,0,0,1-1.6-.21,3.51,3.51,0,0,1-1.31-.69,3.35,3.35,0,0,1-.9-1.22,4.41,4.41,0,0,1-.34-1.82V31.7h-2.11V28.56h2.11V23.37h4.09v5.19H309V31.7h-3.36v7.82a1.45,1.45,0,0,0,.44,1.21,1.69,1.69,0,0,0,1.08.35,3.76,3.76,0,0,0,1.25-.21q0.61-.21,1-0.37Z"/>
</svg>

Before

Width:  |  Height:  |  Size: 7.4 KiB

View File

@ -1,63 +0,0 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 366.33 70">
<defs>
<style>
.cls-1{fill:none;}.cls-2{fill:url(#linear-gradient);}.cls-3,.cls-5{fill:#fff;}.cls-4{clip-path:url(#clip-path);}.cls-5{opacity:0.2;}.cls-6{fill:url(#linear-gradient-2);}.cls-7{fill:url(#linear-gradient-3);}
</style>
<linearGradient id="linear-gradient" x1="58.65" y1="4.4" x2="0.43" y2="90.08" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#1abc9c"/>
<stop offset="1" stop-color="#1a5daf"/>
</linearGradient>
<clipPath id="clip-path">
<circle id="SVGID" class="cls-1" cx="37.86" cy="35" r="32"/>
</clipPath>
<linearGradient id="linear-gradient-2" x1="37.83" y1="3.36" x2="28.84" y2="63.33"
xlink:href="#linear-gradient"/>
<linearGradient id="linear-gradient-3" x1="47.42" y1="4.8" x2="38.43" y2="64.77" xlink:href="#linear-gradient"/>
</defs>
<title>etherwalletcx-logo</title>
<circle class="cls-2" cx="37.86" cy="35" r="32"/>
<path class="cls-3" d="M24.95,27.45h0v0h0Z"/>
<g class="cls-4">
<polygon class="cls-5"
points="66.83 35.27 56.81 59.8 51.51 47.28 56.34 35.47 53.73 35.47 49.79 45.29 45.89 35.47 43.32 35.47 48.15 47.28 42.89 59.8 32.83 35.27 27.78 23.37 32.98 10.85 43 35.38 45.97 35.38 34.23 7.7 31.81 7.7 26 21.28 20.15 7.7 17.77 7.7 6.07 35.38 9 35.38 19.06 10.85 24.32 23.37 19.49 35.19 22.06 35.19 25.96 25.36 29.91 35.27 41.6 62.96 43.98 62.96 49.83 49.27 55.64 62.96 58.06 62.96 69.8 35.27 66.83 35.27"/>
<path class="cls-6"
d="M40.2,47.5a10.13,10.13,0,0,1-2.34.27c-5.58,0-10.33-4.25-10.67-10.56a19.86,19.86,0,0,1,.57-3.57L19.13,30a22.3,22.3,0,0,0-1.36,7.7c0,10.82,9.27,19.59,20.09,19.59a19.53,19.53,0,0,0,7.26-1.39Z"/>
<path class="cls-7"
d="M37.86,17a19.52,19.52,0,0,0-8.15,1.77l4.86,8.26a10.09,10.09,0,0,1,3.29-.55c4.94,0,10.18,4.14,10.68,9.24l-14.05.06L56.4,45.1a20,20,0,0,0,1.52-8.32C57.92,26,48.68,17,37.86,17Z"/>
<path class="cls-3" d="M24.95,27.45h0v0h0Z"/>
<path class="cls-3"
d="M40.2,45.36a10.13,10.13,0,0,1-2.34.27c-5.58,0-10.33-4.25-10.67-10.56a19.86,19.86,0,0,1,.57-3.57l-8.63-3.68a22.3,22.3,0,0,0-1.36,7.7c0,10.82,9.27,19.59,20.09,19.59a19.53,19.53,0,0,0,7.26-1.39Z"/>
<path class="cls-3"
d="M37.86,14.89a19.52,19.52,0,0,0-8.15,1.77l4.86,8.26a10.09,10.09,0,0,1,3.29-.55c4.94,0,10.18,4.14,10.68,9.24l-14.05.06L56.4,43a20,20,0,0,0,1.52-8.32C57.92,23.82,48.68,14.89,37.86,14.89Z"/>
</g>
<path class="cls-3"
d="M109.08,44.56V30.21l-5.59,10.69H101.2L95.61,30.21V44.56H91.4V22.88h4.52l6.41,12.34,6.47-12.34h4.49V44.56h-4.21Z"/>
<path class="cls-3"
d="M118.06,47.67a8,8,0,0,0,1,.23,5.53,5.53,0,0,0,.82.08,1.75,1.75,0,0,0,.73-0.15,1.57,1.57,0,0,0,.61-0.53,5.23,5.23,0,0,0,.55-1.05q0.27-.67.58-1.68l-6.32-16h4.21L124.59,41l3.85-12.46h3.85l-6.72,19.18a5.73,5.73,0,0,1-2,2.75,5.58,5.58,0,0,1-3.48,1.07,6.65,6.65,0,0,1-1-.08,6.36,6.36,0,0,1-1.05-.26V47.67Z"/>
<path class="cls-3" d="M150.27,40.86v3.69H135.22V22.88H150v3.69H139.43v5.22h9.13v3.42h-9.13v5.65h10.84Z"/>
<path class="cls-3"
d="M162.64,43.73a18.25,18.25,0,0,1-2,.73,8.47,8.47,0,0,1-2.5.37,5.82,5.82,0,0,1-1.6-.21,3.51,3.51,0,0,1-1.31-.69,3.35,3.35,0,0,1-.9-1.22,4.41,4.41,0,0,1-.34-1.82V31.7h-2.11V28.56H154V23.37h4.09v5.19h3.36V31.7h-3.36v7.82a1.45,1.45,0,0,0,.44,1.21,1.69,1.69,0,0,0,1.08.35,3.76,3.76,0,0,0,1.25-.21q0.61-.21,1-0.37Z"/>
<path class="cls-3"
d="M180,44.56h-4.09v-9a4.53,4.53,0,0,0-.7-2.79,2.37,2.37,0,0,0-2-.9,3.13,3.13,0,0,0-1.16.24,4.54,4.54,0,0,0-1.16.69,5.86,5.86,0,0,0-1,1.05,4.16,4.16,0,0,0-.67,1.34v9.34h-4.09V22.27h4.09v9.25a6.17,6.17,0,0,1,2.4-2.4,6.77,6.77,0,0,1,3.34-.84,5.27,5.27,0,0,1,2.53.53A4,4,0,0,1,179,30.24a5.85,5.85,0,0,1,.76,2,12.48,12.48,0,0,1,.21,2.32v10Z"/>
<path class="cls-3"
d="M191.25,44.86a8.88,8.88,0,0,1-3.48-.66,7.85,7.85,0,0,1-4.35-4.41,8.43,8.43,0,0,1-.6-3.15,8.91,8.91,0,0,1,.58-3.22,7.86,7.86,0,0,1,1.68-2.66A8,8,0,0,1,187.75,29a8.9,8.9,0,0,1,3.53-.67,8.68,8.68,0,0,1,3.5.67,8.05,8.05,0,0,1,2.63,1.8,7.67,7.67,0,0,1,1.65,2.63,8.75,8.75,0,0,1,.56,3.11q0,0.4,0,.76a3.14,3.14,0,0,1-.08.61H187.16a4.75,4.75,0,0,0,.46,1.68,4.11,4.11,0,0,0,2.26,2,4.31,4.31,0,0,0,1.53.27,4.72,4.72,0,0,0,2.31-.6,3.15,3.15,0,0,0,1.48-1.57l3.51,1a7.14,7.14,0,0,1-2.82,3A8.75,8.75,0,0,1,191.25,44.86Zm4.15-9.65a4.26,4.26,0,0,0-1.33-2.89,4.17,4.17,0,0,0-5.66,0,4.19,4.19,0,0,0-.9,1.25,4.41,4.41,0,0,0-.41,1.62h8.31Z"/>
<path class="cls-3"
d="M212,32.1a8.07,8.07,0,0,0-3.33.72,4.2,4.2,0,0,0-2.11,2.06v9.68h-4.09v-16h3.76V32a7.29,7.29,0,0,1,1-1.48,7.76,7.76,0,0,1,1.25-1.15,5.82,5.82,0,0,1,1.36-.75,3.76,3.76,0,0,1,1.33-.26h0.5a1.66,1.66,0,0,1,.32,0V32.1Z"/>
<path class="cls-3"
d="M222.42,22.94h3.88l2.44,7.18,2.44-7.18h3.91L231.4,32.8l2.75,6.93,6.14-16.86h4.58L236,44.56H232.5l-3.76-9.1L225,44.56h-3.54l-8.76-21.68h4.52l6.17,16.86,2.69-6.93Z"/>
<path class="cls-3"
d="M249.85,44.86a6.07,6.07,0,0,1-2.17-.38,5.21,5.21,0,0,1-1.74-1.07,5,5,0,0,1-1.15-1.6,4.85,4.85,0,0,1-.41-2,4.44,4.44,0,0,1,.5-2.09,4.8,4.8,0,0,1,1.4-1.63A7,7,0,0,1,248.44,35a9.4,9.4,0,0,1,2.75-.38,11.85,11.85,0,0,1,2.09.18,8.54,8.54,0,0,1,1.82.52V34.42a3.21,3.21,0,0,0-.9-2.44,3.75,3.75,0,0,0-2.67-.85,7.08,7.08,0,0,0-2.5.46,11.63,11.63,0,0,0-2.5,1.34l-1.25-2.6a11.82,11.82,0,0,1,6.66-2A7.8,7.8,0,0,1,257.28,30a6.21,6.21,0,0,1,1.91,4.9v5a1.44,1.44,0,0,0,.23.92,1,1,0,0,0,.75.31v3.48a9.14,9.14,0,0,1-1.8.21,2.73,2.73,0,0,1-1.79-.52,2.23,2.23,0,0,1-.78-1.37L255.71,42a7.08,7.08,0,0,1-2.6,2.14A7.45,7.45,0,0,1,249.85,44.86Zm1.16-3a5.33,5.33,0,0,0,2-.37,3.58,3.58,0,0,0,1.45-1,1.47,1.47,0,0,0,.67-1.16V37.53a10,10,0,0,0-1.59-.44,8.58,8.58,0,0,0-1.65-.17,4.37,4.37,0,0,0-2.6.72,2.15,2.15,0,0,0-1,1.82,2.18,2.18,0,0,0,.79,1.73A2.88,2.88,0,0,0,251,41.87Z"/>
<path class="cls-3"
d="M263.28,22.27h4.09V39.43a2,2,0,0,0,.43,1.37,1.54,1.54,0,0,0,1.22.49,3.06,3.06,0,0,0,.81-0.12,5.46,5.46,0,0,0,.84-0.31L271.22,44a7.9,7.9,0,0,1-1.92.61,10.52,10.52,0,0,1-2,.21,4.1,4.1,0,0,1-3-1,3.88,3.88,0,0,1-1.05-2.92V22.27Z"/>
<path class="cls-3"
d="M273.27,22.27h4.09V39.43a2,2,0,0,0,.43,1.37,1.54,1.54,0,0,0,1.22.49,3.06,3.06,0,0,0,.81-0.12,5.46,5.46,0,0,0,.84-0.31L281.2,44a7.9,7.9,0,0,1-1.92.61,10.52,10.52,0,0,1-2,.21,4.1,4.1,0,0,1-3-1,3.88,3.88,0,0,1-1.05-2.92V22.27Z"/>
<path class="cls-3"
d="M290.7,44.86a8.88,8.88,0,0,1-3.48-.66,7.85,7.85,0,0,1-4.35-4.41,8.43,8.43,0,0,1-.6-3.15,8.91,8.91,0,0,1,.58-3.22,7.86,7.86,0,0,1,1.68-2.66A8,8,0,0,1,287.2,29a8.9,8.9,0,0,1,3.53-.67,8.68,8.68,0,0,1,3.5.67,8.05,8.05,0,0,1,2.63,1.8,7.67,7.67,0,0,1,1.65,2.63,8.75,8.75,0,0,1,.56,3.11q0,0.4,0,.76a3.14,3.14,0,0,1-.08.61H286.61a4.75,4.75,0,0,0,.46,1.68,4.11,4.11,0,0,0,2.26,2,4.31,4.31,0,0,0,1.53.27,4.72,4.72,0,0,0,2.31-.6,3.15,3.15,0,0,0,1.48-1.57l3.51,1a7.14,7.14,0,0,1-2.82,3A8.75,8.75,0,0,1,290.7,44.86Zm4.15-9.65a4.26,4.26,0,0,0-1.33-2.89,4.17,4.17,0,0,0-5.66,0,4.19,4.19,0,0,0-.9,1.25,4.41,4.41,0,0,0-.41,1.62h8.31Z"/>
<path class="cls-3"
d="M311.34,43.73a18.25,18.25,0,0,1-2,.73,8.47,8.47,0,0,1-2.5.37,5.82,5.82,0,0,1-1.6-.21,3.51,3.51,0,0,1-1.31-.69,3.35,3.35,0,0,1-.9-1.22,4.41,4.41,0,0,1-.34-1.82V31.7h-2.11V28.56h2.11V23.37h4.09v5.19h3.36V31.7h-3.36v7.82a1.45,1.45,0,0,0,.44,1.21,1.69,1.69,0,0,0,1.08.35,3.76,3.76,0,0,0,1.25-.21q0.61-.21,1-0.37Z"/>
<path class="cls-3"
d="M320.5,33.56a11.23,11.23,0,0,1,.72-3.92,10.52,10.52,0,0,1,5.45-5.94,10.38,10.38,0,0,1,4.52-.95,9.86,9.86,0,0,1,5.18,1.31,8.39,8.39,0,0,1,3.25,3.42l-3.24,2.23a5.54,5.54,0,0,0-1-1.54,5.21,5.21,0,0,0-1.31-1,5.91,5.91,0,0,0-1.47-.53,7,7,0,0,0-1.5-.17,5.68,5.68,0,0,0-2.76.64,6.08,6.08,0,0,0-2,1.66,7.34,7.34,0,0,0-1.18,2.32,8.78,8.78,0,0,0-.4,2.58,8.41,8.41,0,0,0,.46,2.76,7.35,7.35,0,0,0,1.3,2.34,6.49,6.49,0,0,0,2,1.62,5.51,5.51,0,0,0,2.58.61,6.79,6.79,0,0,0,1.53-.18,5.8,5.8,0,0,0,1.51-.58,5.73,5.73,0,0,0,1.33-1,4.72,4.72,0,0,0,1-1.51l3.45,2a6.52,6.52,0,0,1-1.48,2.15,9.52,9.52,0,0,1-2.17,1.57,11.07,11.07,0,0,1-2.58,1,11.31,11.31,0,0,1-2.69.34,9.23,9.23,0,0,1-4.24-1,11,11,0,0,1-3.31-2.55,11.82,11.82,0,0,1-2.17-3.57A11.15,11.15,0,0,1,320.5,33.56Z"/>
<path class="cls-3"
d="M345.14,22.88l5.4,8.06,5.37-8.06h4.55l-7.73,11,7.48,10.69h-4.55l-5.13-7.76-5.16,7.76h-4.58l7.48-10.69-7.73-11h4.58Z"/>
</svg>

Before

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

View File

@ -0,0 +1,72 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="562px" height="871px" viewBox="0 0 562 871" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 48.2 (47327) - http://www.bohemiancoding.com/sketch -->
<title>Artboard</title>
<desc>Created with Sketch.</desc>
<defs>
<circle id="path-1" cx="145" cy="145" r="145"></circle>
<path d="M188.615687,161.045517 C185.929442,161.041736 183.355675,162.120923 181.478984,164.037953 L162.523537,183.171407 C158.03819,187.712729 151.913997,190.269768 145.522728,190.269768 C139.13146,190.269768 133.007267,187.712729 128.52192,183.171407 L109.611929,163.992613 C107.735238,162.075583 105.161471,160.996396 102.475226,161.000177 C99.7732254,160.984112 97.1807508,162.064262 95.2930662,163.992613 C88.2356446,171.169186 88.2356446,182.659805 95.2930662,189.836378 L132.703937,227.649887 C136.049939,231.07182 140.639556,233.001047 145.431815,233 C150.224074,233.001047 154.813691,231.07182 158.159693,227.649887 L195.706934,189.836378 C202.764355,182.659805 202.764355,171.169186 195.706934,163.992613 C193.833714,162.103477 191.279553,161.041977 188.615687,161.045517 Z" id="path-2"></path>
<path d="M199.198734,68.9506492 C196.053465,65.7728927 191.747134,63.9878569 187.255633,64.0000622 C182.567661,64.0072321 178.081125,65.8896726 174.81301,69.2206812 L145.114196,98.9692086 L115.960314,69.6707346 C112.766382,66.5642524 108.446065,64.8612958 103.971801,64.9451742 C99.2838295,64.9523441 94.7972931,66.8347847 91.5291786,70.1657933 L55.2003534,106.665121 C48.3739535,113.416382 48.2528346,124.339732 54.9278872,131.238035 C58.7088615,134.920655 64.7702224,134.920655 68.5511967,131.238035 L86.9880755,112.785847 C91.3822497,108.32355 97.4079546,105.808223 103.699335,105.81002 C109.776459,105.811085 115.599521,108.226493 119.865662,112.515815 L138.030075,130.517949 C139.396968,131.908941 141.181062,132.824593 143.11611,133.128259 C146.32361,133.745852 149.630204,132.73233 151.925851,130.427939 L170.362729,111.975751 C174.756904,107.513454 180.782609,104.998127 187.073989,104.999924 C193.151113,105.000989 198.974175,107.416396 203.240316,111.705719 L221.404729,129.707853 C223.139979,131.487308 225.537911,132.480233 228.034739,132.453179 C230.653838,132.44581 233.159053,131.391012 234.982627,129.527832 C241.707621,122.67834 241.66725,111.7554 234.891805,104.954918 L199.198734,68.9506492 Z" id="path-3"></path>
</defs>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Artboard" fill-rule="nonzero">
<g id="slide-01" transform="translate(20.000000, 20.000000)">
<rect id="Rectangle-path" fill="#FFCE00" x="299.29" y="380.47" width="46.5" height="10.5"></rect>
<path d="M482.94,406 L482.94,551.19 L482.08,551.19 C477.937864,551.19 474.58,554.547864 474.58,558.69 L474.58,561.52 L426.58,561.52 C425.532755,560.680259 424.574407,559.735314 423.72,558.7 C421.85,556.36 420.43,552.88 418.92,549.2 C416.51,543.32 413.79,536.66 408.08,532.1 C402.37,527.54 395.32,526.39 389.08,525.35 C385.14,524.69 381.42,524.07 378.69,522.76 C375.96,521.45 373.32,519 370.41,516.37 C365.66,512.08 360.28,507.21 353.05,505.57 C346.05,503.98 339.24,505.98 333.21,507.74 C329.32,508.88 325.64,509.96 322.51,509.96 C319.38,509.96 315.7,508.88 311.8,507.74 C305.8,505.98 298.94,503.98 291.97,505.57 C284.74,507.21 279.35,512.08 274.61,516.37 C271.7,519 268.95,521.49 266.33,522.76 C263.71,524.03 259.87,524.69 255.93,525.35 C249.68,526.35 242.6,527.57 236.93,532.1 C231.26,536.63 228.5,543.32 226.09,549.2 C224.59,552.88 223.16,556.36 221.29,558.71 C220.435074,559.741827 219.476743,560.683403 218.43,561.52 L170.43,561.52 L170.43,558.69 C170.43,554.547864 167.072136,551.19 162.93,551.19 L162.07,551.19 L162.07,406 L482.94,406 Z M464,531.38 C467.763656,529.758061 469.532032,525.418244 467.973814,521.627762 C466.415596,517.837281 462.106228,515.995946 458.29,517.49 L432.93,528 C429.662747,529.391431 427.819192,532.883571 428.513314,536.366273 C429.207436,539.848976 432.248949,542.367495 435.8,542.4 C436.784431,542.396432 437.75892,542.202893 438.67,541.83 L464,531.38 Z M429.37,485.63 C431.312873,483.770627 432.111526,481.013352 431.463199,478.403429 C430.814872,475.793507 428.81881,473.730463 426.2317,472.996376 C423.64459,472.262289 420.862465,472.969534 418.94,474.85 L418.76,475.03 L406,487.77 C403.070129,490.699871 403.070129,495.450129 406,498.38 C408.929871,501.309871 413.680129,501.309871 416.61,498.38 L429.37,485.63 Z M386.88,446.15 C388.473342,442.317144 386.657856,437.918342 382.825,436.325 C378.992144,434.731658 374.593342,436.547144 373,440.38 L362.52,465.7 C361.758611,467.53793 361.75863,469.603063 362.520052,471.440978 C363.281475,473.278894 364.741911,474.738997 366.58,475.5 C367.487892,475.871873 368.458911,476.065398 369.44,476.07 C372.476647,476.071687 375.21548,474.244483 376.38,471.44 L386.88,446.15 Z M330,455.5 L330,437.5 C330,433.357864 326.642136,430 322.5,430 C318.357864,430 315,433.357864 315,437.5 L315,455.5 C315,459.642136 318.357864,463 322.5,463 C326.642136,463 330,459.642136 330,455.5 Z M278.46,475.5 C282.279245,473.906863 284.093625,469.527325 282.52,465.7 L272.03,440.38 C271.004648,437.904149 268.736333,436.163388 266.079507,435.813444 C263.422681,435.463499 260.78098,436.557537 259.149507,438.683444 C257.518033,440.80935 257.144648,443.644149 258.17,446.12 L268.66,471.44 C269.818756,474.244706 272.555353,476.073053 275.59,476.07 C276.574431,476.066432 277.54892,475.872893 278.46,475.5 Z M239.01,498.38 C241.933388,495.455255 241.933388,490.714745 239.01,487.79 L226.28,475 C224.418646,473.072552 221.670403,472.284537 219.070508,472.932793 C216.470612,473.581049 214.41405,475.567089 213.675508,478.142793 C212.936966,480.718496 213.628646,483.492552 215.49,485.42 L215.67,485.6 L228.44,498.38 C229.846661,499.787563 231.755044,500.578399 233.745,500.578399 C235.734956,500.578399 237.643339,499.787563 239.05,498.38 L239.01,498.38 Z M216.17,537.78 C217.749562,533.952669 215.933447,529.568942 212.11,527.98 L186.79,517.49 C184.30879,516.464647 181.469039,516.840892 179.340453,518.477007 C177.211867,520.113121 176.117829,522.76054 176.470453,525.422007 C176.823077,528.083474 178.56879,530.354648 181.05,531.38 L206.37,541.87 C207.285069,542.222619 208.259468,542.39577 209.24,542.38 C212.280271,542.398884 215.031981,540.582834 216.21,537.78 L216.17,537.78 Z" id="Shape" fill="#8B572A"></path>
<path d="M474.58,610.17 L474.58,720.38 C459.833831,731.264216 450.277632,747.790138 448.2,766 L196.88,766 C194.789076,747.808182 185.234242,731.302732 170.5,720.43 L170.5,610.17 L279.06,610.17 L279.06,653.28 C279.06,657.422136 282.417864,660.78 286.56,660.78 L358.56,660.78 C362.702136,660.78 366.06,657.422136 366.06,653.28 L366.06,610.17 L474.58,610.17 Z" id="Shape" fill="#8B572A"></path>
<path d="M322.54,604 C326.631124,604.005521 329.943676,607.325532 329.939997,611.416658 C329.936318,615.507783 326.617798,618.82183 322.526671,618.819993 C318.435544,618.818155 315.120004,615.501127 315.12,611.41 C315.119998,609.443012 315.902065,607.556732 317.293873,606.1668 C318.685681,604.776868 320.573014,603.997345 322.54,604 Z" id="Shape" fill="#FFCE00"></path>
<path d="M351,577 L351,645.82 L294.06,645.82 L294.06,577 L351,577 Z M345,611.38 C345.005522,598.997778 334.972224,588.955527 322.590001,588.950004 C310.207779,588.944482 300.165528,598.977779 300.160004,611.360001 C300.154481,623.742224 310.187778,633.784476 322.57,633.79 C334.947659,633.784495 344.983454,623.757649 345,611.38 Z" id="Shape" fill="#DFDFE3"></path>
<path d="M155.5,566.19 L155.5,712.06 C150.147414,709.943024 144.539094,708.540944 138.82,707.89 L138.82,566.19 L155.5,566.19 Z" id="Shape" fill="#FFCE00"></path>
<polygon id="Shape" fill="#FFCE00" points="279.06 576.52 279.06 595.17 170.5 595.17 170.5 576.52 172.53 576.52"></polygon>
<rect id="Rectangle-path" fill="#FFCE00" x="366.01" y="576.52" width="108.57" height="18.65"></rect>
<path d="M506.28,566.19 L506.28,707.89 C500.560468,708.538526 494.951835,709.940685 489.6,712.06 L489.6,566.19 L506.28,566.19 Z" id="Shape" fill="#FFCE00"></path>
<path d="M506.28,723 L506.28,766 L463.28,766 C466.599783,743.77127 484.05127,726.319783 506.28,723 Z" id="Shape" fill="#FFCE00"></path>
<path d="M181.76,766 L138.82,766 L138.82,723 C161.023862,726.346921 178.444086,743.791486 181.76,766 Z" id="Shape" fill="#FFCE00"></path>
<path d="M408,561.52 L237.09,561.52 C238.17,559.33 239.09,557.09 240,554.88 C241.88,550.28 243.65,545.94 246.31,543.82 C248.97,541.7 253.54,540.96 258.42,540.15 C263.3,539.34 268.21,538.52 272.88,536.27 C277.55,534.02 281.13,530.72 284.7,527.5 C288.27,524.28 291.92,520.97 295.32,520.19 C298.49,519.47 302.93,520.77 307.62,522.14 C312.14,523.46 317.26,524.96 322.54,524.96 C327.82,524.96 332.94,523.46 337.46,522.14 C342.15,520.77 346.58,519.47 349.76,520.2 C353.16,520.97 356.66,524.14 360.37,527.5 C364.08,530.86 367.63,534.06 372.2,536.27 C376.77,538.48 381.84,539.34 386.65,540.15 C391.46,540.96 396.14,541.72 398.77,543.82 C401.4,545.92 403.2,550.28 405.07,554.82 C406,557.08 406.9,559.38 408,561.52 Z" id="Shape" fill="#FFA21A"></path>
<path d="M521.28,558.69 L521.28,773.45 C521.28,777.592136 517.922136,780.95 513.78,780.95 L131.28,780.95 C127.137864,780.95 123.78,777.592136 123.78,773.45 L123.78,558.69 C123.78,554.547864 127.137864,551.19 131.28,551.19 L147.1,551.19 L147.1,398.47 C147.1,394.327864 150.457864,390.97 154.6,390.97 L284.28,390.97 L284.28,373 C284.28,368.857864 287.637864,365.5 291.78,365.5 L353.28,365.5 C357.422136,365.5 360.78,368.857864 360.78,373 L360.78,391 L490.44,391 C494.582136,391 497.94,394.357864 497.94,398.5 L497.94,551.19 L513.76,551.19 C515.749126,551.184689 517.658891,551.969776 519.069167,553.372549 C520.479442,554.775323 521.274703,556.680874 521.28,558.67 L521.28,558.69 Z M506.28,766 L506.28,723 C484.069948,726.31286 466.623869,743.734596 463.28,765.94 L506.28,766 Z M506.28,707.94 L506.28,566.19 L489.58,566.19 L489.58,712.06 C494.938207,709.938978 500.553677,708.536792 506.28,707.89 L506.28,707.94 Z M483,551.19 L483,406 L162.14,406 L162.14,551.19 L163,551.19 C167.142136,551.19 170.5,554.547864 170.5,558.69 L170.5,561.52 L218.5,561.52 C219.546743,560.683403 220.505074,559.741827 221.36,558.71 C223.23,556.36 224.66,552.88 226.16,549.2 C228.57,543.32 231.29,536.66 237,532.1 C242.71,527.54 249.76,526.39 256,525.35 C259.94,524.69 263.67,524.07 266.4,522.76 C269.13,521.45 271.77,519 274.68,516.37 C279.42,512.08 284.81,507.21 292.04,505.57 C299.04,503.98 305.84,505.98 311.87,507.74 C315.77,508.88 319.45,509.96 322.58,509.96 C325.71,509.96 329.39,508.88 333.28,507.74 C339.28,505.98 346.15,503.98 353.12,505.57 C360.35,507.21 365.73,512.08 370.48,516.37 C373.39,519 376.13,521.49 378.76,522.76 C381.39,524.03 385.21,524.69 389.15,525.35 C395.4,526.35 402.49,527.57 408.15,532.1 C413.81,536.63 416.58,543.32 418.99,549.2 C420.5,552.88 421.92,556.36 423.79,558.7 C424.644459,559.735267 425.602802,560.680207 426.65,561.52 L474.65,561.52 L474.65,558.69 C474.65,554.547864 478.007864,551.19 482.15,551.19 L483,551.19 Z M474.62,720.38 L474.62,610.17 L366,610.17 L366,653.28 C366,657.422136 362.642136,660.78 358.5,660.78 L286.56,660.78 C282.417864,660.78 279.06,657.422136 279.06,653.28 L279.06,610.17 L170.5,610.17 L170.5,720.38 C185.246169,731.264216 194.802368,747.790138 196.88,766 L448.2,766 C450.277632,747.790138 459.833831,731.264216 474.58,720.38 L474.62,720.38 Z M474.62,595.17 L474.62,576.52 L366,576.52 L366,595.17 L474.62,595.17 Z M237.09,561.52 L408,561.52 C406.92,559.33 406,557.08 405.09,554.87 C403.22,550.28 401.44,545.94 398.79,543.87 C396.14,541.8 391.55,541.01 386.67,540.2 C381.79,539.39 376.88,538.57 372.22,536.32 C367.56,534.07 363.96,530.77 360.39,527.55 C356.82,524.33 353.18,521.02 349.78,520.25 C346.6,519.52 342.17,520.82 337.48,522.19 C332.96,523.51 327.84,525.01 322.56,525.01 C317.28,525.01 312.16,523.51 307.64,522.19 C302.95,520.82 298.51,519.52 295.34,520.24 C291.94,521.02 288.43,524.19 284.72,527.55 C281.01,530.91 277.46,534.11 272.9,536.32 C268.34,538.53 263.25,539.39 258.44,540.2 C253.63,541.01 248.96,541.77 246.33,543.87 C243.7,545.97 241.9,550.33 240.02,554.93 C239.09,557.09 238.17,559.38 237.09,561.52 Z M351,645.78 L351,577 L294.06,577 L294.06,645.82 L351,645.78 Z M345.79,391 L345.79,380.5 L299.28,380.5 L299.28,391 L345.79,391 Z M279.06,595.2 L279.06,576.52 L170.5,576.52 L170.5,595.17 L279.06,595.2 Z M163,766 L181.76,766 C178.444086,743.791486 161.023862,726.346921 138.82,723 L138.82,766 L163,766 Z M155.5,712.11 L155.5,566.19 L138.82,566.19 L138.82,707.89 C144.539094,708.540944 150.147414,709.943024 155.5,712.06 L155.5,712.11 Z" id="Shape" fill="#000000"></path>
<path d="M435.8,548.38 C429.334293,548.40937 423.755595,543.850198 422.496936,537.508116 C421.238276,531.166034 424.653106,524.821992 430.64,522.38 L456,511.89 C462.847639,509.274875 470.532449,512.588265 473.33166,519.362736 C476.130872,526.137207 473.026355,533.908747 466.33,536.89 L441,547.38 C439.348339,548.048825 437.58192,548.388521 435.8,548.38 Z" id="Shape" fill="#FFA21A"></path>
<path d="M461.12,516.92 C464.729825,516.87817 467.857262,519.413969 468.56243,522.954495 C469.267597,526.495022 467.350385,530.035564 464,531.38 L438.68,541.87 C437.76892,542.242893 436.794431,542.436432 435.81,542.44 C432.219682,542.457501 429.120556,539.928055 428.418305,536.407042 C427.716053,532.886029 429.607677,529.361198 432.93,528 L458.28,517.48 C459.189038,517.099231 460.164439,516.902112 461.15,516.9 L461.12,516.92 Z M461.15,504.9 C458.585977,504.897886 456.046994,505.404323 453.68,506.39 L428.37,516.88 C418.903374,521.259797 414.566576,532.319192 418.532674,541.966456 C422.498771,551.61372 433.360167,556.42497 443.17,552.88 L468.49,542.39 C477.015462,538.784952 481.831747,529.68312 480.016895,520.606436 C478.202043,511.529753 470.256209,504.979663 461,504.93 L461.15,504.9 Z" id="Shape" fill="#000000"></path>
<path d="M411.28,506.54 C405.843805,506.513661 400.952943,503.231565 398.868276,498.210901 C396.783609,493.190236 397.911276,487.409142 401.73,483.54 L414.46,470.8 C419.654238,465.451122 428.201122,465.325762 433.55,470.52 C438.898878,475.714238 439.024238,484.261122 433.83,489.61 L433.56,489.88 L420.87,502.58 C418.334152,505.133268 414.878513,506.560206 411.28,506.54 Z" id="Shape" fill="#FFA21A"></path>
<path d="M424.06,472.8 C427.095812,472.798621 429.833046,474.627484 430.993666,477.432679 C432.154285,480.237875 431.509356,483.466072 429.36,485.61 L416.63,498.38 C413.702891,501.315393 408.950393,501.322109 406.015,498.395 C403.079607,495.467891 403.072891,490.715393 406,487.78 L418.75,475 C420.15409,473.584141 422.065978,472.788421 424.06,472.79 L424.06,472.8 Z M424.06,460.79 C418.890047,460.774879 413.928587,462.827152 410.28,466.49 L397.56,479.22 C390.108681,486.863166 390.187402,499.076833 397.736622,506.623316 C405.285842,514.169799 417.499537,514.24409 425.14,506.79 L437.87,494.05 C443.448158,488.47299 445.11705,480.08469 442.098328,472.797289 C439.079606,465.509889 431.967895,460.758853 424.08,460.76 L424.06,460.79 Z" id="Shape" fill="#000000"></path>
<path d="M369.44,482.07 C364.935283,482.056126 360.733832,479.79791 358.236905,476.048506 C355.739979,472.299103 355.276108,467.551834 357,463.39 L367.49,438.08 C369.33349,433.61418 373.419432,430.471083 378.208691,429.834682 C382.99795,429.198282 387.762923,431.165263 390.708691,434.994682 C393.65446,438.824102 394.333491,443.93418 392.49,448.4 L382,473.73 C379.904715,478.810288 374.935265,482.110066 369.44,482.07 Z" id="Shape" fill="#FFA21A"></path>
<path d="M379.93,435.75 C382.435685,435.753326 384.774656,437.006099 386.165951,439.09003 C387.557246,441.173961 387.817569,443.814502 386.86,446.13 L376.38,471.44 C375.21548,474.244483 372.476647,476.071687 369.44,476.07 C368.458911,476.065398 367.487892,475.871873 366.58,475.5 C364.741911,474.738997 363.281475,473.278894 362.520052,471.440978 C361.75863,469.603063 361.758611,467.53793 362.52,465.7 L373,440.38 C374.155633,437.571371 376.892915,435.738616 379.93,435.74 L379.93,435.75 Z M379.93,423.74 C372.037472,423.73106 364.923714,428.497278 361.93,435.8 L351.45,461.1 C349.470042,465.877864 349.469236,471.246585 351.447758,476.025043 C353.42628,480.803502 357.22205,484.600249 362,486.58 L362.1,486.58 C372.032759,490.639792 383.379174,485.911746 387.49,476 L398,450.67 C400.502268,444.651534 399.833801,437.78103 396.21831,432.357793 C392.602819,426.934556 386.517918,423.675008 380,423.67 L379.93,423.74 Z" id="Shape" fill="#000000"></path>
<path d="M322.54,589 C334.914096,589.005523 344.941838,599.039235 344.939998,611.413332 C344.938157,623.787429 334.907429,633.818157 322.533332,633.819998 C310.159235,633.821838 300.125523,623.794096 300.12,611.42 C300.117346,605.473033 302.478594,599.768876 306.683735,595.563735 C310.888876,591.358594 316.593033,588.997346 322.54,589 Z M330,611.38 C330.005519,607.282053 326.687952,603.955535 322.590004,603.950013 C318.492057,603.944492 315.165538,607.262057 315.160013,611.360005 C315.154489,615.457952 318.472053,618.784473 322.57,618.79 C324.537907,618.792654 326.426268,618.01345 327.819663,616.623805 C329.213059,615.23416 329.99735,613.347907 330,611.38 Z" id="Shape" fill="#000000"></path>
<path d="M322.54,469 C315.088723,468.988986 309.051014,462.951277 309.04,455.5 L309.04,437.5 C309.04,430.044156 315.084156,424 322.54,424 C329.995844,424 336.04,430.044156 336.04,437.5 L336.04,455.5 C336.028986,462.951277 329.991277,468.988986 322.54,469 Z" id="Shape" fill="#FFA21A"></path>
<path d="M322.54,430 C326.682136,430 330.04,433.357864 330.04,437.5 L330.04,455.5 C330.04,459.642136 326.682136,463 322.54,463 C318.397864,463 315.04,459.642136 315.04,455.5 L315.04,437.5 C315.037346,435.513528 315.823925,433.607363 317.226697,432.200839 C318.62947,430.794316 320.533528,430.00265 322.52,430 L322.54,430 Z M322.52,418 C311.755017,418.011024 303.031024,426.735017 303.02,437.5 L303.02,455.5 C303.02,466.269553 311.750447,475 322.52,475 C333.289553,475 342.02,466.269553 342.02,455.5 L342.02,437.5 C342.009001,426.742811 333.297172,418.022038 322.54,418 L322.52,418 Z" id="Shape" fill="#000000"></path>
<path d="M275.63,482.07 C270.158907,482.083993 265.22453,478.782547 263.15,473.72 L252.66,448.38 C250.695689,443.931592 251.275571,438.770498 254.178058,434.868906 C257.080545,430.967315 261.85707,428.928203 266.682395,429.530768 C271.50772,430.133334 275.636111,433.284453 277.49,437.78 L277.6,438.04 L288.1,463.38 C290.923751,470.261445 287.663042,478.131812 280.8,481 C279.162493,481.688984 277.406463,482.052417 275.63,482.07 Z" id="Shape" fill="#FFA21A"></path>
<path d="M265.13,435.75 C268.165438,435.754031 270.899987,437.584956 272.06,440.39 L282.55,465.71 C284.123625,469.537325 282.309245,473.916863 278.49,475.51 C277.57892,475.882893 276.604431,476.076432 275.62,476.08 C272.585353,476.083053 269.848756,474.254706 268.69,471.45 L258.2,446.13 C257.242431,443.814502 257.502754,441.173961 258.894049,439.09003 C260.285344,437.006099 262.624315,435.753326 265.13,435.75 Z M265.13,423.75 C258.610113,423.75 252.521602,427.008472 248.905019,432.433346 C245.288437,437.85822 244.622351,444.731643 247.13,450.75 L257.62,476.06 C261.726908,485.970166 273.067264,490.702017 283,486.65 L283.12,486.65 C293.043326,482.506673 297.753756,471.123879 293.66,461.18 L283.17,435.85 C280.150954,428.576218 273.045432,423.839203 265.17,423.85 L265.13,423.75 Z" id="Shape" fill="#000000"></path>
<path d="M233.75,506.54 C230.172782,506.546555 226.740096,505.128862 224.21,502.6 L211.46,489.84 C207.98396,486.480541 206.569515,481.518873 207.751608,476.831498 C208.933702,472.144124 212.531886,468.446574 217.185328,467.137262 C221.83877,465.827949 226.837119,467.106742 230.29,470.49 L230.56,470.76 L243.28,483.5 C247.107548,487.3644 248.242188,493.148328 246.158298,498.172381 C244.074408,503.196434 239.179051,506.479224 233.74,506.5 L233.75,506.54 Z" id="Shape" fill="#FFA21A"></path>
<path d="M221,472.8 C222.992138,472.797994 224.903003,473.589689 226.31,475 L239.04,487.74 C241.978154,490.669871 241.98487,495.426845 239.055,498.365 C236.125129,501.303154 231.368155,501.30987 228.43,498.38 L215.7,485.64 C213.557797,483.495132 212.917418,480.271579 214.07713,477.470765 C215.236842,474.669951 217.968583,472.842666 221,472.84 L221,472.8 Z M221,460.84 C213.112105,460.838853 206.000394,465.589889 202.981672,472.877289 C199.96295,480.16469 201.631842,488.55299 207.21,494.13 L220,506.87 C227.516595,514.582657 239.862343,514.741595 247.575,507.225 C255.287657,499.708405 255.446595,487.362657 247.93,479.65 L247.58,479.3 L234.8,466.56 C231.148565,462.886768 226.179329,460.827056 221,460.84 Z" id="Shape" fill="#000000"></path>
<path d="M209.28,548.38 C207.528134,548.379144 205.792958,548.039579 204.17,547.38 L178.8,536.87 C174.055739,535.266519 170.588925,531.168547 169.793805,526.224161 C168.998684,521.279776 171.005923,516.301506 175.00827,513.291459 C179.010617,510.281412 184.350353,509.734241 188.88,511.87 L189.14,511.98 L214.46,522.47 C220.450526,524.913327 223.865486,531.26308 222.601379,537.608021 C221.337271,543.952962 215.749522,548.509098 209.28,548.47 L209.28,548.38 Z" id="Shape" fill="#FFA21A"></path>
<path d="M184,516.92 C184.985534,516.922375 185.960884,517.119484 186.87,517.5 L212.14,528 C215.392866,529.397869 217.225127,532.880121 216.534954,536.352705 C215.844782,539.825288 212.820183,542.342243 209.28,542.39 C208.298911,542.385398 207.327892,542.191873 206.42,541.82 L181.09,531.39 C177.748098,530.035207 175.843426,526.493881 176.55534,522.958778 C177.267253,519.423675 180.394198,516.895636 184,516.94 L184,516.92 Z M184,504.94 C174.691491,504.931311 166.674744,511.503056 164.857149,520.632392 C163.039555,529.761728 167.927975,538.902812 176.53,542.46 L201.82,553 C211.73702,556.906736 222.95342,552.126905 227.004191,542.267842 C231.054962,532.408779 226.439015,521.123947 216.64,516.93 L191.42,506.43 C189.053083,505.444068 186.514049,504.937621 183.95,504.94 L184,504.94 Z" id="Shape" fill="#000000"></path>
<path d="M190.54,673.38 L254.54,673.38 C260.303008,673.20351 264.883389,668.480709 264.883389,662.715 C264.883389,656.949291 260.303008,652.22649 254.54,652.05 L190.54,652.05 C184.661984,651.888742 179.761448,656.513486 179.582339,662.390985 C179.403231,668.268485 184.013072,673.183043 189.89,673.38 L190.54,673.38 Z" id="Shape" fill="#4D3325" opacity="0.5"></path>
<path d="M251.13,722.73 L315.13,722.73 C320.893008,722.55351 325.473389,717.830709 325.473389,712.065 C325.473389,706.299291 320.893008,701.57649 315.13,701.4 L251.13,701.4 C247.312401,701.272059 243.717628,703.194597 241.704596,706.440846 C239.691564,709.687096 239.567394,713.761789 241.379025,717.12459 C243.190656,720.48739 246.661694,722.625248 250.48,722.73 L251.13,722.73 Z" id="Shape" fill="#4D3325" opacity="0.5"></path>
<path d="M385.69,692.49 L449.69,692.49 C455.568016,692.651258 460.468552,688.026514 460.647661,682.149015 C460.826769,676.271515 456.216928,671.356957 450.34,671.16 L385.69,671.16 C379.811984,670.998742 374.911448,675.623486 374.732339,681.500985 C374.553231,687.378485 379.163072,692.293043 385.04,692.49 L385.69,692.49 Z" id="Shape" fill="#4D3325" opacity="0.5"></path>
<path d="M343,768.82 L407,768.82 C412.878016,768.981258 417.778552,764.356514 417.957661,758.479015 C418.136769,752.601515 413.526928,747.686957 407.65,747.49 L343,747.49 C337.121984,747.328742 332.221448,751.953486 332.042339,757.830985 C331.863231,763.708485 336.473072,768.623043 342.35,768.82 L343,768.82 Z" id="Shape" fill="#4D3325" opacity="0.5"></path>
<path d="M170.59,628.91 L88.83,600.05 C87.7945948,599.684785 86.6654052,599.684785 85.63,600.05 L3.87,628.91 C1.94700174,629.59147 0.661337569,631.409823 0.66,633.45 L0.66,691.16 C0.66,765.84 11.73,793.16 85.06,830.16 C86.4209656,830.849591 88.0290344,830.849591 89.39,830.16 C162.72,793.16 173.79,765.89 173.79,691.16 L173.79,633.45 C173.790168,631.412412 172.509054,629.594832 170.59,628.91 Z" id="Shape" fill="#000000"></path>
<path d="M87.23,612.92 L15,636.85 L12.92,691.16 C12.92,699.86 13.06,707.82 13.41,715.16 L87.22,715.16 L87.23,612.92 Z" id="Shape" fill="#81CC3B"></path>
<path d="M163.68,715.2 C164.04,707.82 164.18,699.86 164.18,691.2 L162,636.89 L87.2,611.89 L87.2,715.2 L163.68,715.2 Z" id="Shape" fill="#7BBA38"></path>
<path d="M87.23,713.05 L87.23,816.12 C146.8,785.75 161.08,766.32 163.68,713.05 L87.23,713.05 Z" id="Shape" fill="#81CC3B"></path>
<path d="M12.94,713.05 C15.53,766.32 27.66,785.75 87.23,816.12 L87.23,713.05 L12.94,713.05 Z" id="Shape" fill="#7BBA38"></path>
<path d="M87.23,799.62 C19.4,765 10.28,751.5 10.28,680 L10.28,689 C10.28,760.53 19.4,783.69 87.28,818.27 C155.11,783.69 164.28,760.54 164.28,689 L164.28,680 C164.18,751.5 155.06,765 87.23,799.62 Z" id="Shape" fill="#000000" opacity="0.1"></path>
<path d="M58.38,686.38 C58.3782903,694.963096 62.206256,703.099357 68.82,708.57 L63.24,748.23 C63.0460994,749.60846 63.4588931,751.003322 64.3717441,752.054251 C65.2845951,753.105181 66.6079696,753.709101 68,753.71 L106.5,753.71 C107.89203,753.709101 109.215405,753.105181 110.128256,752.054251 C111.041107,751.003322 111.453901,749.60846 111.26,748.23 L105.68,708.57 C115.969651,700.010471 119.021001,685.497946 113.049604,673.51943 C107.078208,661.540913 93.6523753,655.242409 80.6236082,658.307319 C67.5948412,661.372228 58.3849789,672.995591 58.38,686.38 Z" id="Shape" fill="#000000"></path>
<path d="M106.5,686.38 C106.485008,692.822204 103.245134,698.828923 97.87,702.38 C96.3291034,703.407071 95.5128639,705.226119 95.77,707.06 L100.97,744.06 L73.5,744.06 L78.7,707.06 C78.9571361,705.226119 78.1408966,703.407071 76.6,702.38 C68.9661217,697.2886 65.992977,687.512961 69.4994001,679.033371 C73.0058232,670.553781 82.0148168,665.732915 91.0150904,667.519958 C100.015364,669.307001 106.499165,677.204029 106.5,686.38 Z" id="Shape" fill="#DFDFE3"></path>
<path d="M82.77,744.06 L87.55,710.06 C87.8071361,708.226119 86.9908966,706.407071 85.45,705.38 C78.3717357,700.699197 75.198423,691.93208 77.6408657,683.805198 C80.0833084,675.678315 87.5640273,670.113147 96.05,670.11 C96.64,670.11 97.2,670.23 97.78,670.28 C88.9158298,664.439589 76.9954116,666.89083 71.1550005,675.755 C65.3145894,684.61917 67.7658301,696.539589 76.63,702.38 C78.1708966,703.407071 78.9871361,705.226119 78.73,707.06 L73.53,744.06 L82.77,744.06 Z" id="Shape" fill="#000000" opacity="0.1"></path>
<g id="mycrypto__circ__blue-on-navy__64" transform="translate(116.000000, 0.000000)">
<g id="Oval">
<use fill="#0E97C0" fill-rule="evenodd" xlink:href="#path-1"></use>
<circle stroke="#000000" stroke-width="10" cx="145" cy="145" r="140"></circle>
</g>
<g id="Shape">
<use fill="#FFFFFF" fill-rule="evenodd" xlink:href="#path-2"></use>
<path stroke="#000000" stroke-width="8" d="M188.615845,157.045514 C192.345919,157.042015 195.922703,158.529278 198.558938,161.18796 C207.147021,169.921038 207.147021,183.907953 198.545337,192.654794 L161.019673,230.446405 C156.920619,234.63848 151.299528,237.001283 145.43269,236.999999 C139.564101,237.001283 133.943011,234.63848 129.860411,230.463134 L92.4410624,192.64103 C83.8529792,183.907953 83.8529792,169.921038 92.43466,161.194486 C95.0808463,158.491293 98.7135322,156.97774 102.469597,157.000181 C106.233006,156.994884 109.839491,158.507091 112.460246,161.184216 L131.367831,180.360573 C135.101381,184.140716 140.200532,186.269768 145.522728,186.269768 C150.844925,186.269768 155.944075,184.140716 159.681922,180.356229 L178.620644,161.239759 C181.250148,158.553734 184.854412,157.04169 188.615845,157.045514 Z"></path>
</g>
<g id="Shape">
<use fill="#FFFFFF" fill-rule="evenodd" xlink:href="#path-3"></use>
<path stroke="#000000" stroke-width="8" d="M202.040474,66.1355972 L237.725444,102.131712 C246.04793,110.484953 246.097573,123.916573 237.841274,132.325713 C235.266991,134.955906 231.735561,136.442783 228.078079,136.452944 C224.489385,136.491829 221.04054,135.063746 218.589021,132.548943 L200.404236,114.526472 C196.889641,110.992779 192.087385,109.000803 187.072847,108.999923 C181.852016,108.998433 176.853916,111.084803 173.19233,114.803004 L154.75965,133.250984 C151.540339,136.482558 146.918005,137.910572 142.427343,137.068939 C139.6715,136.621548 137.130545,135.309495 135.214367,133.359039 L117.029582,115.336568 C113.514987,111.802875 108.712732,109.810899 103.698193,109.81002 C98.4773619,109.808529 93.4792623,111.894899 89.8176762,115.6131 L71.342109,134.103486 C66.0080011,139.298838 57.4710828,139.298838 52.1369749,134.103486 L52.0533278,134.019565 C43.8537978,125.545797 44.0027341,112.113679 52.3653122,103.843324 L88.6739243,67.3644502 C92.6937441,63.2672699 98.2071356,60.9539862 103.896827,60.945877 C109.437203,60.8420122 114.789016,62.9515583 118.795729,66.8493127 L145.118845,93.3029813 L171.957756,66.4193382 C175.977576,62.3221578 181.490967,60.0088741 187.244763,60.000077 C192.806086,59.9849645 198.140396,62.1958781 202.040474,66.1355972 Z"></path>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 29 KiB

View File

Before

Width:  |  Height:  |  Size: 7.1 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

View File

Before

Width:  |  Height:  |  Size: 7.2 KiB

After

Width:  |  Height:  |  Size: 7.2 KiB

View File

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

Before

Width:  |  Height:  |  Size: 6.3 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

View File

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="553px" height="473px" viewBox="0 0 553 473" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 48.2 (47327) - http://www.bohemiancoding.com/sketch -->
<title>Artboard</title>
<desc>Created with Sketch.</desc>
<defs>
<path d="M48.7644589,41.0113792 C48.0626471,41.010434 47.3902214,41.2802307 46.8999148,41.7594881 L41.9475908,46.5428517 C40.7757433,47.6781822 39.1757289,48.317442 37.505938,48.317442 C35.8361472,48.317442 34.2361328,47.6781822 33.0642853,46.5428517 L28.1238373,41.7481532 C27.6335307,41.2688957 26.961105,40.999099 26.2592933,41.0000442 C25.5533652,40.9960279 24.876052,41.2660656 24.3828731,41.7481532 C22.5390423,43.5422964 22.5390423,46.4149512 24.3828731,48.2090944 L34.1568844,57.6624717 C35.031065,58.517955 36.2301542,59.0002619 37.4821859,58.9999999 C38.7342175,59.0002619 39.9333067,58.517955 40.8074874,57.6624717 L50.6171269,48.2090944 C52.4609577,46.4149512 52.4609577,43.5422964 50.6171269,41.7481532 C50.1277271,41.2758692 49.4604237,41.0104942 48.7644589,41.0113792 Z" id="path-1"></path>
<path d="M50.6923119,17.2730241 C49.8977174,16.4558867 48.8098023,15.9968775 47.6751073,16.000016 C46.4907776,16.0018597 45.3573368,16.4859158 44.5317079,17.3424609 L37.0288495,24.9920822 L29.6636582,17.4581889 C28.8567701,16.6593792 27.7653217,16.2214761 26.6349814,16.2430448 C25.4506517,16.2448885 24.3172109,16.7289446 23.491582,17.5854897 L14.3137735,26.9710311 C12.5892093,28.7070696 12.5586108,31.515931 14.2449399,33.2897804 C15.2001334,34.2367399 16.7314246,34.2367399 17.6866181,33.2897804 L22.3443559,28.544932 C23.4544631,27.3974842 24.9767464,26.7506859 26.5661478,26.7511479 C28.1014213,26.751422 29.5725106,27.3725267 30.6502726,28.4754952 L35.2391768,33.1046156 C35.5844971,33.4622991 36.0352158,33.6977525 36.52407,33.775838 C37.3343856,33.9346477 38.1697358,33.6740278 38.7496886,33.08147 L43.4074264,28.3366216 C44.5175335,27.1891738 46.0398169,26.5423755 47.6292183,26.5428375 C49.1644917,26.5431116 50.6355811,27.1642162 51.713343,28.2671848 L56.3022473,32.8963051 C56.7406263,33.3538792 57.3464196,33.6092028 57.9771973,33.602246 C58.6388643,33.6003513 59.2717607,33.3291173 59.7324532,32.8500139 C61.431399,31.0887159 61.4211999,28.2799601 59.7095087,26.5312647 L50.6923119,17.2730241 Z" id="path-2"></path>
</defs>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Artboard" fill-rule="nonzero">
<g id="slide-06" transform="translate(20.000000, 20.000000)">
<rect id="Rectangle-path" fill="#DFDFE3" x="8.72" y="8.52" width="448" height="400"></rect>
<path d="M488.72,264.52 L504.72,264.52 L504.72,232.52 L488.72,232.52 L488.72,200.52 L344.72,200.52 L344.72,232.52 L360.72,232.52 L360.72,264.52 L344.72,264.52 L344.72,280.52 C317.055173,280.503666 291.827559,296.339673 279.816914,321.261296 C267.80627,346.18292 271.136945,375.782214 288.385743,397.411404 C305.634541,419.040594 333.750627,428.874074 360.72,422.71 L360.72,424.52 L504.72,424.52 L504.72,392.52 L488.72,392.52 L488.72,360.52 L504.72,360.52 L504.72,328.52 L488.72,328.52 L488.72,264.52 Z" id="Shape" fill="#FFA21A"></path>
<path d="M266.34,368.52 L48.72,368.52 L48.72,320.52 L72.72,320.52 L72.72,240.52 L48.72,240.52 L48.72,176.52 L72.72,176.52 L72.72,96.52 L48.72,96.52 L48.72,48.52 L416.72,48.52 L416.72,192.52 L384.72,192.52 L384.72,128.52 L400.72,128.52 L400.72,112.52 L368.72,112.52 L368.72,192.52 L351.59,192.52 C343.89,133.72 293.59,88.14 232.73,88.14 C185.129503,88.0254108 141.96119,116.057069 122.701925,159.587532 C103.442661,203.117995 111.733795,253.916954 143.834499,289.064717 C175.935203,324.21248 225.776194,337.063658 270.87,321.82 C264.716852,336.58163 263.138691,352.850967 266.34,368.52 Z" id="Shape" fill="#A1ABB8"></path>
<path d="M288.21,295.95 C241.088793,325.876126 178.767939,313.488776 146.673106,267.81709 C114.578274,222.145404 124.040628,159.313891 168.163059,125.120437 C212.28549,90.9269836 275.490458,97.4436792 311.707864,139.920505 C347.925269,182.39733 344.368463,245.83773 303.63,284" id="Shape" fill="#7D8694"></path>
<rect id="Rectangle-path" fill="#000000" x="64.72" y="64.52" width="16" height="16"></rect>
<rect id="Rectangle-path" fill="#000000" x="384.72" y="64.52" width="16" height="16"></rect>
<rect id="Rectangle-path" fill="#000000" x="64.72" y="336.52" width="16" height="16"></rect>
<rect id="Rectangle-path" fill="#000000" x="224.72" y="272.52" width="16" height="24"></rect>
<rect id="Rectangle-path" fill="#000000" x="224.72" y="120.52" width="16" height="24"></rect>
<rect id="Rectangle-path" fill="#000000" x="144.72" y="200.52" width="24" height="16"></rect>
<rect id="Rectangle-path" fill="#000000" x="296.72" y="200.52" width="24" height="16"></rect>
<rect id="Rectangle-path" fill="#000000" transform="translate(286.425037, 262.237020) rotate(-45.020000) translate(-286.425037, -262.237020) " x="278.430037" y="250.23702" width="15.99" height="24"></rect>
<rect id="Rectangle-path" fill="#000000" transform="translate(178.958294, 154.738867) rotate(-45.020000) translate(-178.958294, -154.738867) " x="170.963294" y="142.738867" width="15.99" height="24"></rect>
<rect id="Rectangle-path" fill="#000000" transform="translate(178.986632, 262.273271) rotate(-44.990000) translate(-178.986632, -262.273271) " x="166.986632" y="254.278271" width="24" height="15.99"></rect>
<rect id="Rectangle-path" fill="#000000" transform="translate(286.451947, 154.780667) rotate(-44.990000) translate(-286.451947, -154.780667) " x="274.451947" y="146.785667" width="24" height="15.99"></rect>
<path d="M280.07,201.88 L294.85,186.56 L273.73,183.93 C261.080955,162.769557 234.458731,154.631894 212.140557,165.103845 C189.822382,175.575795 179.065996,201.251942 187.25609,224.504577 C195.446185,247.757212 219.91939,261.024714 243.873864,255.198409 C267.828339,249.372104 283.474228,226.346673 280.07,201.93 L280.07,201.88 Z M232.73,245.68 C212.207099,245.68 195.57,229.042901 195.57,208.52 C195.57,187.997099 212.207099,171.36 232.73,171.36 C253.252901,171.36 269.89,187.997099 269.89,208.52 C269.89,218.377178 265.973567,227.830485 259.002553,234.799624 C252.031538,241.768764 242.577177,245.682653 232.72,245.68 L232.73,245.68 Z" id="Shape" fill="#000000"></path>
<path d="M344.72,304.52 C318.210332,304.52 296.72,326.010332 296.72,352.52 C296.72,379.029668 318.210332,400.52 344.72,400.52 C371.229668,400.52 392.72,379.029668 392.72,352.52 C392.72,326.010332 371.229668,304.52 344.72,304.52 Z M344.72,394.71 C321.419106,394.71 302.53,375.820894 302.53,352.52 C302.53,329.219106 321.419106,310.33 344.72,310.33 C368.020894,310.33 386.91,329.219106 386.91,352.52 C386.887949,375.811754 368.011754,394.687949 344.72,394.71 Z" id="Shape" fill="#FFFFFF"></path>
<path d="M496.72,288.52 L496.72,272.52 L512.72,272.52 L512.72,224.52 L496.72,224.52 L496.72,192.52 L464.72,192.52 L464.72,0.52 L0.72,0.52 L0.72,416.52 L72.72,416.52 L72.72,432.52 L144.72,432.52 L144.72,416.52 L296.93,416.52 C312.894444,428.567837 332.822592,434.136574 352.72,432.11 L352.72,432.52 L512.72,432.52 L512.72,384.52 L496.72,384.52 L496.72,368.52 L512.72,368.52 L512.72,320.52 L496.72,320.52 L496.72,288.52 Z M480.72,208.52 L480.72,224.52 L352.72,224.52 L352.72,208.52 L480.72,208.52 Z M423.1,368.52 L480.72,368.52 L480.72,384.52 L418,384.52 C420.268921,379.384111 421.981998,374.020269 423.11,368.52 L423.1,368.52 Z M408.56,304.52 L480.71,304.52 L480.71,320.52 L418,320.52 C415.489064,314.83836 412.324374,309.468789 408.57,304.52 L408.56,304.52 Z M400.71,288.52 L392.5,288.52 C380.909933,279.785929 367.148492,274.394101 352.71,272.93 L352.71,272.52 L480.71,272.52 L480.71,288.52 L400.71,288.52 Z M288.2,295.95 C241.068914,325.859133 178.753342,313.450654 146.674155,267.768916 C114.594968,222.087177 124.077481,159.259772 168.210035,125.080639 C212.342589,90.9015064 275.544519,97.4373307 311.7489,139.92425 C347.95328,182.411168 344.378429,245.849495 303.63,284 C298.023664,287.342172 292.845498,291.355082 288.21,295.95 L288.2,295.95 Z M266.33,368.52 L48.72,368.52 L48.72,320.52 L72.72,320.52 L72.72,240.52 L48.72,240.52 L48.72,176.52 L72.72,176.52 L72.72,96.52 L48.72,96.52 L48.72,48.52 L416.72,48.52 L416.72,192.52 L384.72,192.52 L384.72,128.52 L400.72,128.52 L400.72,112.52 L368.72,112.52 L368.72,192.52 L351.59,192.52 C343.89,133.72 293.59,88.14 232.73,88.14 C185.129503,88.0254108 141.96119,116.057069 122.701925,159.587532 C103.442661,203.117995 111.733795,253.916954 143.834499,289.064717 C175.935203,324.21248 225.776194,337.063658 270.87,321.82 C264.716852,336.58163 263.138691,352.850967 266.34,368.52 L266.33,368.52 Z M56.71,256.52 L56.71,304.52 L40.71,304.52 L40.71,256.52 L56.71,256.52 Z M56.71,112.52 L56.71,160.52 L40.71,160.52 L40.71,112.52 L56.71,112.52 Z M352.71,240.52 L352.71,256.52 L342.45,256.52 C344.729498,251.328484 346.637626,245.981715 348.16,240.52 L352.71,240.52 Z M336.71,267.76 L336.71,272.93 C335.54,273.05 334.41,273.27 333.25,273.44 C334.47,271.58 335.62,269.68 336.72,267.76 L336.71,267.76 Z M72.71,400.52 L16.71,400.52 L16.71,16.52 L448.71,16.52 L448.71,192.52 L432.71,192.52 L432.71,32.52 L32.71,32.52 L32.71,96.52 L24.71,96.52 L24.71,176.52 L32.71,176.52 L32.71,240.52 L24.71,240.52 L24.71,320.52 L32.71,320.52 L32.71,384.52 L271.45,384.52 C273.957791,390.201161 277.119114,395.570712 280.87,400.52 L72.72,400.52 L72.71,400.52 Z M280.71,352.52 C280.711634,336.081672 287.067985,320.28037 298.45,308.42 C303.6683,304.958508 308.609831,301.096893 313.23,296.87 C335.97479,283.905022 364.339266,286.194656 384.71,302.64 L384.71,304.52 L386.9,304.52 C409.08524,323.969401 415.099998,356.064577 401.462639,382.22727 C387.825279,408.389962 358.070013,421.839937 329.420645,414.791689 C300.771278,407.743442 280.652481,382.023572 280.71,352.52 Z M496.71,416.52 L392.51,416.52 C398.570386,411.966972 403.956972,406.580386 408.51,400.52 L496.67,400.52 L496.71,416.52 Z M496.71,352.52 L424.71,352.52 C424.709675,347.145747 424.166925,341.785248 423.09,336.52 L496.71,336.52 L496.71,352.52 Z M368.71,256.52 L368.71,240.52 L496.71,240.52 L496.71,256.52 L368.71,256.52 Z" id="Shape" fill="#000000"></path>
<rect id="Rectangle-path" fill="#FFCE00" x="40.72" y="112.52" width="16" height="48"></rect>
<rect id="Rectangle-path" fill="#FFCE00" x="40.72" y="256.52" width="16" height="48"></rect>
</g>
<g id="mycrypto__circ__blue-on-navy__64" transform="translate(216.000000, 191.000000)">
<circle id="Oval" fill="#0E97C0" cx="37" cy="37" r="37"></circle>
<g id="Shape">
<use fill="#FFFFFF" fill-rule="evenodd" xlink:href="#path-1"></use>
<path stroke="#000000" stroke-width="2" d="M48.7644965,40.0113785 C49.7178355,40.010501 50.6345076,40.3752222 51.3145109,41.0314555 C53.5618297,43.2182135 53.5618297,46.7390341 51.3110373,48.9291558 L41.5069096,58.3771804 C40.4445637,59.4168045 38.9938635,60.0003162 37.4823951,59.9999999 C35.9705083,60.0003162 34.5198081,59.4168045 33.4616659,58.3812702 L23.6854891,48.9257921 C21.4381703,46.7390341 21.4381703,43.2182135 23.6838532,41.033051 C24.3665268,40.3657303 25.2975124,39.9945561 26.2579466,40.0000451 C27.2198046,39.9987497 28.1441246,40.3696137 28.8202797,41.0305404 L33.7601132,45.8246431 C34.7441958,46.7780599 36.0942246,47.317442 37.505938,47.317442 C38.9176514,47.317442 40.2676802,46.7780599 41.2528603,45.8235816 L46.2009116,41.0443696 C46.8793196,40.3812496 47.8031089,40.0104213 48.7644965,40.0113785 Z"></path>
</g>
<g id="Shape">
<use fill="#FFFFFF" fill-rule="evenodd" xlink:href="#path-2"></use>
<path stroke="#000000" stroke-width="2" d="M51.4089462,16.5755749 L60.4241362,25.8317595 C62.5143431,27.9671535 62.5267849,31.3935273 60.4532741,33.5431353 C59.804973,34.2173448 58.9130896,34.5995701 57.9882256,34.6021852 C57.0806293,34.612195 56.2095589,34.2450652 55.5920623,33.6003203 L50.9981107,28.9660716 C50.1082275,28.0553758 48.8948132,27.5430634 47.6289276,27.5428375 C46.3109236,27.5424544 45.0480085,28.0790505 44.1210535,29.0371473 L39.4643558,33.7809346 C38.649119,34.6138903 37.4729766,34.9808335 36.366338,34.76332 C35.6632061,34.6510076 35.0154337,34.3126142 34.5289919,33.8086307 L29.9350403,29.174382 C29.045157,28.2636862 27.8317427,27.7513739 26.5658571,27.7511479 C25.2478532,27.7507648 23.984938,28.2873609 23.0579831,29.2454578 L18.3906574,33.9999414 C17.0456517,35.3333529 14.8859064,35.3333529 13.5201797,33.9787815 C11.4610281,31.8127603 11.4983549,28.3862559 13.5987986,26.271881 L22.7716011,16.8914958 C23.7850983,15.8400476 25.1776999,15.2453122 26.6159032,15.2432268 C28.0166103,15.216499 29.3686031,15.7589359 30.3787257,16.7591335 L37.0300219,23.5627797 L43.811727,16.648467 C44.8252242,15.5970188 46.2178259,15.0022834 47.6723414,15.0000198 C49.0782647,14.9961311 50.4256692,15.564564 51.4089462,16.5755749 Z"></path>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

View File

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

View File

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 5.1 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 19 KiB

View File

@ -1 +0,0 @@
<svg id="Capa_1" data-name="Capa 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 527.44 445.03"><defs><style>.cls-1{fill:#dfdfe3;}.cls-2{fill:#ffa21a;}.cls-3{fill:#a1abb8;}.cls-4{fill:#7d8694;}.cls-5,.cls-8{fill:#fff;}.cls-6{fill:url(#linear-gradient);}.cls-7{fill:#ffce00;}.cls-8{stroke:#000;stroke-linejoin:round;stroke-width:2px;}</style><linearGradient id="linear-gradient" x1="343.48" y1="91.29" x2="132.55" y2="342.07" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#1aa59c"/><stop offset="1" stop-color="#005daf"/></linearGradient></defs><title>onboarding_icons</title><rect class="cls-1" x="15.72" y="14.52" width="448" height="400"/><path class="cls-2" d="M495.72,270.52h16v-32h-16v-32h-144v32h16v32h-16v16a72,72,0,1,0,16,142.19v1.81h144v-32h-16v-32h16v-32h-16v-64Z"/><path class="cls-3" d="M273.34,374.52H55.72v-48h24v-80h-24v-64h24v-80h-24v-48h368v144h-32v-64h16v-16h-32v80H358.59c-7.7-58.8-58-104.38-118.86-104.38a120,120,0,1,0,38.14,233.68,79.84,79.84,0,0,0-4.53,46.7Z"/><path class="cls-4" d="M295.21,301.95A104.51,104.51,0,1,1,310.63,290"/><rect x="71.72" y="70.52" width="16" height="16"/><rect x="391.72" y="70.52" width="16" height="16"/><rect x="71.72" y="342.52" width="16" height="16"/><rect x="231.72" y="278.52" width="16" height="24"/><rect x="231.72" y="126.52" width="16" height="24"/><rect x="151.72" y="206.52" width="24" height="16"/><rect x="303.72" y="206.52" width="24" height="16"/><rect x="285.43" y="256.26" width="15.99" height="24" transform="translate(-103.74 286.17) rotate(-45.02)"/><rect x="177.96" y="148.76" width="15.99" height="24" transform="translate(-59.2 178.64) rotate(-45.02)"/><rect x="173.99" y="260.27" width="24" height="15.99" transform="translate(-135.21 210.04) rotate(-44.99)"/><rect x="281.45" y="152.78" width="24" height="15.99" transform="translate(-27.75 254.54) rotate(-44.99)"/><path d="M287.07,207.88l14.78-15.32-21.12-2.63a48,48,0,1,0,6.34,18Zm-47.34,43.8a37.16,37.16,0,1,1,37.16-37.16A37.16,37.16,0,0,1,239.72,251.68Z"/><path class="cls-5" d="M351.72,310.52a48,48,0,1,0,48,48A48,48,0,0,0,351.72,310.52Zm0,90.19a42.19,42.19,0,1,1,42.19-42.19A42.23,42.23,0,0,1,351.72,400.71Z"/><path d="M503.72,294.52v-16h16v-48h-16v-32h-32V6.52H7.72v416h72v16h72v-16H303.93a79.28,79.28,0,0,0,55.79,15.59v.41h160v-48h-16v-16h16v-48h-16v-32Zm-16-80v16h-128v-16Zm-57.62,160h57.62v16H425A78.74,78.74,0,0,0,430.11,374.52Zm-14.54-64h72.15v16H425A79.93,79.93,0,0,0,415.57,310.52Zm-7.85-16h-8.21a79.43,79.43,0,0,0-39.79-15.59v-.41h128v16Zm-112.51,7.43A104.51,104.51,0,1,1,310.63,290,80.34,80.34,0,0,0,295.21,301.95Zm-21.87,72.57H55.72v-48h24v-80h-24v-64h24v-80h-24v-48h368v144h-32v-64h16v-16h-32v80H358.59c-7.7-58.8-58-104.38-118.86-104.38a120,120,0,1,0,38.14,233.68,79.84,79.84,0,0,0-4.53,46.7Zm-209.62-112v48h-16v-48Zm0-144v48h-16v-48Zm296,128v16H349.45a119.82,119.82,0,0,0,5.71-16Zm-16,27.24v5.17c-1.17.12-2.3.34-3.46.51C341.47,277.58,342.62,275.68,343.72,273.76Zm-264,132.76h-56v-384h432v176h-16v-160h-400v64h-8v80h8v64h-8v80h8v64H278.45a79.93,79.93,0,0,0,9.42,16H79.72Zm208-48a63.7,63.7,0,0,1,17.74-44.1,120.92,120.92,0,0,0,14.78-11.55,63.63,63.63,0,0,1,71.48,5.77v1.88h2.19a64,64,0,1,1-106.19,48Zm216,64H399.51a80.46,80.46,0,0,0,16-16h88.16Zm0-64h-72a79.87,79.87,0,0,0-1.62-16h73.62Zm-128-96v-16h128v16Z"/><circle class="cls-6" cx="239.77" cy="214.59" r="37.5"/><rect class="cls-7" x="47.72" y="118.52" width="16" height="48"/><rect class="cls-7" x="47.72" y="262.52" width="16" height="48"/><path class="cls-8" d="M243.46,226.43a11.58,11.58,0,0,1-2.67.31c-6.38,0-11.81-4.86-12.2-12.07a22.71,22.71,0,0,1,.66-4.09l-9.87-4.2a25.49,25.49,0,0,0-1.56,8.8c0,12.37,10.6,22.39,23,22.39a22.33,22.33,0,0,0,8.3-1.59Z"/><path class="cls-8" d="M240.79,191.6a22.31,22.31,0,0,0-9.32,2l5.56,9.44a11.54,11.54,0,0,1,3.76-.63c5.65,0,11.64,4.74,12.21,10.57l-16.07.07,25,10.61a22.9,22.9,0,0,0,1.74-9.51C263.72,201.82,253.15,191.6,240.79,191.6Z"/></svg>

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 67 KiB

View File

@ -0,0 +1 @@
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 48 48" xml:space="preserve" width="48" height="48"><g class="nc-icon-wrapper"><path fill="#0e97c0" d="M34,27h-8V3c0-0.55228-0.44772-1-1-1h-2c-0.55228,0-1,0.44772-1,1v24h-8 c-0.375,0-0.71777,0.20947-0.88965,0.54248c-0.1709,0.33301-0.1416,0.73389,0.07617,1.03857l10,14 C23.37402,42.84424,23.67676,43,24,43s0.62598-0.15576,0.81348-0.41895l10-14c0.21777-0.30469,0.24707-0.70557,0.07617-1.03857 C34.71777,27.20947,34.375,27,34,27z"></path></g></svg>

After

Width:  |  Height:  |  Size: 570 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 KiB

After

Width:  |  Height:  |  Size: 134 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 71 KiB

View File

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="330px" height="330px" viewBox="0 0 330 330" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 46 (44423) - http://www.bohemiancoding.com/sketch -->
<title>Group 3</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Group-3">
<circle id="Oval-2" fill="#000000" cx="164.912047" cy="164.912047" r="164.912047"></circle>
<g id="Group-2" transform="translate(164.934365, 164.978810) rotate(-315.000000) translate(-164.934365, -164.978810) translate(65.924073, 66.000110)" fill="#FFFFFF">
<g id="Group">
<path d="M20.5676823,0 L75.3319399,0 C86.6911571,-2.08665436e-15 95.8996221,9.20846501 95.8996221,20.5676823 L95.8996221,75.3319399 C95.8996221,86.6911571 86.6911571,95.8996221 75.3319399,95.8996221 L20.5676823,95.8996221 C9.20846501,95.8996221 1.3911029e-15,86.6911571 0,75.3319399 L0,20.5676823 C-1.3911029e-15,9.20846501 9.20846501,2.08665436e-15 20.5676823,0 Z M47.9498111,65.9309902 C57.8805421,65.9309902 65.9309902,57.8805421 65.9309902,47.9498111 C65.9309902,38.01908 57.8805421,29.9686319 47.9498111,29.9686319 C38.01908,29.9686319 29.9686319,38.01908 29.9686319,47.9498111 C29.9686319,57.8805421 38.01908,65.9309902 47.9498111,65.9309902 Z" id="Combined-Shape"></path>
<path d="M122.460048,7.71386383 C115.360537,7.71386383 109.605246,13.4691545 109.605246,20.5686652 L109.605246,75.3329229 C109.605246,82.4324336 115.360537,88.1877243 122.460048,88.1877243 L177.224305,88.1877243 C184.323816,88.1877243 190.079107,82.4324336 190.079107,75.3329229 L190.079107,20.5686652 C190.079107,13.4691545 184.323816,7.71386383 177.224305,7.71386383 L122.460048,7.71386383 Z M122.460048,0.000982982783 L177.224305,0.000982982783 C188.583523,0.000982982783 197.791988,9.20944799 197.791988,20.5686652 L197.791988,75.3329229 C197.791988,86.6921401 188.583523,95.9006051 177.224305,95.9006051 L122.460048,95.9006051 C111.100831,95.9006051 101.892366,86.6921401 101.892366,75.3329229 L101.892366,20.5686652 C101.892366,9.20944799 111.100831,0.000982982783 122.460048,0.000982982783 Z" id="Combined-Shape" fill-rule="nonzero"></path>
<circle id="Oval" cx="149.842177" cy="47.9507941" r="17.9811792"></circle>
<path d="M20.5676823,101.893349 L75.3319399,101.893349 C86.6911571,101.893349 95.8996221,111.101814 95.8996221,122.461031 L95.8996221,177.225288 C95.8996221,188.584506 86.6911571,197.792971 75.3319399,197.792971 L20.5676823,197.792971 C9.20846501,197.792971 1.3911029e-15,188.584506 0,177.225288 L0,122.461031 C-1.3911029e-15,111.101814 9.20846501,101.893349 20.5676823,101.893349 Z M47.9498111,167.824339 C57.8805421,167.824339 65.9309902,159.773891 65.9309902,149.84316 C65.9309902,139.912429 57.8805421,131.86198 47.9498111,131.86198 C38.01908,131.86198 29.9686319,139.912429 29.9686319,149.84316 C29.9686319,159.773891 38.01908,167.824339 47.9498111,167.824339 Z" id="Combined-Shape"></path>
<path d="M122.461031,101.893349 L177.225288,101.893349 C188.584506,101.893349 197.792971,111.101814 197.792971,122.461031 L197.792971,177.225288 C197.792971,188.584506 188.584506,197.792971 177.225288,197.792971 L122.461031,197.792971 C111.101814,197.792971 101.893349,188.584506 101.893349,177.225288 L101.893349,122.461031 C101.893349,111.101814 111.101814,101.893349 122.461031,101.893349 Z M149.84316,167.824339 C159.773891,167.824339 167.824339,159.773891 167.824339,149.84316 C167.824339,139.912429 159.773891,131.86198 149.84316,131.86198 C139.912429,131.86198 131.86198,139.912429 131.86198,149.84316 C131.86198,159.773891 139.912429,167.824339 149.84316,167.824339 Z" id="Combined-Shape"></path>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

@ -163,34 +163,6 @@ textarea {
}
}
input[type="text"] + .eye {
cursor: pointer;
&:before {
content: "";
width: 20px;
height: 20px;
margin-left: 6px;
margin-right: 6px;
display: inline-block;
vertical-align: middle;
background: url("../images/icon-eye.svg");
}
}
input[type="password"] + .eye {
cursor: pointer;
&:before {
content: "";
width: 20px;
height: 20px;
margin-left: 6px;
margin-right: 6px;
display: inline-block;
vertical-align: middle;
background: url("../images/icon-eye-closed.svg");
}
}
// collapsable containers
.collapse-container {
h2,
@ -398,4 +370,4 @@ label small {
.ens-response {
color: @gray;
}
}

View File

@ -1,23 +0,0 @@
@font-face {
font-family: 'Lato';
src: url('../fonts/Lato-Light.woff2') format('woff2'),
url('../fonts/Lato-Light.woff') format('woff');
font-style: normal;
font-weight: 300;
}
@font-face {
font-family: 'Lato';
src: url('../fonts/Lato-Regular.woff2') format('woff2'),
url('../fonts/Lato-Regular.woff') format('woff');
font-style: normal;
font-weight: 400;
}
@font-face {
font-family: 'Lato';
src: url('../fonts/Lato-Bold.woff2') format('woff2'),
url('../fonts/Lato-Bold.woff') format('woff');
font-style: normal;
font-weight: 700;
}

View File

@ -1,8 +1,7 @@
@import "etherwallet-variables.less";
@import "etherwallet-fonts.less";
@import 'etherwallet-variables.less';
// Core variables and mixins
@import "bootstrap/mixins.less";
@import 'bootstrap/mixins.less';
// Utility classes
@import "etherwallet-custom.less";
@import "etherwallet-ext-custom.less";
@import "etherwallet-utilities.less";
@import 'etherwallet-custom.less';
@import 'etherwallet-ext-custom.less';
@import 'etherwallet-utilities.less';

View File

@ -3,19 +3,19 @@
@ether-blue: #0e97c0;
@space-xs: 0.25rem;
@space-sm: 0.50rem;
@space-sm: 0.5rem;
@space-md: 0.75rem;
@space: 1.00rem;
@space-lg: 1.50rem;
@space-xl: 2.00rem;
@space: 1rem;
@space-lg: 1.5rem;
@space-xl: 2rem;
@gray-base: #000;
@gray-darker: lighten(@gray-base, 13.5%);
@gray-dark: lighten(@gray-base, 20%);
@gray: #737373;
@gray-light: #9A9A9A;
@gray-lighter: #ECECEC;
@gray-lightest: #FAFAFA;
@gray-light: #9a9a9a;
@gray-lighter: #ececec;
@gray-lightest: #fafafa;
@brand-primary: @ether-blue;
@brand-success: #5dba5a;
@ -34,8 +34,8 @@
// Typography
@font-family-sans-serif: 'Lato', sans-serif;
@font-family-serif: Georgia, "Times New Roman", Times, serif;
@font-family-monospace: Menlo, Monaco, Consolas, "Courier New", monospace;
@font-family-serif: Georgia, 'Times New Roman', Times, serif;
@font-family-monospace: 'Roboto Mono', Menlo, Monaco, Consolas, 'Courier New', monospace;
@font-family-base: @font-family-sans-serif;
@base: 15;
@ -44,14 +44,14 @@
@font-size-pixels-sm: @base+px; // for small screens
@font-size-large-bump: 2.25rem; // 33.75
@font-size-large: 1.90rem; // 28.5
@font-size-medium-bump: 1.50rem; // 22.5
@font-size-medium: 1.30rem; // 19.5
@font-size-large: 1.9rem; // 28.5
@font-size-medium-bump: 1.5rem; // 22.5
@font-size-medium: 1.3rem; // 19.5
@font-size-bump-more: 1.15rem; // 17.25
@font-size-bump: 1.07rem; // 16.05
@font-size-base: 1.00rem; // 15
@font-size-base: 1rem; // 15
@font-size-small: 0.92rem; // 13.8
@font-size-xs: 0.80rem; // 12
@font-size-xs: 0.8rem; // 12
@font-size-h1: @font-size-large-bump;
@font-size-h2: @font-size-large;
@ -158,7 +158,7 @@
@cursor-disabled: default;
@dropdown-bg: #fff;
@dropdown-border: rgba(0, 0, 0, .15);
@dropdown-border: rgba(0, 0, 0, 0.15);
@dropdown-fallback-border: @gray-lighter;
@dropdown-divider-bg: #e5e5e5;
@ -240,7 +240,7 @@
@tooltip-max-width: 200px;
@tooltip-color: #fff;
@tooltip-bg: #000;
@tooltip-opacity: .9;
@tooltip-opacity: 0.9;
@tooltip-arrow-width: @space-sm;
@tooltip-arrow-color: @tooltip-bg;
@ -261,11 +261,11 @@
@modal-title-line-height: @line-height-base;
@modal-content-bg: #fff;
@modal-content-border-color: rgba(0, 0, 0, .2);
@modal-content-border-color: rgba(0, 0, 0, 0.2);
@modal-content-fallback-border-color: #999;
@modal-backdrop-bg: #000;
@modal-backdrop-opacity: .5;
@modal-backdrop-opacity: 0.5;
@modal-header-border-color: #e5e5e5;
@modal-footer-border-color: @modal-header-border-color;

View File

@ -3,7 +3,7 @@
.AlphaAgreement {
@include cover-message;
background: $brand-warning;
background: $brand-info;
&-content {
&-buttons {

View File

@ -7,7 +7,7 @@ interface State {
isFading: boolean;
hasAcknowledged: boolean;
}
export default class AlphaAgreement extends React.Component<{}, State> {
export default class AlphaAgreement extends React.PureComponent<{}, State> {
public state = {
hasAcknowledged: !!localStorage.getItem(LS_KEY),
isFading: false
@ -23,28 +23,27 @@ export default class AlphaAgreement extends React.Component<{}, State> {
return (
<div className={`AlphaAgreement ${isFading}`}>
<div className="AlphaAgreement-content">
<h2>This is an Unstable Version of MEW</h2>
<h2>This is an Unstable Version of MyCrypto</h2>
<p>
You are about to access an alpha version of MyEtherWallet that is currently in
development. In its current state, it should only be used for testing, not for important
transactions.
You are about to access a beta version of MyCrypto that is currently in development. In
its current state, it should only be used for testing, not for important transactions.
</p>
<p>
Any wallets you generate should not hold a significant value, and any transactions you
make should be for small amounts. MEW does not claim responsibility for any issues that
happen while using the alpha version.
make should be for small amounts. MyCrypto does not claim responsibility for any issues
that happen while using the beta version.
</p>
<p>Are you sure you would like to continue?</p>
<div className="AlphaAgreement-content-buttons">
<button className="AlphaAgreement-content-buttons-btn is-reject" onClick={this.reject}>
No, Take Me to v3
No, take me to prod
</button>
<button
className="AlphaAgreement-content-buttons-btn is-continue"
onClick={this.doContinue}
>
Yes, Continue to v4
Yes, continue to beta
</button>
</div>
</div>
@ -62,6 +61,6 @@ export default class AlphaAgreement extends React.Component<{}, State> {
};
private reject = () => {
window.location.assign('https://myetherwallet.com');
window.location.assign('https://mycrypto.com');
};
}

View File

@ -1,6 +1,6 @@
import React, { Component } from 'react';
import { Query } from 'components/renderCbs';
import { ICurrentValue, getCurrentValue, isValidAmount } from 'selectors/transaction';
import { ICurrentValue, getCurrentValue, nonStandardTransaction } from 'selectors/transaction';
import { AppState } from 'reducers';
import { connect } from 'react-redux';
import { CallbackProps } from 'components/AmountFieldFactory';
@ -11,15 +11,15 @@ interface OwnProps {
}
interface StateProps {
isNonStandard: boolean;
currentValue: ICurrentValue;
validAmount: boolean;
}
type Props = OwnProps & StateProps;
class AmountInputClass extends Component<Props> {
public render() {
const { currentValue, onChange, withProps, validAmount } = this.props;
const { currentValue, onChange, withProps, isNonStandard } = this.props;
return (
<Query
@ -27,7 +27,7 @@ class AmountInputClass extends Component<Props> {
withQuery={({ readOnly }) =>
withProps({
currentValue,
isValid: validAmount,
isValid: !!currentValue.value || isNonStandard,
readOnly: !!readOnly,
onChange
})
@ -39,5 +39,5 @@ class AmountInputClass extends Component<Props> {
export const AmountInput = connect((state: AppState) => ({
currentValue: getCurrentValue(state),
validAmount: isValidAmount(state)
isNonStandard: nonStandardTransaction(state)
}))(AmountInputClass);

View File

@ -11,6 +11,29 @@
&-header {
margin-top: 0;
display: inline-block;
}
&-refresh {
background: transparent;
border: none;
padding: 0;
height: 1.4rem;
width: 1.2rem;
opacity: 0.3;
transition: opacity 0.3s;
> img {
height: inherit;
width: inherit;
vertical-align: top;
}
&:hover {
opacity: 0.54;
}
&:active {
transition: opacity 120ms;
opacity: 1;
}
}
}
@ -53,6 +76,16 @@
}
}
&-balance {
display: flex;
justify-content: flex-start;
align-items: center;
&-amount {
margin-right: $space-sm;
}
}
&-list {
&-item {
margin-bottom: 0;

View File

@ -1,13 +1,14 @@
import { Identicon, UnitDisplay } from 'components/ui';
import { NetworkConfig } from 'config';
import { IWallet, Balance, TrezorWallet, LedgerWallet } from 'libs/wallet';
import React from 'react';
import translate from 'translations';
import './AccountInfo.scss';
import Spinner from 'components/ui/Spinner';
import { getNetworkConfig } from 'selectors/config';
import { getNetworkConfig, getOffline } from 'selectors/config';
import { AppState } from 'reducers';
import { connect } from 'react-redux';
import { NetworkConfig } from 'types/network';
import { TSetAccountBalance, setAccountBalance } from 'actions/wallet';
interface OwnProps {
wallet: IWallet;
@ -16,6 +17,7 @@ interface OwnProps {
interface StateProps {
balance: Balance;
network: NetworkConfig;
isOffline: boolean;
}
interface State {
@ -24,7 +26,11 @@ interface State {
confirmAddr: boolean;
}
type Props = OwnProps & StateProps;
interface DispatchProps {
setAccountBalance: TSetAccountBalance;
}
type Props = OwnProps & StateProps & DispatchProps;
class AccountInfo extends React.Component<Props, State> {
public state = {
@ -33,8 +39,8 @@ class AccountInfo extends React.Component<Props, State> {
confirmAddr: false
};
public async setAddressFromWallet() {
const address = await this.props.wallet.getAddressString();
public setAddressFromWallet() {
const address = this.props.wallet.getAddressString();
if (address !== this.state.address) {
this.setState({ address });
}
@ -64,9 +70,16 @@ class AccountInfo extends React.Component<Props, State> {
};
public render() {
const { network, balance } = this.props;
const { network, balance, isOffline } = this.props;
const { address, showLongBalance, confirmAddr } = this.state;
const { blockExplorer, tokenExplorer } = network;
let blockExplorer;
let tokenExplorer;
if (!network.isCustom) {
// this is kind of ugly but its the result of typeguards, maybe we can find a cleaner solution later on such as just dedicating it to a selector
blockExplorer = network.blockExplorer;
tokenExplorer = network.tokenExplorer;
}
const wallet = this.props.wallet as LedgerWallet | TrezorWallet;
return (
<div className="AccountInfo">
@ -108,23 +121,35 @@ class AccountInfo extends React.Component<Props, State> {
<div className="AccountInfo-section">
<h5 className="AccountInfo-section-header">{translate('sidebar_AccountBal')}</h5>
<ul className="AccountInfo-list">
<li className="AccountInfo-list-item">
<li className="AccountInfo-list-item AccountInfo-balance">
<span
className="AccountInfo-list-item-clickable mono wrap"
className="AccountInfo-list-item-clickable AccountInfo-balance-amount mono wrap"
onClick={this.toggleShowLongBalance}
>
{balance.isPending ? (
<Spinner />
) : (
<UnitDisplay
value={balance.wei}
unit={'ether'}
displayShortBalance={!showLongBalance}
checkOffline={true}
/>
)}
<UnitDisplay
value={balance.wei}
unit={'ether'}
displayShortBalance={!showLongBalance}
checkOffline={true}
symbol={balance.wei ? network.name : null}
/>
</span>
{!balance.isPending ? balance.wei ? <span> {network.name}</span> : null : null}
{balance.wei && (
<React.Fragment>
{balance.isPending ? (
<Spinner />
) : (
!isOffline && (
<button
className="AccountInfo-section-refresh"
onClick={this.props.setAccountBalance}
>
<i className="fa fa-refresh" />
</button>
)
)}
</React.Fragment>
)}
</li>
</ul>
</div>
@ -162,12 +187,12 @@ class AccountInfo extends React.Component<Props, State> {
);
}
}
function mapStateToProps(state: AppState): StateProps {
return {
balance: state.wallet.balance,
network: getNetworkConfig(state)
network: getNetworkConfig(state),
isOffline: getOffline(state)
};
}
export default connect(mapStateToProps)(AccountInfo);
const mapDispatchToProps: DispatchProps = { setAccountBalance };
export default connect(mapStateToProps, mapDispatchToProps)(AccountInfo);

View File

@ -12,9 +12,9 @@
}
}
.Spinner {
display: block;
margin: auto;
&-spinner {
text-align: center;
padding: 1.6rem;
}
&-title {
@ -25,15 +25,39 @@
&-values {
display: flex;
flex-wrap: wrap;
&-spacer {
height: 1px;
width: 100%;
margin: 0.5rem 0rem;
margin-bottom: 0.75rem;
background-color: #ececec;
background-position: center;
background-size: 1px 1px;
}
&-currency {
width: 50%;
min-width: 50%;
margin-bottom: $space-xs;
display: flex;
flex-wrap: nowrap;
align-items: center;
&-fiat-symbol {
height: 18px;
width: 18px;
margin-right: 0.5rem;
text-align: center;
}
&-coin-and-token {
img {
height: 18px;
width: 18px;
margin-right: 0.5rem;
}
}
&-label {
white-space: pre-wrap;
display: inline-block;
min-width: 36px;
opacity: 0.54;
margin-right: 8px;
}
&-value {
font-weight: 600;

View File

@ -2,16 +2,20 @@ import React from 'react';
import translate from 'translations';
import { UnitDisplay, Spinner } from 'components/ui';
import Select from 'react-select';
import { TFetchCCRates, fetchCCRates, rateSymbols } from 'actions/rates';
import { TFetchCCRatesRequested, fetchCCRatesRequested } from 'actions/rates';
import { rateSymbols } from 'api/rates';
import { chain, flatMap } from 'lodash';
import { TokenBalance, getShownTokenBalances } from 'selectors/wallet';
import { TokenBalance, getNonZeroShownTokenBalances } from 'selectors/wallet';
import { Balance } from 'libs/wallet';
import { NetworkConfig } from 'config';
import './EquivalentValues.scss';
import { Wei } from 'libs/units';
import { AppState } from 'reducers';
import { getNetworkConfig } from 'selectors/config';
import { getNetworkConfig, getOffline } from 'selectors/config';
import { connect } from 'react-redux';
import btcIco from 'assets/images/bitcoin.png';
import ethIco from 'assets/images/ether.png';
import repIco from 'assets/images/augur.png';
import { NetworkConfig } from 'types/network';
interface AllValue {
symbol: string;
@ -36,14 +40,15 @@ interface State {
interface StateProps {
balance: Balance;
network: NetworkConfig;
tokenBalances: TokenBalance[];
rates: AppState['rates']['rates'];
ratesError: AppState['rates']['ratesError'];
isOffline: AppState['config']['offline'];
isOffline: AppState['config']['meta']['offline'];
}
interface DispatchProps {
fetchCCRates: TFetchCCRates;
fetchCCRates: TFetchCCRatesRequested;
}
type Props = StateProps & DispatchProps;
@ -67,7 +72,7 @@ class EquivalentValues extends React.Component<Props, State> {
public defaultOption(
balance: Balance,
tokenBalances: TokenBalance[],
network: NetworkConfig
network: StateProps['network']
): DefaultOption {
return {
label: 'All',
@ -113,9 +118,23 @@ class EquivalentValues extends React.Component<Props, State> {
const { equivalentValues, options } = this.state;
const isFetching =
!balance || balance.isPending || !tokenBalances || Object.keys(rates).length === 0;
const pairRates = this.generateValues(equivalentValues.label, equivalentValues.value);
const fiatSymbols = {
USD: '$',
EUR: '€',
GBP: '£',
CHF: ' '
};
const coinAndTokenSymbols = {
BTC: btcIco,
ETH: ethIco,
REP: repIco
};
const Value = ({ rate, value }) => (
<div className="EquivalentValues-values-currency">
const Value = ({ className = '', rate, value, symbol = '', icon = '' }) => (
<div className={`EquivalentValues-values-currency ${className}`}>
<img src={icon} />
{!!symbol && <span className="EquivalentValues-values-currency-fiat-symbol">{symbol}</span>}
<span className="EquivalentValues-values-currency-label">{rate}</span>{' '}
<span className="EquivalentValues-values-currency-value">
<UnitDisplay
@ -156,12 +175,42 @@ class EquivalentValues extends React.Component<Props, State> {
) : ratesError ? (
<h5>{ratesError}</h5>
) : isFetching ? (
<Spinner size="x2" />
<div className="EquivalentValues-spinner">
<Spinner size="x3" />
</div>
) : (
<div className="EquivalentValues-values">
{this.generateValues(equivalentValues.label, equivalentValues.value).map((equiv, i) => (
<Value rate={equiv.rate} value={equiv.value} key={i} />
))}
{pairRates.length ? (
<React.Fragment>
{pairRates.map(
(equiv, i) =>
(rateSymbols.symbols.fiat as string[]).includes(equiv.rate) && (
<Value
className="EquivalentValues-values-currency-fiat"
rate={equiv.rate}
value={equiv.value}
symbol={fiatSymbols[equiv.rate]}
key={i}
/>
)
)}
<div className="EquivalentValues-values-spacer" />
{pairRates.map(
(equiv, i) =>
(rateSymbols.symbols.coinAndToken as string[]).includes(equiv.rate) && (
<Value
className="EquivalentValues-values-currency-coin-and-token"
rate={equiv.rate}
value={equiv.value}
icon={coinAndTokenSymbols[equiv.rate]}
key={i}
/>
)
)}
</React.Fragment>
) : (
<p>Sorry, equivalent values are not supported for this unit.</p>
)}
</div>
)}
</div>
@ -251,16 +300,15 @@ class EquivalentValues extends React.Component<Props, State> {
this.requestedCurrencies = currencies;
}
}
function mapStateToProps(state: AppState): StateProps {
return {
balance: state.wallet.balance,
tokenBalances: getShownTokenBalances(state, true),
tokenBalances: getNonZeroShownTokenBalances(state),
network: getNetworkConfig(state),
rates: state.rates.rates,
ratesError: state.rates.ratesError,
isOffline: state.config.offline
isOffline: getOffline(state)
};
}
export default connect(mapStateToProps, { fetchCCRates })(EquivalentValues);
export default connect(mapStateToProps, { fetchCCRates: fetchCCRatesRequested })(EquivalentValues);

View File

@ -1,17 +0,0 @@
import React from 'react';
import { Link } from 'react-router-dom';
import BityLogo from 'assets/images/logo-bity-white.svg';
export const Bity: React.SFC = () => (
<Link className="Promos-promo Promos-Bity" target="_blank" rel="noopener noreferrer" to="/swap">
<div className="Promos-promo-inner">
<div className="Promos-promo-text">
<p>Its now easier to get more ETH</p>
<h5>Swap BTC &lt;-&gt; ETH</h5>
</div>
<div className="Promos-promo-images">
<img src={BityLogo} />
</div>
</div>
</Link>
);

View File

@ -1,12 +1,11 @@
import React from 'react';
import CoinbaseLogo from 'assets/images/logo-coinbase.svg';
import { NewTabLink } from 'components/ui';
export const Coinbase: React.SFC = () => (
<a
className="Promos-promo Promos-Coinbase"
target="_blank"
rel="noopener noreferrer"
href="https://buy.coinbase.com?code=a6e1bd98-6464-5552-84dd-b27f0388ac7d&address=0xA7DeFf12461661212734dB35AdE9aE7d987D648c&crypto_currency=ETH&currency=USD"
<NewTabLink
className="Promos-promo Promos--coinbase"
href="https://buy.coinbase.com?code=60c05061-3a76-57be-b1cd-a7afa97bcb8c&address=0xA7DeFf12461661212734dB35AdE9aE7d987D648c&crypto_currency=ETH&currency=USD"
>
<div className="Promos-promo-inner">
<div className="Promos-promo-text">
@ -17,5 +16,5 @@ export const Coinbase: React.SFC = () => (
<img src={CoinbaseLogo} />
</div>
</div>
</a>
</NewTabLink>
);

View File

@ -1,15 +1,11 @@
import React from 'react';
import { knowledgeBaseURL } from 'config/data';
import { HELP_ARTICLE } from 'config';
import { HelpLink } from 'components/ui';
import ledgerLogo from 'assets/images/logo-ledger.svg';
import trezorLogo from 'assets/images/logo-trezor.svg';
export const HardwareWallets: React.SFC = () => (
<a
className="Promos-promo Promos-HardwareWallets"
target="_blank"
rel="noopener noreferrer"
href={`${knowledgeBaseURL}/security/securing-your-ethereum`}
>
<HelpLink className="Promos-promo Promos--hardware" article={HELP_ARTICLE.PROTECT_YOUR_FUNDS}>
<div className="Promos-promo-inner">
<div className="Promos-promo-text">
<h6>Learn more about protecting your funds.</h6>
@ -19,5 +15,5 @@ export const HardwareWallets: React.SFC = () => (
<img src={trezorLogo} />
</div>
</div>
</a>
</HelpLink>
);

View File

@ -0,0 +1,20 @@
import React from 'react';
import { Link } from 'react-router-dom';
import ShapeshiftLogo from 'assets/images/logo-shapeshift.svg';
export const Shapeshift: React.SFC = () => (
<Link className="Promos-promo Promos--shapeshift" to="/swap">
<div className="Promos-promo-inner">
<div className="Promos-promo-text">
<h5>
Exchange Coins
<br />
& Tokens with
</h5>
</div>
<div className="Promos-promo-images">
<img src={ShapeshiftLogo} />
</div>
</div>
</Link>
);

View File

@ -1,3 +1,3 @@
export * from './HardwareWallets';
export * from './Coinbase';
export * from './Bity';
export * from './Shapeshift';

View File

@ -9,18 +9,6 @@
overflow: hidden;
}
&-Bity {
background-color: #006e79;
}
&-Coinbase {
background-color: #2b71b1;
}
&-HardwareWallets {
background-color: #6e9a3e;
}
&-promo {
position: relative;
height: inherit;
@ -42,19 +30,18 @@
position: absolute;
display: flex;
align-items: center;
justify-content: center;
top: 50%;
left: 0;
width: 100%;
transform: translateY(-50%);
}
&-text,
&-images {
padding: 0 $space-sm;
padding: 0 $space;
}
&-text {
flex: 1;
flex: 5;
padding-right: $space-xs;
max-width: 220px;
p,
h4,
@ -73,15 +60,15 @@
}
&-images {
padding: 0 $space * 1.5;
flex: 3;
max-width: 108px;
padding-left: $space-xs;
img {
display: block;
margin: 0 auto;
width: 100%;
max-width: 96px;
height: auto;
padding: $space-xs;
}
}
}
@ -106,6 +93,23 @@
}
}
}
// Per-promo customizations
&--shapeshift {
background-color: #263A52;
.Promos-promo-images {
max-width: 130px;
}
}
&--coinbase {
background-color: #2b71b1;
}
&--hardware {
background-color: #6e9a3e;
}
}
.carousel-exit {

View File

@ -1,9 +1,9 @@
import React from 'react';
import { TransitionGroup, CSSTransition } from 'react-transition-group';
import { HardwareWallets, Coinbase, Bity } from './PromoComponents';
import { HardwareWallets, Coinbase, Shapeshift } from './PromoComponents';
import './Promos.scss';
const promos = [HardwareWallets, Coinbase, Bity];
const promos = [HardwareWallets, Coinbase, Shapeshift];
const CarouselAnimation = ({ children, ...props }) => (
<CSSTransition {...props} timeout={300} classNames="carousel">
@ -36,11 +36,7 @@ export default class Promos extends React.PureComponent<{}, State> {
return (
<div className="Promos">
<TransitionGroup className="Promos-promo-wrapper">
{promos
.filter(i => {
return i === promos[activePromo];
})
.map(promo => <CarouselAnimation key={Math.random()}>{promo}</CarouselAnimation>)}
<CarouselAnimation key={Math.random()}>{promos[activePromo]}</CarouselAnimation>
</TransitionGroup>
<div className="Promos-nav">
{promos.map((_, index) => {

View File

@ -1,10 +1,11 @@
import React from 'react';
import classnames from 'classnames';
import { Token } from 'config';
import { HELP_ARTICLE } from 'config';
import { isPositiveIntegerOrZero, isValidETHAddress } from 'libs/validators';
import translate from 'translations';
import NewTabLink from 'components/ui/NewTabLink';
import { HelpLink } from 'components/ui';
import './AddCustomTokenForm.scss';
import { Token } from 'types/network';
interface Props {
allTokens: Token[];
@ -23,7 +24,7 @@ interface State {
decimal: string;
}
export default class AddCustomTokenForm extends React.Component<Props, State> {
export default class AddCustomTokenForm extends React.PureComponent<Props, State> {
public state: State = {
tokenSymbolLookup: {},
address: '',
@ -86,12 +87,9 @@ export default class AddCustomTokenForm extends React.Component<Props, State> {
})}
<div className="AddCustom-buttons">
<NewTabLink
href="https://myetherwallet.github.io/knowledge-base/send/adding-new-token-and-sending-custom-tokens.html"
className="AddCustom-buttons-help"
>
<HelpLink article={HELP_ARTICLE.ADDING_NEW_TOKENS} className="AddCustom-buttons-help">
{translate('Need help? Learn how to add custom tokens.')}
</NewTabLink>
</HelpLink>
<button
className="AddCustom-buttons-btn btn btn-primary btn-sm"
disabled={!this.isValid()}

View File

@ -1,9 +1,9 @@
import React from 'react';
import translate from 'translations';
import { Token } from 'config';
import { TokenBalance } from 'selectors/wallet';
import AddCustomTokenForm from './AddCustomTokenForm';
import TokenRow from './TokenRow';
import { Token } from 'types/network';
interface Props {
allTokens: Token[];
@ -19,7 +19,7 @@ interface State {
trackedTokens: { [symbol: string]: boolean };
showCustomTokenForm: boolean;
}
export default class TokenBalances extends React.Component<Props, State> {
export default class TokenBalances extends React.PureComponent<Props, State> {
public state = {
trackedTokens: {},
showCustomTokenForm: false

View File

@ -19,7 +19,7 @@ interface State {
showLongBalance: boolean;
}
export default class TokenRow extends React.Component<Props, State> {
export default class TokenRow extends React.PureComponent<Props, State> {
public state = {
showLongBalance: false
};

View File

@ -13,12 +13,12 @@ import {
setWalletTokens,
TSetWalletTokens
} from 'actions/wallet';
import { getAllTokens } from 'selectors/config';
import { getAllTokens, getOffline } from 'selectors/config';
import { getTokenBalances, getWalletInst, getWalletConfig, TokenBalance } from 'selectors/wallet';
import { Token } from 'config';
import translate from 'translations';
import Balances from './Balances';
import Spinner from 'components/ui/Spinner';
import { Token } from 'types/network';
import './index.scss';
interface StateProps {
@ -29,7 +29,7 @@ interface StateProps {
tokensError: AppState['wallet']['tokensError'];
isTokensLoading: AppState['wallet']['isTokensLoading'];
hasSavedWalletTokens: AppState['wallet']['hasSavedWalletTokens'];
isOffline: AppState['config']['offline'];
isOffline: AppState['config']['meta']['offline'];
}
interface ActionProps {
addCustomToken: TAddCustomToken;
@ -118,7 +118,7 @@ function mapStateToProps(state: AppState): StateProps {
tokensError: state.wallet.tokensError,
isTokensLoading: state.wallet.isTokensLoading,
hasSavedWalletTokens: state.wallet.hasSavedWalletTokens,
isOffline: state.config.offline
isOffline: getOffline(state)
};
}

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