speaker-calibration 2.2.209 → 2.2.210

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 (141) hide show
  1. package/.eslintignore +71 -71
  2. package/.eslintrc.json +40 -40
  3. package/.gitignore +81 -0
  4. package/.prettierignore +69 -69
  5. package/.prettierrc +14 -14
  6. package/LICENSE +20 -20
  7. package/README.md +133 -133
  8. package/__mocks__/fileMock.js +1 -1
  9. package/__mocks__/styleMock.js +1 -1
  10. package/babel.config.js +3 -3
  11. package/coverage/clover.xml +71 -71
  12. package/coverage/coverage-final.json +224 -224
  13. package/coverage/lcov-report/PythonServerInterface.js.html +265 -265
  14. package/coverage/lcov-report/base.css +354 -354
  15. package/coverage/lcov-report/block-navigation.js +82 -82
  16. package/coverage/lcov-report/favicon.png +0 -0
  17. package/coverage/lcov-report/index.html +123 -123
  18. package/coverage/lcov-report/prettify.css +101 -101
  19. package/coverage/lcov-report/prettify.js +937 -937
  20. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  21. package/coverage/lcov-report/sorter.js +189 -189
  22. package/coverage/lcov-report/src/index.html +121 -121
  23. package/coverage/lcov-report/src/server/PythonServerInterface.js.html +268 -268
  24. package/coverage/lcov-report/src/server/index.html +123 -123
  25. package/coverage/lcov-report/src/tasks/audioCalibrator.js.html +499 -499
  26. package/coverage/lcov-report/src/tasks/audioRecorder.js.html +412 -412
  27. package/coverage/lcov-report/src/tasks/index.html +143 -143
  28. package/coverage/lcov-report/src/tasks/volume/index.html +123 -123
  29. package/coverage/lcov-report/src/tasks/volume/volume.js.html +409 -409
  30. package/coverage/lcov-report/src/utils.js.html +172 -172
  31. package/coverage/lcov.info +91 -91
  32. package/dist/Procfile +0 -0
  33. package/dist/example/NoSleep.min.js +1 -1
  34. package/dist/example/credentials.json.gpg +0 -0
  35. package/dist/example/fetch-languages-sheets.js +77 -77
  36. package/dist/example/i18n.js +27366 -27366
  37. package/dist/example/index.html +47 -47
  38. package/dist/example/listener.html +79 -79
  39. package/dist/example/listener.js +152 -152
  40. package/dist/example/server.js +51 -51
  41. package/dist/example/speaker.html +145 -145
  42. package/dist/example/speakerUI.js +273 -273
  43. package/dist/example/styles.css +99 -99
  44. package/dist/main.js +17 -17
  45. package/dist/main.js.LICENSE.txt +0 -0
  46. package/dist/mlsGen.js +6814 -6814
  47. package/dist/mlsGen.wasm +0 -0
  48. package/dist/package-lock.json +1018 -1018
  49. package/dist/package.json +18 -18
  50. package/doc/AudioCalibrator.html +417 -417
  51. package/doc/AudioPeer.html +251 -251
  52. package/doc/AudioRecorder.html +195 -195
  53. package/doc/ImpulseResponse.html +215 -215
  54. package/doc/Listener.html +308 -308
  55. package/doc/MlsGenInterface.html +226 -226
  56. package/doc/MyEventEmitter.html +274 -274
  57. package/doc/PythonServerAPI.html +109 -109
  58. package/doc/Speaker-Calibration-UML-Diagram.png +0 -0
  59. package/doc/Speaker.html +276 -276
  60. package/doc/Takes%20a%20target%20element%20where%20html%20elements%20will%20be%20appended..html +128 -128
  61. package/doc/Takes%20the%20url%20of%20the%20current%20site%0Aand%20a%20target%20element%20where%20html%20elements%20will%20be%20appended..html +138 -138
  62. package/doc/Takes%20the%20url%20of%20the%20current%20site%20and%20a%20target%20element%20where%20html%20elements%20will%20be%20appended..html +137 -137
  63. package/doc/Volume.html +88 -88
  64. package/doc/audioCalibrator.js.html +179 -179
  65. package/doc/audioPeer.js.html +175 -175
  66. package/doc/audioRecorder.js.html +163 -163
  67. package/doc/creates%20a%20new%20AudioRecorder%20instance.%20%0ASets%20up%20the%20audio%20context%20and%20file%20reader..html +114 -114
  68. package/doc/fonts/OpenSans-Bold-webfont.eot +0 -0
  69. package/doc/fonts/OpenSans-Bold-webfont.svg +1829 -1829
  70. package/doc/fonts/OpenSans-Bold-webfont.woff +0 -0
  71. package/doc/fonts/OpenSans-BoldItalic-webfont.eot +0 -0
  72. package/doc/fonts/OpenSans-BoldItalic-webfont.svg +1829 -1829
  73. package/doc/fonts/OpenSans-BoldItalic-webfont.woff +0 -0
  74. package/doc/fonts/OpenSans-Italic-webfont.eot +0 -0
  75. package/doc/fonts/OpenSans-Italic-webfont.svg +1829 -1829
  76. package/doc/fonts/OpenSans-Italic-webfont.woff +0 -0
  77. package/doc/fonts/OpenSans-Light-webfont.eot +0 -0
  78. package/doc/fonts/OpenSans-Light-webfont.svg +1830 -1830
  79. package/doc/fonts/OpenSans-Light-webfont.woff +0 -0
  80. package/doc/fonts/OpenSans-LightItalic-webfont.eot +0 -0
  81. package/doc/fonts/OpenSans-LightItalic-webfont.svg +1834 -1834
  82. package/doc/fonts/OpenSans-LightItalic-webfont.woff +0 -0
  83. package/doc/fonts/OpenSans-Regular-webfont.eot +0 -0
  84. package/doc/fonts/OpenSans-Regular-webfont.svg +1830 -1830
  85. package/doc/fonts/OpenSans-Regular-webfont.woff +0 -0
  86. package/doc/global.html +308 -308
  87. package/doc/index.html +58 -58
  88. package/doc/listener.js.html +170 -170
  89. package/doc/mlsGen_mlsGenInterface.js.html +117 -117
  90. package/doc/myEventEmitter.js.html +124 -124
  91. package/doc/peer-connection_audioPeer.js.html +188 -188
  92. package/doc/peer-connection_listener.js.html +311 -311
  93. package/doc/peer-connection_speaker.js.html +381 -381
  94. package/doc/sc-activity-diagram.png +0 -0
  95. package/doc/scripts/linenumber.js +25 -25
  96. package/doc/scripts/prettify/Apache-License-2.0.txt +202 -202
  97. package/doc/scripts/prettify/lang-css.js +24 -24
  98. package/doc/scripts/prettify/prettify.js +640 -640
  99. package/doc/server_PythonServerAPI.js.html +160 -160
  100. package/doc/speaker.js.html +248 -248
  101. package/doc/styles/jsdoc-default.css +371 -371
  102. package/doc/styles/prettify-jsdoc.css +111 -111
  103. package/doc/styles/prettify-tomorrow.css +163 -163
  104. package/doc/tasks_audioCalibrator.js.html +207 -207
  105. package/doc/tasks_audioRecorder.js.html +190 -190
  106. package/doc/tasks_impulse-response_impulseResponse.js.html +442 -442
  107. package/doc/tasks_impulse-response_mlsGen_mlsGenInterface.js.html +175 -175
  108. package/doc/tasks_volume_volume.js.html +185 -185
  109. package/doc/utils.js.html +105 -105
  110. package/jest.config.js +173 -173
  111. package/netlify.toml +26 -26
  112. package/package.json +73 -73
  113. package/src/config/firebase.js +26 -26
  114. package/src/index.html +21 -21
  115. package/src/main.js +23 -23
  116. package/src/myEventEmitter.js +83 -83
  117. package/src/peer-connection/audioPeer.js +183 -183
  118. package/src/peer-connection/listener.js +364 -364
  119. package/src/peer-connection/peerErrors.js +25 -25
  120. package/src/peer-connection/speaker.js +738 -738
  121. package/src/powerCheck.js +98 -98
  122. package/src/server/PythonServerAPI.js +869 -869
  123. package/src/tasks/audioCalibrator.js +351 -336
  124. package/src/tasks/audioRecorder.js +315 -315
  125. package/src/tasks/combination/combination.js +3030 -3015
  126. package/src/tasks/combination/mlsGen/mlsGen.cpp +98 -98
  127. package/src/tasks/combination/mlsGen/mlsGen.hpp +303 -303
  128. package/src/tasks/combination/mlsGen/mlsGenInterface.js +131 -131
  129. package/src/tasks/combination/mlsGen/mlsGenTest.cpp +180 -180
  130. package/src/tasks/impulse-response/impulseResponse.js +610 -610
  131. package/src/tasks/impulse-response/mlsGen/mlsGen.cpp +98 -98
  132. package/src/tasks/impulse-response/mlsGen/mlsGen.hpp +303 -303
  133. package/src/tasks/impulse-response/mlsGen/mlsGenInterface.js +131 -131
  134. package/src/tasks/impulse-response/mlsGen/mlsGenTest.cpp +180 -180
  135. package/src/tasks/volume/volume.cpp +2 -2
  136. package/src/tasks/volume/volume.hpp +22 -22
  137. package/src/tasks/volume/volume.js +279 -279
  138. package/src/utils.js +205 -205
  139. package/webpack.config.js +37 -37
  140. package/.github/workflows/update-phrases.yml +0 -37
  141. package/makefile +0 -74
package/.eslintignore CHANGED
@@ -1,72 +1,72 @@
1
- # ignore all files starting with . or ~
2
- .*
3
- ~*
4
-
5
- # ignore tests
6
- **/__tests__/**
7
-
8
- # ignore node/grunt dependency directories
9
- node_modules/
10
-
11
- # ignore dist files
12
- dist/
13
-
14
- # ignore composer vendor directory
15
- /vendor
16
-
17
- # ignore components loaded via Bower
18
- /bower_components
19
-
20
- # ignore jekyll build directory
21
- /_site
22
-
23
- # ignore OS generated files
24
- ehthumbs.db
25
- Thumbs.db
26
-
27
- # ignore Editor files
28
- *.sublime-project
29
- *.sublime-workspace
30
- *.komodoproject
31
-
32
- # ignore log files and databases
33
- *.log
34
- *.sql
35
- *.sqlite
36
-
37
- # ignore compiled files
38
- *.com
39
- *.class
40
- *.dll
41
- *.exe
42
- *.o
43
- *.so
44
-
45
- # ignore packaged files
46
- *.7z
47
- *.dmg
48
- *.gz
49
- *.iso
50
- *.jar
51
- *.rar
52
- *.tar
53
- *.zip
54
-
55
- # ignore private/secret files
56
- *.der
57
- *.key
58
- *.pem
59
-
60
- # --------------------------------------------------------
61
- # BEGIN Explictly Allowed Files (i.e. do NOT ignore these)
62
- # --------------------------------------------------------
63
-
64
- # track these files, if they exist
65
- !.gitignore
66
- !.editorconfig
67
- !.phpcs.xml.dist
68
- !.env.example
69
- !.eslintrc.json
70
- !.prettierrc.json
71
- !.eslintignore
1
+ # ignore all files starting with . or ~
2
+ .*
3
+ ~*
4
+
5
+ # ignore tests
6
+ **/__tests__/**
7
+
8
+ # ignore node/grunt dependency directories
9
+ node_modules/
10
+
11
+ # ignore dist files
12
+ dist/
13
+
14
+ # ignore composer vendor directory
15
+ /vendor
16
+
17
+ # ignore components loaded via Bower
18
+ /bower_components
19
+
20
+ # ignore jekyll build directory
21
+ /_site
22
+
23
+ # ignore OS generated files
24
+ ehthumbs.db
25
+ Thumbs.db
26
+
27
+ # ignore Editor files
28
+ *.sublime-project
29
+ *.sublime-workspace
30
+ *.komodoproject
31
+
32
+ # ignore log files and databases
33
+ *.log
34
+ *.sql
35
+ *.sqlite
36
+
37
+ # ignore compiled files
38
+ *.com
39
+ *.class
40
+ *.dll
41
+ *.exe
42
+ *.o
43
+ *.so
44
+
45
+ # ignore packaged files
46
+ *.7z
47
+ *.dmg
48
+ *.gz
49
+ *.iso
50
+ *.jar
51
+ *.rar
52
+ *.tar
53
+ *.zip
54
+
55
+ # ignore private/secret files
56
+ *.der
57
+ *.key
58
+ *.pem
59
+
60
+ # --------------------------------------------------------
61
+ # BEGIN Explictly Allowed Files (i.e. do NOT ignore these)
62
+ # --------------------------------------------------------
63
+
64
+ # track these files, if they exist
65
+ !.gitignore
66
+ !.editorconfig
67
+ !.phpcs.xml.dist
68
+ !.env.example
69
+ !.eslintrc.json
70
+ !.prettierrc.json
71
+ !.eslintignore
72
72
  !.prettierignore
package/.eslintrc.json CHANGED
@@ -1,40 +1,40 @@
1
- {
2
- "env": {
3
- "browser": true,
4
- "es2021": true
5
- },
6
- "extends": ["airbnb-base", "prettier", "plugin:compat/recommended"],
7
- "plugins": ["no-floating-promise", "jsdoc"],
8
- "parserOptions": {
9
- "ecmaVersion": "latest",
10
- "sourceType": "module"
11
- },
12
- "rules": {
13
- "no-console": 1, //TODO: set to 1 in final submission
14
- "class-methods-use-this": 1, //TODO: set to 1 in final submission
15
- "require-jsdoc": [
16
- "error",
17
- {
18
- "require": {
19
- "FunctionDeclaration": true,
20
- "MethodDefinition": true,
21
- "ClassDeclaration": true,
22
- "ArrowFunctionExpression": true,
23
- "FunctionExpression": true
24
- }
25
- }
26
- ],
27
- "no-floating-promise/no-floating-promise": 2
28
- },
29
- "settings": {
30
- "polyfills": [
31
- "Promise",
32
- "Array.from",
33
- "Object.fromEntries",
34
- "navigator.mediaDevices",
35
- "AudioContext",
36
- "MediaRecorder",
37
- "URLSearchParams"
38
- ]
39
- }
40
- }
1
+ {
2
+ "env": {
3
+ "browser": true,
4
+ "es2021": true
5
+ },
6
+ "extends": ["airbnb-base", "prettier", "plugin:compat/recommended"],
7
+ "plugins": ["no-floating-promise", "jsdoc"],
8
+ "parserOptions": {
9
+ "ecmaVersion": "latest",
10
+ "sourceType": "module"
11
+ },
12
+ "rules": {
13
+ "no-console": 1, //TODO: set to 1 in final submission
14
+ "class-methods-use-this": 1, //TODO: set to 1 in final submission
15
+ "require-jsdoc": [
16
+ "error",
17
+ {
18
+ "require": {
19
+ "FunctionDeclaration": true,
20
+ "MethodDefinition": true,
21
+ "ClassDeclaration": true,
22
+ "ArrowFunctionExpression": true,
23
+ "FunctionExpression": true
24
+ }
25
+ }
26
+ ],
27
+ "no-floating-promise/no-floating-promise": 2
28
+ },
29
+ "settings": {
30
+ "polyfills": [
31
+ "Promise",
32
+ "Array.from",
33
+ "Object.fromEntries",
34
+ "navigator.mediaDevices",
35
+ "AudioContext",
36
+ "MediaRecorder",
37
+ "URLSearchParams"
38
+ ]
39
+ }
40
+ }
package/.gitignore ADDED
@@ -0,0 +1,81 @@
1
+ # Ignore files without extentions
2
+ *
3
+ !/**/
4
+ !*.*
5
+ # don't ignore dist/Procfile
6
+ !dist/Procfile
7
+
8
+ # ignore all files starting with . or ~
9
+ .*
10
+ ~*
11
+
12
+ # ignore node/grunt dependency directories
13
+ node_modules/
14
+ dist/node_modules/
15
+
16
+ # ignore composer vendor directory
17
+ /vendor
18
+
19
+ # ignore components loaded via Bower
20
+ /bower_components
21
+
22
+ # ignore jekyll build directory
23
+ /_site
24
+
25
+ # ignore OS generated files
26
+ ehthumbs.db
27
+ Thumbs.db
28
+
29
+ # ignore Editor files
30
+ *.sublime-project
31
+ *.sublime-workspace
32
+ *.komodoproject
33
+
34
+ # ignore log files and databases
35
+ *.log
36
+ *.sql
37
+ *.sqlite
38
+
39
+ # ignore compiled files
40
+ *.com
41
+ *.class
42
+ *.dll
43
+ *.exe
44
+ *.o
45
+ *.so
46
+
47
+ # ignore packaged files
48
+ *.7z
49
+ *.dmg
50
+ *.gz
51
+ *.iso
52
+ *.jar
53
+ *.rar
54
+ *.tar
55
+ *.zip
56
+
57
+ # ignore private/secret files
58
+ *.der
59
+ *.key
60
+ *.pem
61
+
62
+ # ingnore CSV files
63
+ *.csv
64
+
65
+ # ignore library files
66
+ kfr-master
67
+ kissfft
68
+
69
+ # --------------------------------------------------------
70
+ # BEGIN Explictly Allowed Files (i.e. do NOT ignore these)
71
+ # --------------------------------------------------------
72
+
73
+ # track these files, if they exist
74
+ !.gitignore
75
+ !.editorconfig
76
+ !.phpcs.xml.dist
77
+ !.env.example
78
+ !.eslintrc.json
79
+ !.prettierrc
80
+ !.eslintignore
81
+ !.prettierignore
package/.prettierignore CHANGED
@@ -1,70 +1,70 @@
1
- # ignore all files starting with . or ~
2
- .*
3
- ~*
4
-
5
- # ignore dist files
6
- dist/*
7
- !dist/example/
8
-
9
- # ignore node/grunt dependency directories
10
- node_modules/
11
-
12
- # ignore composer vendor directory
13
- /vendor
14
-
15
- # ignore components loaded via Bower
16
- /bower_components
17
-
18
- # ignore jekyll build directory
19
- /_site
20
-
21
- # ignore OS generated files
22
- ehthumbs.db
23
- Thumbs.db
24
-
25
- # ignore Editor files
26
- *.sublime-project
27
- *.sublime-workspace
28
- *.komodoproject
29
-
30
- # ignore log files and databases
31
- *.log
32
- *.sql
33
- *.sqlite
34
-
35
- # ignore compiled files
36
- *.com
37
- *.class
38
- *.dll
39
- *.exe
40
- *.o
41
- *.so
42
-
43
- # ignore packaged files
44
- *.7z
45
- *.dmg
46
- *.gz
47
- *.iso
48
- *.jar
49
- *.rar
50
- *.tar
51
- *.zip
52
-
53
- # ignore private/secret files
54
- *.der
55
- *.key
56
- *.pem
57
-
58
- # --------------------------------------------------------
59
- # BEGIN Explictly Allowed Files (i.e. do NOT ignore these)
60
- # --------------------------------------------------------
61
-
62
- # track these files, if they exist
63
- !.gitignore
64
- !.editorconfig
65
- !.phpcs.xml.dist
66
- !.env.example
67
- !.eslintrc.json
68
- !.prettierrc.json
69
- !.eslintignore
1
+ # ignore all files starting with . or ~
2
+ .*
3
+ ~*
4
+
5
+ # ignore dist files
6
+ dist/*
7
+ !dist/example/
8
+
9
+ # ignore node/grunt dependency directories
10
+ node_modules/
11
+
12
+ # ignore composer vendor directory
13
+ /vendor
14
+
15
+ # ignore components loaded via Bower
16
+ /bower_components
17
+
18
+ # ignore jekyll build directory
19
+ /_site
20
+
21
+ # ignore OS generated files
22
+ ehthumbs.db
23
+ Thumbs.db
24
+
25
+ # ignore Editor files
26
+ *.sublime-project
27
+ *.sublime-workspace
28
+ *.komodoproject
29
+
30
+ # ignore log files and databases
31
+ *.log
32
+ *.sql
33
+ *.sqlite
34
+
35
+ # ignore compiled files
36
+ *.com
37
+ *.class
38
+ *.dll
39
+ *.exe
40
+ *.o
41
+ *.so
42
+
43
+ # ignore packaged files
44
+ *.7z
45
+ *.dmg
46
+ *.gz
47
+ *.iso
48
+ *.jar
49
+ *.rar
50
+ *.tar
51
+ *.zip
52
+
53
+ # ignore private/secret files
54
+ *.der
55
+ *.key
56
+ *.pem
57
+
58
+ # --------------------------------------------------------
59
+ # BEGIN Explictly Allowed Files (i.e. do NOT ignore these)
60
+ # --------------------------------------------------------
61
+
62
+ # track these files, if they exist
63
+ !.gitignore
64
+ !.editorconfig
65
+ !.phpcs.xml.dist
66
+ !.env.example
67
+ !.eslintrc.json
68
+ !.prettierrc.json
69
+ !.eslintignore
70
70
  !.prettierignore
package/.prettierrc CHANGED
@@ -1,15 +1,15 @@
1
- {
2
- "$schema": "http://json.schemastore.org/prettierrc",
3
- "arrowParens": "avoid",
4
- "bracketSpacing": false,
5
- "jsxBracketSameLine": false,
6
- "jsxSingleQuote": false,
7
- "printWidth": 100,
8
- "proseWrap": "always",
9
- "quoteProps": "as-needed",
10
- "semi": true,
11
- "singleQuote": true,
12
- "tabWidth": 2,
13
- "trailingComma": "es5",
14
- "useTabs": false
1
+ {
2
+ "$schema": "http://json.schemastore.org/prettierrc",
3
+ "arrowParens": "avoid",
4
+ "bracketSpacing": false,
5
+ "jsxBracketSameLine": false,
6
+ "jsxSingleQuote": false,
7
+ "printWidth": 100,
8
+ "proseWrap": "always",
9
+ "quoteProps": "as-needed",
10
+ "semi": true,
11
+ "singleQuote": true,
12
+ "tabWidth": 2,
13
+ "trailingComma": "es5",
14
+ "useTabs": false
15
15
  }
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2022 EasyEyes
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
1
+ MIT License
2
+
3
+ Copyright (c) 2022 EasyEyes
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
21
  SOFTWARE.