jagproject 26.3.22 → 26.3.25

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 (206) hide show
  1. package/WAProto/GenerateStatics.sh +3 -4
  2. package/WAProto/WAProto.proto +1215 -511
  3. package/WAProto/fix-imports.js +73 -0
  4. package/WAProto/index.d.ts +14017 -0
  5. package/WAProto/index.js +64857 -145167
  6. package/engine-requirements.js +4 -7
  7. package/lib/Defaults/index.d.ts +74 -0
  8. package/lib/Defaults/index.js +51 -33
  9. package/lib/Defaults/phonenumber-mcc.json +223 -0
  10. package/lib/Defaults/wileys-version.json +2 -2
  11. package/lib/Signal/Group/ciphertext-message.d.ts +10 -0
  12. package/lib/Signal/Group/group-session-builder.d.ts +15 -0
  13. package/lib/Signal/Group/group-session-builder.js +5 -3
  14. package/lib/Signal/Group/group_cipher.d.ts +17 -0
  15. package/lib/Signal/Group/group_cipher.js +35 -46
  16. package/lib/Signal/Group/index.d.ts +12 -0
  17. package/lib/Signal/Group/index.js +21 -21
  18. package/lib/Signal/Group/keyhelper.d.ts +11 -0
  19. package/lib/Signal/Group/keyhelper.js +2 -2
  20. package/lib/Signal/Group/sender-chain-key.d.ts +14 -0
  21. package/lib/Signal/Group/sender-chain-key.js +5 -10
  22. package/lib/Signal/Group/sender-key-distribution-message.d.ts +17 -0
  23. package/lib/Signal/Group/sender-key-distribution-message.js +7 -7
  24. package/lib/Signal/Group/sender-key-message.d.ts +19 -0
  25. package/lib/Signal/Group/sender-key-message.js +8 -8
  26. package/lib/Signal/Group/sender-key-name.d.ts +18 -0
  27. package/lib/Signal/Group/sender-key-record.d.ts +31 -0
  28. package/lib/Signal/Group/sender-key-record.js +7 -16
  29. package/lib/Signal/Group/sender-key-state.d.ts +39 -0
  30. package/lib/Signal/Group/sender-key-state.js +25 -37
  31. package/lib/Signal/Group/sender-message-key.d.ts +12 -0
  32. package/lib/Signal/Group/sender-message-key.js +2 -2
  33. package/lib/Signal/libsignal.d.ts +5 -0
  34. package/lib/Signal/libsignal.js +358 -54
  35. package/lib/Signal/lid-mapping.d.ts +19 -0
  36. package/lib/Signal/lid-mapping.js +274 -0
  37. package/lib/Socket/Client/index.d.ts +3 -0
  38. package/lib/Socket/Client/index.js +2 -2
  39. package/lib/Socket/Client/types.d.ts +16 -0
  40. package/lib/Socket/Client/types.js +1 -0
  41. package/lib/Socket/Client/websocket.d.ts +13 -0
  42. package/lib/Socket/Client/websocket.js +18 -30
  43. package/lib/Socket/business.d.ts +202 -0
  44. package/lib/Socket/business.js +160 -38
  45. package/lib/Socket/chats.d.ts +111 -0
  46. package/lib/Socket/chats.js +497 -314
  47. package/lib/Socket/communities.d.ts +258 -0
  48. package/lib/Socket/communities.js +438 -0
  49. package/lib/Socket/community.js +333 -0
  50. package/lib/Socket/groups.d.ts +150 -0
  51. package/lib/Socket/groups.js +229 -91
  52. package/lib/Socket/index.d.ts +245 -0
  53. package/lib/Socket/index.js +9 -6
  54. package/lib/Socket/messages-recv.d.ts +187 -0
  55. package/lib/Socket/messages-recv.js +1105 -501
  56. package/lib/Socket/messages-send.d.ts +183 -0
  57. package/lib/Socket/messages-send.js +1184 -501
  58. package/lib/Socket/mex.d.ts +3 -0
  59. package/lib/Socket/mex.js +45 -0
  60. package/lib/Socket/newsletter.d.ts +160 -0
  61. package/lib/Socket/newsletter.js +227 -200
  62. package/lib/Socket/socket.d.ts +55 -0
  63. package/lib/Socket/socket.js +507 -206
  64. package/lib/Socket/usync.js +6 -6
  65. package/lib/Store/index.js +17 -5
  66. package/lib/Store/make-cache-manager-store.js +83 -0
  67. package/lib/Store/make-in-memory-store.js +48 -89
  68. package/lib/Store/make-ordered-dictionary.js +1 -1
  69. package/lib/Types/Auth.d.ts +116 -0
  70. package/lib/Types/Bussines.d.ts +25 -0
  71. package/lib/Types/Bussines.js +2 -0
  72. package/lib/Types/Call.d.ts +15 -0
  73. package/lib/Types/Chat.d.ts +123 -0
  74. package/lib/Types/Chat.js +7 -1
  75. package/lib/Types/Contact.d.ts +24 -0
  76. package/lib/Types/Events.d.ts +237 -0
  77. package/lib/Types/Events.js +1 -0
  78. package/lib/Types/GroupMetadata.d.ts +67 -0
  79. package/lib/Types/Label.d.ts +47 -0
  80. package/lib/Types/Label.js +1 -3
  81. package/lib/Types/LabelAssociation.d.ts +30 -0
  82. package/lib/Types/LabelAssociation.js +1 -3
  83. package/lib/Types/Message.d.ts +305 -0
  84. package/lib/Types/Message.js +9 -5
  85. package/lib/Types/MexUpdates.js +11 -0
  86. package/lib/Types/Newsletter.d.ts +135 -0
  87. package/lib/Types/Newsletter.js +36 -11
  88. package/lib/Types/Product.d.ts +79 -0
  89. package/lib/Types/Signal.d.ts +76 -0
  90. package/lib/Types/Signal.js +1 -0
  91. package/lib/Types/Socket.d.ts +133 -0
  92. package/lib/Types/Socket.js +1 -0
  93. package/lib/Types/State.d.ts +39 -0
  94. package/lib/Types/State.js +12 -0
  95. package/lib/Types/USync.d.ts +26 -0
  96. package/lib/Types/USync.js +1 -0
  97. package/lib/Types/index.d.ts +65 -0
  98. package/lib/Types/index.js +14 -14
  99. package/lib/Utils/audioToBuffer.js +31 -0
  100. package/lib/Utils/auth-utils.d.ts +19 -0
  101. package/lib/Utils/auth-utils.js +222 -123
  102. package/lib/Utils/baileys-event-stream.js +60 -0
  103. package/lib/Utils/browser-utils.d.ts +4 -0
  104. package/lib/Utils/browser-utils.js +38 -29
  105. package/lib/Utils/business.d.ts +23 -0
  106. package/lib/Utils/business.js +54 -48
  107. package/lib/Utils/chat-utils.d.ts +70 -0
  108. package/lib/Utils/chat-utils.js +284 -189
  109. package/lib/Utils/crypto.d.ts +37 -0
  110. package/lib/Utils/crypto.js +16 -41
  111. package/lib/Utils/decode-wa-message.d.ts +48 -0
  112. package/lib/Utils/decode-wa-message.js +128 -48
  113. package/lib/Utils/event-buffer.d.ts +34 -0
  114. package/lib/Utils/event-buffer.js +124 -62
  115. package/lib/Utils/generics.d.ts +91 -0
  116. package/lib/Utils/generics.js +154 -138
  117. package/lib/Utils/history.d.ts +22 -0
  118. package/lib/Utils/history.js +77 -34
  119. package/lib/Utils/identity-change-handler.d.ts +37 -0
  120. package/lib/Utils/identity-change-handler.js +54 -0
  121. package/lib/Utils/index.d.ts +22 -0
  122. package/lib/Utils/index.js +32 -19
  123. package/lib/Utils/link-preview.d.ts +21 -0
  124. package/lib/Utils/link-preview.js +12 -17
  125. package/lib/Utils/logger.d.ts +13 -0
  126. package/lib/Utils/lt-hash.d.ts +8 -0
  127. package/lib/Utils/lt-hash.js +2 -43
  128. package/lib/Utils/make-mutex.d.ts +9 -0
  129. package/lib/Utils/make-mutex.js +21 -27
  130. package/lib/Utils/message-retry-manager.d.ts +110 -0
  131. package/lib/Utils/message-retry-manager.js +143 -45
  132. package/lib/Utils/messages-media.d.ts +130 -0
  133. package/lib/Utils/messages-media.js +429 -502
  134. package/lib/Utils/messages-newsletter.d.ts +84 -0
  135. package/lib/Utils/messages-newsletter.js +295 -0
  136. package/lib/Utils/messages.d.ts +92 -0
  137. package/lib/Utils/messages.js +1099 -400
  138. package/lib/Utils/noise-handler.d.ts +20 -0
  139. package/lib/Utils/noise-handler.js +145 -91
  140. package/lib/Utils/pre-key-manager.d.ts +28 -0
  141. package/lib/Utils/pre-key-manager.js +112 -0
  142. package/lib/Utils/process-message.d.ts +60 -0
  143. package/lib/Utils/process-message.js +316 -184
  144. package/lib/Utils/reporting-utils.d.ts +11 -0
  145. package/lib/Utils/reporting-utils.js +262 -0
  146. package/lib/Utils/resolve-jid.d.ts +43 -0
  147. package/lib/Utils/resolve-jid.js +95 -0
  148. package/lib/Utils/serial-task-queue.js +29 -0
  149. package/lib/Utils/signal.d.ts +34 -0
  150. package/lib/Utils/signal.js +56 -39
  151. package/lib/Utils/streamToBuffer.js +17 -0
  152. package/lib/Utils/sync-action-utils.d.ts +19 -0
  153. package/lib/Utils/sync-action-utils.js +52 -0
  154. package/lib/Utils/tc-token-utils.d.ts +12 -0
  155. package/lib/Utils/tc-token-utils.js +20 -0
  156. package/lib/Utils/use-mongo-file-auth-state.js +71 -0
  157. package/lib/Utils/use-multi-file-auth-state.d.ts +13 -0
  158. package/lib/Utils/use-multi-file-auth-state.js +11 -12
  159. package/lib/Utils/use-single-file-auth-state.js +73 -0
  160. package/lib/Utils/validate-connection.d.ts +11 -0
  161. package/lib/Utils/validate-connection.js +59 -82
  162. package/lib/Utils/wileys-event-stream.js +1 -61
  163. package/lib/WABinary/constants.d.ts +28 -0
  164. package/lib/WABinary/decode.d.ts +7 -0
  165. package/lib/WABinary/decode.js +39 -4
  166. package/lib/WABinary/encode.d.ts +3 -0
  167. package/lib/WABinary/encode.js +17 -11
  168. package/lib/WABinary/generic-utils.d.ts +15 -0
  169. package/lib/WABinary/generic-utils.js +46 -18
  170. package/lib/WABinary/index.d.ts +6 -0
  171. package/lib/WABinary/index.js +9 -5
  172. package/lib/WABinary/jid-utils.d.ts +48 -0
  173. package/lib/WABinary/jid-utils.js +67 -37
  174. package/lib/WABinary/types.d.ts +19 -0
  175. package/lib/WABinary/types.js +34 -0
  176. package/lib/WAM/BinaryInfo.d.ts +9 -0
  177. package/lib/WAM/constants.d.ts +40 -0
  178. package/lib/WAM/constants.js +19183 -11678
  179. package/lib/WAM/encode.d.ts +3 -0
  180. package/lib/WAM/encode.js +15 -17
  181. package/lib/WAM/index.d.ts +4 -0
  182. package/lib/WAM/index.js +3 -3
  183. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +10 -0
  184. package/lib/WAUSync/Protocols/USyncContactProtocol.js +6 -6
  185. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +23 -0
  186. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +9 -9
  187. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +13 -0
  188. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +6 -6
  189. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +13 -0
  190. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +7 -8
  191. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +26 -0
  192. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +18 -17
  193. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +10 -0
  194. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +11 -3
  195. package/lib/WAUSync/Protocols/index.d.ts +5 -0
  196. package/lib/WAUSync/Protocols/index.js +6 -4
  197. package/lib/WAUSync/USyncQuery.d.ts +29 -0
  198. package/lib/WAUSync/USyncQuery.js +38 -30
  199. package/lib/WAUSync/USyncUser.d.ts +13 -0
  200. package/lib/WAUSync/index.d.ts +4 -0
  201. package/lib/WAUSync/index.js +3 -3
  202. package/lib/index.d.ts +12 -0
  203. package/lib/index.js +3 -5
  204. package/package.json +10 -6
  205. package/readme.md +97 -0
  206. package/LICENSE +0 -21
@@ -0,0 +1,4 @@
1
+ export * from './Protocols/index.js';
2
+ export * from './USyncQuery.js';
3
+ export * from './USyncUser.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -14,6 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./Protocols"), exports);
18
- __exportStar(require("./USyncQuery"), exports);
19
- __exportStar(require("./USyncUser"), exports);
17
+ __exportStar(require("./Protocols/index.js"), exports);
18
+ __exportStar(require("./USyncQuery.js"), exports);
19
+ __exportStar(require("./USyncUser.js"), exports);
package/lib/index.d.ts ADDED
@@ -0,0 +1,12 @@
1
+ import makeWASocket from './Socket/index.js';
2
+ export * from '../WAProto/index.js';
3
+ export * from './Utils/index.js';
4
+ export * from './Types/index.js';
5
+ export * from './Defaults/index.js';
6
+ export * from './WABinary/index.js';
7
+ export * from './WAM/index.js';
8
+ export * from './WAUSync/index.js';
9
+ export type WASocket = ReturnType<typeof makeWASocket>;
10
+ export { makeWASocket };
11
+ export default makeWASocket;
12
+ //# sourceMappingURL=index.d.ts.map
package/lib/index.js CHANGED
@@ -80,7 +80,6 @@ printBanner();
80
80
  PEMBATAS
81
81
  */
82
82
 
83
-
84
83
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
85
84
  if (k2 === undefined) k2 = k;
86
85
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -102,7 +101,7 @@ var __importDefault = (this && this.__importDefault) || function(mod) {
102
101
  };
103
102
 
104
103
  Object.defineProperty(exports, "__esModule", { value: true });
105
- exports.proto = exports.makeWASocket = void 0;
104
+ exports.default = exports.proto = exports.makeWASocket = void 0;
106
105
 
107
106
  const WAProto_1 = require("../WAProto");
108
107
  Object.defineProperty(exports, "proto", {
@@ -114,14 +113,13 @@ Object.defineProperty(exports, "proto", {
114
113
 
115
114
  const Socket_1 = __importDefault(require("./Socket"));
116
115
  exports.makeWASocket = Socket_1.default;
116
+ exports.default = Socket_1.default;
117
117
 
118
118
  __exportStar(require("../WAProto"), exports);
119
119
  __exportStar(require("./Utils"), exports);
120
120
  __exportStar(require("./Types"), exports);
121
- __exportStar(require("./Store"), exports);
122
121
  __exportStar(require("./Defaults"), exports);
123
122
  __exportStar(require("./WABinary"), exports);
124
123
  __exportStar(require("./WAM"), exports);
125
124
  __exportStar(require("./WAUSync"), exports);
126
-
127
- exports.default = Socket_1.default;
125
+ __exportStar(require("./Store"), exports);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "jagproject",
3
- "version": "26.03.22",
4
- "update": "22 Maret 2026",
3
+ "version": "26.03.25",
4
+ "update": "22 Maret 2026",
5
5
  "description": "WhatsApp Web API Library",
6
6
  "keywords": [
7
7
  "jagoan",
@@ -12,7 +12,7 @@
12
12
  "automation",
13
13
  "multi-device"
14
14
  ],
15
- "homepage": "https://whatsapp.com/channel/0029VanhMDo42DcjiRGJOc2m",
15
+ "homepage": "https://whatsapp.com/channel/0029VanhMDo42DcjiRGJOc2m",
16
16
  "repository": {
17
17
  "type": "git",
18
18
  "url": "git+https://github.com/ChandraGO/jagoans.git"
@@ -26,8 +26,8 @@
26
26
  "main": "lib/index.js",
27
27
  "types": "lib/index.d.ts",
28
28
  "files": [
29
- "lib/*",
30
- "WAProto/*",
29
+ "lib/**/*",
30
+ "WAProto/**/*",
31
31
  "engine-requirements.js"
32
32
  ],
33
33
  "scripts": {
@@ -65,7 +65,11 @@
65
65
  "pino": "^9.6",
66
66
  "protobufjs": "^6.11.3",
67
67
  "uuid": "^10.0.0",
68
- "ws": "^8.13.0"
68
+ "ws": "^8.13.0",
69
+ "fflate": "^0.8.2",
70
+ "audio-decode": "^2.1.3",
71
+ "lru-cache": "^11.1.0",
72
+ "whatsapp-rust-bridge": "0.5.2"
69
73
  },
70
74
  "devDependencies": {
71
75
  "@adiwajshing/eslint-config": "github:adiwajshing/eslint-config",
package/readme.md CHANGED
@@ -68,6 +68,78 @@ yarn add jagproject
68
68
  ---
69
69
 
70
70
 
71
+ # Cara Pakai Cepat
72
+
73
+ ## Instalasi
74
+
75
+ ```bash
76
+ npm install jagproject
77
+ ```
78
+
79
+ ## Pemakaian Dasar
80
+
81
+ ```javascript
82
+ const { default: makeWASocket, useMultiFileAuthState } = require('jagproject')
83
+
84
+ async function startBot() {
85
+ const { state, saveCreds } = await useMultiFileAuthState('./session')
86
+
87
+ const sock = makeWASocket({
88
+ auth: state,
89
+ printQRInTerminal: true
90
+ })
91
+
92
+ sock.ev.on('creds.update', saveCreds)
93
+
94
+ sock.ev.on('connection.update', ({ connection }) => {
95
+ if (connection === 'open') {
96
+ console.log('Bot connected')
97
+ }
98
+ })
99
+ }
100
+
101
+ startBot()
102
+ ```
103
+
104
+ ## Kirim Sticker Pack
105
+
106
+ ```javascript
107
+ await sock.sendMessage('6281234567890@s.whatsapp.net', {
108
+ stickerPack: {
109
+ name: 'Baileys Wileyss',
110
+ publisher: 'Project Pemuda',
111
+ description: 'Sticker pack custom dari Wileyss',
112
+ cover: { url: './assets/cover.png' },
113
+ stickers: [
114
+ { sticker: { url: './assets/sticker-1.webp' }, emojis: ['😀'] },
115
+ { sticker: { url: './assets/sticker-2.webp' }, emojis: ['🔥'] },
116
+ { sticker: { url: './assets/sticker-3.png' }, emojis: ['🚀'] }
117
+ ]
118
+ }
119
+ })
120
+ ```
121
+
122
+ ### Format object `stickerPack`
123
+
124
+ - `name`: nama pack sticker
125
+ - `publisher`: nama author/publisher
126
+ - `description`: deskripsi pack
127
+ - `cover`: cover/tray icon, bisa file path, buffer, stream, atau URL
128
+ - `stickers`: array isi sticker, minimal 1 maksimal 60
129
+ - `sticker`: media tiap sticker, bisa WebP/PNG/JPG. Jika bukan WebP akan dicoba dikonversi otomatis
130
+ - `emojis`: emoji untuk sticker terkait
131
+ - `accessibilityLabel`: label opsional
132
+ - `packId`: opsional, jika tidak diisi akan dibuat otomatis
133
+
134
+ ### Catatan
135
+
136
+ - Sangat disarankan install `sharp` agar konversi gambar ke WebP lebih stabil.
137
+ - Jika `sharp` tidak ada, library akan mencoba memakai `jimp`.
138
+ - Ukuran tiap sticker maksimal 1 MB.
139
+ - Jumlah sticker maksimal 60 per pack.
140
+
141
+ ---
142
+
71
143
  # Documentation
72
144
 
73
145
  - [Connecting Account](#connecting-account)
@@ -119,6 +191,7 @@ yarn add jagproject
119
191
  - [Audio Message](#audio-message)
120
192
  - [Image Message](#image-message)
121
193
  - [ViewOnce Message](#view-once-message)
194
+ - [Sticker Pack Message](#kirim-sticker-pack)
122
195
  - [Modify Messages](#modify-messages)
123
196
  - [Delete Messages (for everyone)](#deleting-messages-for-everyone)
124
197
  - [Edit Messages](#editing-messages)
@@ -1873,3 +1946,27 @@ Gunakan secara bertanggung jawab dan hindari aktivitas ilegal atau penyalahgunaa
1873
1946
 
1874
1947
  📘 *Documentation powered by jagoan project*
1875
1948
  🧑‍💻 **Modified and Presented by Jagoan Project**
1949
+
1950
+ <a id="kirim-sticker-pack"></a>
1951
+ ## Sticker Pack Message
1952
+
1953
+ Gunakan field `stickerPack` pada `sendMessage` untuk mengirim satu paket sticker sekaligus.
1954
+
1955
+ Catatan penting: `stickerPack` sekarang bisa menerima campuran sticker statis dan video/animated (`webp/png/jpg/jpeg/gif/webm/mp4`) lalu mengonversinya ke WebP otomatis saat proses kirim, selama `ffmpeg` tersedia di server. Format `tgs`/Lottie tetap butuh preview/konverter tambahan di luar runtime ini.
1956
+
1957
+ ```javascript
1958
+ await sock.sendMessage(jid, {
1959
+ stickerPack: {
1960
+ name: 'Nama Pack',
1961
+ publisher: 'Nama Publisher',
1962
+ description: 'Deskripsi singkat',
1963
+ cover: { url: './cover.png' },
1964
+ stickers: [
1965
+ { sticker: { url: './1.webp' }, emojis: ['🙂'] },
1966
+ { sticker: { url: './2.png' }, emojis: ['🎉'] }
1967
+ ]
1968
+ }
1969
+ })
1970
+ ```
1971
+
1972
+ `cover` dan setiap item `sticker` menerima format media yang sama seperti pengiriman media biasa: path lokal, URL, Buffer, atau stream.
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2025 wileys
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.