n8n-nodes-mightycall 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE CHANGED
@@ -1,23 +1,22 @@
1
- MIT License
2
-
3
- Copyright (c) 2025 cderamos-2ct
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
22
-
23
-
1
+ MIT License
2
+
3
+ Copyright (c) 2025 cderamos-2ct
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+
package/README.md CHANGED
@@ -1,107 +1,193 @@
1
- # n8n-nodes-mightycall
2
-
3
- This is an n8n community node for MightyCall phone system integration.
4
-
5
- [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.
6
-
7
- [Installation](#installation) | [Operations](#operations) | [Credentials](#credentials) | [Compatibility](#compatibility) | [Resources](#resources)
8
-
9
- ## Installation
10
-
11
- Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.
12
-
13
- ### Community Nodes (Recommended)
14
-
15
- 1. Go to **Settings > Community Nodes**
16
- 2. Select **Install a community node**
17
- 3. Enter `n8n-nodes-mightycall`
18
- 4. Click **Install**
19
- 5. Restart n8n
20
-
21
- ### Manual Installation
22
-
23
- ```bash
24
- npm install n8n-nodes-mightycall
25
- ```
26
-
27
- ## Operations
28
-
29
- ### Call Management
30
- - **Get Calls**: Retrieve active calls
31
- - **Get Call Details**: Get information about a specific call
32
- - **Make Call**: Initiate outbound call
33
- - **Transfer Call**: Transfer active call
34
- - **End Call**: Terminate active call
35
-
36
- ### Contact Management
37
- - **List Contacts**: Get all contacts
38
- - **Get Contact**: Retrieve contact details
39
- - **Create Contact**: Add new contact
40
- - **Update Contact**: Modify contact information
41
- - **Delete Contact**: Remove contact
42
-
43
- ### Journal (Call History)
44
- - **List Journal**: Get call history
45
- - **Get Journal Entry**: Get specific call record
46
- - **Search Journal**: Search call history
47
-
48
- ### Number Management
49
- - **List Numbers**: Get phone numbers
50
- - **Get Number**: Get number details
51
- - **Update Number**: Modify number settings
52
-
53
- ### Queue Operations
54
- - **List Queues**: Get call queues
55
- - **Get Queue**: Queue details
56
- - **Get Queue Stats**: Queue statistics
57
-
58
- ## Credentials
59
-
60
- You need a MightyCall API key and API login.
61
-
62
- Get them from:
63
- 1. Log into your MightyCall account
64
- 2. Go to **Settings > API**
65
- 3. Generate API credentials
66
-
67
- Required fields:
68
- - **API Key**: Your MightyCall API key
69
- - **API Login**: Your MightyCall API login
70
-
71
- ## Compatibility
72
-
73
- Tested with:
74
- - n8n v1.0.0+
75
- - Node.js 18+
76
-
77
- ## Usage Example
78
-
79
- ### Making a Call
80
-
81
- 1. Add **MightyCall** node to workflow
82
- 2. Select **Resource**: Call
83
- 3. Select **Operation**: Make Call
84
- 4. Set **Phone Number**: +1234567890
85
- 5. Execute workflow
86
-
87
- ## Resources
88
-
89
- - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
90
- - [MightyCall API Documentation](https://api.mightycall.com/docs)
91
- - [GitHub Repository](https://github.com/cderamos-2ct/n8n-nodes-mightycall)
92
-
93
- ## Version History
94
-
95
- ### 1.0.0
96
- - Initial release
97
- - Full API coverage
98
- - All major operations supported
99
-
100
- ## License
101
-
102
- [MIT](LICENSE)
103
-
104
- ## Author
105
-
106
- Created by cderamos-2ct
107
-
1
+ # n8n-nodes-mightycall
2
+
3
+ Community node package for integrating n8n with the MightyCall API.
4
+
5
+ This repository ships one custom n8n node, one credential type, compiled runtime files under `dist/`, and documentation for the live workflow compatibility contract.
6
+
7
+ [Install](#install) | [Credentials](#credentials) | [Repository Structure](#repository-structure) | [Build Semantics](#build-semantics) | [Runtime Semantics](#runtime-semantics) | [Compatibility Contract](#compatibility-contract) | [Operations](#operations) | [Validation](#validation)
8
+
9
+ ## Install
10
+
11
+ ### n8n Community Nodes
12
+
13
+ In n8n:
14
+
15
+ 1. Go to **Settings > Community Nodes**.
16
+ 2. Select **Install a community node**.
17
+ 3. Enter `n8n-nodes-mightycall`.
18
+ 4. Install and restart n8n.
19
+
20
+ ### Manual Install
21
+
22
+ ```bash
23
+ npm install n8n-nodes-mightycall
24
+ ```
25
+
26
+ For repository development:
27
+
28
+ ```bash
29
+ npm install
30
+ npm run build
31
+ ```
32
+
33
+ ## Credentials
34
+
35
+ Credential type: `mightyCallApi`
36
+
37
+ Defined in `credentials/MightyCallApi.credentials.ts`.
38
+
39
+ | Field | Purpose |
40
+ | --- | --- |
41
+ | Account Type | Standard or Contact Center; controls API base URL and route casing |
42
+ | API Key | MightyCall API key |
43
+ | Authentication Method | User Key or Extension Number |
44
+ | User Key | Secret key used as client_secret when selected |
45
+ | Extension Number | Extension used as client_secret when selected |
46
+
47
+ ## Repository Structure
48
+
49
+ Important tracked files and runtime outputs:
50
+
51
+ - `README.md`
52
+ - `LICENSE`
53
+ - `package.json`
54
+ - `package-lock.json`
55
+ - `tsconfig.json`
56
+ - `gulpfile.js`
57
+ - `credentials/MightyCallApi.credentials.ts`
58
+ - `credentials/mightycall.svg`
59
+ - `nodes/MightyCall.node.ts`
60
+ - `nodes/README.md`
61
+ - `nodes/mightycall.svg`
62
+ - `dist/credentials/MightyCallApi.credentials.js`
63
+ - `dist/credentials/MightyCallApi.credentials.d.ts`
64
+ - `dist/credentials/mightycall.svg`
65
+ - `dist/nodes/MightyCall.node.js`
66
+ - `dist/nodes/MightyCall.node.d.ts`
67
+ - `dist/nodes/mightycall.svg`
68
+ - `docs/BUILD_AND_RELEASE.md`
69
+ - `docs/WORKFLOW_COMPATIBILITY.md`
70
+
71
+ ## Build Semantics
72
+
73
+ Build command:
74
+
75
+ ```bash
76
+ npm run build
77
+ ```
78
+
79
+ Current build script:
80
+
81
+ ```bash
82
+ node ./node_modules/typescript/bin/tsc && node ./node_modules/gulp/bin/gulp.js build:icons && node ./node_modules/gulp/bin/gulp.js build:node-icons
83
+ ```
84
+
85
+ Development watch script:
86
+
87
+ ```bash
88
+ node ./node_modules/typescript/bin/tsc --watch
89
+ ```
90
+
91
+ The scripts call package entrypoints directly instead of relying on `node_modules/.bin` shims where possible. This keeps builds reliable on mounted shares where npm bin symlinks can be materialized as plain files.
92
+
93
+ Package manifest semantics:
94
+
95
+ | Field | Current value |
96
+ | --- | --- |
97
+ | Package | `n8n-nodes-mightycall` |
98
+ | Runtime node entry | `dist/nodes/MightyCall.node.js` |
99
+ | Runtime credential entry | `dist/credentials/MightyCallApi.credentials.js` |
100
+ | Source node | `nodes/MightyCall.node.ts` |
101
+ | Source credential | `credentials/MightyCallApi.credentials.ts` |
102
+ | Icon | `file:mightycall.svg` |
103
+
104
+ More detail: [Build and Release](docs/BUILD_AND_RELEASE.md).
105
+
106
+ ## Runtime Semantics
107
+
108
+ The node executes one n8n input item at a time.
109
+
110
+ 1. Reads account type, API key, and selected client secret from mightyCallApi credentials.
111
+ 2. Uses https://api.mightycall.com/v4 for standard accounts and https://ccapi.mightycall.com/v4 for Contact Center accounts.
112
+ 3. Requests an OAuth access token from `/auth/token` using `client_credentials`.
113
+ 4. Sends API requests with `Authorization: Bearer <token>`; some endpoints also require `x-api-key`.
114
+ 5. Uses the Swagger-documented route family for each resource. Communication and Interaction are standard-host routes that require a tenant with Contact Center features; Contact Center Contact supports the matching standard-host `/contactCenter/...` and ccapi `/contactcenter/...` route casing.
115
+
116
+ ## Compatibility Contract
117
+
118
+ This node is used by saved workflows in the live n8n instance. Backward compatibility includes node identity, declared versions, resource values, operation values, parameter names, icon loading, and editor hydration.
119
+
120
+ | Field | Value |
121
+ | --- | --- |
122
+ | Display name | `MightyCall` |
123
+ | Internal node name | `mightyCall` |
124
+ | Runtime workflow type | `n8n-nodes-mightycall.mightyCall` |
125
+ | Declared versions | `[1, 2, 2.1, 3, 10]` |
126
+ | Credential type | `mightyCallApi` |
127
+ | Saved workflow usage | 11 saved MightyCall nodes currently use typeVersion 10 in the live n8n database. |
128
+
129
+ Do not change these values without a saved-workflow migration and browser/editor validation.
130
+
131
+ More detail: [Workflow Compatibility](docs/WORKFLOW_COMPATIBILITY.md).
132
+
133
+ ## Operations
134
+
135
+ The node currently exposes 14 resources and 77 operation values.
136
+
137
+ | Resource Display | Resource Value | Operations |
138
+ | --- | --- | --- |
139
+ | Call | `call` | getAll, getActive, getById, make, hangUp |
140
+ | Contact | `contact` | getAll, getById, create, update, patch, delete, deleteBulk, getTags, getLimits, addChannel, updateChannel, patchChannel, deleteChannel, addTags |
141
+ | Contact Center Contact | `contactCenterContact` | getAll, getById, createBrief, createFull, update, patch, delete, import, exportCsv, searchAuto, deleteByTag, removeCrmInfo, deleteInternal, markMessagesRead, addChannel, updateChannel, patchChannel, deleteChannel |
142
+ | Journal | `journal` | getAll, getCount, getById, deleteMessages, addComment, deleteComment, deleteVoicemail, setWorkflowState, setFlags, removeFlags, getBlockListCount, getVipListCount, addToBlockList, removeFromBlockList, restoreMessage, getMessageAttachments |
143
+ | Voicemail | `voicemail` | getAll, get |
144
+ | Business Number | `businessNumber` | getAll, getWithOptions, get, delete |
145
+ | User | `user` | getStatus, setStatus, getInfo |
146
+ | Message | `message` | send, sendContactCenter, getAll |
147
+ | Team | `team` | get |
148
+ | Profile | `profile` | get, getByExtension, getStatus, setStatus |
149
+ | Ping | `ping` | ping |
150
+ | API Request | `apiRequest` | make |
151
+ | Communication (Contact Center Only) | `communication` | getAll, addComment, deleteComment, deleteVoicemails |
152
+ | Interaction (Contact Center Only) | `interaction` | getAll |
153
+
154
+ ## Service Notes
155
+
156
+ - Communication and Interaction are Contact Center feature routes in the standard Swagger host; configure the credential as Standard Account for those resources unless MightyCall documents otherwise for your tenant.
157
+ - Do not merge standard and Contact Center base URLs; accountType selects the default API host, while route-specific operations preserve the documented path casing.
158
+ - API Request is an authenticated escape hatch under `/v4/api`; the same accountType switch selects the standard or Contact Center host.
159
+ - `message/getAll` is implemented through `GET /journal/requests` with `type=Message` and `state=Message`, because MightyCall does not expose a dedicated `GET /messages` route in the official Swagger.
160
+ - Legacy saved workflow parameters `contactData` and `filters.date_from` / `filters.date_to` are preserved for existing workflows.
161
+ - Several write operations mutate calls, contacts, messages, journal flags, and workflow state; validate editor hydration before live execution.
162
+
163
+ ## Validation
164
+
165
+ Minimum local validation:
166
+
167
+ ```bash
168
+ npm run build
169
+ ```
170
+
171
+ Minimum live validation after deployment:
172
+
173
+ 1. Confirm n8n health is green.
174
+ 2. Confirm n8n is loading the intended package commit.
175
+ 3. Confirm the public icon route returns SVG.
176
+ 4. Query saved workflows for `n8n-nodes-mightycall.mightyCall` nodes.
177
+ 5. Validate saved `typeVersion` values against declared versions.
178
+ 6. Validate saved `resource` and `operation` values against current option lists.
179
+ 7. Open representative workflows in the n8n editor and verify icon, subtitle, resource, operation, and required fields.
180
+
181
+ Do not skip browser/editor validation after large node builds.
182
+
183
+ ## Related Docs
184
+
185
+ - [Build and Release](docs/BUILD_AND_RELEASE.md)
186
+ - [Workflow Compatibility](docs/WORKFLOW_COMPATIBILITY.md)
187
+ - [Node-local notes](nodes/README.md)
188
+ - [GitHub repository](https://github.com/GraphXCPI/n8n-nodes-mightycall)
189
+ - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
190
+
191
+ ## License
192
+
193
+ See the repository license file.
@@ -1,8 +1,9 @@
1
- import { ICredentialType, INodeProperties, Icon } from 'n8n-workflow';
2
- export declare class MightyCallApi implements ICredentialType {
3
- name: string;
4
- displayName: string;
5
- icon: Icon;
6
- documentationUrl: string;
7
- properties: INodeProperties[];
8
- }
1
+ import { ICredentialTestRequest, ICredentialType, INodeProperties, Icon } from 'n8n-workflow';
2
+ export declare class MightyCallApi implements ICredentialType {
3
+ name: string;
4
+ displayName: string;
5
+ icon: Icon;
6
+ documentationUrl: string;
7
+ properties: INodeProperties[];
8
+ test: ICredentialTestRequest;
9
+ }
@@ -1,94 +1,105 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MightyCallApi = void 0;
4
- class MightyCallApi {
5
- constructor() {
6
- this.name = 'mightyCallApi';
7
- this.displayName = 'MightyCall API';
8
- this.icon = 'file:mightycall.svg';
9
- this.documentationUrl = 'https://api.mightycall.com/v4/doc#tag/Authentication/Auth-POST-authtoken';
10
- this.properties = [
11
- {
12
- displayName: 'Account Type',
13
- name: 'accountType',
14
- type: 'options',
15
- options: [
16
- {
17
- name: 'Standard Account',
18
- value: 'standard',
19
- description: 'Standard MightyCall account (api.mightycall.com)',
20
- },
21
- {
22
- name: 'Contact Center Account',
23
- value: 'contactCenter',
24
- description: 'Contact Center account (ccapi.mightycall.com)',
25
- },
26
- ],
27
- default: 'standard',
28
- required: true,
29
- description: 'Select your MightyCall account type',
30
- },
31
- {
32
- displayName: 'API Key',
33
- name: 'apiKey',
34
- type: 'string',
35
- default: '',
36
- required: true,
37
- description: 'Your MightyCall API Key',
38
- placeholder: 'your-api-key-here',
39
- },
40
- {
41
- displayName: 'Authentication Method',
42
- name: 'authMethod',
43
- type: 'options',
44
- options: [
45
- {
46
- name: 'User Key (Secret Key)',
47
- value: 'userKey',
48
- description: 'Use your User Key (also called Secret Key) from MightyCall account settings',
49
- },
50
- {
51
- name: 'Extension Number',
52
- value: 'extension',
53
- description: 'Use your extension number for authentication',
54
- },
55
- ],
56
- default: 'userKey',
57
- required: true,
58
- description: 'Choose which authentication method to use with your API Key',
59
- },
60
- {
61
- displayName: 'User Key',
62
- name: 'userKey',
63
- type: 'string',
64
- typeOptions: {
65
- password: true,
66
- },
67
- displayOptions: {
68
- show: {
69
- authMethod: ['userKey'],
70
- },
71
- },
72
- default: '',
73
- required: true,
74
- description: 'Your MightyCall User Key (also called Secret Key). Used as client_secret for authentication.',
75
- placeholder: 'your-user-key-here',
76
- },
77
- {
78
- displayName: 'Extension Number',
79
- name: 'extension',
80
- type: 'string',
81
- displayOptions: {
82
- show: {
83
- authMethod: ['extension'],
84
- },
85
- },
86
- default: '',
87
- required: true,
88
- description: 'Your MightyCall extension number. Used as client_secret for authentication.',
89
- placeholder: '1001',
90
- },
91
- ];
92
- }
93
- }
94
- exports.MightyCallApi = MightyCallApi;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MightyCallApi = void 0;
4
+ class MightyCallApi {
5
+ constructor() {
6
+ this.name = 'mightyCallApi';
7
+ this.displayName = 'MightyCall API';
8
+ this.icon = { light: 'file:mightycall.svg', dark: 'file:mightycall.dark.svg' };
9
+ this.documentationUrl = 'https://api.mightycall.com/v4/doc#tag/Authentication/Auth-POST-authtoken';
10
+ this.properties = [
11
+ {
12
+ displayName: 'Account Type',
13
+ name: 'accountType',
14
+ type: 'options',
15
+ options: [
16
+ {
17
+ name: 'Standard Account',
18
+ value: 'standard',
19
+ description: 'Standard MightyCall account (api.mightycall.com)',
20
+ },
21
+ {
22
+ name: 'Contact Center Account',
23
+ value: 'contactCenter',
24
+ description: 'Contact Center account (ccapi.mightycall.com)',
25
+ },
26
+ ],
27
+ default: 'standard',
28
+ required: true,
29
+ description: 'Select your MightyCall account type',
30
+ },
31
+ {
32
+ displayName: 'API Key',
33
+ name: 'apiKey',
34
+ type: 'string',
35
+ default: '',
36
+ required: true,
37
+ description: 'Your MightyCall API Key',
38
+ placeholder: 'your-api-key-here',
39
+ typeOptions: { password: true },
40
+ },
41
+ {
42
+ displayName: 'Authentication Method',
43
+ name: 'authMethod',
44
+ type: 'options',
45
+ options: [
46
+ {
47
+ name: 'User Key (Secret Key)',
48
+ value: 'userKey',
49
+ description: 'Use your User Key (also called Secret Key) from MightyCall account settings',
50
+ },
51
+ {
52
+ name: 'Extension Number',
53
+ value: 'extension',
54
+ description: 'Use your extension number for authentication',
55
+ },
56
+ ],
57
+ default: 'userKey',
58
+ required: true,
59
+ description: 'Choose which authentication method to use with your API Key',
60
+ },
61
+ {
62
+ displayName: 'User Key',
63
+ name: 'userKey',
64
+ type: 'string',
65
+ typeOptions: {
66
+ password: true,
67
+ },
68
+ displayOptions: {
69
+ show: {
70
+ authMethod: ['userKey'],
71
+ },
72
+ },
73
+ default: '',
74
+ required: true,
75
+ description: 'Your MightyCall User Key (also called Secret Key). Used as client_secret for authentication.',
76
+ placeholder: 'your-user-key-here',
77
+ },
78
+ {
79
+ displayName: 'Extension Number',
80
+ name: 'extension',
81
+ type: 'string',
82
+ displayOptions: {
83
+ show: {
84
+ authMethod: ['extension'],
85
+ },
86
+ },
87
+ default: '',
88
+ required: true,
89
+ description: 'Your MightyCall extension number. Used as client_secret for authentication.',
90
+ placeholder: '1001',
91
+ },
92
+ ];
93
+ this.test = {
94
+ request: {
95
+ baseURL: '={{$credentials.accountType === "contactCenter" ? "https://ccapi.mightycall.com/v4" : "https://api.mightycall.com/v4"}}',
96
+ url: '/api/ping',
97
+ method: 'GET',
98
+ headers: {
99
+ 'x-api-key': '={{$credentials.apiKey}}',
100
+ },
101
+ },
102
+ };
103
+ }
104
+ }
105
+ exports.MightyCallApi = MightyCallApi;
@@ -0,0 +1,20 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
+ <!-- Creator: CorelDRAW -->
4
+ <svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="1.66666in" height="1.66666in" version="1.1" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd"
5
+ viewBox="0 0 1666.66 1666.66"
6
+ xmlns:xlink="http://www.w3.org/1999/xlink"
7
+ xmlns:xodm="http://www.corel.com/coreldraw/odm/2003"
8
+ baseProfile="tiny">
9
+ <defs>
10
+ <style type="text/css">
11
+ <![CDATA[
12
+ .fil0 {fill:#4B75E6;fill-rule:nonzero}
13
+ ]]>
14
+ </style>
15
+ </defs>
16
+ <g id="Layer_x0020_1">
17
+ <metadata id="CorelCorpID_0Corel-Layer"/>
18
+ <path class="fil0" d="M1233.85 912.87l-210.21 -210.21c-0.67,-0.66 -1.04,-1.56 -1.04,-2.5l0 -70.73c-0,-0.94 -0.38,-1.84 -1.04,-2.5l-255 -255c-0.66,-0.66 -1.04,-1.56 -1.04,-2.5l-0 -64.17c0.01,-1.95 1.59,-3.54 3.55,-3.54 0.94,0 1.84,0.37 2.5,1.03l301.14 301.26c0.67,0.66 1.04,1.56 1.04,2.5l0 70.41c0,0.94 0.37,1.84 1.04,2.5l236.98 236.87c0.67,0.66 1.04,1.56 1.04,2.5l-0 71.57c0,0.93 -0.37,1.83 -1.04,2.5l-272.08 271.98c-0.67,0.67 -1.57,1.04 -2.51,1.04 -0.5,0 -1,-0.11 -1.45,-0.31l-113.33 -51.46c-1.27,-0.57 -2.09,-1.84 -2.09,-3.23 0,0 0,0 0,0l0 -48.33c0,-0 0,-0 0,-0 0,-1.39 -0.81,-2.66 -2.08,-3.23l-96.15 -43.64c-0.46,-0.21 -0.95,-0.32 -1.46,-0.32 -1.96,0 -3.54,1.59 -3.54,3.54 0,0 0,0 0,0l0 176.78c0,1.95 -1.59,3.53 -3.54,3.53 -0.94,0 -1.84,-0.37 -2.5,-1.03l-142.4 -142.4c-0.66,-0.67 -1.56,-1.04 -2.5,-1.04 -1.95,0 -3.54,1.58 -3.54,3.54l0 203.13c0,1.95 -1.59,3.53 -3.54,3.53 -0.94,0 -1.84,-0.37 -2.5,-1.03l-301.67 -301.56c-0.66,-0.67 -1.04,-1.56 -1.04,-2.5l-0 -63.43c0.01,-1.96 1.59,-3.54 3.55,-3.54 0.94,0 1.84,0.37 2.5,1.03l245.2 245.11c0.67,0.66 1.57,1.03 2.5,1.03 1.95,0 3.54,-1.58 3.54,-3.54l-0.01 -136.76c0,-0.94 -0.37,-1.84 -1.04,-2.51l-254.9 -254.78c-0.66,-0.67 -1.04,-1.56 -1.04,-2.5l-0 -63.54c0.01,-1.95 1.59,-3.54 3.55,-3.54 0.94,0 1.84,0.37 2.5,1.03l399.06 399.07c0.67,0.66 1.57,1.03 2.5,1.03 1.95,0 3.54,-1.58 3.54,-3.54l-0.01 -137.19c0,-0.94 -0.37,-1.84 -1.04,-2.5l-409.38 -409.37c-0.66,-0.66 -1.04,-1.56 -1.04,-2.5l-0 -63.13c0.01,-1.95 1.59,-3.53 3.55,-3.53 0.94,0 1.84,0.37 2.5,1.03l347.81 347.81c0.67,0.66 1.57,1.03 2.5,1.03 1.95,0 3.54,-1.58 3.54,-3.54l-0 -136.46c0,-0.94 -0.37,-1.83 -1.04,-2.5l-357.61 -357.5c-0.66,-0.66 -1.04,-1.56 -1.04,-2.5l-0 -64.69c0.01,-1.95 1.59,-3.54 3.55,-3.54 0.94,0 1.84,0.37 2.5,1.03l296.35 296.25c0.67,0.67 1.57,1.04 2.51,1.04 1.95,0 3.54,-1.58 3.54,-3.54l-0.01 -136.56c0,-0.94 -0.37,-1.83 -1.04,-2.5l-100.21 -100.21c-0.66,-0.66 -1.04,-1.56 -1.04,-2.5l-0 -62.6c0.01,-1.95 1.59,-3.54 3.55,-3.54 0.94,0 1.84,0.37 2.5,1.03l147.39 147.4c0.67,0.66 1.04,1.56 1.05,2.5l-0 216.15c0,0.94 0.38,1.83 1.04,2.5l48.75 48.75c0.67,0.66 1.04,1.56 1.05,2.5l-0.01 218.02c0.01,0.94 0.38,1.83 1.05,2.5l49.37 49.48c0.67,0.66 1.04,1.56 1.04,2.5l0 47.4c-0,-0 -0,-0 -0,-0 0,1.39 0.81,2.66 2.08,3.23l150 68.13c1.27,0.56 2.09,1.83 2.09,3.22 0,0 0,0 0,0l-0 49.38c0,0 0,0 0,0 0,1.39 0.81,2.66 2.08,3.23l46.88 21.25c0.45,0.2 0.95,0.31 1.45,0.31 0.94,0 1.84,-0.37 2.51,-1.04l212.4 -212.39c0.66,-0.67 1.03,-1.57 1.03,-2.5 0,-0.94 -0.37,-1.84 -1.03,-2.5l-64.48 -64.37c-0.67,-0.67 -1.04,-1.57 -1.04,-2.5 0,-1.95 1.58,-3.54 3.54,-3.54l56.87 0c1.95,-0 3.54,-1.59 3.54,-3.54 0,-0.94 -0.37,-1.84 -1.03,-2.5l-0 0zm-282.39 -135l-125.83 -125.83c-0.61,-0.61 -0.95,-1.43 -0.95,-2.29 0,-1.78 1.44,-3.23 3.23,-3.23 0,0 0.01,0 0.02,0l140.1 0c1.78,0 3.23,1.44 3.23,3.23l0 72.19c0,0.01 0,0.02 0,0.02 0,0.85 0.34,1.67 0.94,2.28l49.06 49.06c0.61,0.61 0.95,1.44 0.95,2.3 0,1.78 -1.44,3.23 -3.23,3.23 -0,0 -0.01,0 -0.02,0l-65.21 0c-0.01,0 -0.02,0 -0.02,0 -0.85,0 -1.67,-0.34 -2.28,-0.94l0 0z"/>
19
+ </g>
20
+ </svg>
@@ -1,20 +1,20 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
- <!-- Creator: CorelDRAW -->
4
- <svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="1.66666in" height="1.66666in" version="1.1" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd"
5
- viewBox="0 0 1666.66 1666.66"
6
- xmlns:xlink="http://www.w3.org/1999/xlink"
7
- xmlns:xodm="http://www.corel.com/coreldraw/odm/2003"
8
- baseProfile="tiny">
9
- <defs>
10
- <style type="text/css">
11
- <![CDATA[
12
- .fil0 {fill:#4B75E6;fill-rule:nonzero}
13
- ]]>
14
- </style>
15
- </defs>
16
- <g id="Layer_x0020_1">
17
- <metadata id="CorelCorpID_0Corel-Layer"/>
18
- <path class="fil0" d="M1233.85 912.87l-210.21 -210.21c-0.67,-0.66 -1.04,-1.56 -1.04,-2.5l0 -70.73c-0,-0.94 -0.38,-1.84 -1.04,-2.5l-255 -255c-0.66,-0.66 -1.04,-1.56 -1.04,-2.5l-0 -64.17c0.01,-1.95 1.59,-3.54 3.55,-3.54 0.94,0 1.84,0.37 2.5,1.03l301.14 301.26c0.67,0.66 1.04,1.56 1.04,2.5l0 70.41c0,0.94 0.37,1.84 1.04,2.5l236.98 236.87c0.67,0.66 1.04,1.56 1.04,2.5l-0 71.57c0,0.93 -0.37,1.83 -1.04,2.5l-272.08 271.98c-0.67,0.67 -1.57,1.04 -2.51,1.04 -0.5,0 -1,-0.11 -1.45,-0.31l-113.33 -51.46c-1.27,-0.57 -2.09,-1.84 -2.09,-3.23 0,0 0,0 0,0l0 -48.33c0,-0 0,-0 0,-0 0,-1.39 -0.81,-2.66 -2.08,-3.23l-96.15 -43.64c-0.46,-0.21 -0.95,-0.32 -1.46,-0.32 -1.96,0 -3.54,1.59 -3.54,3.54 0,0 0,0 0,0l0 176.78c0,1.95 -1.59,3.53 -3.54,3.53 -0.94,0 -1.84,-0.37 -2.5,-1.03l-142.4 -142.4c-0.66,-0.67 -1.56,-1.04 -2.5,-1.04 -1.95,0 -3.54,1.58 -3.54,3.54l0 203.13c0,1.95 -1.59,3.53 -3.54,3.53 -0.94,0 -1.84,-0.37 -2.5,-1.03l-301.67 -301.56c-0.66,-0.67 -1.04,-1.56 -1.04,-2.5l-0 -63.43c0.01,-1.96 1.59,-3.54 3.55,-3.54 0.94,0 1.84,0.37 2.5,1.03l245.2 245.11c0.67,0.66 1.57,1.03 2.5,1.03 1.95,0 3.54,-1.58 3.54,-3.54l-0.01 -136.76c0,-0.94 -0.37,-1.84 -1.04,-2.51l-254.9 -254.78c-0.66,-0.67 -1.04,-1.56 -1.04,-2.5l-0 -63.54c0.01,-1.95 1.59,-3.54 3.55,-3.54 0.94,0 1.84,0.37 2.5,1.03l399.06 399.07c0.67,0.66 1.57,1.03 2.5,1.03 1.95,0 3.54,-1.58 3.54,-3.54l-0.01 -137.19c0,-0.94 -0.37,-1.84 -1.04,-2.5l-409.38 -409.37c-0.66,-0.66 -1.04,-1.56 -1.04,-2.5l-0 -63.13c0.01,-1.95 1.59,-3.53 3.55,-3.53 0.94,0 1.84,0.37 2.5,1.03l347.81 347.81c0.67,0.66 1.57,1.03 2.5,1.03 1.95,0 3.54,-1.58 3.54,-3.54l-0 -136.46c0,-0.94 -0.37,-1.83 -1.04,-2.5l-357.61 -357.5c-0.66,-0.66 -1.04,-1.56 -1.04,-2.5l-0 -64.69c0.01,-1.95 1.59,-3.54 3.55,-3.54 0.94,0 1.84,0.37 2.5,1.03l296.35 296.25c0.67,0.67 1.57,1.04 2.51,1.04 1.95,0 3.54,-1.58 3.54,-3.54l-0.01 -136.56c0,-0.94 -0.37,-1.83 -1.04,-2.5l-100.21 -100.21c-0.66,-0.66 -1.04,-1.56 -1.04,-2.5l-0 -62.6c0.01,-1.95 1.59,-3.54 3.55,-3.54 0.94,0 1.84,0.37 2.5,1.03l147.39 147.4c0.67,0.66 1.04,1.56 1.05,2.5l-0 216.15c0,0.94 0.38,1.83 1.04,2.5l48.75 48.75c0.67,0.66 1.04,1.56 1.05,2.5l-0.01 218.02c0.01,0.94 0.38,1.83 1.05,2.5l49.37 49.48c0.67,0.66 1.04,1.56 1.04,2.5l0 47.4c-0,-0 -0,-0 -0,-0 0,1.39 0.81,2.66 2.08,3.23l150 68.13c1.27,0.56 2.09,1.83 2.09,3.22 0,0 0,0 0,0l-0 49.38c0,0 0,0 0,0 0,1.39 0.81,2.66 2.08,3.23l46.88 21.25c0.45,0.2 0.95,0.31 1.45,0.31 0.94,0 1.84,-0.37 2.51,-1.04l212.4 -212.39c0.66,-0.67 1.03,-1.57 1.03,-2.5 0,-0.94 -0.37,-1.84 -1.03,-2.5l-64.48 -64.37c-0.67,-0.67 -1.04,-1.57 -1.04,-2.5 0,-1.95 1.58,-3.54 3.54,-3.54l56.87 0c1.95,-0 3.54,-1.59 3.54,-3.54 0,-0.94 -0.37,-1.84 -1.03,-2.5l-0 0zm-282.39 -135l-125.83 -125.83c-0.61,-0.61 -0.95,-1.43 -0.95,-2.29 0,-1.78 1.44,-3.23 3.23,-3.23 0,0 0.01,0 0.02,0l140.1 0c1.78,0 3.23,1.44 3.23,3.23l0 72.19c0,0.01 0,0.02 0,0.02 0,0.85 0.34,1.67 0.94,2.28l49.06 49.06c0.61,0.61 0.95,1.44 0.95,2.3 0,1.78 -1.44,3.23 -3.23,3.23 -0,0 -0.01,0 -0.02,0l-65.21 0c-0.01,0 -0.02,0 -0.02,0 -0.85,0 -1.67,-0.34 -2.28,-0.94l0 0z"/>
19
- </g>
20
- </svg>
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
+ <!-- Creator: CorelDRAW -->
4
+ <svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="1.66666in" height="1.66666in" version="1.1" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd"
5
+ viewBox="0 0 1666.66 1666.66"
6
+ xmlns:xlink="http://www.w3.org/1999/xlink"
7
+ xmlns:xodm="http://www.corel.com/coreldraw/odm/2003"
8
+ baseProfile="tiny">
9
+ <defs>
10
+ <style type="text/css">
11
+ <![CDATA[
12
+ .fil0 {fill:#4B75E6;fill-rule:nonzero}
13
+ ]]>
14
+ </style>
15
+ </defs>
16
+ <g id="Layer_x0020_1">
17
+ <metadata id="CorelCorpID_0Corel-Layer"/>
18
+ <path class="fil0" d="M1233.85 912.87l-210.21 -210.21c-0.67,-0.66 -1.04,-1.56 -1.04,-2.5l0 -70.73c-0,-0.94 -0.38,-1.84 -1.04,-2.5l-255 -255c-0.66,-0.66 -1.04,-1.56 -1.04,-2.5l-0 -64.17c0.01,-1.95 1.59,-3.54 3.55,-3.54 0.94,0 1.84,0.37 2.5,1.03l301.14 301.26c0.67,0.66 1.04,1.56 1.04,2.5l0 70.41c0,0.94 0.37,1.84 1.04,2.5l236.98 236.87c0.67,0.66 1.04,1.56 1.04,2.5l-0 71.57c0,0.93 -0.37,1.83 -1.04,2.5l-272.08 271.98c-0.67,0.67 -1.57,1.04 -2.51,1.04 -0.5,0 -1,-0.11 -1.45,-0.31l-113.33 -51.46c-1.27,-0.57 -2.09,-1.84 -2.09,-3.23 0,0 0,0 0,0l0 -48.33c0,-0 0,-0 0,-0 0,-1.39 -0.81,-2.66 -2.08,-3.23l-96.15 -43.64c-0.46,-0.21 -0.95,-0.32 -1.46,-0.32 -1.96,0 -3.54,1.59 -3.54,3.54 0,0 0,0 0,0l0 176.78c0,1.95 -1.59,3.53 -3.54,3.53 -0.94,0 -1.84,-0.37 -2.5,-1.03l-142.4 -142.4c-0.66,-0.67 -1.56,-1.04 -2.5,-1.04 -1.95,0 -3.54,1.58 -3.54,3.54l0 203.13c0,1.95 -1.59,3.53 -3.54,3.53 -0.94,0 -1.84,-0.37 -2.5,-1.03l-301.67 -301.56c-0.66,-0.67 -1.04,-1.56 -1.04,-2.5l-0 -63.43c0.01,-1.96 1.59,-3.54 3.55,-3.54 0.94,0 1.84,0.37 2.5,1.03l245.2 245.11c0.67,0.66 1.57,1.03 2.5,1.03 1.95,0 3.54,-1.58 3.54,-3.54l-0.01 -136.76c0,-0.94 -0.37,-1.84 -1.04,-2.51l-254.9 -254.78c-0.66,-0.67 -1.04,-1.56 -1.04,-2.5l-0 -63.54c0.01,-1.95 1.59,-3.54 3.55,-3.54 0.94,0 1.84,0.37 2.5,1.03l399.06 399.07c0.67,0.66 1.57,1.03 2.5,1.03 1.95,0 3.54,-1.58 3.54,-3.54l-0.01 -137.19c0,-0.94 -0.37,-1.84 -1.04,-2.5l-409.38 -409.37c-0.66,-0.66 -1.04,-1.56 -1.04,-2.5l-0 -63.13c0.01,-1.95 1.59,-3.53 3.55,-3.53 0.94,0 1.84,0.37 2.5,1.03l347.81 347.81c0.67,0.66 1.57,1.03 2.5,1.03 1.95,0 3.54,-1.58 3.54,-3.54l-0 -136.46c0,-0.94 -0.37,-1.83 -1.04,-2.5l-357.61 -357.5c-0.66,-0.66 -1.04,-1.56 -1.04,-2.5l-0 -64.69c0.01,-1.95 1.59,-3.54 3.55,-3.54 0.94,0 1.84,0.37 2.5,1.03l296.35 296.25c0.67,0.67 1.57,1.04 2.51,1.04 1.95,0 3.54,-1.58 3.54,-3.54l-0.01 -136.56c0,-0.94 -0.37,-1.83 -1.04,-2.5l-100.21 -100.21c-0.66,-0.66 -1.04,-1.56 -1.04,-2.5l-0 -62.6c0.01,-1.95 1.59,-3.54 3.55,-3.54 0.94,0 1.84,0.37 2.5,1.03l147.39 147.4c0.67,0.66 1.04,1.56 1.05,2.5l-0 216.15c0,0.94 0.38,1.83 1.04,2.5l48.75 48.75c0.67,0.66 1.04,1.56 1.05,2.5l-0.01 218.02c0.01,0.94 0.38,1.83 1.05,2.5l49.37 49.48c0.67,0.66 1.04,1.56 1.04,2.5l0 47.4c-0,-0 -0,-0 -0,-0 0,1.39 0.81,2.66 2.08,3.23l150 68.13c1.27,0.56 2.09,1.83 2.09,3.22 0,0 0,0 0,0l-0 49.38c0,0 0,0 0,0 0,1.39 0.81,2.66 2.08,3.23l46.88 21.25c0.45,0.2 0.95,0.31 1.45,0.31 0.94,0 1.84,-0.37 2.51,-1.04l212.4 -212.39c0.66,-0.67 1.03,-1.57 1.03,-2.5 0,-0.94 -0.37,-1.84 -1.03,-2.5l-64.48 -64.37c-0.67,-0.67 -1.04,-1.57 -1.04,-2.5 0,-1.95 1.58,-3.54 3.54,-3.54l56.87 0c1.95,-0 3.54,-1.59 3.54,-3.54 0,-0.94 -0.37,-1.84 -1.03,-2.5l-0 0zm-282.39 -135l-125.83 -125.83c-0.61,-0.61 -0.95,-1.43 -0.95,-2.29 0,-1.78 1.44,-3.23 3.23,-3.23 0,0 0.01,0 0.02,0l140.1 0c1.78,0 3.23,1.44 3.23,3.23l0 72.19c0,0.01 0,0.02 0,0.02 0,0.85 0.34,1.67 0.94,2.28l49.06 49.06c0.61,0.61 0.95,1.44 0.95,2.3 0,1.78 -1.44,3.23 -3.23,3.23 -0,0 -0.01,0 -0.02,0l-65.21 0c-0.01,0 -0.02,0 -0.02,0 -0.85,0 -1.67,-0.34 -2.28,-0.94l0 0z"/>
19
+ </g>
20
+ </svg>