premiere-pro-mcp 1.1.6 → 1.2.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.
Files changed (69) hide show
  1. package/CHANGELOG.md +184 -109
  2. package/LICENSE +21 -21
  3. package/README.md +614 -555
  4. package/cep-plugin/.debug +8 -8
  5. package/cep-plugin/CSInterface.js +70 -70
  6. package/cep-plugin/CSXS/manifest.xml +79 -79
  7. package/cep-plugin/host.jsx +7 -7
  8. package/cep-plugin/index.html +80 -96
  9. package/cep-plugin/main.js +276 -269
  10. package/cep-plugin/styles.css +227 -0
  11. package/dist/bridge/file-bridge.js +49 -11
  12. package/dist/bridge/script-builder.js +453 -453
  13. package/dist/index.js +21 -15
  14. package/dist/platform-capabilities.d.ts +42 -0
  15. package/dist/platform-capabilities.js +54 -0
  16. package/dist/security/audit.d.ts +14 -0
  17. package/dist/security/audit.js +12 -0
  18. package/dist/security/capabilities.d.ts +23 -0
  19. package/dist/security/capabilities.js +66 -0
  20. package/dist/security/index.d.ts +3 -0
  21. package/dist/security/index.js +3 -0
  22. package/dist/server.js +109 -70
  23. package/dist/tools/advanced.js +361 -356
  24. package/dist/tools/audio.js +78 -62
  25. package/dist/tools/captions.js +10 -10
  26. package/dist/tools/clipboard.js +209 -209
  27. package/dist/tools/discovery.js +288 -288
  28. package/dist/tools/edit-plans.d.ts +90 -0
  29. package/dist/tools/edit-plans.js +131 -0
  30. package/dist/tools/effects.js +262 -262
  31. package/dist/tools/export.js +196 -196
  32. package/dist/tools/health.d.ts +46 -1
  33. package/dist/tools/health.js +22 -12
  34. package/dist/tools/inspection.js +885 -885
  35. package/dist/tools/keyframes.js +292 -292
  36. package/dist/tools/markers.js +87 -87
  37. package/dist/tools/media.js +143 -143
  38. package/dist/tools/metadata.js +93 -93
  39. package/dist/tools/playback.js +15 -15
  40. package/dist/tools/playhead.js +49 -49
  41. package/dist/tools/project-manager.js +21 -21
  42. package/dist/tools/project.js +120 -120
  43. package/dist/tools/scripting.js +307 -307
  44. package/dist/tools/selection.js +202 -202
  45. package/dist/tools/sequence.js +131 -131
  46. package/dist/tools/source-monitor.js +68 -68
  47. package/dist/tools/text.js +71 -71
  48. package/dist/tools/timeline.js +204 -198
  49. package/dist/tools/track-targeting.js +600 -600
  50. package/dist/tools/tracks.js +44 -44
  51. package/dist/tools/transitions.js +192 -161
  52. package/dist/tools/utility.js +626 -626
  53. package/dist/tools/workspace.js +12 -12
  54. package/dist/workflows/catalog.d.ts +46 -0
  55. package/dist/workflows/catalog.js +65 -0
  56. package/dist/workflows/tool-metadata.d.ts +13 -0
  57. package/dist/workflows/tool-metadata.js +22 -0
  58. package/package.json +71 -65
  59. package/scripts/build-chat-dmg.sh +210 -210
  60. package/scripts/build-chat-zip.sh +291 -291
  61. package/scripts/install-cep.sh +96 -66
  62. package/scripts/install-chat-plugin.bat +67 -67
  63. package/scripts/install-chat-plugin.sh +85 -85
  64. package/scripts/publish-npm.mjs +182 -0
  65. package/uxp-plugin/README.md +15 -0
  66. package/uxp-plugin/index.cjs +95 -0
  67. package/uxp-plugin/index.html +10 -0
  68. package/uxp-plugin/manifest.json +22 -0
  69. package/uxp-plugin/protocol.cjs +25 -0
package/CHANGELOG.md CHANGED
@@ -1,9 +1,84 @@
1
- # Changelog
2
-
3
- All notable changes to this project will be documented in this file.
4
-
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
6
6
 
7
+ ## [Unreleased]
8
+
9
+ ## [1.2.2] - 2026-07-23
10
+
11
+ ### Fixed
12
+
13
+ - Corrected obsolete repository links in the npm README and republished package metadata so the
14
+ repository, homepage, and issue links point to the maintained project.
15
+
16
+ ### Added
17
+
18
+ - Added `npm run publish:npm`, `npm run publish:npm:dry-run`, and a manual GitHub Actions npm
19
+ publish workflow that validates builds, tests, packed files, duplicate versions, and uses
20
+ token-free OIDC trusted publishing with automatic provenance.
21
+
22
+ ## [1.2.1] - 2026-07-21
23
+
24
+ ### Added
25
+
26
+ - Added `get_capabilities` for machine-readable Windows/macOS runtime, CEP/UXP backend,
27
+ authority-profile, and live-host verification reporting.
28
+ - Added GitHub Actions build, test, and package validation on Windows and macOS with Node 18 and 22.
29
+
30
+ ### Fixed
31
+
32
+ - Audio-level writes now convert dB to Premiere's amplitude value and verify the applied value.
33
+ - Audio keyframes now use Premiere `Time` objects and verify each written value.
34
+ - Ripple delete, razor, and native transition tools now verify host state and return actionable
35
+ errors instead of false success on affected Premiere Pro 26.3 installations. ([#21](https://github.com/leancoderkavy/premiere-pro-mcp/issues/21))
36
+ - Capability profiles now enforce `inspect` and `edit` across the complete tool surface and treat
37
+ expression evaluation as unsafe scripting instead of allowing unclassified tools through.
38
+ - The npm CLI now copies the CEP plugin on macOS, verifies installation metadata, rejects unsupported
39
+ host operating systems, and avoids platform-specific `/tmp` configuration in cross-platform examples.
40
+
41
+ ### Performance
42
+
43
+ - Prefer event-driven bridge response notification with a conservative polling fallback, reducing
44
+ idle filesystem checks while preserving compatibility with filesystems where watching is
45
+ unavailable or unreliable.
46
+ - Cache immutable tool catalogs and converted Zod schemas across stateless HTTP server instances.
47
+ A local 100-iteration benchmark reduced average repeated server construction from 5.87 ms to
48
+ 2.21 ms (62.4%).
49
+
50
+ ## [1.2.0] - 2026-07-20
51
+
52
+ ### Added
53
+
54
+ - Added preview/apply edit plans with strict operation validation, SHA-256 confirmation binding,
55
+ operation IDs, and structured audit events.
56
+ - Added capability profiles. Raw ExtendScript tools now require explicit `unsafe-script` authority.
57
+ - Added structured MCP tool results, safety annotations, four guided workflow prompts, and the
58
+ `config://premiere-workflows` resource.
59
+ - Added a packaged Premiere 25.6+ UXP bridge preview with capability discovery, state-change
60
+ events, reconnecting WebSocket transport, and supported frame export with file verification.
61
+
62
+ ### Validation
63
+
64
+ - TypeScript build passes, all 333 automated tests pass in a single-worker run, and the npm dry-run
65
+ package contains both CEP and UXP bundles. Live Premiere verification of the UXP host API and
66
+ loopback transport remains outstanding.
67
+
68
+ ## [1.1.7] - 2026-07-20
69
+
70
+ ### Changed
71
+
72
+ - Redesigned the Premiere Pro CEP bridge panel with clearer connection status, responsive
73
+ controls, improved directory configuration, and a larger live activity monitor.
74
+ - Added accessible labels, focus states, reduced-motion support, and consistent status details
75
+ without changing the bridge command workflow.
76
+
77
+ ### Validation
78
+
79
+ - TypeScript build and 315 automated tests pass. The panel was also rendered at a 500 x 700 CEP
80
+ viewport and visually checked against the approved design concept.
81
+
7
82
  ## [1.1.6] - 2026-07-20
8
83
 
9
84
  ### Fixed
@@ -27,108 +102,108 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
27
102
  live confirmation on a machine with Premiere Pro installed.
28
103
 
29
104
  ## [1.1.2] - 2026-07-11
30
-
31
- The headline of this release is that the CEP 12 bridge fix from
32
- [#1](https://github.com/leancoderkavy/premiere-pro-mcp/pull/1) finally ships to npm. It has been on
33
- `main` since March but was never published, so everyone who installed with `npm install -g` still
34
- got a bridge that returned `null` for every tool call. If that was your symptom, upgrading is the
35
- whole fix.
36
-
37
- ### Fixed
38
-
39
- - **The bridge returns data again on Premiere Pro 2023+ / CEP 12.** The published `CSInterface.js`
40
- shim called `__adobe_cep__.evalScript(script)` without forwarding the callback. CEP 9+ is
41
- async-only, so every result was silently discarded and every tool answered
42
- `{"success":true,"data":null}` while the panel cheerfully logged "Result: OK". The manifest was
43
- also missing `--enable-nodejs`, leaving `require("fs")` undefined in the panel.
44
- ([#2](https://github.com/leancoderkavy/premiere-pro-mcp/issues/2),
45
- [#5](https://github.com/leancoderkavy/premiere-pro-mcp/issues/5),
46
- [#8](https://github.com/leancoderkavy/premiere-pro-mcp/issues/8))
47
-
48
- - **Markers landed at wildly wrong times.** `createMarker()` takes seconds, but was being handed
49
- ticks — a marker requested at 2.0s was placed roughly 508 billion seconds down the timeline,
50
- far past the end of any real sequence. `marker.end` had the same bug, and `list_markers` read
51
- back nonsense as a result. ([#6](https://github.com/leancoderkavy/premiere-pro-mcp/issues/6))
52
-
53
- - **`manage_proxies` and `get_encoder_presets` called ExtendScript methods that do not exist.**
54
- `ProjectItem` has no `createProxy()` and `EncoderManager` has no `getFormatList()`, so both threw
55
- every time. `manage_proxies` with `action: "create"` now queues a real proxy encode through Media
56
- Encoder instead of reporting "Proxy creation started" for work that never happened, and
57
- `get_encoder_presets` discovers presets by scanning the `.epr` files Adobe ships on disk, returning
58
- each preset's path so it can be passed straight to `export_sequence`.
59
- ([#7](https://github.com/leancoderkavy/premiere-pro-mcp/issues/7))
60
-
61
- - **`capture_frame`, `export_frame`, and `freeze_frame` threw on every call.** `exportFramePNG`
62
- exists only on the QE DOM sequence, not the public DOM one. These tools now go through the QE
63
- sequence, and — because QE's return value is unreliable — decide success by checking that a file
64
- actually exists on disk, falling back to a one-frame Media Encoder export. They can no longer
65
- report success having written nothing.
66
- ([#9](https://github.com/leancoderkavy/premiere-pro-mcp/issues/9))
67
-
68
- - **Six tools repaired for Premiere Pro 2026** via
69
- [#3](https://github.com/leancoderkavy/premiere-pro-mcp/pull/3): `add_audio_keyframes` (used a
70
- nonexistent `Property.addKeyframe`, and wrote dB into a property that stores amplitude),
71
- `color_correct` (one unsettable Lumetri property aborted the whole script and lost every other
72
- change), `add_transition` and friends (`getVideoTransitionList()` returns empty on 2026 even
73
- though by-name lookup works), `add_adjustment_layer` (`qeSeq.addAdjustmentLayer` was removed in
74
- 2026), `export_sequence` (defaulted to a hardcoded macOS-only preset path), and `add_text_overlay`
75
- (called `createCaptionTrack` with the wrong signature).
76
-
77
- - `manage_proxies` with `action: "toggle"` reported the inverse of the state it had just set.
78
-
79
- - The README described this repository as "a temporary fork" of itself — a fork banner that rode in
80
- with the [#1](https://github.com/leancoderkavy/premiere-pro-mcp/pull/1) merge.
81
-
82
- ### Notes
83
-
84
- - The frame-export and proxy-create paths are fixed against the documented API and covered by
85
- regression tests, but have not yet been live-verified against a running Premiere Pro. If you can
86
- test them, reports on
87
- [#7](https://github.com/leancoderkavy/premiere-pro-mcp/issues/7) and
88
- [#9](https://github.com/leancoderkavy/premiere-pro-mcp/issues/9) are very welcome.
89
- - Windows users on CEP 12 may additionally need to sign the extension (`ZXPSignCmd -sign`) — see
90
- [#2](https://github.com/leancoderkavy/premiere-pro-mcp/issues/2) for details. That is an Adobe
91
- signature-verification requirement, not a bug in this package.
92
-
93
- ## [1.0.0] - 2025-02-26
94
-
95
- ### Added
96
-
97
- - **269 tools** across **28 modules** covering nearly the entire Premiere Pro ExtendScript and QE DOM API surface
98
- - File-based IPC bridge for reliable communication between Node.js MCP server and CEP plugin
99
- - CEP plugin with panel UI for bridge status monitoring and configuration
100
- - Cross-platform support (macOS and Windows)
101
- - Two MCP resources for LLM context: `premiere-instructions` and `extendscript-reference`
102
- - Security validation for generated scripts (blocks eval, new Function, System.callSystem)
103
- - Automated CEP plugin installer script
104
-
105
- #### Tool Modules
106
-
107
- - **discovery** (10) — Project info, item listing, clip queries
108
- - **project** (26) — Save/open, import, bins, AE comps, bars & tone, scratch disks
109
- - **media** (16) — Proxy management, offline, frame rate override, XMP, color space
110
- - **sequence** (11) — Create, duplicate, delete, settings, auto-reframe, unnest, captions
111
- - **timeline** (10) — Add/remove/move/trim/split clips, properties, replace
112
- - **effects** (8) — Apply/remove effects, color correction, LUTs, stabilization
113
- - **transitions** (5) — Add transitions by name (QE DOM)
114
- - **audio** (3) — Levels, keyframes, mute
115
- - **text** (3) — Text overlays, MOGRTs
116
- - **markers** (4) — Add/delete/update/list markers
117
- - **tracks** (4) — Add/delete/lock/visibility
118
- - **playhead** (6) — Position, work area, in/out points
119
- - **metadata** (9) — XMP, project metadata, color labels, footage interpretation
120
- - **export** (14) — Sequence export, frame capture (base64), FCP XML, AAF, OMF, encoding
121
- - **advanced** (27) — QE DOM: ripple delete, roll/slide/slip edits, speed, reverse, frame blend
122
- - **keyframes** (8) — Full CRUD: add, get, remove, range remove, interpolation, value at time
123
- - **scripting** (6) — Execute arbitrary ExtendScript, expression eval, DOM inspection
124
- - **inspection** (10) — Deep project/sequence/clip analysis, timeline gaps, media reports
125
- - **selection** (7) — Select by name, range, color; invert; select disabled
126
- - **clipboard** (6) — Copy effects, batch apply, replace media, blend modes
127
- - **source-monitor** (7) — Open/close, in/out points, insert/overwrite from source
128
- - **track-targeting** (31) — Target tracks, motion/transform properties, audio properties
129
- - **utility** (29) — Batch rename, enable/disable, project analysis, navigation
130
- - **health** (1) — Connectivity ping
131
- - **workspace** (2) — Get/set workspace layouts
132
- - **captions** (1) — Create caption tracks
133
- - **playback** (4) — Timeline and source monitor playback control
134
- - **project-manager** (1) — Project consolidation and transfer
105
+
106
+ The headline of this release is that the CEP 12 bridge fix from
107
+ [#1](https://github.com/leancoderkavy/premiere-pro-mcp/pull/1) finally ships to npm. It has been on
108
+ `main` since March but was never published, so everyone who installed with `npm install -g` still
109
+ got a bridge that returned `null` for every tool call. If that was your symptom, upgrading is the
110
+ whole fix.
111
+
112
+ ### Fixed
113
+
114
+ - **The bridge returns data again on Premiere Pro 2023+ / CEP 12.** The published `CSInterface.js`
115
+ shim called `__adobe_cep__.evalScript(script)` without forwarding the callback. CEP 9+ is
116
+ async-only, so every result was silently discarded and every tool answered
117
+ `{"success":true,"data":null}` while the panel cheerfully logged "Result: OK". The manifest was
118
+ also missing `--enable-nodejs`, leaving `require("fs")` undefined in the panel.
119
+ ([#2](https://github.com/leancoderkavy/premiere-pro-mcp/issues/2),
120
+ [#5](https://github.com/leancoderkavy/premiere-pro-mcp/issues/5),
121
+ [#8](https://github.com/leancoderkavy/premiere-pro-mcp/issues/8))
122
+
123
+ - **Markers landed at wildly wrong times.** `createMarker()` takes seconds, but was being handed
124
+ ticks — a marker requested at 2.0s was placed roughly 508 billion seconds down the timeline,
125
+ far past the end of any real sequence. `marker.end` had the same bug, and `list_markers` read
126
+ back nonsense as a result. ([#6](https://github.com/leancoderkavy/premiere-pro-mcp/issues/6))
127
+
128
+ - **`manage_proxies` and `get_encoder_presets` called ExtendScript methods that do not exist.**
129
+ `ProjectItem` has no `createProxy()` and `EncoderManager` has no `getFormatList()`, so both threw
130
+ every time. `manage_proxies` with `action: "create"` now queues a real proxy encode through Media
131
+ Encoder instead of reporting "Proxy creation started" for work that never happened, and
132
+ `get_encoder_presets` discovers presets by scanning the `.epr` files Adobe ships on disk, returning
133
+ each preset's path so it can be passed straight to `export_sequence`.
134
+ ([#7](https://github.com/leancoderkavy/premiere-pro-mcp/issues/7))
135
+
136
+ - **`capture_frame`, `export_frame`, and `freeze_frame` threw on every call.** `exportFramePNG`
137
+ exists only on the QE DOM sequence, not the public DOM one. These tools now go through the QE
138
+ sequence, and — because QE's return value is unreliable — decide success by checking that a file
139
+ actually exists on disk, falling back to a one-frame Media Encoder export. They can no longer
140
+ report success having written nothing.
141
+ ([#9](https://github.com/leancoderkavy/premiere-pro-mcp/issues/9))
142
+
143
+ - **Six tools repaired for Premiere Pro 2026** via
144
+ [#3](https://github.com/leancoderkavy/premiere-pro-mcp/pull/3): `add_audio_keyframes` (used a
145
+ nonexistent `Property.addKeyframe`, and wrote dB into a property that stores amplitude),
146
+ `color_correct` (one unsettable Lumetri property aborted the whole script and lost every other
147
+ change), `add_transition` and friends (`getVideoTransitionList()` returns empty on 2026 even
148
+ though by-name lookup works), `add_adjustment_layer` (`qeSeq.addAdjustmentLayer` was removed in
149
+ 2026), `export_sequence` (defaulted to a hardcoded macOS-only preset path), and `add_text_overlay`
150
+ (called `createCaptionTrack` with the wrong signature).
151
+
152
+ - `manage_proxies` with `action: "toggle"` reported the inverse of the state it had just set.
153
+
154
+ - The README described this repository as "a temporary fork" of itself — a fork banner that rode in
155
+ with the [#1](https://github.com/leancoderkavy/premiere-pro-mcp/pull/1) merge.
156
+
157
+ ### Notes
158
+
159
+ - The frame-export and proxy-create paths are fixed against the documented API and covered by
160
+ regression tests, but have not yet been live-verified against a running Premiere Pro. If you can
161
+ test them, reports on
162
+ [#7](https://github.com/leancoderkavy/premiere-pro-mcp/issues/7) and
163
+ [#9](https://github.com/leancoderkavy/premiere-pro-mcp/issues/9) are very welcome.
164
+ - Windows users on CEP 12 may additionally need to sign the extension (`ZXPSignCmd -sign`) — see
165
+ [#2](https://github.com/leancoderkavy/premiere-pro-mcp/issues/2) for details. That is an Adobe
166
+ signature-verification requirement, not a bug in this package.
167
+
168
+ ## [1.0.0] - 2025-02-26
169
+
170
+ ### Added
171
+
172
+ - **269 tools** across **28 modules** covering nearly the entire Premiere Pro ExtendScript and QE DOM API surface
173
+ - File-based IPC bridge for reliable communication between Node.js MCP server and CEP plugin
174
+ - CEP plugin with panel UI for bridge status monitoring and configuration
175
+ - Cross-platform support (macOS and Windows)
176
+ - Two MCP resources for LLM context: `premiere-instructions` and `extendscript-reference`
177
+ - Security validation for generated scripts (blocks eval, new Function, System.callSystem)
178
+ - Automated CEP plugin installer script
179
+
180
+ #### Tool Modules
181
+
182
+ - **discovery** (10) — Project info, item listing, clip queries
183
+ - **project** (26) — Save/open, import, bins, AE comps, bars & tone, scratch disks
184
+ - **media** (16) — Proxy management, offline, frame rate override, XMP, color space
185
+ - **sequence** (11) — Create, duplicate, delete, settings, auto-reframe, unnest, captions
186
+ - **timeline** (10) — Add/remove/move/trim/split clips, properties, replace
187
+ - **effects** (8) — Apply/remove effects, color correction, LUTs, stabilization
188
+ - **transitions** (5) — Add transitions by name (QE DOM)
189
+ - **audio** (3) — Levels, keyframes, mute
190
+ - **text** (3) — Text overlays, MOGRTs
191
+ - **markers** (4) — Add/delete/update/list markers
192
+ - **tracks** (4) — Add/delete/lock/visibility
193
+ - **playhead** (6) — Position, work area, in/out points
194
+ - **metadata** (9) — XMP, project metadata, color labels, footage interpretation
195
+ - **export** (14) — Sequence export, frame capture (base64), FCP XML, AAF, OMF, encoding
196
+ - **advanced** (27) — QE DOM: ripple delete, roll/slide/slip edits, speed, reverse, frame blend
197
+ - **keyframes** (8) — Full CRUD: add, get, remove, range remove, interpolation, value at time
198
+ - **scripting** (6) — Execute arbitrary ExtendScript, expression eval, DOM inspection
199
+ - **inspection** (10) — Deep project/sequence/clip analysis, timeline gaps, media reports
200
+ - **selection** (7) — Select by name, range, color; invert; select disabled
201
+ - **clipboard** (6) — Copy effects, batch apply, replace media, blend modes
202
+ - **source-monitor** (7) — Open/close, in/out points, insert/overwrite from source
203
+ - **track-targeting** (31) — Target tracks, motion/transform properties, audio properties
204
+ - **utility** (29) — Batch rename, enable/disable, project analysis, navigation
205
+ - **health** (1) — Connectivity ping
206
+ - **workspace** (2) — Get/set workspace layouts
207
+ - **captions** (1) — Create caption tracks
208
+ - **playback** (4) — Timeline and source monitor playback control
209
+ - **project-manager** (1) — Project consolidation and transfer
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2025 Premiere Pro MCP Contributors
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.
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Premiere Pro MCP Contributors
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.