n8n-nodes-zalo-nnt 0.6.18 → 1.0.0

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 (138) hide show
  1. package/LICENSE.md +19 -19
  2. package/README.md +299 -166
  3. package/dist/credentials/N8nZaloApi.credentials.js +1 -31
  4. package/dist/credentials/ZaloApi.credentials.js +1 -64
  5. package/dist/credentials/ZaloApi.credentials.js.map +1 -1
  6. package/dist/credentials/ZaloApi.credentials.ts +1 -1
  7. package/dist/credentials/shared/zalo.svg +10 -10
  8. package/dist/nodes/ZaloChatHistory/ZaloChatHistory.node.d.ts +5 -0
  9. package/dist/nodes/ZaloChatHistory/ZaloChatHistory.node.js +1 -0
  10. package/dist/nodes/ZaloChatHistory/ZaloChatHistory.node.js.map +1 -0
  11. package/dist/nodes/ZaloChatHistory/ZaloChatHistory.properties.d.ts +2 -0
  12. package/dist/nodes/ZaloChatHistory/ZaloChatHistory.properties.js +1 -0
  13. package/dist/nodes/ZaloChatHistory/ZaloChatHistory.properties.js.map +1 -0
  14. package/dist/nodes/ZaloChatHistory/utils/historyProcessor.d.ts +3 -0
  15. package/dist/nodes/ZaloChatHistory/utils/historyProcessor.js +1 -0
  16. package/dist/nodes/ZaloChatHistory/utils/historyProcessor.js.map +1 -0
  17. package/dist/nodes/ZaloChatHistory/utils/index.d.ts +4 -0
  18. package/dist/nodes/ZaloChatHistory/utils/index.js +1 -0
  19. package/dist/nodes/ZaloChatHistory/utils/index.js.map +1 -0
  20. package/dist/nodes/ZaloChatHistory/utils/messageParser.d.ts +6 -0
  21. package/dist/nodes/ZaloChatHistory/utils/messageParser.js +1 -0
  22. package/dist/nodes/ZaloChatHistory/utils/messageParser.js.map +1 -0
  23. package/dist/nodes/ZaloChatHistory/utils/types.d.ts +45 -0
  24. package/dist/nodes/ZaloChatHistory/utils/types.js +1 -0
  25. package/dist/nodes/ZaloChatHistory/utils/types.js.map +1 -0
  26. package/dist/nodes/ZaloChatHistory/utils/validator.d.ts +17 -0
  27. package/dist/nodes/ZaloChatHistory/utils/validator.js +1 -0
  28. package/dist/nodes/ZaloChatHistory/utils/validator.js.map +1 -0
  29. package/dist/nodes/ZaloGroup/ZaloGroup.node.js +1 -264
  30. package/dist/nodes/ZaloGroup/ZaloGroup.node.js.map +1 -1
  31. package/dist/nodes/ZaloGroup/ZaloGroup.properties.d.ts +2 -0
  32. package/dist/nodes/ZaloGroup/ZaloGroup.properties.js +1 -0
  33. package/dist/nodes/ZaloGroup/ZaloGroup.properties.js.map +1 -0
  34. package/dist/nodes/ZaloGroup/utils/groupProcessor.d.ts +26 -0
  35. package/dist/nodes/ZaloGroup/utils/groupProcessor.js +1 -0
  36. package/dist/nodes/ZaloGroup/utils/groupProcessor.js.map +1 -0
  37. package/dist/nodes/ZaloGroup/utils/index.d.ts +3 -0
  38. package/dist/nodes/ZaloGroup/utils/index.js +1 -0
  39. package/dist/nodes/ZaloGroup/utils/index.js.map +1 -0
  40. package/dist/nodes/ZaloGroup/utils/types.d.ts +81 -0
  41. package/dist/nodes/ZaloGroup/utils/types.js +1 -0
  42. package/dist/nodes/ZaloGroup/utils/types.js.map +1 -0
  43. package/dist/nodes/ZaloGroup/utils/validator.d.ts +15 -0
  44. package/dist/nodes/ZaloGroup/utils/validator.js +1 -0
  45. package/dist/nodes/ZaloGroup/utils/validator.js.map +1 -0
  46. package/dist/nodes/ZaloLoginByQr/ZaloLoginByQr.node.js +1 -313
  47. package/dist/nodes/ZaloLoginByQr/ZaloLoginByQr.node.js.map +1 -1
  48. package/dist/nodes/ZaloMessageTrigger/EventFilter.d.ts +12 -0
  49. package/dist/nodes/ZaloMessageTrigger/EventFilter.js +1 -0
  50. package/dist/nodes/ZaloMessageTrigger/EventFilter.js.map +1 -0
  51. package/dist/nodes/ZaloMessageTrigger/EventListenerRegistry.d.ts +16 -0
  52. package/dist/nodes/ZaloMessageTrigger/EventListenerRegistry.js +1 -0
  53. package/dist/nodes/ZaloMessageTrigger/EventListenerRegistry.js.map +1 -0
  54. package/dist/nodes/ZaloMessageTrigger/ZaloConnectionManager.d.ts +8 -0
  55. package/dist/nodes/ZaloMessageTrigger/ZaloConnectionManager.js +1 -0
  56. package/dist/nodes/ZaloMessageTrigger/ZaloConnectionManager.js.map +1 -0
  57. package/dist/nodes/ZaloMessageTrigger/ZaloMessageTrigger.node.js +1 -147
  58. package/dist/nodes/ZaloMessageTrigger/ZaloMessageTrigger.node.js.map +1 -1
  59. package/dist/nodes/ZaloMessageTrigger/constants.d.ts +16 -0
  60. package/dist/nodes/ZaloMessageTrigger/constants.js +1 -0
  61. package/dist/nodes/ZaloMessageTrigger/constants.js.map +1 -0
  62. package/dist/nodes/ZaloMessageTrigger/types.d.ts +34 -0
  63. package/dist/nodes/ZaloMessageTrigger/types.js +1 -0
  64. package/dist/nodes/ZaloMessageTrigger/types.js.map +1 -0
  65. package/dist/nodes/ZaloMessageTrigger/utils.d.ts +4 -0
  66. package/dist/nodes/ZaloMessageTrigger/utils.js +1 -0
  67. package/dist/nodes/ZaloMessageTrigger/utils.js.map +1 -0
  68. package/dist/nodes/ZaloPoll/ZaloPoll.node.js +1 -187
  69. package/dist/nodes/ZaloPoll/ZaloPoll.node.js.map +1 -1
  70. package/dist/nodes/ZaloPoll/ZaloPollDescription.js +1 -260
  71. package/dist/nodes/ZaloReminder/ZaloReminder.node.d.ts +5 -0
  72. package/dist/nodes/ZaloReminder/ZaloReminder.node.js +1 -0
  73. package/dist/nodes/ZaloReminder/ZaloReminder.node.js.map +1 -0
  74. package/dist/nodes/ZaloReminder/ZaloReminder.properties.d.ts +2 -0
  75. package/dist/nodes/ZaloReminder/ZaloReminder.properties.js +1 -0
  76. package/dist/nodes/ZaloReminder/ZaloReminder.properties.js.map +1 -0
  77. package/dist/nodes/ZaloReminder/utils/index.d.ts +3 -0
  78. package/dist/nodes/ZaloReminder/utils/index.js +1 -0
  79. package/dist/nodes/ZaloReminder/utils/index.js.map +1 -0
  80. package/dist/nodes/ZaloReminder/utils/reminderProcessor.d.ts +8 -0
  81. package/dist/nodes/ZaloReminder/utils/reminderProcessor.js +1 -0
  82. package/dist/nodes/ZaloReminder/utils/reminderProcessor.js.map +1 -0
  83. package/dist/nodes/ZaloReminder/utils/types.d.ts +53 -0
  84. package/dist/nodes/ZaloReminder/utils/types.js +1 -0
  85. package/dist/nodes/ZaloReminder/utils/types.js.map +1 -0
  86. package/dist/nodes/ZaloReminder/utils/validator.d.ts +12 -0
  87. package/dist/nodes/ZaloReminder/utils/validator.js +1 -0
  88. package/dist/nodes/ZaloReminder/utils/validator.js.map +1 -0
  89. package/dist/nodes/ZaloSendMessage/ZaloSendMessage.node.js +1 -426
  90. package/dist/nodes/ZaloSendMessage/ZaloSendMessage.node.js.map +1 -1
  91. package/dist/nodes/ZaloSendMessage/ZaloSendMessage.properties.d.ts +2 -0
  92. package/dist/nodes/ZaloSendMessage/ZaloSendMessage.properties.js +1 -0
  93. package/dist/nodes/ZaloSendMessage/ZaloSendMessage.properties.js.map +1 -0
  94. package/dist/nodes/ZaloSendMessage/utils/attachmentProcessor.d.ts +9 -0
  95. package/dist/nodes/ZaloSendMessage/utils/attachmentProcessor.js +1 -0
  96. package/dist/nodes/ZaloSendMessage/utils/attachmentProcessor.js.map +1 -0
  97. package/dist/nodes/ZaloSendMessage/utils/index.d.ts +5 -0
  98. package/dist/nodes/ZaloSendMessage/utils/index.js +1 -0
  99. package/dist/nodes/ZaloSendMessage/utils/index.js.map +1 -0
  100. package/dist/nodes/ZaloSendMessage/utils/markdownToZaloStyles.d.ts +11 -0
  101. package/dist/nodes/ZaloSendMessage/utils/markdownToZaloStyles.js +1 -0
  102. package/dist/nodes/ZaloSendMessage/utils/markdownToZaloStyles.js.map +1 -0
  103. package/dist/nodes/ZaloSendMessage/utils/messageBuilder.d.ts +2 -0
  104. package/dist/nodes/ZaloSendMessage/utils/messageBuilder.js +1 -0
  105. package/dist/nodes/ZaloSendMessage/utils/messageBuilder.js.map +1 -0
  106. package/dist/nodes/ZaloSendMessage/utils/types.d.ts +38 -0
  107. package/dist/nodes/ZaloSendMessage/utils/types.js +1 -0
  108. package/dist/nodes/ZaloSendMessage/utils/types.js.map +1 -0
  109. package/dist/nodes/ZaloSendMessage/utils/validator.d.ts +6 -0
  110. package/dist/nodes/ZaloSendMessage/utils/validator.js +1 -0
  111. package/dist/nodes/ZaloSendMessage/utils/validator.js.map +1 -0
  112. package/dist/nodes/ZaloTag/ZaloTag.node.js +1 -81
  113. package/dist/nodes/ZaloTag/ZaloTag.node.js.map +1 -1
  114. package/dist/nodes/ZaloUser/ZaloUser.node.js +1 -229
  115. package/dist/nodes/ZaloUser/ZaloUser.node.js.map +1 -1
  116. package/dist/nodes/ZaloUser/ZaloUserDescription.d.ts +2 -3
  117. package/dist/nodes/ZaloUser/ZaloUserDescription.js +1 -361
  118. package/dist/nodes/ZaloUser/ZaloUserDescription.js.map +1 -1
  119. package/dist/nodes/shared/branding.d.ts +6 -0
  120. package/dist/nodes/shared/branding.js +1 -0
  121. package/dist/nodes/shared/branding.js.map +1 -0
  122. package/dist/nodes/shared/image.png +0 -0
  123. package/dist/nodes/utils/helper.d.ts +5 -0
  124. package/dist/nodes/utils/helper.js +1 -111
  125. package/dist/nodes/utils/helper.js.map +1 -1
  126. package/dist/package.json +15 -5
  127. package/dist/tsconfig.tsbuildinfo +1 -1
  128. package/package.json +98 -86
  129. package/LICENSE +0 -201
  130. package/dist/ZaloSendMessage/ZaloSendMessage.node.js +0 -431
  131. package/dist/nodes/ZaloFriendTrigger/ZaloFriendTrigger.node.d.ts +0 -12
  132. package/dist/nodes/ZaloFriendTrigger/ZaloFriendTrigger.node.js +0 -129
  133. package/dist/nodes/ZaloFriendTrigger/ZaloFriendTrigger.node.js.map +0 -1
  134. package/dist/nodes/ZaloGroup/ZaloGroupDescription.d.ts +0 -3
  135. package/dist/nodes/ZaloGroup/ZaloGroupDescription.js +0 -348
  136. package/dist/nodes/ZaloGroup/ZaloGroupDescription.js.map +0 -1
  137. package/dist/nodes/shared/zalo.svg +0 -10
  138. package/dist/utils/helper.js +0 -90
package/LICENSE.md CHANGED
@@ -1,19 +1,19 @@
1
- Copyright 2022 n8n
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining a copy of
4
- this software and associated documentation files (the "Software"), to deal in
5
- the Software without restriction, including without limitation the rights to
6
- use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
7
- of the Software, and to permit persons to whom the Software is furnished to do
8
- so, subject to the following conditions:
9
-
10
- The above copyright notice and this permission notice shall be included in all
11
- copies or substantial portions of the Software.
12
-
13
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
- SOFTWARE.
1
+ Copyright 2022 n8n
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
4
+ this software and associated documentation files (the "Software"), to deal in
5
+ the Software without restriction, including without limitation the rights to
6
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
7
+ of the Software, and to permit persons to whom the Software is furnished to do
8
+ so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in all
11
+ copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
+ SOFTWARE.
package/README.md CHANGED
@@ -1,166 +1,299 @@
1
- ![Banner image](https://user-images.githubusercontent.com/10284570/173569848-c624317f-42b1-45a6-ab09-f0ea3c247648.png)
2
-
3
- ## 📺 Video hướng dẫn cài đặt & đăng nhập Zalo trên n8n
4
-
5
- [![Xem video hướng dẫn](https://img.youtube.com/vi/iwziXxQoW_Q/0.jpg)](https://www.youtube.com/watch?v=iwziXxQoW_Q)
6
-
7
- > Video chi tiết cách cài đặt node, cấu hình và đăng nhập Zalo bằng QR code trên n8n.
8
-
9
- # n8n-nodes-zalo-nnt
10
-
11
- Node dành riêng cho n8n này được thiết kế hoạt động hoàn toàn bên trong instance n8n của bạn. Không cần sử dụng API của bên thứ ba hay phụ thuộc ngoại vi nào — chỉ có sự tự động hóa quy trình thuần túy, đảm bảo dữ liệu của bạn luôn được giữ riêng tư và an toàn.
12
-
13
- Node này mô phỏng trình duyệt để tương tác trực tiếp với Zalo Web, cho phép tự động hóa liền mạch ngay trong n8n. Đây là dự án mã nguồn mở, mở rộng cơ hội cho cộng đồng cùng đóng góp ý kiến và phát triển thêm các tính năng mới, nhằm xây dựng hệ thống tự động hóa Zalo tiên tiến, hiệu quả và an toàn hơn.
14
-
15
- ## 🚀 Các cải tiến mới trong phiên bản 0.6.15
16
-
17
- ### 🎉 Tính năng mới (v0.6.15)
18
- - **HEIC to JPEG conversion**: Tự động convert file HEIC/HEIF sang JPEG trước khi gửi
19
- - Sử dụng thư viện `heic-convert` (pure JavaScript, hoạt động tốt trong Docker)
20
- - Chất lượng JPEG output: 90%
21
- - Tự động xóa file HEIC gốc sau khi convert
22
- - Enhanced logging với prefix `[HEIC]` để dễ debug
23
-
24
- ### 🔧 Sửa lỗi quan trọng (v0.6.10)
25
- - **Fix ZaloGroup limit issue**: Sửa lỗi limit parameters không hoạt động đúng cách
26
- - `getAllGroups`: Giờ đã respect limit parameter, chỉ trả về đúng số lượng groups theo yêu cầu
27
- - `getGroupMembers`: Áp dụng limit cho TẤT CẢ member arrays (members, admins, currentMems, updateMems)
28
- - **Enhanced response metadata**: Thêm thông tin `totalGroups`, `limitedToCount`, `actualReturnedCount` để theo dõi
29
-
30
- ### 🔧 Các sửa lỗi từ v0.6.8-0.6.9
31
- - **Fix JPEG file extension handling**: Sửa lỗi file .JPEG (uppercase) không gửi được
32
- - **Fix PDF/file response errors**: Sửa lỗi "node execution output incorrect data" khi gửi PDF
33
- - **File type validation**: Thêm warnings cho file types không được Zalo hỗ trợ hoàn toàn
34
-
35
- ### Tính năng từ v0.6.6
36
- - **Gửi nhiều ảnh/file cùng lúc**: ZaloSendMessage hỗ trợ gửi nhiều URL ảnh/file trong một tin nhắn
37
- - **Credential system được cải thiện**: Interface rõ ràng hơn, tránh nhầm lẫn
38
- - **Simplified QR Login**: Chỉ cần n8n API credentials
39
-
40
- ## 💝 Ủng hộ tác giả
41
-
42
- Nếu **node** này giúp bạn tiết kiệm thời gian hoặc giải quyết được vấn đề khó nhằn, hãy cân nhắc ủng hộ tôi hoặc đơn giản là nhấn **★ Star** cho dự án.
43
-
44
- **Donate**: MB Bank - **0816226086** - Nguyễn Ngô Thượng
45
-
46
- Sự động viên nhỏ ấy sẽ tiếp thêm năng lượng để mình tiếp tục duy trì, cập nhật và phát triển thêm nhiều tính năng hữu ích hơn nữa.
47
- Cám ơn bạn rất nhiều! 💛
48
-
49
- ## 👨‍💻 Tác giả
50
- - **Nguyễn Ngô Thượng** - Maintainer & Developer
51
- - Original work by Dương Đình Trung - ChickenAI Team
52
-
53
- ## 📦 Hướng dẫn cài đặt
54
-
55
- ### Community Nodes (Khuyến nghị)
56
-
57
- Đối với người dùng n8n v0.187+, bạn có thể cài đặt node này trực tiếp từ bảng Community Nodes trong trình soạn thảo n8n.
58
-
59
- 1. Mở trình soạn thảo n8n của bạn
60
- 2. Vào **Settings > Community Nodes**
61
- 3. Tìm kiếm **"n8n-nodes-zalo-nnt"**
62
- 4. Nhấp vào **Install**
63
- 5. Tải lại trình soạn thảo
64
-
65
- ### Cài đặt thủ công
66
-
67
- ```bash
68
- cd YOUR_N8N_INSTALLATION_DIRECTORY
69
- npm install n8n-nodes-zalo-nnt
70
- ```
71
-
72
- ## 🔧 Available Nodes
73
-
74
- ### 1. 🔐 Zalo Login By QR
75
- Node cho phép đăng nhập vào Zalo thông qua QR tự động tạo credentials.
76
-
77
- **Yêu cầu:**
78
- - n8n API credentials (API Key + Instance URL)
79
-
80
- **Tính năng:**
81
- - QR code login đơn giản
82
- - Tự động tạo Zalo credentials sau khi đăng nhập thành công
83
- - Không cần nhập thủ công cookie, IMEI, User Agent
84
-
85
- ### 2. 👥 Zalo Group
86
- Node quản các hoạt động nhóm.
87
-
88
- **Operations:**
89
- - `createGroup`: Tạo nhóm mới
90
- - `getGroupInfo`: Lấy thông tin nhóm
91
- - `addGroupDeputy`: Thêm phó nhóm
92
- - `addUserToGroup`: Thêm thành viên
93
- - `changeGroupAvatar`: Đổi avatar nhóm
94
- - `changeGroupName`: Đổi tên nhóm
95
- - **🔧 `getGroupMembers`**: Lấy danh sách thành viên (hỗ trợ limit cho tất cả member types)
96
- - **🔧 `getAllGroups`**: Lấy tất cả nhóm (hỗ trợ limit số lượng groups trả về)
97
- - `removeUserFromGroup`: Xóa thành viên
98
- - `createNote`: Tạo ghi chú nhóm
99
-
100
- **Tính năng limit mới:**
101
- - Limit parameters giờ hoạt động chính xác 100%
102
- - Response bao gồm metadata: `totalGroups`, `limitedToCount`, `actualReturnedCount`
103
-
104
- ### 3. 👤 Zalo User
105
- Node quản người dùng và bạn bè.
106
-
107
- **Operations:**
108
- - `acceptFriendRequest`: Chấp nhận lời mời kết bạn
109
- - `sendFriendRequest`: Gửi lời mời kết bạn
110
- - `blockUser`: Chặn người dùng
111
- - `unblockUser`: Bỏ chặn người dùng
112
- - `changeAccountAvatar`: Đổi ảnh đại diện
113
- - `changeAccountSetting`: Thay đổi cài đặt tài khoản
114
- - `getUserInfo`: Lấy thông tin người dùng
115
- - `getAllFriends`: Lấy danh sách bạn
116
- - `findUser`: Tìm kiếm người dùng qua số điện thoại
117
-
118
- ### 4. 💬 Zalo Send Message
119
- Node gửi tin nhắn tới người dùng hoặc nhóm.
120
-
121
- **Features:**
122
- - Gửi tin nhắn văn bản
123
- - **🆕 Gửi nhiều ảnh/file cùng lúc**:
124
- - Hỗ trợ comma-separated URLs: `url1,url2,url3`
125
- - Hỗ trợ JSON array: `["url1","url2","url3"]`
126
- - **🔧 File extension support**: Hỗ trợ tất cả file formats (.jpg, .JPEG, .png, .PNG, .pdf, etc.)
127
- - **🎉 HEIC/HEIF support**: Tự động convert HEIC/HEIF sang JPEG (v0.6.15+)
128
- - Gửi file từ URL với tự động chuẩn hóa extension
129
- - Quote tin nhắn
130
- - Mention người dùng
131
- - Proxy support
132
-
133
- ### 5. 📨 Zalo Message Trigger
134
- Node lắng nghe xử lý các sự kiện tin nhắn.
135
-
136
- **Events:**
137
- - Tin nhắn mới
138
- - Tin nhắn nhóm
139
- - Thay đổi trạng thái tin nhắn
140
-
141
- ### 6. 👫 Zalo Friend Trigger
142
- Node lắng nghe các sự kiện bạn bè.
143
-
144
- ### 7. 📊 Zalo Poll
145
- Node tạo và quản lý bình chọn.
146
-
147
- ### 8. 🏷️ Zalo Tag
148
- Node quảntag cho contacts.
149
-
150
- ## ⚠️ Lưu ý quan trọng
151
-
152
- **Vui lòng đọc kỹ trước khi sử dụng:**
153
-
154
- Việc sử dụng thư viện này đồng nghĩa với việc bạn đang làm trái với chính sách của Zalo và nó có thể khiến cho tài khoản của bạn bị vô hiệu hóa. Chúng tôi sẽ không chịu trách nhiệm nếu điều đó xảy ra, vậy nên hãy cân nhắc trước khi sử dụng.
155
-
156
- ## 🙏 Cảm ơn
157
-
158
- We would like to thank **ZCA-JS** for their excellent work on the core library that makes this integration possible.
159
-
160
- ## 📄 License
161
-
162
- [MIT](https://github.com/nguyenngothuong/zalo-node/blob/main/LICENSE.md)
163
-
164
- ---
165
-
166
- **Don't forget to star this repo if it helped you!**
1
+ ![Banner image](https://user-images.githubusercontent.com/10284570/173569848-c624317f-42b1-45a6-ab09-f0ea3c247648.png)
2
+
3
+ ## 📺 Video hướng dẫn cài đặt & đăng nhập Zalo trên n8n
4
+
5
+ [![Xem video hướng dẫn](https://img.youtube.com/vi/iwziXxQoW_Q/0.jpg)](https://www.youtube.com/watch?v=iwziXxQoW_Q)
6
+
7
+ > Video chi tiết cách cài đặt node, cấu hình và đăng nhập Zalo bằng QR code trên n8n.
8
+
9
+ # n8n-nodes-zalo-nnt
10
+
11
+ Node dành riêng cho n8n này được thiết kế hoạt động hoàn toàn bên trong instance n8n của bạn. Không cần sử dụng API của bên thứ ba hay phụ thuộc ngoại vi nào — chỉ có sự tự động hóa quy trình thuần túy, đảm bảo dữ liệu của bạn luôn được giữ riêng tư và an toàn.
12
+
13
+ Node này mô phỏng trình duyệt để tương tác trực tiếp với Zalo Web, cho phép tự động hóa liền mạch ngay trong n8n. Đây là dự án mã nguồn mở, mở rộng cơ hội cho cộng đồng cùng đóng góp ý kiến và phát triển thêm các tính năng mới, nhằm xây dựng hệ thống tự động hóa Zalo tiên tiến, hiệu quả và an toàn hơn.
14
+
15
+ ## 🎉 Version 1.0.0 - Major Release
16
+
17
+ ### 🚀 Tổng quan
18
+ Package **n8n-nodes-zalo-nnt** hiện cung cấp **9 nodes** với **60+ operations** để tự động hóa Zalo hoàn toàn trong n8n.
19
+
20
+ ### 📊 Thống
21
+ - **9 nodes**: 1 trigger node + 8 action nodes
22
+ - **60+ operations** tổng cộng
23
+ - **2 credential types**: zaloApi (QR login) + n8nApiZaloApi
24
+ - **Code protection**: Obfuscated với javascript-obfuscator + uglify-js
25
+
26
+ ### 🛡️ Bảo mật nguồn (v1.0.0)
27
+ - **Code obfuscation**: Tự động hóa code khi publish lên npm
28
+ - **Protection layers**:
29
+ - Control flow flattening (75%)
30
+ - Dead code injection (40%)
31
+ - String array encoding (base64)
32
+ - Self-defending code
33
+ - **Development mode**: Code không obfuscate khi build local để dễ debug
34
+
35
+ ### 🎯 Tính năng chính v1.0.0
36
+
37
+ #### 1. **ZaloSendMessage** - Gửi tin nhắn đa năng
38
+ - Markdown formatting (**đậm**, *nghiêng*, [red]màu[/red])
39
+ - Gửi nhiều ảnh/file (URL hoặc mảng URL)
40
+ - HEIC/HEIF JPEG auto-conversion
41
+ - Quote reply (trích dẫn tin nhắn)
42
+ - @Mention users (gắn thẻ)
43
+ - Độ ưu tiên: Mặc định, Quan trọng, Khẩn cấp
44
+ - TTL (tự xóa tin nhắn sau X giây)
45
+
46
+ #### 2. **ZaloGroup** - Quản nhóm toàn diện (17 ops)
47
+ **5 Resources:**
48
+ - Nhóm: Tạo, lấy info, danh sách, tham gia, rời
49
+ - Thành viên: Thêm, xóa, mời nhiều nhóm, thêm phó nhóm
50
+ - Cài đặt: Đổi tên, đổi avatar
51
+ - Kiểm duyệt: Lấy DS chặn, chặn/bỏ chặn, duyệt yêu cầu
52
+ - Nội dung: Tạo ghi chú (có ghim)
53
+
54
+ #### 3. **ZaloChatHistory** - Lịch sử trò chuyện
55
+ - Fetch all mode (tự động phân trang)
56
+ - Lọc theo thời gian (từ ngày - đến ngày)
57
+ - Sắp xếp (mới nhất/cũ nhất)
58
+ - Lấy reactions
59
+ - Delay control (tránh block)
60
+
61
+ #### 4. **ZaloReminder** - Lịch hẹn thông minh
62
+ - Tạo/sửa/xóa lịch hẹn
63
+ - Lặp lại: Hàng ngày/tuần/tháng
64
+ - Emoji tùy chỉnh
65
+ - Lấy phản hồi (chấp nhận/từ chối)
66
+
67
+ #### 5. **ZaloPoll** - Bình chọn
68
+ - Tạo/lấy/khóa poll
69
+ - Multi-choice, thêm option mới
70
+ - Ẩn kết quả/người vote
71
+ - Ghim poll, thời hạn
72
+
73
+ #### 6. **ZaloUser** - Quản lý user (24 ops)
74
+ **7 Resources:**
75
+ - Bạn (9): Gửi/chấp nhận/từ chối lời mời, xóa, tìm kiếm SĐT
76
+ - Tài khoản (4): Lấy info, đổi settings, đổi ngôn ngữ
77
+ - Riêng tư (3): Chặn/bỏ chặn user, chặn xem feed
78
+ - Biệt danh (3): Đổi/xóa/lấy danh sách alias
79
+ - Avatar (3): Lấy DS, dùng lại ảnh cũ, xóa
80
+ - Tin nhắn (1): Thu hồi
81
+ - Hệ thống (1): Keep alive
82
+
83
+ #### 7. **ZaloTag** - Quản thẻ
84
+ - Lấy danh sách labels/tags
85
+
86
+ #### 8. **ZaloLoginByQr** - Đăng nhập tự động
87
+ - QR login đơn giản
88
+ - Auto-create credential (tích hợp n8n API)
89
+ - Proxy support
90
+ - Output QR code dạng PNG
91
+
92
+ #### 9. **ZaloMessageTrigger** - Event listener (9 events)
93
+ **Lắng nghe:**
94
+ 1. Tin nhắn mới
95
+ 2. Reaction (cảm xúc)
96
+ 3. Typing (đang soạn)
97
+ 4. Seen/Delivered
98
+ 5. Undo (thu hồi)
99
+ 6. Group events (join/leave/kick/admin)
100
+ 7. Friend events (request/accept/reject)
101
+ 8. Connection status
102
+
103
+ **Bộ lọc:**
104
+ - Loại nội dung: text/image/sticker/file/link/video/voice
105
+ - Nguồn: nhân/nhóm
106
+ - ID cụ thể
107
+ - Self-listen mode
108
+
109
+ ## 💝 Ủng hộ tác giả
110
+
111
+ Nếu **node** này giúp bạn tiết kiệm thời gian hoặc giải quyết được vấn đề khó nhằn, hãy cân nhắc ủng hộ tôi hoặc đơn giản là nhấn **★ Star** cho dự án.
112
+
113
+ **Donate**: MB Bank - **0816226086** - Nguyễn Ngô Thượng
114
+
115
+ Sự động viên nhỏ ấy sẽ tiếp thêm năng lượng để mình tiếp tục duy trì, cập nhật và phát triển thêm nhiều tính năng hữu ích hơn nữa.
116
+ Cám ơn bạn rất nhiều! 💛
117
+
118
+ ## 👨‍💻 Tác giả
119
+ - **Nguyễn Ngô Thượng** - Maintainer & Developer
120
+ - Original work by Dương Đình Trung - ChickenAI Team
121
+
122
+ ## 📦 Hướng dẫn cài đặt
123
+
124
+ ### Community Nodes (Khuyến nghị)
125
+
126
+ Đối với người dùng n8n v0.187+, bạn thể cài đặt node này trực tiếp từ bảng Community Nodes trong trình soạn thảo n8n.
127
+
128
+ 1. Mở trình soạn thảo n8n của bạn
129
+ 2. Vào **Settings > Community Nodes**
130
+ 3. Tìm kiếm **"n8n-nodes-zalo-nnt"**
131
+ 4. Nhấp vào **Install**
132
+ 5. Tải lại trình soạn thảo
133
+
134
+ ### Cài đặt thủ công
135
+
136
+ ```bash
137
+ cd YOUR_N8N_INSTALLATION_DIRECTORY
138
+ npm install n8n-nodes-zalo-nnt
139
+ ```
140
+
141
+ ## 🔧 Cấu trúc Project
142
+
143
+ ### 📁 Directory Structure
144
+ ```
145
+ n8n-nodes-zalo-nnt/
146
+ ├── nodes/ # Source code cho các nodes
147
+ │ ├── ZaloSendMessage/ # Gửi tin nhắn
148
+ │ ├── ZaloGroup/ # Quản nhóm
149
+ │ ├── ZaloUser/ # Quản lý user
150
+ │ ├── ZaloChatHistory/ # Lịch sử chat
151
+ │ ├── ZaloReminder/ # Lịch hẹn
152
+ │ ├── ZaloPoll/ # Bình chọn
153
+ │ ├── ZaloTag/ # Tag/Label
154
+ │ ├── ZaloLoginByQr/ # QR Login
155
+ │ ├── ZaloMessageTrigger/ # Event trigger
156
+ │ └── shared/ # Shared utilities & branding
157
+ ├── credentials/ # Credential definitions
158
+ ├── dist/ # Built & obfuscated code (git-ignored)
159
+ ├── scripts/ # Build & deployment scripts
160
+ │ ├── obfuscate.js # Code obfuscation script
161
+ │ └── build-and-deploy.ps1 # Auto build & deploy to Docker
162
+ ├── docs/ # Documentation
163
+ │ └── development/
164
+ │ └── code-protection.md
165
+ ├── obfuscate.config.json # Obfuscation config
166
+ └── package.json
167
+ ```
168
+
169
+ ### 🔑 Credentials
170
+
171
+ **1. zaloApi** (Zalo Credential)
172
+ ```json
173
+ {
174
+ "cookie": "JSON array of cookies",
175
+ "imei": "Device IMEI",
176
+ "userAgent": "Browser user agent",
177
+ "proxy": "Optional proxy URL",
178
+ "supportCode": "Optional support code",
179
+ "licenseKey": "Optional license"
180
+ }
181
+ ```
182
+
183
+ **2. n8nApiZaloApi** (n8n API for QR Login)
184
+ ```json
185
+ {
186
+ "apiKey": "n8n API key",
187
+ "url": "n8n instance URL"
188
+ }
189
+ ```
190
+
191
+ ### 🛠️ Tech Stack
192
+ - **Language**: TypeScript 5.5+
193
+ - **n8n SDK**: ^1.72.0
194
+ - **Zalo Library**: zca-js ^2.0.0-beta.24
195
+ - **Build**: tsc + gulp
196
+ - **Protection**: javascript-obfuscator + uglify-js
197
+ - **Image Processing**: sharp, heic-convert, image-size
198
+ - **Package Manager**: pnpm 9.1+
199
+
200
+ ### 📝 Scripts
201
+
202
+ ```bash
203
+ # Development
204
+ pnpm build:clean # Build without obfuscation (for local testing)
205
+ pnpm build # Build + obfuscate (for production)
206
+ pnpm dev # Watch mode
207
+ pnpm lint # Run ESLint
208
+ pnpm format # Format code with Prettier
209
+
210
+ # Deployment
211
+ pnpm publish # Build + obfuscate + lint + publish to npm
212
+ powershell scripts/build-and-deploy.ps1 # Deploy to local Docker n8n
213
+ ```
214
+
215
+ ### 🔐 Code Protection Details
216
+
217
+ **Obfuscation Process:**
218
+ 1. **Build TypeScript** → JavaScript (dist/)
219
+ 2. **Obfuscate** với javascript-obfuscator
220
+ - Control flow flattening: 75%
221
+ - Dead code injection: 40%
222
+ - String array encoding: base64
223
+ - Transform object keys: enabled
224
+ - Self-defending: enabled
225
+ 3. **Uglify** với uglify-js để minification
226
+ 4. **Result**: Code rất khó đọc và reverse engineer
227
+
228
+ **Why Obfuscation?**
229
+ - Bảo vệ intellectual property
230
+ - Ngăn chặn copy-paste code
231
+ - Tăng effort cho reverse engineering
232
+ - **Note**: Không thay thế encryption cho secrets!
233
+
234
+ ### 🧪 Testing & Development Flow
235
+
236
+ 1. **Local Development**:
237
+ ```bash
238
+ pnpm build:clean # No obfuscation
239
+ powershell scripts/build-and-deploy.ps1 # Deploy to Docker
240
+ ```
241
+
242
+ 2. **Production Build**:
243
+ ```bash
244
+ pnpm build # With obfuscation
245
+ ```
246
+
247
+ 3. **Publish to npm**:
248
+ ```bash
249
+ npm version patch # hoặc minor/major
250
+ pnpm publish # Auto build + obfuscate + publish
251
+ ```
252
+
253
+ ## 📚 Documentation
254
+
255
+ - **[NPM_PUBLISH_GUIDE.md](NPM_PUBLISH_GUIDE.md)**: Hướng dẫn publish lên npm registry
256
+ - **[docs/development/code-protection.md](docs/development/code-protection.md)**: Chi tiết về code obfuscation
257
+ - **[scripts/README.md](scripts/README.md)**: Development & deployment guides
258
+
259
+ ## 🎓 Use Cases
260
+
261
+ ### 1. Customer Support Bot
262
+ - Auto-reply tin nhắn khách hàng
263
+ - Phân loại và route requests
264
+ - Tích hợp CRM/ticketing systems
265
+
266
+ ### 2. Marketing Automation
267
+ - Gửi tin nhắn hàng loạt
268
+ - Scheduled campaigns
269
+ - Group management tự động
270
+
271
+ ### 3. Monitoring & Alerts
272
+ - Nhận thông báo từ hệ thống
273
+ - Alert qua Zalo group
274
+ - Status updates tự động
275
+
276
+ ### 4. Data Collection
277
+ - Lấy lịch sử chat để phân tích
278
+ - Export group member lists
279
+ - Poll/survey automation
280
+
281
+ ---
282
+
283
+ ## ⚠️ Lưu ý quan trọng
284
+
285
+ **Vui lòng đọc kỹ trước khi sử dụng:**
286
+
287
+ Việc sử dụng thư viện này đồng nghĩa với việc bạn đang làm trái với chính sách của Zalo và nó có thể khiến cho tài khoản của bạn bị vô hiệu hóa. Chúng tôi sẽ không chịu trách nhiệm nếu điều đó xảy ra, vậy nên hãy cân nhắc trước khi sử dụng.
288
+
289
+ ## 🙏 Cảm ơn
290
+
291
+ We would like to thank **ZCA-JS** for their excellent work on the core library that makes this integration possible.
292
+
293
+ ## 📄 License
294
+
295
+ [MIT](https://github.com/nguyenngothuong/zalo-node/blob/main/LICENSE.md)
296
+
297
+ ---
298
+
299
+ ⭐ **Don't forget to star this repo if it helped you!**
@@ -1,31 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.N8nZaloApi = void 0;
4
- class N8nZaloApi {
5
- constructor() {
6
- this.name = 'n8nApiZaloApi';
7
- this.displayName = 'n8n API Account';
8
- this.documentationUrl = 'n8n-n8n-api';
9
- this.icon = 'file:shared/n8n.png';
10
- this.properties = [
11
- {
12
- displayName: 'API Key',
13
- name: 'apiKey',
14
- type: 'string',
15
- default: '',
16
- description: 'The API key used to authenticate with the n8n API.',
17
- required: true,
18
- },
19
- {
20
- displayName: 'URL',
21
- name: 'url',
22
- type: 'string',
23
- default: 'http://127.0.0.1:5678',
24
- description: 'The URL of the n8n instance',
25
- required: true,
26
- }
27
- ];
28
- }
29
- }
30
- exports.N8nZaloApi = N8nZaloApi;
31
- //# sourceMappingURL=N8nZaloApi.credentials.js.map
1
+ function _0x31a4aa(n,t,r,u){return _0x33ba(n-978,u)}function _0x52e9(){var s={JScYA:function(n,t){return n+t},ZAdGL:function(n,t){return n*t},OTKcv:function(n,t){return n!=t},wmkbR:function(n,t){return n-t},mrYBj:function(n,t){return n&t},ReMfQ:function(n,t){return n&t},gxXsG:function(n,t){return n<t},ghUqg:function(n,t){return n+t},uGrpV:function(n,t){return n(t)},miPzz:h(-73,0,68),hXBka:"jiixN",Afkjr:h(-20,0,63),gLkCj:h(343,0,145),fjpcd:"ntmXt0XdC1zp",XyYvX:_(780,0,0,668),kisCE:"CwnRsM0",lYdoW:h(155,0,74),SViTb:"AwnVBG",IqfVC:_(861,0,0,690)+_(830,0,0,659),IjUbI:h(372,0,192)+"ne",MQZJK:"mtu1nJKZmd"+h(111,0,142),LjEye:_(806,0,0,696)+h(329,0,329),SNBiW:h(117,0,182),zCoYZ:"BJHUqxbPwM"+_(1132,0,0,1010),oCuZr:h(164,0,16)+"bRzq",ildfb:"Ahr0CdOVlZ"+h(238,0,97),ZwSJO:h(413,0,278),jvxie:_0x33ba(627,994),nbyxo:_(821,0,0,911),mskoj:h(9,0,121),KEgga:_(752,0,0,817),RnHnM:_(958,0,0,900),grytf:_(635,0,0,698)+_0x33ba(606,1153),MzOQB:"vNfWr1q",sXIzC:h(-118,0,26)+h(216,0,221),GngpW:_(787,0,0,956),DuBco:h(10,0,34),iquZG:_(800,0,0,884)+h(402,0,383),tIkMq:h(-22,0,148),JjKTb:_(1009,0,0,951),OYZYX:"DhLWzq",GNuON:_(960,0,0,860)+h(177,0,19),HVyUT:_(765,0,0,757),HZozw:h(207,0,73)+_(1045,0,0,917),KhTRa:_(850,0,0,923)+"C",ARHSf:h(282,0,239),PtUfI:_0x33ba(586,804),UEmzk:h(64,0,109),Nanyz:_(837,0,0,670),paFzK:_(960,0,0,837)+"LwuxfpAq",DOSoE:_(976,0,0,862),joEOU:"DxjS",ZxSCg:_(841,0,0,971),MFeuy:"zc9Uog4UCg5N",sbunD:_0x33ba(631,872),sLiYt:h(422,0,270)+_(1035,0,0,858),gAmlg:"nJGZndy1Av"+_(1020,0,0,916),zEmbL:h(165,0,154)+_(856,0,0,672),TnugY:_(756,0,0,924)+h(377,0,249),WmQiG:_(818,0,0,827)+_(923,0,0,867),kOlai:h(198,0,117),vFEAE:h(275,0,351),rdFON:"zg9JDw1LBN"+_(1070,0,0,891),tLuGf:_(853,0,0,883)+h(162,0,291),XScOc:_(1043,0,0,886)},q=[s[h(470,0,350)],"t3DjD0S",h(42,0,198)+"fYzq",s[h(66,0,245)],s[_(542,0,0,737)],s.XyYvX,s[_(1011,0,0,929)],h(70,0,194)+h(145,0,116),s.lYdoW,s[h(-51,0,18)],h(65,0,191)+"vh",s[_(743,0,0,751)],s[h(307,0,157)],h(200,0,141),"zgvZy3jPChrPBW",s[h(235,0,82)],s.LjEye,h(97,0,137),s.SNBiW,s[_(901,0,0,762)],s[_(754,0,0,717)],"DguGD2L0Ac"+_0x33ba(461,993),s.ildfb,s[h(338,0,406)],s[_0x33ba(619,842)],s[h(38,0,177)],_(784,0,0,679),"zLzkr2O",s[h(294,0,346)],s[h(-107,0,35)],s[_(720,0,0,845)],s[_(1203,0,0,1028)],s.MzOQB,h(389,0,347)+_(1008,0,0,934),s[h(229,0,88)],s[_(886,0,0,1032)],h(387,0,244),s[h(270,0,114)],s[_(895,0,0,899)],s.tIkMq,s[h(346,0,251)],_(728,0,0,750)+h(481,0,373),s[_(842,0,0,722)],"ndC5mtv1tg"+h(185,0,125),_(767,0,0,863)+_(596,0,0,755),s[h(139,0,105)],s[h(155,0,281)],_(858,0,0,807)+h(284,0,111),s[h(-51,0,135)],h(-14,0,128),s[h(295,0,101)],s[_(791,0,0,898)],h(158,0,220),s[_(811,0,0,889)],s[h(350,0,261)],s[h(100,0,40)],s[_0x33ba(628,1196)],s.DOSoE,s[h(258,0,352)],s[_(1015,0,0,904)],s[_(866,0,0,832)],s.sbunD,s[h(15,0,22)],s.gAmlg,s[_(821,0,0,843)],s[h(11,0,108)],_(656,0,0,763)+"q",s.WmQiG,_(1048,0,0,936),s.kOlai,s[_0x33ba(581,1005)],s[h(179,0,98)],s.tLuGf,"BNn0yw5Jzq",s.XScOc];function h(n,t,r){return _0x33ba(r- -224,n)}function _(n,t,r,u){return _0x33ba(u-407,n)}return(_0x52e9=function(){function r(n,t,r){return h(r,0,n-374)}var n={LArQH:function(n,t){return n%t},LQoIx:function(n,t){return s.JScYA(n,t)},KiLKl:function(n,t){return s[_0x33ba(388,1112)](n,t)},tOMIw:function(n,t){return s[_0x33ba(434,857)](n,t)},rkNNu:function(n,t){return s[_0x33ba(567,935)](n,t)},tFGka:function(n,t){return s[_0x33ba(276,-57)](n,t)},MYedI:function(n,t){return s[_0x33ba(618,148)](n,t)},sKYQh:function(n,t){return s[_0x33ba(353,279)](n,t)},jHPeN:function(n,t){return n*t},WsfBk:t(0,0,-605,-710)+t(0,0,-491,-624)+"uvwxyzABCD"+t(0,0,-623,-732)+r(609,0,440)+t(0,0,-390,-387)+r(458,0,650),wBLjw:function(n,t){return s[r(837-290,0,783)](n,t)},efUUB:function(n,t){return s[r(-323- -1052,0,-327)](n,t)},OsSuj:function(n,t){return s[r(906-361,0,943)](n,t)}};function t(n,t,r,u){return _(u,0,0,r- -1406)}if(s[r(457,0,623)]!==s.hXBka)return q;for(var u,e,i="",f="",o=i+_0x4cec64,c=0,x=0;e=_0x13f61d.charAt(x++);~e&&(u=n[t(0,0,-431,-327)](c,4)?n[r(683,0,845)](n[t(0,0,-715,-888)](64,u),e):e,n[r(718,0,768)](c++,4))&&(i+=n[r(700,0,880)](n[t(0,0,-375,-206)](o.charCodeAt(n[r(399,0,594)](x,10)),10),0)?_0x4c06e6[r(489,0,379)+"de"](n[t(0,0,-570,-480)](255,u>>n.sKYQh(n.jHPeN(-2,c),6))):c))e=n[t(0,0,-745,-802)][t(0,0,-597,-672)](e);for(var a=0,v=i[r(449,0,359)];n.wBLjw(a,v);a++)f+=n[t(0,0,-750,-625)]("%",n[r(459,0,275)]("00",i[t(0,0,-624,-481)](a)[t(0,0,-720,-649)](16)).slice(-2));return n[r(678,0,873)](_0x4ee266,f)})()}function _0x39d198(n,t,r,u){var i={pxWsU:_0x33ba(616,1013),yHBWs:f(840,0,0,864)+f(616,0,0,653),Uldtp:_0x33ba(488,915)+f(993,0,0,841),yjamT:e(0,296,0,223),zhGUq:function(n,t){return n!==t},PWhxI:f(995,0,0,946),OwieI:function(n,t,r,u,e){return n(t,r,u,e)},inkdn:function(n,t){return n-t},gFAot:e(0,74,0,216),YijnM:f(776,0,0,754)+"+$",sgrWa:function(n){return n()}};function e(n,t,r,u){return _0x33ba(u- -307,t)}function f(n,t,r,u){return _0x33ba(u-358,n)}var o=function(){function c(n,t,r){return e(0,n,0,r-139)}var n={};function x(n,t,r){return e(0,r,0,n-1067)}n[x(1186,0,1158)]=c(261,0,243),n[c(78,0,118)]=i[x(1230,0,1157)],n[x(1177,0,1118)]=i[c(234,0,206)],n[c(243,0,106)]=i[c(193,0,379)],n[c(-11,0,112)]=function(n,t){return n!==t},n.jOFjm=i.yjamT;var r,a=n;return i[c(67,0,178)](i[x(1325,0,1147)],c(330,0,420))?_0x35490b(~_0x17671a)?this[c(214,0,137)](this[c(193,0,100)]):_0x3cce6f:(r=!0,function(u,e){function i(n,t,r){return x(n- -1627,0,r)}var n={};function f(n,t,r){return c(r,0,n-973)}n[c(943,0,87)]=a[i(-581,0,-707)],n[i(-319,0,-191)]=a[i(-450,0,-630)],n[c(1128,0,70)]=a.HQJZY;var t,o=n;if(!a[f(1085,0,1001)](a[i(-446,0,-432)],f(1335,0,1211)))return n=r?function(){function n(n,t,r,u){return f(r- -1422,0,u)}function t(n,t,r){return i(n-275,0,r)}var r;return a[t(-166,0,-10)]!==a[n(0,0,-191,-286)]?o[t(-337,0,-492)]:e?(r=e[n(0,0,-15,164)](u,arguments),e=null,r):void 0}:function(){},r=!1,n;(n={}).UYibN=o.tlIdR,t=n,this[f(1073,0,1200)]=_0x3f5ee2,this.MmBBwe=[1,0,0],this[i(-596,0,-724)]=function(){return t[f(1404,0,945)]},this[i(-494,0,-580)]=o.ZfPvR,this[f(1399,0,1501)]=o[i(-629,0,-643)]})}()(this,function(){var n={brTed:function(n,t,r,u,e){return i[_0x33ba(248,341)](n,t,r,u,e)},yIzRp:function(n,t){return i.inkdn(n,t)}};function t(n,t,r,u){return e(0,u,0,r-1191)}return"yTRHT"!==i[e(0,437,0,292-4)]?n[t(0,0,1415,1308)](_0x10d5f6,n.yIzRp(_0x113905,164),_0x1bcdf5,_0xf24a59- -19,_0x5bb247-190):o[t(0,0,1163,1237)]().search(t(0,0,1280,1473)+"+$")[t(0,0,1163,1204)]().constructor(o)[t(0,0,1169,1016)](i.YijnM)});return i[e(0,148,0,265)](o),_0x427a(i[f(1009,0,0,990)](r,308),t)}function _0x33ba(e,n){var i=_0x1ca9();return(_0x33ba=function(n,t){var a,r=i[n-=238];void 0===_0x33ba.luoNoj&&(_0x33ba.bPdajZ=a=function(n){for(var t,r,u="",e="",i=u+a,f=0,o=0;r=n.charAt(o++);~r&&(t=f%4?64*t+r:r,f++%4)&&(u+=i.charCodeAt(o+10)-10!=0?String.fromCharCode(255&t>>(-2*f&6)):f))r="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(r);for(var c=0,x=u.length;c<x;c++)e+="%"+("00"+u.charCodeAt(c).toString(16)).slice(-2);return decodeURIComponent(e)},e=arguments,_0x33ba.luoNoj=!0);var n=n+i[0],u=e[n];return u?r=u:((u=function(n){this.TARYoU=n,this.qzZWvP=[1,0,0],this.punSWK=function(){return"newState"},this.dPySUI="\\w+ *\\(\\) *{\\w+ *",this.WPqutO="['|\"].+['|\"];? *}"}).prototype.kHLMgw=function(){var n=new RegExp(this.dPySUI+this.WPqutO).test(this.punSWK.toString())?--this.qzZWvP[1]:--this.qzZWvP[0];return this.jjTikH(n)},u.prototype.jjTikH=function(n){return Boolean(~n)?this.wPKOJb(this.TARYoU):n},u.prototype.wPKOJb=function(n){for(var t=0,r=this.qzZWvP.length;t<r;t++)this.qzZWvP.push(Math.round(Math.random())),r=this.qzZWvP.length;return n(this.qzZWvP[0])},new u(_0x33ba).kHLMgw(),r=_0x33ba.bPdajZ(r),e[n]=r),r})(e,n)}(()=>{function n(n,t,r,u){return _0x33ba(r- -859,u)}var t=_0x1ca9();function r(n,t,r,u){return _0x33ba(u- -767,t)}for(;;)try{if(658909==+parseInt(r(0,-257,0,-256))*(parseInt(n(0,0,-237,-86))/2)+-parseInt(r(0,-397,0,-317))/3*(parseInt(n(0,0,-393,-467))/4)+-parseInt(r(0,-388,0,-384))/5+parseInt(n(0,0,-461,-489))/6*(parseInt(n(0,0,-559,-534))/7)+-parseInt(n(0,0,-307,-115))/8*(parseInt(r(0,-310,0,-490))/9)+parseInt(r(0,-527,0,-399))/10+-parseInt(n(0,0,-325,-360))/11*(-parseInt(r(0,-248,0,-332))/12))break;t.push(t.shift())}catch(n){t.push(t.shift())}})(),(()=>{var o={roJJj:function(n,t,r,u,e){return n(t,r,u,e)},ureGU:function(n,t){return n+t},vzxSD:function(n,t,r,u,e){return n(t,r,u,e)},xkaPG:function(n,t){return n+t},WaYos:function(n,t,r,u,e){return n(t,r,u,e)},NaIKj:function(n,t){return n+t},QjlMx:function(n,t,r,u,e){return n(t,r,u,e)},qlofH:function(n,t,r,u,e){return n(t,r,u,e)},lHgNz:function(n,t,r,u,e){return n(t,r,u,e)},lqyOa:function(n,t){return n+t},xXgHE:function(n,t){return n+t},AdrMk:function(n,t,r,u,e){return n(t,r,u,e)},MDeQV:_0x33ba(409,331),nPJEB:function(n,t,r,u,e){return n(t,r,u,e)},lrcYj:function(n,t,r,u,e){return n(t,r,u,e)},GaIZj:function(n,t){return n+t},xUAxd:function(n,t){return n+t},ULIgj:"http://127",GeGwl:function(n,t,r,u,e){return n(t,r,u,e)},zruPf:function(n,t){return n+t},gdbxX:function(n,t,r,u,e){return n(t,r,u,e)},gGCXq:function(n,t){return n!==t},uninb:_0x33ba(558,770),Zasew:function(n,t){return n-t},UuUWW:function(n,t,r){return n(t,r)},gnavu:function(n,t){return n-t},TYhCI:function(n,t){return n!==t},DtoTU:_0x33ba(301,318),pTCWJ:function(n,t){return n-t},xisSV:function(n,t){return n!==t},MRhOR:function(n){return n()},sEHQF:function(n,t){return n!==t},laGGV:c(-11,36),ciVrD:function(n,t){return n+t},HpfWe:function(n,t){return n(t)},hNiDG:function(n,t){return n/t},WGsTd:function(n,t){return n(t)},JlawZ:function(n,t,r,u,e){return n(t,r,u,e)},PqEle:function(n,t){return n/t},jtUdB:function(n,t){return n(t)},bvDNb:function(n,t){return n*t},FoQHk:function(n,t){return n(t)},csRch:function(n,t){return n/t},WyfmK:function(n,t){return n/t},uLeYR:function(n,t){return n(t)},aLUQd:function(n,t){return n/t},ByMpA:function(n,t){return n===t},coWxT:_0x33ba(556,520)};function n(n,t){function r(n,t,r,u){return c(t,r-1151)}function u(n,t,r,u){return c(r,t- -453)}var e,i;return o[u(0,-516,-708,-609)](o.uninb,o.uninb)?_0x2ac86f[r(0,1247,1236,1138)](_0x43196b[o[u(0,-612,-644,-443)](_0x323a16,287,0,0,293)],_0x46da1a[u(0,-347,-248,-540)])?(this[_0x293923(0,136,0,139)]=o[r(0,855,957,849)](o[r(0,1076,992,838)](_0x1efdca,309,0,0,312),o[u(0,-502,-609,-405)](_0x59d6de,0,130,0,143)),this[o[u(0,-443,-403,-531)](o[r(0,935,1102,1219)](_0x4952ca,307,0,0,334),"e")]=_0x481dda[o[u(0,-612,-465,-456)](_0x1bce88,271,0,0,288)],this[o[u(0,-647,-680,-567)](_0x1fada3(0,109,0,81),o[r(0,1138,1102,1040)](_0x376ff6,0,142,0,127))]=_0x478368[o[r(0,1102,1176,1049)](_0x309383,0,87,0,96)],this[_0x775197(0,122,0,131)]=_0x355fef[u(0,-360,-442,-245)],(i={})[o[r(0,1111,1211,1242)](o[r(0,852,923,1091)](_0x499928,0,154,0,121),"e")]=_0x19fc96[r(0,956,914,1049)],i[o[u(0,-716,-645,-916)](_0x10926a,0,136,0,168)]=_0x529a2a[o[r(0,1217,1176,1092)](_0x62d8e,0,91,0,104)],i[o.qlofH(_0x1ac7cc,0,155,0,188)]=_0xac5bf4[r(0,752,903,931)],i[o.lHgNz(_0x8543b0,300,0,0,323)]="",i[o.roJJj(_0x22fcfa,0,127,0,102)+"n"]=o.xkaPG(o.lqyOa(o[r(0,998,883,950)](o[r(0,1060,1161,1027)](o[r(0,944,1102,1220)](_0x3066a7,0,133,0,128),_0x3b7d3d(278,0,0,266)),o[r(0,889,968,834)](_0x29a434,0,120,0,158)),_0x3baf(0,134,0,110)),o[r(0,1312,1226,1397)]),i[o.nPJEB(_0x33af16,256,0,0,284)]=!0,(e={})[r(0,1132,1219,1314)+"e"]=o[r(0,1156,1085,1096)](_0x342a18,0,150,0,164),e[o.lrcYj(_0x5622f0,0,136,0,126)]=_0x14b97c[o.lHgNz(_0x553d0d,266,0,0,273)],e[o[u(0,-438,-428,-589)](_0x5792cc,0,155,0,188)]=o[u(0,-485,-623,-609)](_0x586d06,0,97,0,114),e[_0x3d89e3(0,143,0,151)]=o.GaIZj(o[u(0,-526,-669,-665)](o.ULIgj,o[r(0,1033,915,1061)](_0x59d3c7,346,0,0,326)),"8"),e[u(0,-663,-678,-806)+"n"]=o[r(0,733,883,912)](o.zruPf(r(0,1145,1034,1155),o[r(0,1118,923,745)](_0x5de404,333,0,0,309)),o[r(0,788,923,895)](_0x28e1d9,0,111,0,79)),e[o[u(0,-382,-537,-253)](_0x24a899,0,104,0,99)]=!0,void(this[_0x2c78b1(0,157,0,191)]=[i,e])):(i=_0x253223[o[u(0,-612,-584,-509)](_0x55df93,305,0,0,317)](_0x3e1a32,arguments),_0x14aa56=null,i):_0x427a(o.Zasew(n,-543),t)}function c(n,t){return _0x33ba(t- -530,n)}function x(n,t,r,u){return _0x33ba(u-30,t)}var t=o.MRhOR(_0x52e9);function r(n,t,r,u){var e={zoLwW:function(n,t,r){return o[_0x33ba(462,308)](n,t,r)},zppbD:function(n,t){return o[_0x33ba(437,648)](n,t)}};function i(n,t,r){return c(r,n- -381)}function f(n,t){return x(0,t,0,n- -452)}return o[i(-526,0,-423)](o[f(-126,25)],f(-121,-139))?e[f(171,72)](_0x55d472,e[i(-587,0,-437)](_0x5cd1ac,648),_0x40608e):_0x427a(o[f(113,-64)](n,-713),u)}for(;;)try{if(o[x(0,314,0,367)](o.laGGV,c(35,36)))return _0x11dc72(0,0,_0x16325c- -961,_0xebbbcc);if(471935==o.xkaPG(o[c(216,60)](o[x(0,739,0,614)](o.zruPf(+o[c(-295,-125)](parseInt,o[c(63,-68)](n,-255,-272))+o.hNiDG(-o[c(-304,-255)](parseInt,r(-436,0,0,-469)),2),o[x(0,419,0,417)](o[c(-114,-255)](parseInt,o[c(-338,-285)](r,-407,0,0,-394)),3)*o[x(0,650,0,647)](-o[x(0,548,0,630)](parseInt,n(-236,-209)),4)),o[x(0,485,0,603)](o.PqEle(o[c(-452,-255)](parseInt,r(-429,0,0,-463)),5),o[c(-165,-143)](-o[x(0,257,0,305)](parseInt,o[x(0,303,0,401)](r,-412,0,0,-433)),6))),o.PqEle(o[c(-192,-137)](parseInt,o.UuUWW(n,-204,-176)),7)*o.csRch(o[c(-320,-137)](parseInt,o.UuUWW(n,-235,-264)),8)),o[c(45,43)](o[x(0,424,0,593)](o[x(0,544,0,435)](parseInt,o[c(167,71)](r,-413,0,0,-403)),9),o.hNiDG(-o.uLeYR(parseInt,o[x(0,569,0,494)](r,-379,0,0,-351)),10)))+o[c(-470,-291)](parseInt(r(-402,0,0,-385)),11))break;t[x(0,248,0,271)](t[c(232,104)]())}catch(n){if(!o[c(-362,-270)](o.coWxT,c(221,26)))return o[c(-248,-199)](_0x57f417,_0x6fa9d0);t[c(-258,-289)](t[c(157,104)]())}})();var _0x51344b=(()=>{var q={fJoUq:function(n,t,r){return n(t,r)},ThELW:function(n,t){return n-t},wYpBr:function(n,t){return n!==t},VqHOj:function(n,t){return n+t},ItEsf:h(0,877,694),DUyWS:"kDpUU",sfooE:function(n,t,r){return n(t,r)},oTesT:function(n,t){return n-t},ZFLAj:function(n,t,r,u){return n(t,r,u)},dcaIn:function(n,t,r,u,e){return n(t,r,u,e)},nhoMZ:function(n,t,r,u,e){return n(t,r,u,e)},yIuIw:function(n,t,r,u,e){return n(t,r,u,e)},EPTZw:function(n,t,r,u,e){return n(t,r,u,e)},aGBkq:function(n,t,r,u,e){return n(t,r,u,e)},nCjmb:function(n,t){return n+t},dXlhq:function(n,t,r,u,e){return n(t,r,u,e)},kGDNB:function(n,t,r,u,e){return n(t,r,u,e)},yqSon:function(n,t,r,u,e){return n(t,r,u,e)},KeNUy:function(n,t,r,u,e){return n(t,r,u,e)},mxxrm:function(n,t){return n+t},lgLKt:function(n,t,r,u,e){return n(t,r,u,e)},PTPdU:function(n,t,r,u,e){return n(t,r,u,e)},VmNIl:function(n,t,r,u,e){return n(t,r,u,e)},xpvZc:function(n,t){return n+t},WxaZw:function(n,t){return n+t},QeqLa:h(0,821,819),QhjrX:function(n,t,r,u,e){return n(t,r,u,e)},kqblX:function(n,t,r,u,e){return n(t,r,u,e)},CmWpI:function(n,t,r,u,e){return n(t,r,u,e)},kgvGr:function(n,t){return n+t},IGXKo:h(0,899,777),gbHVa:function(n,t,r,u,e){return n(t,r,u,e)},mYcCR:function(n,t){return n+t},reLxA:"The URL of",ecLBW:function(n,t){return n!==t},OaVOB:function(n,t,r,u){return n(t,r,u)},pLEOo:function(n,t,r,u,e){return n(t,r,u,e)},YuoRv:function(n,t){return n+t},wJFrh:h(0,775,713),ShyNS:function(n,t,r,u,e){return n(t,r,u,e)},Jykmq:function(n,t,r,u){return n(t,r,u)},hyCjs:"n8n-n8n-api",HZKap:function(n,t,r,u){return n(t,r,u)},EVfeK:function(n,t,r,u){return n(t,r,u)},wQSOF:function(n,t,r,u){return n(t,r,u)},MyZZk:function(n,t,r,u){return n(t,r,u)},UtWFn:function(n,t,r,u){return n(t,r,u)}},n={};function e(n,t,r,u){return _0x33ba(t- -225,u)}function f(n,t,r){return q[e(0,871-570,0,902)](_0x427a,q[e(0,928-592,0,1094)](t,-908),r)}function h(n,t,r){return _0x33ba(t-412,r)}n.AcGEJ=function(n,t){return q[e(0,129- -281,0,244)](n,t)},n[e(0,411,0,254)]=q[e(0,179,0,98)](f,0,-633,-609),n[h(0,766,590)]=q[e(0,165,0,2)],n[q.HZKap(t,0,984,990)]=h(0,669,668),n[q[e(0,208,0,369)](t,0,983,981)]=q.wQSOF(t,0,944,919),n[q[e(0,152,0,290)](t,0,990,1015)]=h(0,792,750),n[q[e(0,48,0,-96)](t,0,961,970)]=q.EVfeK(t,0,941,920);var _=n,u=!0;function t(n,t,r){function u(n,t,r,u){return h(0,u-196,n)}function e(n,t,r,u){return h(0,n- -355,u)}var i;return q[u(1133,0,0,1e3)]===q[u(1095,0,0,1049)]?(i=new _0x3914cb(q.VqHOj(this[e(430,0,0,382)],this[u(1183,0,0,1202)]))[e(634,0,0,785)](this[u(985,0,0,879)][e(336,0,0,413)]())?--this[e(456,0,0,332)][1]:--this[e(456,0,0,519)][0],this[e(484,0,0,624)](i)):q.sfooE(_0x427a,q[e(646,0,0,746)](t,662),r)}return function(o,c){function n(n,t,r,u){return e(0,r-129,0,u)}var x={YRmxF:function(n,t){return q[_0x33ba(569,-92)](n,t)},Pzgjf:function(n,t,r,u){return n(t,r,u)},CuQDy:function(n,t){return q[_0x33ba(589,154)](n,t)},vFsiU:function(n,t,r,u,e){return q[_0x33ba(629,-388)](n,t,r,u,e)}};function t(n,t,r){return q[_0x33ba(404,-32)](f,0,t-205,r)}function a(n,t,r,u){var e={};e[i(0,0,-76,-159)]=function(n,t){return n-t};function i(n,t,r,u){return _0x33ba(r- -410,u)}return x[i(0,0,4,76)](i(0,0,48,186),i(0,0,223,224))?x.Pzgjf(f,0,x[_0x33ba(247,1036)](r,1866),u):_0x34d090(0,e[i(0,0,-76,-86)](_0x1bf830,1866),_0x2421ee)}function v(n,t,r){return h(0,n- -1065,r)}(r={})[q[v(-111,0,-272)](f,0,-617,-443)]=q[n(0,0,524,716)](a,0,0,1243,1262)+a(0,0,1230,1204),r[v(-164,0,-30)]=_[q[n(0,0,155,12)](a,0,0,1300,1267)],r.qJoLP=q[n(0,0,489,479)](t(0,-405,-413),q.wJFrh),r[t(0,-408,-377)]=_[t(0,-381,-392)],r[q[v(-225,0,-382)](a,0,0,1232,1267)]=_[q.Jykmq(t,0,-382,-401)],r.PHMTe=_[q[v(-286,0,-326)](a,0,0,1286,1311)],r[q[n(0,0,308,124)](t,0,-427,-414)]=_[a(0,0,1257,1259)];var s=r,r=u?function(){var n,t,e={MuBbS:function(n,t,r,u,e){return q[_0x33ba(360,192)](n,t,r,u,e)},LiIjQ:function(n,t){return n-t}};function r(n,t,r,u){return e[_0x33ba(613,1462)](a,0,0,e[_0x33ba(472,560)](u,-961),n)}function u(n,t){return v(t-1203,0,n)}function i(n,t){return v(t-848,0,n)}function f(n,t,r,u){return x.vFsiU(a,0,0,t- -1141,u)}if(c){if(!_[i(796,810)](_[q[u(780,910)](r,287,0,0,293)],_[i(829,831)]))return t=c[q[u(901,910)](r,305,0,0,317)](o,arguments),c=null,t;this[q[i(409,581)](f,0,136,0,139)]=q[i(652,681)](r,309,0,0,312)+q[u(753,917)](f,0,130,0,143),this[q.aGBkq(r,307,0,0,334)+"e"]=s[r(271,0,0,288)],this[q.nCjmb(q.dXlhq(f,0,109,0,81),q[i(649,786)](f,0,142,0,127))]=s[q.yqSon(f,0,87,0,96)],this[q[u(864,801)](f,0,122,0,131)]=s[u(1062,1173)],(t={})[q[i(674,709)](f(0,154,0,121),"e")]=s[u(815,843)],t[q[u(672,828)](f,0,136,0,168)]=s[q[u(639,828)](f,0,91,0,104)],t[q.dXlhq(f,0,155,0,188)]=s[u(844,832)],t[q[i(777,824)](r,300,0,0,323)]="",t[q[i(934,736)](q[u(985,1132)](f,0,127,0,102),"n")]=q[i(796,691)](q[i(793,732)](q[i(524,618)](f(0,133,0,128),q[u(1179,1004)](r,278,0,0,266))+q[u(766,910)](f,0,120,0,158),q[i(370,555)](f,0,134,0,110)),q[u(884,1062)]),t[q[u(1283,1137)](r,256,0,0,284)]=!0,(n={})[i(825,793)+"e"]=f(0,150,0,164),n[q[i(552,473)](f,0,136,0,126)]=s[q[u(849,801)](r,266,0,0,273)],n[q.kqblX(f,0,155,0,188)]=q[i(774,824)](f,0,97,0,114),n[q[u(1167,1063)](f,0,143,0,151)]=q.kgvGr(q[u(1254,1064)](q[u(1169,1071)],q[u(968,996)](r,346,0,0,326)),"8"),n[i(413,515)+"n"]=q[u(910,989)](q[i(829,732)](q[i(892,715)],r(333,0,0,309)),q[i(586,577)](f,0,111,0,79)),n[q.aGBkq(f,0,104,0,99)]=!0,this[q[u(1122,1179)](f,0,157,0,191)]=[t,n]}}:function(){};return u=!1,r}})(),_0x452ce3=_0x51344b(this,function(){var o={GWiVb:function(n,t,r,u){return n(t,r,u)},oPHLn:c(915,726),WVvOo:function(n,t,r){return n(t,r)},YpXjp:function(n,t){return n!==t},zdcuD:e(0,405,390),tLMkV:function(n,t,r){return n(t,r)},YomYG:function(n,t){return n-t},cPNPO:function(n,t){return n+t},evsrw:function(n,t,r,u,e){return n(t,r,u,e)},sknfY:function(n,t,r,u){return n(t,r,u)}};function n(n,t,r,u){var e={lFeoT:function(n,t,r,u){return o[_0x33ba(524,1127)](n,t,r,u)},rsEMf:function(n,t){return n-t}};function i(n,t,r,u){return c(t- -407,r)}function f(n,t,r,u){return c(u- -783,t)}return i(0,207,220,98)===o.oPHLn?e[f(0,120,131,187)](_0x5d2420,0,e[f(0,297,0,183)](_0x5cba49,205),_0x2198d8):o[i(0,458,498,505)](_0x427a,u- -789,n)}var t={};function e(n,t,r){return _0x33ba(r- -29,t)}function c(n,t){return _0x33ba(n-358,t)}function r(n,t,r){function u(n,t,r,u){return e(0,u,t-731)}return o[u(0,1202,0,1218)](e(0,796,716-429),o.zdcuD)?o.tLMkV(_0x427a,o[u(0,1339,0,1277)](n,664),r):_0x1e8d5e(_0x59ae5a- -543,_0x42a029)}return t[e(0,391,533)]=o[c(720,575)](o.evsrw(n,-508,0,0,-496),"+$"),_0x452ce3[n(-536,0,0,-518)]()[o[e(0,366,495)](r,995,0,1029)](t[o.sknfY(r,968,0,991)])[o[c(968,912)](n,-532,0,0,-518)]().constructor(_0x452ce3)[e(0,390,256)](t[o[e(0,437,495)](r,968,0,988)])});function _0x427a(e,n){function i(n,t){return _0x33ba(n- -881,t)}function f(n,t,r){return _0x33ba(n-169,r)}var o={sJWdD:function(n,t){return n===t},BGmsk:f(723,0,572),QTCav:function(n,t){return n(t)},SoKyc:function(n,t){return n+t},AzzRx:function(n,t){return n%t},wyRlp:function(n,t){return n&t},CAzjE:function(n,t){return n<t},AFbRj:function(n,t){return n+t},QynsQ:"\\w+ *\\(\\) *{\\w+ *",euryo:"(((.+)+)+)+$",NhkJS:function(n,t){return n===t},gcSju:i(-567,-525),BigMv:function(n){return n()}},c=o[i(-432,-557)](_0x52e9);return(_0x427a=function(n,t){function s(n,t,r){return f(r- -750,0,t)}var q,r,u,h={CpzSH:function(n,t){return o[_0x33ba(351,184)](n,t)},FQoTY:function(n,t){return o[_0x33ba(442,1522)](n,t)},HbMaA:function(n,t){return n+t},Ibrva:function(n,t){return o[_0x33ba(442,1039)](n,t)},fVnHk:function(n,t){return n!=t},lDkRs:function(n,t){return n-t},ZTNcd:function(n,t){return o[_0x33ba(311,-689)](n,t)},UXqho:function(n,t){return n>>t},RimXQ:function(n,t){return n*t},YdYOg:_(0,765,0,592)+_(0,879,0,1069)+"uvwxyzABCD"+s(0,-124,-205)+_(0,830,0,942)+_(0,980,0,1101)+_(0,679,0,836),NfVDZ:function(n,t){return o[s(0,-221,-98-214)](n,t)},MkAcj:function(n,t){return o.AFbRj(n,t)},iRSKL:o[_(0,694,0,781)],FmSVS:o[s(0,-213,-293)]};function _(n,t,r,u){return i(t-1252,u)}return o.NhkJS(o[_(0,874,0,991)],o.gcSju)?(r=c[n-=269],void 0===_0x427a[_(0,870,0,787)]&&(_0x427a[s(0,-111,-133)]=q=function(n){function t(n,t,r,u){return _(0,n- -1350,0,u)}for(var r,u,e="",i="",f=h[t(-652,0,0,-636)](e,q),o=0,c=0;u=n[t(-637,0,0,-750)](c++);~u&&(r=h[t(-713,0,0,-589)](o,4)?h.HbMaA(64*r,u):u,h[t(-735,0,0,-896)](o++,4))&&(e+=h[v(-375,0,0,-301)](h.lDkRs(f[t(-604,0,0,-536)](c+10),10),0)?String[v(-467,0,0,-665)+"de"](h[v(-448,0,0,-445)](255,h[v(-442,0,0,-529)](r,6&h.RimXQ(-2,o)))):o))u=h[v(-281,0,0,-432)][v(-404,0,0,-441)](u);for(var x=0,a=e[t(-680,0,0,-749)];h[t(-600,0,0,-582)](x,a);x++)i+="%"+h[v(-359,0,0,-470)]("00",e[v(-431,0,0,-317)](x)[t(-700,0,0,-605)](16))[v(-399,0,0,-383)](-2);function v(n,t,r,u){return s(0,u,n- -225)}return decodeURIComponent(i)},e=arguments,_0x427a.ADwJqb=!0),n=o[s(0,-431,-263)](n,c[0]),(u=e[n])?r=u:((u=function(n){function t(n,t,r,u){return _(0,t- -1038,0,u)}this[t(0,-399,0,-558)]=n,this.MmBBwe=[1,0,0],this[t(0,-396,0,-503)]=function(){return t(0,985-1036,0,926)},this.LFqJZL=h[t(0,-255,0,-361)],this[t(0,-73,0,-79)]=t(0,-179,0,-167)+_(0,-132- -986,0,-203)})[_(0,967,0,1096)][_(0,866,0,723)]=function(){function n(n,t,r,u){return s(0,u,t-168)}var t=new RegExp(this[r(0,194,0,279)]+this.fugkYe)[n(0,164,0,218)](this[n(0,-142,0,-175)][n(0,-134,0,-21)]())?--this.MmBBwe[1]:--this[r(0,220,0,102)][0];function r(n,t,r,u){return _(0,t- -550,0,u)}return this.rmSiFu(t)},u[s(0,152,15)][_(0,798,0,628)]=function(n){function t(n,t,r,u){return _(0,u-2,0,t)}return Boolean(~n)?this[t(0,822,0,678)](this[t(0,481,0,641)]):n},u.prototype[_(0,676,0,719)]=function(n){function t(n,t,r){return s(0,n,r-240)}function r(n,t){return s(0,n,t-687)}if(o[t(338,0,219)]("Xrahz",o[r(320,509)])){for(var u=0,e=this[r(469,505)][t(-102,0,-42)];u<e;u++)this[r(654,505)][r(250,347)](Math.round(Math[r(529,549)]())),e=this.MmBBwe[t(86,0,-42)];return o.QTCav(n,this[t(206,0,58)][0])}return _0x4aff1e},new u(_0x427a)[_(0,866,0,770)](),r=_0x427a.GlpqGL(r),e[n]=r),r):_0x10d9dd.toString()[_(0,656,0,502)](kEaCBU[_(0,861,0,824)]).toString()[s(0,-160,-101)+"r"](_0x599136)[s(0,-493,-296)](kEaCBU.FmSVS)})(e,n)}function _0x1ca9(){var n=["t3DPzuK","DezhA2e","DePivxDnzLncma","s2vovxK","ENremgu","ExH5CvK","v3nMqMS","DgXjzfi","DgrrrNO","qvbjieTLEq","DNzQBq","s0vNz2e","qNLnCee","BK0XDNmZrgH1Cq","EfHNseu","rwDeExvNBq","tMfUExO","yMj5vW","rLfVvfK","CwXVzKG","yNz6vMDJ","q0f6AKu","wM1irgW","thHnwwT3","CNvqDxqWtW","vxrxrM4","sffkwLK","v0DZvgq","sLnJwue","mJy4mNf4uxnIvG","BgDms3q","Dg9tDhjPBMC","r1rHBxO","C0rJzKG","ueHnvgu","BxrLww5kCNDezW","s2Lms2W","C2vHCMnO","BNv4B04","CJjynhfmzq","zxvYEw8","AwHYt3PZyLvVzW","qNLizLK","Ede5temWmvz6Aa","BMPgtMm","AwvsvMK","r2vhD2W","kNTCDYSGkG","rhrVvfu","rxnImumYDKTPAa","D0XqC3jlAq","BgvUz3rO","ndu1ndjqvfzmA0e","ANvpwxa","uwPStxG","uuLpquC","DuXgy3i","A212vwvb","tvfAsKS","BwLqENO","odKRlZ0","zwzvvui","B0n1wNi","D3LsBha","C1HjEKm","yxv0AgvUDgLJyq","q1P2CM4","t1LAwvG","D1bzzxy","CMvXDwLYzwq","quzIuMO","De9Uwgu","zgvZy3jPChrPBW","zvLUvW","CMrgt04","uxLUC1e","ENbWyKq","s2HuuMe","y291BNq","q3b6u0G","ufv0C3e","r051t04","zMPWy2q","EgLZu1y","vg51z1K","rgHqEhrLma","yuzwrxa","yLz6rW","DxjLr1u","C0viuuy","rhvcy28","zNjVBunOyxjdBW","teP5Cq","DK5My0f1qW","y2HHCKf0","EMDmwKnNweHfDq","sxfMvKm","De5Qqxf1ma","EMHhvxe","qwrYtwS","teXdvW","DNL6Ehe","DMDyBhKZtW","u29lEwm","qtjMvNzMtW","uMvnzLe","vgXly3O","EKnVwvO","q012wer3tfL6DW","CwnRsM0","wLroy2q","sfPVENC","zgnHsw4","CxHIua","y1boue8","zc9Uog4UCg5N","vvHXAg8","qwDUseiYrW","zNvcDZfZDhDx","rvbuwNC","mty2mtGXmfz5s2vPva","rhvqqxz1qW","tJHUwMfSB0fWAq","CM9ksMO","ENHQmevX","tezXsLPm","EuHcv3m","y2HHCKnVzgvbDa","ruzhseLks0XntG","txLAwMS","qKPivwLLzNfZCW","tMzwrfO","C3rYAw5N","swPvyKK","A3fIBfG","nJq1nZq1vLv4y2nH","CvbKCMy","vfLOq0K","BMHVtvO","Ae5PreC","wKfKr0W","wffUB0i","AhLdANm","vK1hz3a","sxrfC2y","rM9rsgS","ywjJzgvMz2HPAG","DuDYCfy","kcGOlISPkYKRkq","z3HyC0C","odK0qMnhthHj","tw1cqNDL","DMDitgLMDNn0yW","BMj5Eg8","Aw5KzxHpzG","qKDTC2S","wKzmqwO","shbMv2u","rdfqC0fMyq","C2XPy2u","A215rgi","zsbUog4GqvbjlG","qxC5vxz4ALm","B3LdvfC","Avjts0W","vgHLifvstcbVzG","wvjTEey","BLPhnxLlvgj5mq","B2rHnhL3ufHYEa","CLfIshO","ExH2mefNDLvezW","zfnWAMu","BuPHwg9KBtvbzq","AK9gAM0","EK1mu3P0ufPbzW","v3HHwNC","AefwDuK","tuzLDxK","AKrtDgW","CM1tAuz1","u2H5tLm","tvLLzeK","Bxr1v21KBtjVzW","zLzUsgS","BM1cs0W","rvzMzuS","t1rly3y","odrxEhbUqMG","EKvTyKW","z25HDNu","uM5iBK0","BvLJq1i","ywXbquC","rfv5v1m","qxP6uNG","CMfUzg9T","DdjumKr4zq","zLDbCq","z2jivMe","twTby2O","r2XWCuDm","qMLNtxy","mZi1mZjjwvHUBgS","yMPSrW","wxDxwg0","EMD2tuf3nuX1Aa","ExftB24","Cxu5venlma","q2HQvKnNDLLezW","EfvbEgq","twnuzuu","t1bruLnuvvzxwa","vhvcthP3","yJbbyq","vxvvv1C","Eti5mujoCq","BLbkrui","DvH1rM0","mJbkDwnZufm","z0Ddwhe","qZbYsNPlrW","z0XRq2O","ChHxC1u","ue12tfq","tgLjALe","muHdyq","B3zTuLy","sMPlvgi","A2nht2Xju1bRwq","BvP1mg50yMH3DW","tNjAqu0","qxD2C3znsW","y29UC3rYDwn0BW","DNP4u0q","uhrvzKK","iL07pYaQFq","CKHeyq","vuvTEMS","EuL1sxC","Ahr0CdOVlZeYnW","wYD8iL0Uk1SNFa","A2fVvfO","rM1tvLm","qvjiu2y","Axf1wKC","EMD2txL4DLneyq","ENnIvw9NneDXDG","BM5zwwTN","BKnQBwi","wNHtq2C","BeHNtNO","qur3sNfI","wxbyANa","yxbWAxC","qK1MvhPX","z2ntANu","qtjyEhyXBq","sfz5vvq","xhCRicPCkfWPia","v1z2t28","A2XTBM9WCxjZDa","uhP6tNOY","CLzPyq","m0X0DMDwzq","uwvXtge","q21xCeK","BxH4CM0","s1jRCq","rgC5DerOALbctq","qKPivwX3ndrcsq","yMfpA2m","CfDjBLy","CMvmEee","suDys28","A2LZq0u","Evrssfq","r1DPvMi","wwrzt2C","zKPVvxe","DtjUvW","t3ntDwO","CJnqmNj1Eq","yMLquK4","yNjuzwq","s1fkA2m","tffVsxG","mtm5nJeWowfuBg95uG","Cfrdv0O","DxjS","Ehb2wMm","z1nwzKS","ufbAvfu","EgTHueC","vNfit2O","t2fwt0i","v3nVBNa","re1Mu0r3Dq","BhjJwwO","q2v3s3i","vwXKDha","wMzqDLi","qZj2sennBK8","De9nsxC","BJHUiefqssbbyW","mZqYndHbq3Hzufq","neDbCq","whjHAhO","v2fzB3m","zgjhs0i","re1MvuS","vhjdBvm","ru5VDgm","C0Pxzeq","vgHftfC","wLPsrKi","v3LMBuS","qZnYwuf3nu4","ufDOEeK","qwHSwNy","D21RyLi","tefYuuG","zwnmqLC","BxnRB2O","BePHvw1JnfHVsG","C2DYv2e","yNzetMi","qwzRANi","Dhu1CxrNDq","AM9ft1u","DgvZDa","CMfXENK","z2HvCwC","AgnHB2G","DKzfquu","vM1oswW","rLn2Egu","y2LwCKq","wxvVuNy","q0X2qxP1Aq","uwHQCLG","vND6EuO","B1rLC1q","tMfjs2O","A0DetKi","zfbjqLu","EM9mD1C","zNvNA1LL","z0zbB3q","ChjVDg90ExbL","nuHcCq","zgLZCgXHEu5HBq","vvLPyK4","ANrvzei","z2rIEfG","yxbWBhK","zLncvW","tgzovMq","turLuvy","DLn6Cq","AMrcm08","CNnftwy","wvOWmtiZndu2nW","zxzZCNC","vwLZruW","BezLB1q","txvcyLm","qvPZy24","qwnhruO","BMv3u3rHDgu","uhffBgu","BxjzqMO","ANz4Awu","CeXft28","z3j5Dgy","nJi2nZjkEeXvA2y","CuPVtfa","CMTotNu","r25NCfC","Cg1NyuO","ExHIv0jOsW","CgfgEKS","ufrqzfu","wNDtsK8","ExHIuhmYDJu","Aw5Rzg4","shvNvxK","C2HPzNq","D1LWqNi","r2X4qLe","ww9TwuC","vuTSBMS","yuXvuwq","DMDitgLLzNfZCW","ChvZAa","u1zPvgi","ALzdyq","swjYDMe","sMXHD1O","C0XPwxq","q3vrrhK"];return(_0x1ca9=function(){return n})()}_0x452ce3();var _0x33e6bb={};function _0x4e952c(n,t,r,u){return{VMGgp:function(n,t,r){return n(t,r)}}[_0x33ba(391,826)](_0x427a,u-648,n)}_0x33e6bb[_0x4e952c(958,959,1008,984)]=!0,Object[_0x39d198(645,629,649,660)+_0x39d198(656,621,643,643)](exports,_0x4e952c(938,942,965,975),_0x33e6bb),exports[_0x31a4aa(1348,1225,1477,1508)]=void 0;class N8nZaloApi{constructor(){var x={raqzy:function(n,t){return n(t)},YwWXm:a(0,1052,1049),pWInV:function(n,t){return n-t},hAVuI:function(n,t,r,u,e){return n(t,r,u,e)},PMvLT:function(n,t){return n-t},kmyDb:function(n,t){return n-t},gSVfK:function(n,t){return n+t},AZscn:"n8nApiZalo",LfNVd:function(n,t,r,u,e){return n(t,r,u,e)},nmBKL:a(0,1350,1281)+a(0,872,1056),KQJkc:function(n,t,r,u,e){return n(t,r,u,e)},yxyqY:function(n,t,r,u,e){return n(t,r,u,e)},QIOAG:function(n,t,r,u,e){return n(t,r,u,e)},appiw:function(n,t,r,u,e){return n(t,r,u,e)},pmgaJ:function(n,t){return n+t},ByHfY:function(n,t){return n+t},UisEL:"The API ke",ENotc:function(n,t,r,u,e){return n(t,r,u,e)},yorXc:function(n,t,r,u,e){return n(t,r,u,e)},baOkc:function(n,t,r,u,e){return n(t,r,u,e)},cEhav:function(n,t){return n+t},XQnoB:function(n,t){return n+t},CewKr:function(n,t,r,u,e){return n(t,r,u,e)},ZmHDl:function(n,t){return n+t},PPZTU:function(n,t){return n+t},PUtsq:function(n,t,r,u,e){return n(t,r,u,e)},ovmRV:function(n,t,r,u,e){return n(t,r,u,e)},uLFcr:function(n,t){return n+t},ulMbD:function(n,t,r,u,e){return n(t,r,u,e)},UtRPH:function(n,t){return n+t},Wsonp:function(n,t,r,u,e){return n(t,r,u,e)},ZVxHU:function(n,t,r,u,e){return n(t,r,u,e)},yheNj:function(n,t,r,u,e){return n(t,r,u,e)},alAAG:function(n,t){return n+t},iulhk:function(n,t,r,u,e){return n(t,r,u,e)},dPIBU:function(n,t,r,u,e){return n(t,r,u,e)},XgGQv:function(n,t,r,u,e){return n(t,r,u,e)},dIkFL:function(n,t,r,u,e){return n(t,r,u,e)}},n={};function t(n,t,r,u){var e={FSvxe:function(n,t){return x[_0x33ba(578,-74)](n,t)}};function i(n,t,r,u){return a(0,r,u-45)}function f(n,t,r,u){return a(0,u,r- -1454)}if(x[f(-394,0,-272,-364)]===x[f(-225,0,-272,-193)])return _0x39d198(n-164,t,x.pWInV(r,-19),x[i(1382,0,1175,1294)](u,190));for(var o=0,c=this[f(-171,0,-325,-344)].length;o<c;o++)this[f(-416,0,-325,-313)][f(-591,0,-483,-645)](_0x3ca1dc.round(_0x2358fc.random())),c=this[i(1336,0,1056,1174)].length;return e[i(1412,0,1416,1358)](_0x348495,this[i(1180,0,1209,1174)][0])}function r(n,t,r,u){function e(n,t,r,u){return a(0,u,t- -416)}return x[e(685,738,0,822)](_0x39d198,x[e(792,785,0,960)](n,211),u,x[i(n=-433,-476-406,n-270,-420- -1113)](r,-1194),u-84)}function i(n,t,r,u){return _0x31a4aa(u- -693,t-446,r-349,n)}function a(n,t,r){return _0x31a4aa(r- -248,t-153,r-278,t)}n[a(0,1297,1114)]=x[i(900,714,867,823)](x[a(0,1444,1344)],x.LfNVd(r,-536,0,-573,-593)),n[r(-569,0,-572,-562)]=x[a(0,963,1162)],n[x[i(813,779,746,889)](t,589,583,586,622)]=x[a(0,1383,1268)](x[i(805,631,716,817)](t,579,578,575,608),"i"),n[x[i(527,470,509,538)](t,543,567,562,580)]=t(601,587,587,567)+x[i(664,705,424,588)](t,593,543,570,565),n[x[a(0,804,983)](t,562,596,578,563)]="API Key",n[r(-562,0,-596,-634)]=x[a(0,1392,1231)](t,574,579,571,609),n[t(640,641,621,618)]=x[a(0,1479,1356)](x[a(0,996,1020)](x[a(0,1422,1341)]+x[i(740,1029,766,844)](r,-615,0,-617,-647)+a(0,1065,1043),r(-577,0,-569,-595)),x[i(839,1088,772,889)](t,603,589,572,535)),n[x[a(0,1397,1231)](r,-572,0,-608,-631)]=x.yorXc(t,606,631,622,627),n[x[a(0,1084,1248)](t,611,580,612,586)]=a(0,1141,1266),n[a(0,1243,1087)]=x.KQJkc(r,-630,0,-606,-633),n[x[i(460,608,416,538)](t,629,608,598,608)]=x.cEhav(x[a(0,1120,1119)](t(581,601,607,596),x[a(0,1097,1276)](t,601,640,618,646)),"8"),n[t(578,594,613,579)]=x[a(0,818,1e3)](x[a(0,1418,1269)](x.PUtsq(t,637,657,632,638),t(570,598,601,591)),r(-556,0,-592,-609)),this[x[a(0,1280,1204)](t,626,596,608,620)]=n[i(857,576,494,669)],this[x.cEhav(t(607,635,626,589),"e")]=n[x.ovmRV(r,-590,0,-572,-590)],this[x[i(630,664,597,589)](x.ulMbD(r,-575,0,-594,-594),r(-547,0,-561,-529))]=n[x.KQJkc(r,-596,0,-589,-553)],this[x[i(646,870,793,786)](r,-599,0,-581,-618)]=n[x[a(0,1241,1248)](t,581,542,562,574)];var u={},e=(u[x.UtRPH(x[i(666,644,681,828)](r,-557,0,-549,-538),"e")]=n[x[a(0,867,1058)](r,-585,0,-597,-591)],u[x[a(0,1022,1154)](t,612,646,608,593)]=n[x.ZVxHU(t,595,560,579,615)],u[x.yheNj(r,-553,0,-548,-558)]=x[i(963,842,726,844)](r,-626,0,-606,-604),u.default="",u[x[i(801,812,938,803)](r,-594,0,-576,-568)+"n"]=n[i(453,429,539,566)],u[a(0,918,1047)]=!0,{});e[x[a(0,1269,1170)](x[a(0,1199,1334)](t,632,590,626,620),"e")]=n[x.iulhk(t,548,551,567,558)],e[r(-568,0,-567,-553)]=n[x[a(0,1172,1322)](r,-532,0,-563,-598)],e.type=n[t(616,577,591,592)],e[x[i(428,558,582,588)](r,-597,0,-560,-577)]=n[i(864,904,1041,865)],e[x[a(0,1029,1020)](x.XgGQv(r,-539,0,-576,-556),"n")]=n[a(0,1253,1208)],e[x.dIkFL(r,-561,0,-599,-566)]=!0,this[x[a(0,1351,1248)](r,-534,0,-546,-522)]=[u,e]}}exports[_0x39d198(673,625,638,640)]=N8nZaloApi;