@lotus-tree/fg-notation 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (168) hide show
  1. package/README.md +29 -19
  2. package/dev/img/basic/+.png +0 -0
  3. package/dev/img/basic/1.png +0 -0
  4. package/dev/img/basic/12369.png +0 -0
  5. package/dev/img/basic/1237.png +0 -0
  6. package/dev/img/basic/1632143.png +0 -0
  7. package/dev/img/basic/2.png +0 -0
  8. package/dev/img/basic/21.png +0 -0
  9. package/dev/img/basic/214.png +0 -0
  10. package/dev/img/basic/21478.png +0 -0
  11. package/dev/img/basic/23.png +0 -0
  12. package/dev/img/basic/236.png +0 -0
  13. package/dev/img/basic/23698.png +0 -0
  14. package/dev/img/basic/28.png +0 -0
  15. package/dev/img/basic/3.png +0 -0
  16. package/dev/img/basic/32147.png +0 -0
  17. package/dev/img/basic/3219.png +0 -0
  18. package/dev/img/basic/341236.png +0 -0
  19. package/dev/img/basic/346.png +0 -0
  20. package/dev/img/basic/360.png +0 -0
  21. package/dev/img/basic/4.png +0 -0
  22. package/dev/img/basic/41236.png +0 -0
  23. package/dev/img/basic/421.png +0 -0
  24. package/dev/img/basic/46.png +0 -0
  25. package/dev/img/basic/4618346.png +0 -0
  26. package/dev/img/basic/47896.png +0 -0
  27. package/dev/img/basic/5.png +0 -0
  28. package/dev/img/basic/6.png +0 -0
  29. package/dev/img/basic/623.png +0 -0
  30. package/dev/img/basic/63214.png +0 -0
  31. package/dev/img/basic/64.png +0 -0
  32. package/dev/img/basic/6428.png +0 -0
  33. package/dev/img/basic/69874.png +0 -0
  34. package/dev/img/basic/7.png +0 -0
  35. package/dev/img/basic/7891.png +0 -0
  36. package/dev/img/basic/8.png +0 -0
  37. package/dev/img/basic/81237.png +0 -0
  38. package/dev/img/basic/82.png +0 -0
  39. package/dev/img/basic/87412.png +0 -0
  40. package/dev/img/basic/89632.png +0 -0
  41. package/dev/img/basic/9.png +0 -0
  42. package/dev/img/basic/[1].png +0 -0
  43. package/dev/img/basic/[2].png +0 -0
  44. package/dev/img/basic/[2]8.png +0 -0
  45. package/dev/img/basic/[3].png +0 -0
  46. package/dev/img/basic/[4].png +0 -0
  47. package/dev/img/basic/[6].png +0 -0
  48. package/dev/img/basic/[7].png +0 -0
  49. package/dev/img/basic/[8].png +0 -0
  50. package/dev/img/basic/[9].png +0 -0
  51. package/dev/img/basic/air.png +0 -0
  52. package/dev/img/basic/doubleforward.png +0 -0
  53. package/dev/img/credits.txt +4 -0
  54. package/dev/img/games/bb/a.png +0 -0
  55. package/dev/img/games/bb/b.png +0 -0
  56. package/dev/img/games/bb/c.png +0 -0
  57. package/dev/img/games/bb/d.png +0 -0
  58. package/dev/img/games/bbtag/a.png +0 -0
  59. package/dev/img/games/bbtag/b.png +0 -0
  60. package/dev/img/games/bbtag/c.png +0 -0
  61. package/dev/img/games/bbtag/d.png +0 -0
  62. package/dev/img/games/bbtag/p.png +0 -0
  63. package/dev/img/games/dbz/a1.png +0 -0
  64. package/dev/img/games/dbz/a2.png +0 -0
  65. package/dev/img/games/dbz/h.png +0 -0
  66. package/dev/img/games/dbz/l.png +0 -0
  67. package/dev/img/games/dbz/m.png +0 -0
  68. package/dev/img/games/dbz/s.png +0 -0
  69. package/dev/img/games/dnf/a.png +0 -0
  70. package/dev/img/games/dnf/as.png +0 -0
  71. package/dev/img/games/dnf/b.png +0 -0
  72. package/dev/img/games/dnf/g.png +0 -0
  73. package/dev/img/games/dnf/ms.png +0 -0
  74. package/dev/img/games/dnf/s.png +0 -0
  75. package/dev/img/games/gbf/g.png +0 -0
  76. package/dev/img/games/gbf/h.png +0 -0
  77. package/dev/img/games/gbf/l.png +0 -0
  78. package/dev/img/games/gbf/m.png +0 -0
  79. package/dev/img/games/gbf/s.png +0 -0
  80. package/dev/img/games/gg/d.png +0 -0
  81. package/dev/img/games/gg/hs.png +0 -0
  82. package/dev/img/games/gg/k.png +0 -0
  83. package/dev/img/games/gg/p.png +0 -0
  84. package/dev/img/games/gg/rc.png +0 -0
  85. package/dev/img/games/gg/s.png +0 -0
  86. package/dev/img/games/kof/a.png +0 -0
  87. package/dev/img/games/kof/b.png +0 -0
  88. package/dev/img/games/kof/c.png +0 -0
  89. package/dev/img/games/kof/d.png +0 -0
  90. package/dev/img/games/kof/max.png +0 -0
  91. package/dev/img/games/mk/1.png +0 -0
  92. package/dev/img/games/mk/2.png +0 -0
  93. package/dev/img/games/mk/3.png +0 -0
  94. package/dev/img/games/mk/4.png +0 -0
  95. package/dev/img/games/sc/[a].png +0 -0
  96. package/dev/img/games/sc/[b].png +0 -0
  97. package/dev/img/games/sc/[g].png +0 -0
  98. package/dev/img/games/sc/[k].png +0 -0
  99. package/dev/img/games/sc/a.png +0 -0
  100. package/dev/img/games/sc/b.png +0 -0
  101. package/dev/img/games/sc/g.png +0 -0
  102. package/dev/img/games/sc/k.png +0 -0
  103. package/dev/img/games/sf/hk.png +0 -0
  104. package/dev/img/games/sf/hp.png +0 -0
  105. package/dev/img/games/sf/j..png +0 -0
  106. package/dev/img/games/sf/lk.png +0 -0
  107. package/dev/img/games/sf/lp.png +0 -0
  108. package/dev/img/games/sf/max.png +0 -0
  109. package/dev/img/games/sf/mk.png +0 -0
  110. package/dev/img/games/sf/mp.png +0 -0
  111. package/dev/img/games/sf/tap.png +0 -0
  112. package/dev/img/games/sg/hk.png +0 -0
  113. package/dev/img/games/sg/hp.png +0 -0
  114. package/dev/img/games/sg/k.png +0 -0
  115. package/dev/img/games/sg/lk.png +0 -0
  116. package/dev/img/games/sg/lp.png +0 -0
  117. package/dev/img/games/sg/mk.png +0 -0
  118. package/dev/img/games/sg/mp.png +0 -0
  119. package/dev/img/games/sg/p.png +0 -0
  120. package/dev/img/games/tfh/a.png +0 -0
  121. package/dev/img/games/tfh/b.png +0 -0
  122. package/dev/img/games/tfh/c.png +0 -0
  123. package/dev/img/games/tfh/d.png +0 -0
  124. package/dev/img/games/tkn/1.png +0 -0
  125. package/dev/img/games/tkn/12.png +0 -0
  126. package/dev/img/games/tkn/1234.png +0 -0
  127. package/dev/img/games/tkn/13.png +0 -0
  128. package/dev/img/games/tkn/14.png +0 -0
  129. package/dev/img/games/tkn/2.png +0 -0
  130. package/dev/img/games/tkn/23.png +0 -0
  131. package/dev/img/games/tkn/24.png +0 -0
  132. package/dev/img/games/tkn/3.png +0 -0
  133. package/dev/img/games/tkn/34.png +0 -0
  134. package/dev/img/games/tkn/4.png +0 -0
  135. package/dev/img/games/tkn/b.png +0 -0
  136. package/dev/img/games/tkn/d-b.png +0 -0
  137. package/dev/img/games/tkn/d-f.png +0 -0
  138. package/dev/img/games/tkn/d.png +0 -0
  139. package/dev/img/games/tkn/f.png +0 -0
  140. package/dev/img/games/tkn/o.png +0 -0
  141. package/dev/img/games/tkn/u-b.png +0 -0
  142. package/dev/img/games/tkn/u-f.png +0 -0
  143. package/dev/img/games/tkn/u.png +0 -0
  144. package/dev/img/preview.png +0 -0
  145. package/dev/index.js +563 -0
  146. package/dev/info.json +33 -0
  147. package/lib/img/basic/+.png +0 -0
  148. package/lib/img/games/bbtag/a.png +0 -0
  149. package/lib/img/games/bbtag/b.png +0 -0
  150. package/lib/img/games/bbtag/c.png +0 -0
  151. package/lib/img/games/bbtag/d.png +0 -0
  152. package/lib/img/games/bbtag/p.png +0 -0
  153. package/lib/img/games/gg/rc.png +0 -0
  154. package/lib/index.js +562 -488
  155. package/lib/info.json +33 -0
  156. package/package.json +9 -4
  157. package/src/img/basic/+.png +0 -0
  158. package/src/img/games/bbtag/a.png +0 -0
  159. package/src/img/games/bbtag/b.png +0 -0
  160. package/src/img/games/bbtag/c.png +0 -0
  161. package/src/img/games/bbtag/d.png +0 -0
  162. package/src/img/games/bbtag/p.png +0 -0
  163. package/src/img/games/gg/rc.png +0 -0
  164. package/src/index.js +87 -33
  165. package/src/info.json +33 -0
  166. package/examples/ex1.GIF +0 -0
  167. package/examples/fg1.GIF +0 -0
  168. package/examples/fg2.GIF +0 -0
package/lib/index.js CHANGED
@@ -1,488 +1,562 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports["default"] = void 0;
9
-
10
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
-
12
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
-
14
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
15
-
16
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
17
-
18
- var _sharp = _interopRequireDefault(require("sharp"));
19
-
20
- var _path = _interopRequireDefault(require("path"));
21
-
22
- var _glob = _interopRequireDefault(require("glob"));
23
-
24
- var _sequelize = require("sequelize");
25
-
26
- var _requestPromise = _interopRequireDefault(require("request-promise"));
27
-
28
- var imgPath = _path["default"].join(__dirname, 'img');
29
-
30
- var basicInputs = new Map();
31
- var gameInputs = new Map();
32
- var glossary = {};
33
- var terms = [];
34
- getGlossary();
35
- setInterval(getGlossary, 5 * 60 * 1000);
36
-
37
- function getGlossary() {
38
- return _getGlossary.apply(this, arguments);
39
- }
40
-
41
- function _getGlossary() {
42
- _getGlossary = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6() {
43
- var result, tempG, tempT;
44
- return _regenerator["default"].wrap(function _callee6$(_context6) {
45
- while (1) {
46
- switch (_context6.prev = _context6.next) {
47
- case 0:
48
- _context6.t0 = JSON;
49
- _context6.next = 3;
50
- return (0, _requestPromise["default"])('https://glossary.infil.net/json/glossary.json');
51
-
52
- case 3:
53
- _context6.t1 = _context6.sent;
54
- result = _context6.t0.parse.call(_context6.t0, _context6.t1);
55
- tempG = {};
56
- tempT = [];
57
- result.forEach(function (i) {
58
- var term = i.term.toLowerCase();
59
- tempG[term] = i;
60
- tempT.push(term);
61
- });
62
- glossary = tempG;
63
- terms = tempT;
64
-
65
- case 10:
66
- case "end":
67
- return _context6.stop();
68
- }
69
- }
70
- }, _callee6);
71
- }));
72
- return _getGlossary.apply(this, arguments);
73
- }
74
-
75
- _glob["default"].sync(_path["default"].join(imgPath, 'basic/**'), {
76
- nodir: true
77
- }).forEach(function (p) {
78
- var input = p.split('/').pop().replace('.png', '');
79
- basicInputs.set(input, p);
80
- });
81
-
82
- basicInputs.set('>>', _path["default"].join(imgPath, 'basic/doubleforward.png'));
83
-
84
- _glob["default"].sync(_path["default"].join(imgPath, 'games/**'), {
85
- nodir: true
86
- }).forEach(function (p) {
87
- var _path$parse = _path["default"].parse(_path["default"].relative(_path["default"].join(imgPath, 'games'), p)),
88
- dir = _path$parse.dir,
89
- name = _path$parse.name;
90
-
91
- if (!gameInputs.has(dir)) gameInputs.set(dir, new Map());
92
- gameInputs.get(dir).set(name, p);
93
- });
94
-
95
- function solveInput(inputs, input) {
96
- if (inputs.has(input)) return [input];
97
-
98
- for (var i = 0; i < input.length; i++) {
99
- var s1 = input.slice(0, 0 - i);
100
- if (inputs.has(s1)) return [s1].concat((0, _toConsumableArray2["default"])(solveInput(inputs, input.slice(0 - i))));
101
- }
102
-
103
- throw new Error("Cannot find \"".concat(input, "\" as a recognizable input"));
104
- }
105
-
106
- function sendInput(_x, _x2, _x3, _x4) {
107
- return _sendInput.apply(this, arguments);
108
- }
109
-
110
- function _sendInput() {
111
- _sendInput = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7(inputs, result, message, caption) {
112
- var canvas;
113
- return _regenerator["default"].wrap(function _callee7$(_context7) {
114
- while (1) {
115
- switch (_context7.prev = _context7.next) {
116
- case 0:
117
- _context7.next = 2;
118
- return (0, _sharp["default"])({
119
- create: {
120
- width: 152 * result.length,
121
- height: 152,
122
- channels: 4,
123
- background: 'transparent'
124
- }
125
- }).composite(result.map(function (it, index) {
126
- return {
127
- input: inputs.get(it),
128
- left: index * 152,
129
- top: 0,
130
- width: 152,
131
- height: 152
132
- };
133
- })).png().toBuffer();
134
-
135
- case 2:
136
- canvas = _context7.sent;
137
- return _context7.abrupt("return", message.reply({
138
- content: caption,
139
- files: [canvas]
140
- }));
141
-
142
- case 4:
143
- case "end":
144
- return _context7.stop();
145
- }
146
- }
147
- }, _callee7);
148
- }));
149
- return _sendInput.apply(this, arguments);
150
- }
151
-
152
- var builtin = {
153
- 37: {
154
- game: 'sf',
155
- caption: '***LETS GO JUSTIN!***',
156
- input: '6 6 6 6 6 6 6 >> 6 6 6 6 6 6 6 >> 8 6 j. hk >> 2 mk >> 623 mp >> 236 236 lk'
157
- }
158
- };
159
- var _default = {
160
- name: 'fg-notation',
161
- intents: ['GUILD_MESSAGES'],
162
- partials: ['MESSAGE'],
163
- preload: function preload(sequelize) {
164
- sequelize.define('fginput', {
165
- guild: {
166
- type: _sequelize.DataTypes.STRING,
167
- primaryKey: true
168
- },
169
- name: {
170
- type: _sequelize.DataTypes.STRING,
171
- primaryKey: true
172
- },
173
- createdBy: _sequelize.DataTypes.STRING,
174
- game: _sequelize.DataTypes.STRING,
175
- caption: _sequelize.DataTypes.STRING,
176
- input: _sequelize.DataTypes.STRING
177
- });
178
- },
179
- events: {
180
- messageCreate: function messageCreate(global, message) {
181
- return (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
182
- var client, config, sequelize, guildId, prefix, name, row, inputs;
183
- return _regenerator["default"].wrap(function _callee$(_context) {
184
- while (1) {
185
- switch (_context.prev = _context.next) {
186
- case 0:
187
- client = global.client, config = global.config, sequelize = global.sequelize;
188
-
189
- if (!(message.author.id === client.user.id || !message.member)) {
190
- _context.next = 3;
191
- break;
192
- }
193
-
194
- return _context.abrupt("return");
195
-
196
- case 3:
197
- guildId = message.guildId;
198
- prefix = config[guildId].prefix;
199
-
200
- if (!message.content.startsWith(prefix)) {
201
- _context.next = 14;
202
- break;
203
- }
204
-
205
- name = message.content.split(' ').pop().replace(prefix, '');
206
- _context.t0 = builtin[name];
207
-
208
- if (_context.t0) {
209
- _context.next = 12;
210
- break;
211
- }
212
-
213
- _context.next = 11;
214
- return sequelize.models.fginput.findOne({
215
- where: {
216
- guild: message.guild.id,
217
- name: name
218
- }
219
- });
220
-
221
- case 11:
222
- _context.t0 = _context.sent;
223
-
224
- case 12:
225
- row = _context.t0;
226
-
227
- if (row) {
228
- inputs = new Map([].concat((0, _toConsumableArray2["default"])(basicInputs), (0, _toConsumableArray2["default"])(gameInputs.get(row.game))));
229
- sendInput(inputs, row.input.split(' '), message, row.caption);
230
- }
231
-
232
- case 14:
233
- case "end":
234
- return _context.stop();
235
- }
236
- }
237
- }, _callee);
238
- }))();
239
- }
240
- },
241
- commands: {
242
- fgi: {
243
- usage: 'fgi [game] [inputs]',
244
- desc: 'Converts a list of inputs into an image',
245
- example: 'fgi sf 236P 214K',
246
- execute: function () {
247
- var _execute = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(_ref, _ref2) {
248
- var param, message, _param, game, i1, inputs, result;
249
-
250
- return _regenerator["default"].wrap(function _callee2$(_context2) {
251
- while (1) {
252
- switch (_context2.prev = _context2.next) {
253
- case 0:
254
- param = _ref.param;
255
- message = _ref2.message;
256
- _param = (0, _slicedToArray2["default"])(param, 3), game = _param[1], i1 = _param[2];
257
-
258
- if (!(!game || !i1)) {
259
- _context2.next = 5;
260
- break;
261
- }
262
-
263
- return _context2.abrupt("return", message.reply('Missing arguments. Example: >fgi sf 236P 214K'));
264
-
265
- case 5:
266
- if (gameInputs.has(game)) {
267
- _context2.next = 7;
268
- break;
269
- }
270
-
271
- return _context2.abrupt("return", message.reply("\"".concat(game, "\" is not a valid game. Available games: ").concat(Array.from(gameInputs.keys()).join(' '))));
272
-
273
- case 7:
274
- inputs = new Map([].concat((0, _toConsumableArray2["default"])(basicInputs), (0, _toConsumableArray2["default"])(gameInputs.get(game))));
275
- result = param.slice(2).map(function (i) {
276
- return solveInput(inputs, i.toLowerCase());
277
- }).flat();
278
- sendInput(inputs, result, message);
279
-
280
- case 10:
281
- case "end":
282
- return _context2.stop();
283
- }
284
- }
285
- }, _callee2);
286
- }));
287
-
288
- function execute(_x5, _x6) {
289
- return _execute.apply(this, arguments);
290
- }
291
-
292
- return execute;
293
- }()
294
- },
295
- fgsave: {
296
- usage: 'fgsave [game] [name] [inputs]',
297
- desc: 'Saves a list of inputs into a command',
298
- example: 'fgi sf testName 236P 214K',
299
- execute: function () {
300
- var _execute2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(_ref3, _ref4) {
301
- var param, sequelize, message, _param2, game, name, i1, inputs, input;
302
-
303
- return _regenerator["default"].wrap(function _callee3$(_context3) {
304
- while (1) {
305
- switch (_context3.prev = _context3.next) {
306
- case 0:
307
- param = _ref3.param, sequelize = _ref3.sequelize;
308
- message = _ref4.message;
309
- _param2 = (0, _slicedToArray2["default"])(param, 4), game = _param2[1], name = _param2[2], i1 = _param2[3];
310
-
311
- if (!(!game || !name || !i1)) {
312
- _context3.next = 5;
313
- break;
314
- }
315
-
316
- return _context3.abrupt("return", message.reply('Missing arguments. Example: >fgi sf testName 236P 214K'));
317
-
318
- case 5:
319
- if (gameInputs.has(game)) {
320
- _context3.next = 7;
321
- break;
322
- }
323
-
324
- return _context3.abrupt("return", message.reply("\"".concat(game, "\" is not a valid game. Available games: ").concat(Array.from(gameInputs.keys()).join(' '))));
325
-
326
- case 7:
327
- inputs = new Map([].concat((0, _toConsumableArray2["default"])(basicInputs), (0, _toConsumableArray2["default"])(gameInputs.get(game))));
328
- input = param.slice(3).map(function (i) {
329
- return solveInput(inputs, i.toLowerCase());
330
- }).flat().join(' ');
331
- _context3.next = 11;
332
- return sequelize.models.fginput.create({
333
- guild: message.guild.id,
334
- name: name,
335
- createdBy: message.author.id,
336
- game: game,
337
- input: input
338
- });
339
-
340
- case 11:
341
- message.channel.send("Saved command \"".concat(input, "\" as \"").concat(name, "\""));
342
-
343
- case 12:
344
- case "end":
345
- return _context3.stop();
346
- }
347
- }
348
- }, _callee3);
349
- }));
350
-
351
- function execute(_x7, _x8) {
352
- return _execute2.apply(this, arguments);
353
- }
354
-
355
- return execute;
356
- }()
357
- },
358
- fgcaption: {
359
- usage: 'fgcaption [name] [caption]',
360
- desc: 'Adds a caption to a saved input command',
361
- example: 'fgcaption testName This is a caption',
362
- execute: function () {
363
- var _execute3 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(_ref5, _ref6) {
364
- var param, sequelize, message, _param3, name, i1, row;
365
-
366
- return _regenerator["default"].wrap(function _callee4$(_context4) {
367
- while (1) {
368
- switch (_context4.prev = _context4.next) {
369
- case 0:
370
- param = _ref5.param, sequelize = _ref5.sequelize;
371
- message = _ref6.message;
372
- _param3 = (0, _slicedToArray2["default"])(param, 3), name = _param3[1], i1 = _param3[2];
373
-
374
- if (!(!name || !i1)) {
375
- _context4.next = 5;
376
- break;
377
- }
378
-
379
- return _context4.abrupt("return", message.reply('Missing arguments. Example: >fgi testName This is a caption'));
380
-
381
- case 5:
382
- _context4.next = 7;
383
- return sequelize.models.fginput.findOne({
384
- where: {
385
- guild: message.guild.id,
386
- name: name
387
- }
388
- });
389
-
390
- case 7:
391
- row = _context4.sent;
392
-
393
- if (row) {
394
- _context4.next = 10;
395
- break;
396
- }
397
-
398
- return _context4.abrupt("return", message.reply("\"".concat(name, "\" is not a saved input list")));
399
-
400
- case 10:
401
- row.caption = param.slice(2).join(' ');
402
- _context4.next = 13;
403
- return row.save();
404
-
405
- case 13:
406
- message.channel.send("Saved caption for input list \"".concat(name, "\""));
407
-
408
- case 14:
409
- case "end":
410
- return _context4.stop();
411
- }
412
- }
413
- }, _callee4);
414
- }));
415
-
416
- function execute(_x9, _x10) {
417
- return _execute3.apply(this, arguments);
418
- }
419
-
420
- return execute;
421
- }()
422
- },
423
- fgglossary: {
424
- usage: 'fgglossary [search term]',
425
- desc: 'Searches for a term on Infil\'s Glossary',
426
- example: 'fgglossary mexican uppercut',
427
- execute: function () {
428
- var _execute4 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(_ref7, _ref8) {
429
- var param, sequelize, message, params, search, result, url;
430
- return _regenerator["default"].wrap(function _callee5$(_context5) {
431
- while (1) {
432
- switch (_context5.prev = _context5.next) {
433
- case 0:
434
- param = _ref7.param, sequelize = _ref7.sequelize;
435
- message = _ref8.message;
436
- params = param.slice(1);
437
-
438
- if (!(params.length === 0)) {
439
- _context5.next = 5;
440
- break;
441
- }
442
-
443
- return _context5.abrupt("return", message.reply('Missing search term. Example: >fgglossary mexican uppercut'));
444
-
445
- case 5:
446
- search = params.join(' ').toLowerCase();
447
- result = terms.filter(function (i) {
448
- return i.includes(search);
449
- });
450
- url = "https://glossary.infil.net/?t=".concat(params.join('%20').toLowerCase());
451
-
452
- if (!(result.length === 0)) {
453
- _context5.next = 10;
454
- break;
455
- }
456
-
457
- return _context5.abrupt("return", message.reply("Term \"".concat(search, "\" not found")));
458
-
459
- case 10:
460
- if (!(result.length === 1)) {
461
- _context5.next = 12;
462
- break;
463
- }
464
-
465
- return _context5.abrupt("return", message.reply("```".concat(glossary[result[0]].def, "```Source: <").concat(url, ">")));
466
-
467
- case 12:
468
- message.reply(url);
469
-
470
- case 13:
471
- case "end":
472
- return _context5.stop();
473
- }
474
- }
475
- }, _callee5);
476
- }));
477
-
478
- function execute(_x11, _x12) {
479
- return _execute4.apply(this, arguments);
480
- }
481
-
482
- return execute;
483
- }()
484
- }
485
- }
486
- };
487
- exports["default"] = _default;
488
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJpbWdQYXRoIiwicGF0aCIsImpvaW4iLCJfX2Rpcm5hbWUiLCJiYXNpY0lucHV0cyIsIk1hcCIsImdhbWVJbnB1dHMiLCJnbG9zc2FyeSIsInRlcm1zIiwiZ2V0R2xvc3NhcnkiLCJzZXRJbnRlcnZhbCIsIkpTT04iLCJyZXN1bHQiLCJwYXJzZSIsInRlbXBHIiwidGVtcFQiLCJmb3JFYWNoIiwiaSIsInRlcm0iLCJ0b0xvd2VyQ2FzZSIsInB1c2giLCJnbG9iIiwic3luYyIsIm5vZGlyIiwicCIsImlucHV0Iiwic3BsaXQiLCJwb3AiLCJyZXBsYWNlIiwic2V0IiwicmVsYXRpdmUiLCJkaXIiLCJuYW1lIiwiaGFzIiwiZ2V0Iiwic29sdmVJbnB1dCIsImlucHV0cyIsImxlbmd0aCIsInMxIiwic2xpY2UiLCJFcnJvciIsInNlbmRJbnB1dCIsIm1lc3NhZ2UiLCJjYXB0aW9uIiwiY3JlYXRlIiwid2lkdGgiLCJoZWlnaHQiLCJjaGFubmVscyIsImJhY2tncm91bmQiLCJjb21wb3NpdGUiLCJtYXAiLCJpdCIsImluZGV4IiwibGVmdCIsInRvcCIsInBuZyIsInRvQnVmZmVyIiwiY2FudmFzIiwicmVwbHkiLCJjb250ZW50IiwiZmlsZXMiLCJidWlsdGluIiwiZ2FtZSIsImludGVudHMiLCJwYXJ0aWFscyIsInByZWxvYWQiLCJzZXF1ZWxpemUiLCJkZWZpbmUiLCJndWlsZCIsInR5cGUiLCJEYXRhVHlwZXMiLCJTVFJJTkciLCJwcmltYXJ5S2V5IiwiY3JlYXRlZEJ5IiwiZXZlbnRzIiwibWVzc2FnZUNyZWF0ZSIsImdsb2JhbCIsImNsaWVudCIsImNvbmZpZyIsImF1dGhvciIsImlkIiwidXNlciIsIm1lbWJlciIsImd1aWxkSWQiLCJwcmVmaXgiLCJzdGFydHNXaXRoIiwibW9kZWxzIiwiZmdpbnB1dCIsImZpbmRPbmUiLCJ3aGVyZSIsInJvdyIsImNvbW1hbmRzIiwiZmdpIiwidXNhZ2UiLCJkZXNjIiwiZXhhbXBsZSIsImV4ZWN1dGUiLCJwYXJhbSIsImkxIiwiQXJyYXkiLCJmcm9tIiwia2V5cyIsImZsYXQiLCJmZ3NhdmUiLCJjaGFubmVsIiwic2VuZCIsImZnY2FwdGlvbiIsInNhdmUiLCJmZ2dsb3NzYXJ5IiwicGFyYW1zIiwic2VhcmNoIiwiZmlsdGVyIiwiaW5jbHVkZXMiLCJ1cmwiLCJkZWYiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsSUFBTUEsT0FBTyxHQUFHQyxpQkFBS0MsSUFBTCxDQUFVQyxTQUFWLEVBQXFCLEtBQXJCLENBQWhCOztBQUNBLElBQU1DLFdBQVcsR0FBRyxJQUFJQyxHQUFKLEVBQXBCO0FBQ0EsSUFBTUMsVUFBVSxHQUFHLElBQUlELEdBQUosRUFBbkI7QUFFQSxJQUFJRSxRQUFRLEdBQUcsRUFBZjtBQUNBLElBQUlDLEtBQUssR0FBRyxFQUFaO0FBRUFDLFdBQVc7QUFDWEMsV0FBVyxDQUFDRCxXQUFELEVBQWMsSUFBSSxFQUFKLEdBQVMsSUFBdkIsQ0FBWDs7U0FFZUEsVzs7Ozs7K0ZBQWY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsMkJBQ2lCRSxJQURqQjtBQUFBO0FBQUEsbUJBQ2tDLGdDQUFHLCtDQUFILENBRGxDOztBQUFBO0FBQUE7QUFDUUMsWUFBQUEsTUFEUixnQkFDc0JDLEtBRHRCO0FBRVFDLFlBQUFBLEtBRlIsR0FFZ0IsRUFGaEI7QUFHUUMsWUFBQUEsS0FIUixHQUdnQixFQUhoQjtBQUtFSCxZQUFBQSxNQUFNLENBQUNJLE9BQVAsQ0FBZSxVQUFBQyxDQUFDLEVBQUk7QUFDbEIsa0JBQU1DLElBQUksR0FBR0QsQ0FBQyxDQUFDQyxJQUFGLENBQU9DLFdBQVAsRUFBYjtBQUNBTCxjQUFBQSxLQUFLLENBQUNJLElBQUQsQ0FBTCxHQUFjRCxDQUFkO0FBQ0FGLGNBQUFBLEtBQUssQ0FBQ0ssSUFBTixDQUFXRixJQUFYO0FBQ0QsYUFKRDtBQU1BWCxZQUFBQSxRQUFRLEdBQUdPLEtBQVg7QUFDQU4sWUFBQUEsS0FBSyxHQUFHTyxLQUFSOztBQVpGO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEc7Ozs7QUFlQU0saUJBQUtDLElBQUwsQ0FBVXJCLGlCQUFLQyxJQUFMLENBQVVGLE9BQVYsRUFBbUIsVUFBbkIsQ0FBVixFQUEwQztBQUFFdUIsRUFBQUEsS0FBSyxFQUFFO0FBQVQsQ0FBMUMsRUFDR1AsT0FESCxDQUNXLFVBQUFRLENBQUMsRUFBSTtBQUNaLE1BQU1DLEtBQUssR0FBR0QsQ0FBQyxDQUFDRSxLQUFGLENBQVEsR0FBUixFQUFhQyxHQUFiLEdBQW1CQyxPQUFuQixDQUEyQixNQUEzQixFQUFtQyxFQUFuQyxDQUFkO0FBQ0F4QixFQUFBQSxXQUFXLENBQUN5QixHQUFaLENBQWdCSixLQUFoQixFQUF1QkQsQ0FBdkI7QUFDRCxDQUpIOztBQU1BcEIsV0FBVyxDQUFDeUIsR0FBWixDQUFnQixJQUFoQixFQUFzQjVCLGlCQUFLQyxJQUFMLENBQVVGLE9BQVYsRUFBbUIseUJBQW5CLENBQXRCOztBQUVBcUIsaUJBQUtDLElBQUwsQ0FBVXJCLGlCQUFLQyxJQUFMLENBQVVGLE9BQVYsRUFBbUIsVUFBbkIsQ0FBVixFQUEwQztBQUFFdUIsRUFBQUEsS0FBSyxFQUFFO0FBQVQsQ0FBMUMsRUFDR1AsT0FESCxDQUNXLFVBQUFRLENBQUMsRUFBSTtBQUNaLG9CQUFzQnZCLGlCQUFLWSxLQUFMLENBQVdaLGlCQUFLNkIsUUFBTCxDQUFjN0IsaUJBQUtDLElBQUwsQ0FBVUYsT0FBVixFQUFtQixPQUFuQixDQUFkLEVBQTJDd0IsQ0FBM0MsQ0FBWCxDQUF0QjtBQUFBLE1BQVFPLEdBQVIsZUFBUUEsR0FBUjtBQUFBLE1BQWFDLElBQWIsZUFBYUEsSUFBYjs7QUFFQSxNQUFJLENBQUMxQixVQUFVLENBQUMyQixHQUFYLENBQWVGLEdBQWYsQ0FBTCxFQUEwQnpCLFVBQVUsQ0FBQ3VCLEdBQVgsQ0FBZUUsR0FBZixFQUFvQixJQUFJMUIsR0FBSixFQUFwQjtBQUMxQkMsRUFBQUEsVUFBVSxDQUFDNEIsR0FBWCxDQUFlSCxHQUFmLEVBQW9CRixHQUFwQixDQUF3QkcsSUFBeEIsRUFBOEJSLENBQTlCO0FBQ0QsQ0FOSDs7QUFRQSxTQUFTVyxVQUFULENBQXFCQyxNQUFyQixFQUE2QlgsS0FBN0IsRUFBb0M7QUFDbEMsTUFBSVcsTUFBTSxDQUFDSCxHQUFQLENBQVdSLEtBQVgsQ0FBSixFQUF1QixPQUFPLENBQUNBLEtBQUQsQ0FBUDs7QUFFdkIsT0FBSyxJQUFJUixDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHUSxLQUFLLENBQUNZLE1BQTFCLEVBQWtDcEIsQ0FBQyxFQUFuQyxFQUF1QztBQUNyQyxRQUFNcUIsRUFBRSxHQUFHYixLQUFLLENBQUNjLEtBQU4sQ0FBWSxDQUFaLEVBQWUsSUFBSXRCLENBQW5CLENBQVg7QUFDQSxRQUFJbUIsTUFBTSxDQUFDSCxHQUFQLENBQVdLLEVBQVgsQ0FBSixFQUFvQixRQUFRQSxFQUFSLDZDQUFlSCxVQUFVLENBQUNDLE1BQUQsRUFBU1gsS0FBSyxDQUFDYyxLQUFOLENBQVksSUFBSXRCLENBQWhCLENBQVQsQ0FBekI7QUFDckI7O0FBRUQsUUFBTSxJQUFJdUIsS0FBSix5QkFBMEJmLEtBQTFCLGdDQUFOO0FBQ0Q7O1NBRWNnQixTOzs7Ozs2RkFBZixrQkFBMEJMLE1BQTFCLEVBQWtDeEIsTUFBbEMsRUFBMEM4QixPQUExQyxFQUFtREMsT0FBbkQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxtQkFDdUIsdUJBQU07QUFBRUMsY0FBQUEsTUFBTSxFQUFFO0FBQUVDLGdCQUFBQSxLQUFLLEVBQUUsTUFBTWpDLE1BQU0sQ0FBQ3lCLE1BQXRCO0FBQThCUyxnQkFBQUEsTUFBTSxFQUFFLEdBQXRDO0FBQTJDQyxnQkFBQUEsUUFBUSxFQUFFLENBQXJEO0FBQXdEQyxnQkFBQUEsVUFBVSxFQUFFO0FBQXBFO0FBQVYsYUFBTixFQUNsQkMsU0FEa0IsQ0FDUnJDLE1BQU0sQ0FBQ3NDLEdBQVAsQ0FBVyxVQUFDQyxFQUFELEVBQUtDLEtBQUw7QUFBQSxxQkFDbkI7QUFBRTNCLGdCQUFBQSxLQUFLLEVBQUVXLE1BQU0sQ0FBQ0YsR0FBUCxDQUFXaUIsRUFBWCxDQUFUO0FBQXlCRSxnQkFBQUEsSUFBSSxFQUFFRCxLQUFLLEdBQUcsR0FBdkM7QUFBNENFLGdCQUFBQSxHQUFHLEVBQUUsQ0FBakQ7QUFBb0RULGdCQUFBQSxLQUFLLEVBQUUsR0FBM0Q7QUFBZ0VDLGdCQUFBQSxNQUFNLEVBQUU7QUFBeEUsZUFEbUI7QUFBQSxhQUFYLENBRFEsRUFJbEJTLEdBSmtCLEdBS2xCQyxRQUxrQixFQUR2Qjs7QUFBQTtBQUNRQyxZQUFBQSxNQURSO0FBQUEsOENBUVNmLE9BQU8sQ0FBQ2dCLEtBQVIsQ0FBYztBQUFFQyxjQUFBQSxPQUFPLEVBQUVoQixPQUFYO0FBQW9CaUIsY0FBQUEsS0FBSyxFQUFFLENBQUNILE1BQUQ7QUFBM0IsYUFBZCxDQVJUOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEc7Ozs7QUFXQSxJQUFNSSxPQUFPLEdBQUc7QUFDZCxNQUFJO0FBQ0ZDLElBQUFBLElBQUksRUFBRSxJQURKO0FBRUZuQixJQUFBQSxPQUFPLEVBQUUsdUJBRlA7QUFHRmxCLElBQUFBLEtBQUssRUFBRTtBQUhMO0FBRFUsQ0FBaEI7ZUFRZTtBQUNiTyxFQUFBQSxJQUFJLEVBQUUsYUFETztBQUViK0IsRUFBQUEsT0FBTyxFQUFFLENBQUMsZ0JBQUQsQ0FGSTtBQUdiQyxFQUFBQSxRQUFRLEVBQUUsQ0FBQyxTQUFELENBSEc7QUFLYkMsRUFBQUEsT0FBTyxFQUFFLGlCQUFBQyxTQUFTLEVBQUk7QUFDcEJBLElBQUFBLFNBQVMsQ0FBQ0MsTUFBVixDQUFpQixTQUFqQixFQUE0QjtBQUMxQkMsTUFBQUEsS0FBSyxFQUFFO0FBQ0xDLFFBQUFBLElBQUksRUFBRUMscUJBQVVDLE1BRFg7QUFFTEMsUUFBQUEsVUFBVSxFQUFFO0FBRlAsT0FEbUI7QUFLMUJ4QyxNQUFBQSxJQUFJLEVBQUU7QUFDSnFDLFFBQUFBLElBQUksRUFBRUMscUJBQVVDLE1BRFo7QUFFSkMsUUFBQUEsVUFBVSxFQUFFO0FBRlIsT0FMb0I7QUFTMUJDLE1BQUFBLFNBQVMsRUFBRUgscUJBQVVDLE1BVEs7QUFVMUJULE1BQUFBLElBQUksRUFBRVEscUJBQVVDLE1BVlU7QUFXMUI1QixNQUFBQSxPQUFPLEVBQUUyQixxQkFBVUMsTUFYTztBQVkxQjlDLE1BQUFBLEtBQUssRUFBRTZDLHFCQUFVQztBQVpTLEtBQTVCO0FBY0QsR0FwQlk7QUFzQmJHLEVBQUFBLE1BQU0sRUFBRTtBQUNBQyxJQUFBQSxhQURBLHlCQUNlQyxNQURmLEVBQ3VCbEMsT0FEdkIsRUFDZ0M7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDNUJtQyxnQkFBQUEsTUFENEIsR0FDRUQsTUFERixDQUM1QkMsTUFENEIsRUFDcEJDLE1BRG9CLEdBQ0VGLE1BREYsQ0FDcEJFLE1BRG9CLEVBQ1paLFNBRFksR0FDRVUsTUFERixDQUNaVixTQURZOztBQUFBLHNCQUVoQ3hCLE9BQU8sQ0FBQ3FDLE1BQVIsQ0FBZUMsRUFBZixLQUFzQkgsTUFBTSxDQUFDSSxJQUFQLENBQVlELEVBQWxDLElBQXdDLENBQUN0QyxPQUFPLENBQUN3QyxNQUZqQjtBQUFBO0FBQUE7QUFBQTs7QUFBQTs7QUFBQTtBQUk5QkMsZ0JBQUFBLE9BSjhCLEdBSXBCekMsT0FBTyxDQUFDeUMsT0FKWTtBQUs1QkMsZ0JBQUFBLE1BTDRCLEdBS2pCTixNQUFNLENBQUNLLE9BQUQsQ0FMVyxDQUs1QkMsTUFMNEI7O0FBQUEscUJBT2hDMUMsT0FBTyxDQUFDaUIsT0FBUixDQUFnQjBCLFVBQWhCLENBQTJCRCxNQUEzQixDQVBnQztBQUFBO0FBQUE7QUFBQTs7QUFRNUJwRCxnQkFBQUEsSUFSNEIsR0FRckJVLE9BQU8sQ0FBQ2lCLE9BQVIsQ0FBZ0JqQyxLQUFoQixDQUFzQixHQUF0QixFQUEyQkMsR0FBM0IsR0FBaUNDLE9BQWpDLENBQXlDd0QsTUFBekMsRUFBaUQsRUFBakQsQ0FScUI7QUFBQSw4QkFTdEJ2QixPQUFPLENBQUM3QixJQUFELENBVGU7O0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUFBQSx1QkFVMUJrQyxTQUFTLENBQUNvQixNQUFWLENBQWlCQyxPQUFqQixDQUF5QkMsT0FBekIsQ0FBaUM7QUFDckNDLGtCQUFBQSxLQUFLLEVBQUU7QUFBRXJCLG9CQUFBQSxLQUFLLEVBQUUxQixPQUFPLENBQUMwQixLQUFSLENBQWNZLEVBQXZCO0FBQTJCaEQsb0JBQUFBLElBQUksRUFBSkE7QUFBM0I7QUFEOEIsaUJBQWpDLENBVjBCOztBQUFBO0FBQUE7O0FBQUE7QUFTNUIwRCxnQkFBQUEsR0FUNEI7O0FBZWxDLG9CQUFJQSxHQUFKLEVBQVM7QUFDRHRELGtCQUFBQSxNQURDLEdBQ1EsSUFBSS9CLEdBQUosK0NBQVlELFdBQVosdUNBQTRCRSxVQUFVLENBQUM0QixHQUFYLENBQWV3RCxHQUFHLENBQUM1QixJQUFuQixDQUE1QixHQURSO0FBRVByQixrQkFBQUEsU0FBUyxDQUFDTCxNQUFELEVBQVNzRCxHQUFHLENBQUNqRSxLQUFKLENBQVVDLEtBQVYsQ0FBZ0IsR0FBaEIsQ0FBVCxFQUErQmdCLE9BQS9CLEVBQXdDZ0QsR0FBRyxDQUFDL0MsT0FBNUMsQ0FBVDtBQUNEOztBQWxCaUM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFvQnJDO0FBckJLLEdBdEJLO0FBOENiZ0QsRUFBQUEsUUFBUSxFQUFFO0FBQ1JDLElBQUFBLEdBQUcsRUFBRTtBQUNIQyxNQUFBQSxLQUFLLEVBQUUscUJBREo7QUFFSEMsTUFBQUEsSUFBSSxFQUFFLHlDQUZIO0FBR0hDLE1BQUFBLE9BQU8sRUFBRSxrQkFITjtBQUlIQyxNQUFBQSxPQUFPO0FBQUEscUdBQUU7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFTQyxrQkFBQUEsS0FBVCxRQUFTQSxLQUFUO0FBQW9CdkQsa0JBQUFBLE9BQXBCLFNBQW9CQSxPQUFwQjtBQUFBLDJEQUNjdUQsS0FEZCxNQUNFbkMsSUFERixjQUNRb0MsRUFEUjs7QUFBQSx3QkFFSCxDQUFDcEMsSUFBRCxJQUFTLENBQUNvQyxFQUZQO0FBQUE7QUFBQTtBQUFBOztBQUFBLG9EQUVrQnhELE9BQU8sQ0FBQ2dCLEtBQVIsQ0FBYywrQ0FBZCxDQUZsQjs7QUFBQTtBQUFBLHNCQUdGcEQsVUFBVSxDQUFDMkIsR0FBWCxDQUFlNkIsSUFBZixDQUhFO0FBQUE7QUFBQTtBQUFBOztBQUFBLG9EQUcyQnBCLE9BQU8sQ0FBQ2dCLEtBQVIsYUFBa0JJLElBQWxCLHNEQUFpRXFDLEtBQUssQ0FBQ0MsSUFBTixDQUFXOUYsVUFBVSxDQUFDK0YsSUFBWCxFQUFYLEVBQThCbkcsSUFBOUIsQ0FBbUMsR0FBbkMsQ0FBakUsRUFIM0I7O0FBQUE7QUFLRGtDLGtCQUFBQSxNQUxDLEdBS1EsSUFBSS9CLEdBQUosK0NBQVlELFdBQVosdUNBQTRCRSxVQUFVLENBQUM0QixHQUFYLENBQWU0QixJQUFmLENBQTVCLEdBTFI7QUFNRGxELGtCQUFBQSxNQU5DLEdBTVFxRixLQUFLLENBQUMxRCxLQUFOLENBQVksQ0FBWixFQUFlVyxHQUFmLENBQW1CLFVBQUFqQyxDQUFDO0FBQUEsMkJBQUlrQixVQUFVLENBQUNDLE1BQUQsRUFBU25CLENBQUMsQ0FBQ0UsV0FBRixFQUFULENBQWQ7QUFBQSxtQkFBcEIsRUFBNkRtRixJQUE3RCxFQU5SO0FBUVA3RCxrQkFBQUEsU0FBUyxDQUFDTCxNQUFELEVBQVN4QixNQUFULEVBQWlCOEIsT0FBakIsQ0FBVDs7QUFSTztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxTQUFGOztBQUFBO0FBQUE7QUFBQTs7QUFBQTtBQUFBO0FBSkosS0FERztBQWdCUjZELElBQUFBLE1BQU0sRUFBRTtBQUNOVixNQUFBQSxLQUFLLEVBQUUsK0JBREQ7QUFFTkMsTUFBQUEsSUFBSSxFQUFFLHVDQUZBO0FBR05DLE1BQUFBLE9BQU8sRUFBRSwyQkFISDtBQUlOQyxNQUFBQSxPQUFPO0FBQUEsc0dBQUU7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFTQyxrQkFBQUEsS0FBVCxTQUFTQSxLQUFULEVBQWdCL0IsU0FBaEIsU0FBZ0JBLFNBQWhCO0FBQStCeEIsa0JBQUFBLE9BQS9CLFNBQStCQSxPQUEvQjtBQUFBLDREQUNvQnVELEtBRHBCLE1BQ0VuQyxJQURGLGVBQ1E5QixJQURSLGVBQ2NrRSxFQURkOztBQUFBLHdCQUVILENBQUNwQyxJQUFELElBQVMsQ0FBQzlCLElBQVYsSUFBa0IsQ0FBQ2tFLEVBRmhCO0FBQUE7QUFBQTtBQUFBOztBQUFBLG9EQUUyQnhELE9BQU8sQ0FBQ2dCLEtBQVIsQ0FBYyx3REFBZCxDQUYzQjs7QUFBQTtBQUFBLHNCQUdGcEQsVUFBVSxDQUFDMkIsR0FBWCxDQUFlNkIsSUFBZixDQUhFO0FBQUE7QUFBQTtBQUFBOztBQUFBLG9EQUcyQnBCLE9BQU8sQ0FBQ2dCLEtBQVIsYUFBa0JJLElBQWxCLHNEQUFpRXFDLEtBQUssQ0FBQ0MsSUFBTixDQUFXOUYsVUFBVSxDQUFDK0YsSUFBWCxFQUFYLEVBQThCbkcsSUFBOUIsQ0FBbUMsR0FBbkMsQ0FBakUsRUFIM0I7O0FBQUE7QUFLRGtDLGtCQUFBQSxNQUxDLEdBS1EsSUFBSS9CLEdBQUosK0NBQVlELFdBQVosdUNBQTRCRSxVQUFVLENBQUM0QixHQUFYLENBQWU0QixJQUFmLENBQTVCLEdBTFI7QUFNRHJDLGtCQUFBQSxLQU5DLEdBTU93RSxLQUFLLENBQUMxRCxLQUFOLENBQVksQ0FBWixFQUFlVyxHQUFmLENBQW1CLFVBQUFqQyxDQUFDO0FBQUEsMkJBQUlrQixVQUFVLENBQUNDLE1BQUQsRUFBU25CLENBQUMsQ0FBQ0UsV0FBRixFQUFULENBQWQ7QUFBQSxtQkFBcEIsRUFBNkRtRixJQUE3RCxHQUFvRXBHLElBQXBFLENBQXlFLEdBQXpFLENBTlA7QUFBQTtBQUFBLHlCQVFEZ0UsU0FBUyxDQUFDb0IsTUFBVixDQUFpQkMsT0FBakIsQ0FBeUIzQyxNQUF6QixDQUFnQztBQUFFd0Isb0JBQUFBLEtBQUssRUFBRTFCLE9BQU8sQ0FBQzBCLEtBQVIsQ0FBY1ksRUFBdkI7QUFBMkJoRCxvQkFBQUEsSUFBSSxFQUFKQSxJQUEzQjtBQUFpQ3lDLG9CQUFBQSxTQUFTLEVBQUUvQixPQUFPLENBQUNxQyxNQUFSLENBQWVDLEVBQTNEO0FBQStEbEIsb0JBQUFBLElBQUksRUFBSkEsSUFBL0Q7QUFBcUVyQyxvQkFBQUEsS0FBSyxFQUFMQTtBQUFyRSxtQkFBaEMsQ0FSQzs7QUFBQTtBQVVQaUIsa0JBQUFBLE9BQU8sQ0FBQzhELE9BQVIsQ0FBZ0JDLElBQWhCLDJCQUF1Q2hGLEtBQXZDLHFCQUFxRE8sSUFBckQ7O0FBVk87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsU0FBRjs7QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUFBQTtBQUpELEtBaEJBO0FBaUNSMEUsSUFBQUEsU0FBUyxFQUFFO0FBQ1RiLE1BQUFBLEtBQUssRUFBRSw0QkFERTtBQUVUQyxNQUFBQSxJQUFJLEVBQUUseUNBRkc7QUFHVEMsTUFBQUEsT0FBTyxFQUFFLHNDQUhBO0FBSVRDLE1BQUFBLE9BQU87QUFBQSxzR0FBRTtBQUFBOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQVNDLGtCQUFBQSxLQUFULFNBQVNBLEtBQVQsRUFBZ0IvQixTQUFoQixTQUFnQkEsU0FBaEI7QUFBK0J4QixrQkFBQUEsT0FBL0IsU0FBK0JBLE9BQS9CO0FBQUEsNERBQ2N1RCxLQURkLE1BQ0VqRSxJQURGLGVBQ1FrRSxFQURSOztBQUFBLHdCQUVILENBQUNsRSxJQUFELElBQVMsQ0FBQ2tFLEVBRlA7QUFBQTtBQUFBO0FBQUE7O0FBQUEsb0RBRWtCeEQsT0FBTyxDQUFDZ0IsS0FBUixDQUFjLDZEQUFkLENBRmxCOztBQUFBO0FBQUE7QUFBQSx5QkFJV1EsU0FBUyxDQUFDb0IsTUFBVixDQUFpQkMsT0FBakIsQ0FBeUJDLE9BQXpCLENBQWlDO0FBQ2pEQyxvQkFBQUEsS0FBSyxFQUFFO0FBQUVyQixzQkFBQUEsS0FBSyxFQUFFMUIsT0FBTyxDQUFDMEIsS0FBUixDQUFjWSxFQUF2QjtBQUEyQmhELHNCQUFBQSxJQUFJLEVBQUpBO0FBQTNCO0FBRDBDLG1CQUFqQyxDQUpYOztBQUFBO0FBSUQwRCxrQkFBQUEsR0FKQzs7QUFBQSxzQkFRRkEsR0FSRTtBQUFBO0FBQUE7QUFBQTs7QUFBQSxvREFRVWhELE9BQU8sQ0FBQ2dCLEtBQVIsYUFBa0IxQixJQUFsQixrQ0FSVjs7QUFBQTtBQVNQMEQsa0JBQUFBLEdBQUcsQ0FBQy9DLE9BQUosR0FBY3NELEtBQUssQ0FBQzFELEtBQU4sQ0FBWSxDQUFaLEVBQWVyQyxJQUFmLENBQW9CLEdBQXBCLENBQWQ7QUFUTztBQUFBLHlCQVVEd0YsR0FBRyxDQUFDaUIsSUFBSixFQVZDOztBQUFBO0FBWVBqRSxrQkFBQUEsT0FBTyxDQUFDOEQsT0FBUixDQUFnQkMsSUFBaEIsMENBQXNEekUsSUFBdEQ7O0FBWk87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsU0FBRjs7QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUFBQTtBQUpFLEtBakNIO0FBb0RSNEUsSUFBQUEsVUFBVSxFQUFFO0FBQ1ZmLE1BQUFBLEtBQUssRUFBRSwwQkFERztBQUVWQyxNQUFBQSxJQUFJLEVBQUUsMENBRkk7QUFHVkMsTUFBQUEsT0FBTyxFQUFFLDZCQUhDO0FBSVZDLE1BQUFBLE9BQU87QUFBQSxzR0FBRTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBU0Msa0JBQUFBLEtBQVQsU0FBU0EsS0FBVCxFQUFnQi9CLFNBQWhCLFNBQWdCQSxTQUFoQjtBQUErQnhCLGtCQUFBQSxPQUEvQixTQUErQkEsT0FBL0I7QUFDRG1FLGtCQUFBQSxNQURDLEdBQ1FaLEtBQUssQ0FBQzFELEtBQU4sQ0FBWSxDQUFaLENBRFI7O0FBQUEsd0JBRUhzRSxNQUFNLENBQUN4RSxNQUFQLEtBQWtCLENBRmY7QUFBQTtBQUFBO0FBQUE7O0FBQUEsb0RBRXlCSyxPQUFPLENBQUNnQixLQUFSLENBQWMsNERBQWQsQ0FGekI7O0FBQUE7QUFJRG9ELGtCQUFBQSxNQUpDLEdBSVFELE1BQU0sQ0FBQzNHLElBQVAsQ0FBWSxHQUFaLEVBQWlCaUIsV0FBakIsRUFKUjtBQUtEUCxrQkFBQUEsTUFMQyxHQUtRSixLQUFLLENBQUN1RyxNQUFOLENBQWEsVUFBQTlGLENBQUM7QUFBQSwyQkFBSUEsQ0FBQyxDQUFDK0YsUUFBRixDQUFXRixNQUFYLENBQUo7QUFBQSxtQkFBZCxDQUxSO0FBTURHLGtCQUFBQSxHQU5DLDJDQU1zQ0osTUFBTSxDQUFDM0csSUFBUCxDQUFZLEtBQVosRUFBbUJpQixXQUFuQixFQU50Qzs7QUFBQSx3QkFRSFAsTUFBTSxDQUFDeUIsTUFBUCxLQUFrQixDQVJmO0FBQUE7QUFBQTtBQUFBOztBQUFBLG9EQVF5QkssT0FBTyxDQUFDZ0IsS0FBUixrQkFBdUJvRCxNQUF2QixrQkFSekI7O0FBQUE7QUFBQSx3QkFTSGxHLE1BQU0sQ0FBQ3lCLE1BQVAsS0FBa0IsQ0FUZjtBQUFBO0FBQUE7QUFBQTs7QUFBQSxvREFTeUJLLE9BQU8sQ0FBQ2dCLEtBQVIsY0FBdUJuRCxRQUFRLENBQUNLLE1BQU0sQ0FBQyxDQUFELENBQVAsQ0FBUixDQUFvQnNHLEdBQTNDLHlCQUFnRUQsR0FBaEUsT0FUekI7O0FBQUE7QUFXUHZFLGtCQUFBQSxPQUFPLENBQUNnQixLQUFSLENBQWN1RCxHQUFkOztBQVhPO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFNBQUY7O0FBQUE7QUFBQTtBQUFBOztBQUFBO0FBQUE7QUFKRztBQXBESjtBQTlDRyxDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHNoYXJwIGZyb20gJ3NoYXJwJ1xyXG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJ1xyXG5pbXBvcnQgZ2xvYiBmcm9tICdnbG9iJ1xyXG5pbXBvcnQgeyBEYXRhVHlwZXMgfSBmcm9tICdzZXF1ZWxpemUnXHJcbmltcG9ydCBycCBmcm9tICdyZXF1ZXN0LXByb21pc2UnXHJcblxyXG5jb25zdCBpbWdQYXRoID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJ2ltZycpXHJcbmNvbnN0IGJhc2ljSW5wdXRzID0gbmV3IE1hcCgpXHJcbmNvbnN0IGdhbWVJbnB1dHMgPSBuZXcgTWFwKClcclxuXHJcbmxldCBnbG9zc2FyeSA9IHt9XHJcbmxldCB0ZXJtcyA9IFtdXHJcblxyXG5nZXRHbG9zc2FyeSgpXHJcbnNldEludGVydmFsKGdldEdsb3NzYXJ5LCA1ICogNjAgKiAxMDAwKVxyXG5cclxuYXN5bmMgZnVuY3Rpb24gZ2V0R2xvc3NhcnkgKCkge1xyXG4gIGNvbnN0IHJlc3VsdCA9IEpTT04ucGFyc2UoYXdhaXQgcnAoJ2h0dHBzOi8vZ2xvc3NhcnkuaW5maWwubmV0L2pzb24vZ2xvc3NhcnkuanNvbicpKVxyXG4gIGNvbnN0IHRlbXBHID0ge31cclxuICBjb25zdCB0ZW1wVCA9IFtdXHJcblxyXG4gIHJlc3VsdC5mb3JFYWNoKGkgPT4ge1xyXG4gICAgY29uc3QgdGVybSA9IGkudGVybS50b0xvd2VyQ2FzZSgpXHJcbiAgICB0ZW1wR1t0ZXJtXSA9IGlcclxuICAgIHRlbXBULnB1c2godGVybSlcclxuICB9KVxyXG5cclxuICBnbG9zc2FyeSA9IHRlbXBHXHJcbiAgdGVybXMgPSB0ZW1wVFxyXG59XHJcblxyXG5nbG9iLnN5bmMocGF0aC5qb2luKGltZ1BhdGgsICdiYXNpYy8qKicpLCB7IG5vZGlyOiB0cnVlIH0pXHJcbiAgLmZvckVhY2gocCA9PiB7XHJcbiAgICBjb25zdCBpbnB1dCA9IHAuc3BsaXQoJy8nKS5wb3AoKS5yZXBsYWNlKCcucG5nJywgJycpXHJcbiAgICBiYXNpY0lucHV0cy5zZXQoaW5wdXQsIHApXHJcbiAgfSlcclxuXHJcbmJhc2ljSW5wdXRzLnNldCgnPj4nLCBwYXRoLmpvaW4oaW1nUGF0aCwgJ2Jhc2ljL2RvdWJsZWZvcndhcmQucG5nJykpXHJcblxyXG5nbG9iLnN5bmMocGF0aC5qb2luKGltZ1BhdGgsICdnYW1lcy8qKicpLCB7IG5vZGlyOiB0cnVlIH0pXHJcbiAgLmZvckVhY2gocCA9PiB7XHJcbiAgICBjb25zdCB7IGRpciwgbmFtZSB9ID0gcGF0aC5wYXJzZShwYXRoLnJlbGF0aXZlKHBhdGguam9pbihpbWdQYXRoLCAnZ2FtZXMnKSwgcCkpXHJcblxyXG4gICAgaWYgKCFnYW1lSW5wdXRzLmhhcyhkaXIpKSBnYW1lSW5wdXRzLnNldChkaXIsIG5ldyBNYXAoKSlcclxuICAgIGdhbWVJbnB1dHMuZ2V0KGRpcikuc2V0KG5hbWUsIHApXHJcbiAgfSlcclxuXHJcbmZ1bmN0aW9uIHNvbHZlSW5wdXQgKGlucHV0cywgaW5wdXQpIHtcclxuICBpZiAoaW5wdXRzLmhhcyhpbnB1dCkpIHJldHVybiBbaW5wdXRdXHJcblxyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcclxuICAgIGNvbnN0IHMxID0gaW5wdXQuc2xpY2UoMCwgMCAtIGkpXHJcbiAgICBpZiAoaW5wdXRzLmhhcyhzMSkpIHJldHVybiBbczEsIC4uLnNvbHZlSW5wdXQoaW5wdXRzLCBpbnB1dC5zbGljZSgwIC0gaSkpXVxyXG4gIH1cclxuXHJcbiAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCBcIiR7aW5wdXR9XCIgYXMgYSByZWNvZ25pemFibGUgaW5wdXRgKVxyXG59XHJcblxyXG5hc3luYyBmdW5jdGlvbiBzZW5kSW5wdXQgKGlucHV0cywgcmVzdWx0LCBtZXNzYWdlLCBjYXB0aW9uKSB7XHJcbiAgY29uc3QgY2FudmFzID0gYXdhaXQgc2hhcnAoeyBjcmVhdGU6IHsgd2lkdGg6IDE1MiAqIHJlc3VsdC5sZW5ndGgsIGhlaWdodDogMTUyLCBjaGFubmVsczogNCwgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyB9IH0pXHJcbiAgICAuY29tcG9zaXRlKHJlc3VsdC5tYXAoKGl0LCBpbmRleCkgPT5cclxuICAgICAgKHsgaW5wdXQ6IGlucHV0cy5nZXQoaXQpLCBsZWZ0OiBpbmRleCAqIDE1MiwgdG9wOiAwLCB3aWR0aDogMTUyLCBoZWlnaHQ6IDE1MiB9KVxyXG4gICAgKSlcclxuICAgIC5wbmcoKVxyXG4gICAgLnRvQnVmZmVyKClcclxuXHJcbiAgcmV0dXJuIG1lc3NhZ2UucmVwbHkoeyBjb250ZW50OiBjYXB0aW9uLCBmaWxlczogW2NhbnZhc10gfSlcclxufVxyXG5cclxuY29uc3QgYnVpbHRpbiA9IHtcclxuICAzNzoge1xyXG4gICAgZ2FtZTogJ3NmJyxcclxuICAgIGNhcHRpb246ICcqKipMRVRTIEdPIEpVU1RJTiEqKionLFxyXG4gICAgaW5wdXQ6ICc2IDYgNiA2IDYgNiA2ID4+IDYgNiA2IDYgNiA2IDYgPj4gOCA2IGouIGhrID4+IDIgbWsgPj4gNjIzIG1wID4+IDIzNiAyMzYgbGsnXHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCB7XHJcbiAgbmFtZTogJ2ZnLW5vdGF0aW9uJyxcclxuICBpbnRlbnRzOiBbJ0dVSUxEX01FU1NBR0VTJ10sXHJcbiAgcGFydGlhbHM6IFsnTUVTU0FHRSddLFxyXG5cclxuICBwcmVsb2FkOiBzZXF1ZWxpemUgPT4ge1xyXG4gICAgc2VxdWVsaXplLmRlZmluZSgnZmdpbnB1dCcsIHtcclxuICAgICAgZ3VpbGQ6IHtcclxuICAgICAgICB0eXBlOiBEYXRhVHlwZXMuU1RSSU5HLFxyXG4gICAgICAgIHByaW1hcnlLZXk6IHRydWVcclxuICAgICAgfSxcclxuICAgICAgbmFtZToge1xyXG4gICAgICAgIHR5cGU6IERhdGFUeXBlcy5TVFJJTkcsXHJcbiAgICAgICAgcHJpbWFyeUtleTogdHJ1ZVxyXG4gICAgICB9LFxyXG4gICAgICBjcmVhdGVkQnk6IERhdGFUeXBlcy5TVFJJTkcsXHJcbiAgICAgIGdhbWU6IERhdGFUeXBlcy5TVFJJTkcsXHJcbiAgICAgIGNhcHRpb246IERhdGFUeXBlcy5TVFJJTkcsXHJcbiAgICAgIGlucHV0OiBEYXRhVHlwZXMuU1RSSU5HXHJcbiAgICB9KVxyXG4gIH0sXHJcblxyXG4gIGV2ZW50czoge1xyXG4gICAgYXN5bmMgbWVzc2FnZUNyZWF0ZSAoZ2xvYmFsLCBtZXNzYWdlKSB7XHJcbiAgICAgIGNvbnN0IHsgY2xpZW50LCBjb25maWcsIHNlcXVlbGl6ZSB9ID0gZ2xvYmFsXHJcbiAgICAgIGlmIChtZXNzYWdlLmF1dGhvci5pZCA9PT0gY2xpZW50LnVzZXIuaWQgfHwgIW1lc3NhZ2UubWVtYmVyKSByZXR1cm5cclxuXHJcbiAgICAgIGNvbnN0IGd1aWxkSWQgPSBtZXNzYWdlLmd1aWxkSWRcclxuICAgICAgY29uc3QgeyBwcmVmaXggfSA9IGNvbmZpZ1tndWlsZElkXVxyXG5cclxuICAgICAgaWYgKG1lc3NhZ2UuY29udGVudC5zdGFydHNXaXRoKHByZWZpeCkpIHtcclxuICAgICAgICBjb25zdCBuYW1lID0gbWVzc2FnZS5jb250ZW50LnNwbGl0KCcgJykucG9wKCkucmVwbGFjZShwcmVmaXgsICcnKVxyXG4gICAgICAgIGNvbnN0IHJvdyA9IGJ1aWx0aW5bbmFtZV0gfHwgKFxyXG4gICAgICAgICAgYXdhaXQgc2VxdWVsaXplLm1vZGVscy5mZ2lucHV0LmZpbmRPbmUoe1xyXG4gICAgICAgICAgICB3aGVyZTogeyBndWlsZDogbWVzc2FnZS5ndWlsZC5pZCwgbmFtZSB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIClcclxuXHJcbiAgICAgICAgaWYgKHJvdykge1xyXG4gICAgICAgICAgY29uc3QgaW5wdXRzID0gbmV3IE1hcChbLi4uYmFzaWNJbnB1dHMsIC4uLmdhbWVJbnB1dHMuZ2V0KHJvdy5nYW1lKV0pXHJcbiAgICAgICAgICBzZW5kSW5wdXQoaW5wdXRzLCByb3cuaW5wdXQuc3BsaXQoJyAnKSwgbWVzc2FnZSwgcm93LmNhcHRpb24pXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSxcclxuXHJcbiAgY29tbWFuZHM6IHtcclxuICAgIGZnaToge1xyXG4gICAgICB1c2FnZTogJ2ZnaSBbZ2FtZV0gW2lucHV0c10nLFxyXG4gICAgICBkZXNjOiAnQ29udmVydHMgYSBsaXN0IG9mIGlucHV0cyBpbnRvIGFuIGltYWdlJyxcclxuICAgICAgZXhhbXBsZTogJ2ZnaSBzZiAyMzZQIDIxNEsnLFxyXG4gICAgICBleGVjdXRlOiBhc3luYyAoeyBwYXJhbSB9LCB7IG1lc3NhZ2UgfSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IFssIGdhbWUsIGkxXSA9IHBhcmFtXHJcbiAgICAgICAgaWYgKCFnYW1lIHx8ICFpMSkgcmV0dXJuIG1lc3NhZ2UucmVwbHkoJ01pc3NpbmcgYXJndW1lbnRzLiBFeGFtcGxlOiA+ZmdpIHNmIDIzNlAgMjE0SycpXHJcbiAgICAgICAgaWYgKCFnYW1lSW5wdXRzLmhhcyhnYW1lKSkgcmV0dXJuIG1lc3NhZ2UucmVwbHkoYFwiJHtnYW1lfVwiIGlzIG5vdCBhIHZhbGlkIGdhbWUuIEF2YWlsYWJsZSBnYW1lczogJHtBcnJheS5mcm9tKGdhbWVJbnB1dHMua2V5cygpKS5qb2luKCcgJyl9YClcclxuXHJcbiAgICAgICAgY29uc3QgaW5wdXRzID0gbmV3IE1hcChbLi4uYmFzaWNJbnB1dHMsIC4uLmdhbWVJbnB1dHMuZ2V0KGdhbWUpXSlcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBwYXJhbS5zbGljZSgyKS5tYXAoaSA9PiBzb2x2ZUlucHV0KGlucHV0cywgaS50b0xvd2VyQ2FzZSgpKSkuZmxhdCgpXHJcblxyXG4gICAgICAgIHNlbmRJbnB1dChpbnB1dHMsIHJlc3VsdCwgbWVzc2FnZSlcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIGZnc2F2ZToge1xyXG4gICAgICB1c2FnZTogJ2Znc2F2ZSBbZ2FtZV0gW25hbWVdIFtpbnB1dHNdJyxcclxuICAgICAgZGVzYzogJ1NhdmVzIGEgbGlzdCBvZiBpbnB1dHMgaW50byBhIGNvbW1hbmQnLFxyXG4gICAgICBleGFtcGxlOiAnZmdpIHNmIHRlc3ROYW1lIDIzNlAgMjE0SycsXHJcbiAgICAgIGV4ZWN1dGU6IGFzeW5jICh7IHBhcmFtLCBzZXF1ZWxpemUgfSwgeyBtZXNzYWdlIH0pID0+IHtcclxuICAgICAgICBjb25zdCBbLCBnYW1lLCBuYW1lLCBpMV0gPSBwYXJhbVxyXG4gICAgICAgIGlmICghZ2FtZSB8fCAhbmFtZSB8fCAhaTEpIHJldHVybiBtZXNzYWdlLnJlcGx5KCdNaXNzaW5nIGFyZ3VtZW50cy4gRXhhbXBsZTogPmZnaSBzZiB0ZXN0TmFtZSAyMzZQIDIxNEsnKVxyXG4gICAgICAgIGlmICghZ2FtZUlucHV0cy5oYXMoZ2FtZSkpIHJldHVybiBtZXNzYWdlLnJlcGx5KGBcIiR7Z2FtZX1cIiBpcyBub3QgYSB2YWxpZCBnYW1lLiBBdmFpbGFibGUgZ2FtZXM6ICR7QXJyYXkuZnJvbShnYW1lSW5wdXRzLmtleXMoKSkuam9pbignICcpfWApXHJcblxyXG4gICAgICAgIGNvbnN0IGlucHV0cyA9IG5ldyBNYXAoWy4uLmJhc2ljSW5wdXRzLCAuLi5nYW1lSW5wdXRzLmdldChnYW1lKV0pXHJcbiAgICAgICAgY29uc3QgaW5wdXQgPSBwYXJhbS5zbGljZSgzKS5tYXAoaSA9PiBzb2x2ZUlucHV0KGlucHV0cywgaS50b0xvd2VyQ2FzZSgpKSkuZmxhdCgpLmpvaW4oJyAnKVxyXG5cclxuICAgICAgICBhd2FpdCBzZXF1ZWxpemUubW9kZWxzLmZnaW5wdXQuY3JlYXRlKHsgZ3VpbGQ6IG1lc3NhZ2UuZ3VpbGQuaWQsIG5hbWUsIGNyZWF0ZWRCeTogbWVzc2FnZS5hdXRob3IuaWQsIGdhbWUsIGlucHV0IH0pXHJcblxyXG4gICAgICAgIG1lc3NhZ2UuY2hhbm5lbC5zZW5kKGBTYXZlZCBjb21tYW5kIFwiJHtpbnB1dH1cIiBhcyBcIiR7bmFtZX1cImApXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBmZ2NhcHRpb246IHtcclxuICAgICAgdXNhZ2U6ICdmZ2NhcHRpb24gW25hbWVdIFtjYXB0aW9uXScsXHJcbiAgICAgIGRlc2M6ICdBZGRzIGEgY2FwdGlvbiB0byBhIHNhdmVkIGlucHV0IGNvbW1hbmQnLFxyXG4gICAgICBleGFtcGxlOiAnZmdjYXB0aW9uIHRlc3ROYW1lIFRoaXMgaXMgYSBjYXB0aW9uJyxcclxuICAgICAgZXhlY3V0ZTogYXN5bmMgKHsgcGFyYW0sIHNlcXVlbGl6ZSB9LCB7IG1lc3NhZ2UgfSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IFssIG5hbWUsIGkxXSA9IHBhcmFtXHJcbiAgICAgICAgaWYgKCFuYW1lIHx8ICFpMSkgcmV0dXJuIG1lc3NhZ2UucmVwbHkoJ01pc3NpbmcgYXJndW1lbnRzLiBFeGFtcGxlOiA+ZmdpIHRlc3ROYW1lIFRoaXMgaXMgYSBjYXB0aW9uJylcclxuXHJcbiAgICAgICAgY29uc3Qgcm93ID0gYXdhaXQgc2VxdWVsaXplLm1vZGVscy5mZ2lucHV0LmZpbmRPbmUoe1xyXG4gICAgICAgICAgd2hlcmU6IHsgZ3VpbGQ6IG1lc3NhZ2UuZ3VpbGQuaWQsIG5hbWUgfVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIGlmICghcm93KSByZXR1cm4gbWVzc2FnZS5yZXBseShgXCIke25hbWV9XCIgaXMgbm90IGEgc2F2ZWQgaW5wdXQgbGlzdGApXHJcbiAgICAgICAgcm93LmNhcHRpb24gPSBwYXJhbS5zbGljZSgyKS5qb2luKCcgJylcclxuICAgICAgICBhd2FpdCByb3cuc2F2ZSgpXHJcblxyXG4gICAgICAgIG1lc3NhZ2UuY2hhbm5lbC5zZW5kKGBTYXZlZCBjYXB0aW9uIGZvciBpbnB1dCBsaXN0IFwiJHtuYW1lfVwiYClcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIGZnZ2xvc3Nhcnk6IHtcclxuICAgICAgdXNhZ2U6ICdmZ2dsb3NzYXJ5IFtzZWFyY2ggdGVybV0nLFxyXG4gICAgICBkZXNjOiAnU2VhcmNoZXMgZm9yIGEgdGVybSBvbiBJbmZpbFxcJ3MgR2xvc3NhcnknLFxyXG4gICAgICBleGFtcGxlOiAnZmdnbG9zc2FyeSBtZXhpY2FuIHVwcGVyY3V0JyxcclxuICAgICAgZXhlY3V0ZTogYXN5bmMgKHsgcGFyYW0sIHNlcXVlbGl6ZSB9LCB7IG1lc3NhZ2UgfSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHBhcmFtLnNsaWNlKDEpXHJcbiAgICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPT09IDApIHJldHVybiBtZXNzYWdlLnJlcGx5KCdNaXNzaW5nIHNlYXJjaCB0ZXJtLiBFeGFtcGxlOiA+ZmdnbG9zc2FyeSBtZXhpY2FuIHVwcGVyY3V0JylcclxuXHJcbiAgICAgICAgY29uc3Qgc2VhcmNoID0gcGFyYW1zLmpvaW4oJyAnKS50b0xvd2VyQ2FzZSgpXHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGVybXMuZmlsdGVyKGkgPT4gaS5pbmNsdWRlcyhzZWFyY2gpKVxyXG4gICAgICAgIGNvbnN0IHVybCA9IGBodHRwczovL2dsb3NzYXJ5LmluZmlsLm5ldC8/dD0ke3BhcmFtcy5qb2luKCclMjAnKS50b0xvd2VyQ2FzZSgpfWBcclxuXHJcbiAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPT09IDApIHJldHVybiBtZXNzYWdlLnJlcGx5KGBUZXJtIFwiJHtzZWFyY2h9XCIgbm90IGZvdW5kYClcclxuICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCA9PT0gMSkgcmV0dXJuIG1lc3NhZ2UucmVwbHkoYFxcYFxcYFxcYCR7Z2xvc3NhcnlbcmVzdWx0WzBdXS5kZWZ9XFxgXFxgXFxgU291cmNlOiA8JHt1cmx9PmApXHJcblxyXG4gICAgICAgIG1lc3NhZ2UucmVwbHkodXJsKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+
10
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
+
12
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
+
14
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
+
16
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
17
+
18
+ var _sharp = _interopRequireDefault(require("sharp"));
19
+
20
+ var _path = _interopRequireDefault(require("path"));
21
+
22
+ var _glob = _interopRequireDefault(require("glob"));
23
+
24
+ var _sequelize = require("sequelize");
25
+
26
+ var _bent = _interopRequireDefault(require("bent"));
27
+
28
+ var _info = require("./info.json");
29
+
30
+ var getJSON = (0, _bent["default"])('json');
31
+
32
+ var imgPath = _path["default"].join(__dirname, 'img');
33
+
34
+ var basicInputs = new Map();
35
+ var gameInputs = new Map();
36
+ var glossary = {};
37
+ var terms = [];
38
+ getGlossary();
39
+ setInterval(getGlossary, 5 * 60 * 1000);
40
+
41
+ function getGlossary() {
42
+ return _getGlossary.apply(this, arguments);
43
+ }
44
+
45
+ function _getGlossary() {
46
+ _getGlossary = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6() {
47
+ var result, tempG, tempT;
48
+ return _regenerator["default"].wrap(function _callee6$(_context6) {
49
+ while (1) {
50
+ switch (_context6.prev = _context6.next) {
51
+ case 0:
52
+ _context6.next = 2;
53
+ return getJSON('https://glossary.infil.net/json/glossary.json');
54
+
55
+ case 2:
56
+ result = _context6.sent;
57
+ tempG = {};
58
+ tempT = [];
59
+ result.forEach(function (i) {
60
+ var term = i.term.toLowerCase();
61
+ tempG[term] = i;
62
+ tempT.push(term);
63
+ });
64
+ glossary = tempG;
65
+ terms = tempT;
66
+
67
+ case 8:
68
+ case "end":
69
+ return _context6.stop();
70
+ }
71
+ }
72
+ }, _callee6);
73
+ }));
74
+ return _getGlossary.apply(this, arguments);
75
+ }
76
+
77
+ _glob["default"].sync(_path["default"].join(imgPath, 'basic/**'), {
78
+ nodir: true
79
+ }).forEach(function (p) {
80
+ var input = p.split('/').pop().replace('.png', '');
81
+ basicInputs.set(input, p);
82
+ var alias = _info.aliases.inputs.basic[input];
83
+
84
+ if (alias) {
85
+ alias.forEach(function (i) {
86
+ basicInputs.set(i, p);
87
+ if (_info.sizes[input]) _info.sizes[i] = _info.sizes[input];
88
+ });
89
+ }
90
+ });
91
+
92
+ _glob["default"].sync(_path["default"].join(imgPath, 'games/*')).forEach(function (p) {
93
+ var _path$parse = _path["default"].parse(_path["default"].relative(_path["default"].join(imgPath, 'games'), p)),
94
+ base = _path$parse.base;
95
+
96
+ gameInputs.set(base, new Map());
97
+
98
+ _glob["default"].sync(_path["default"].join(imgPath, 'games', base, '**'), {
99
+ nodir: true
100
+ }).forEach(function (input) {
101
+ var _path$parse2 = _path["default"].parse(input),
102
+ name = _path$parse2.name;
103
+
104
+ gameInputs.get(base).set(name, input);
105
+ });
106
+
107
+ var alias = _info.aliases.inputs.games[base];
108
+
109
+ if (alias) {
110
+ for (var _i = 0, _Object$entries = Object.entries(alias); _i < _Object$entries.length; _i++) {
111
+ var _Object$entries$_i = (0, _slicedToArray2["default"])(_Object$entries[_i], 2),
112
+ a = _Object$entries$_i[0],
113
+ s = _Object$entries$_i[1];
114
+
115
+ gameInputs.get(base).set(a, s);
116
+ }
117
+ }
118
+ });
119
+
120
+ function solveInput(inputs, input) {
121
+ if (inputs.has(input)) return isString(inputs.get(input)) ? [input] : inputs.get(input);
122
+
123
+ for (var i = 0; i < input.length; i++) {
124
+ var s1 = input.slice(0, 0 - i);
125
+
126
+ if (inputs.has(s1)) {
127
+ var result = inputs.get(s1);
128
+ var remaining = solveInput(inputs, input.slice(0 - i));
129
+ return isString(result) ? [s1].concat((0, _toConsumableArray2["default"])(remaining)) : [].concat((0, _toConsumableArray2["default"])(result), (0, _toConsumableArray2["default"])(remaining));
130
+ }
131
+ }
132
+
133
+ throw new Error("Cannot find \"".concat(input, "\" as a recognizable input"));
134
+ }
135
+
136
+ function sendInput(_x, _x2, _x3, _x4) {
137
+ return _sendInput.apply(this, arguments);
138
+ }
139
+
140
+ function _sendInput() {
141
+ _sendInput = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7(inputs, result, message, caption) {
142
+ var width, images, left, canvas;
143
+ return _regenerator["default"].wrap(function _callee7$(_context7) {
144
+ while (1) {
145
+ switch (_context7.prev = _context7.next) {
146
+ case 0:
147
+ width = result.map(function (it) {
148
+ return _info.sizes[it] || 152;
149
+ }).reduce(function (a, b) {
150
+ return a + b;
151
+ }, 0);
152
+ images = [];
153
+ left = 0;
154
+ result.forEach(function (it, index) {
155
+ var size = _info.sizes[it] || 152;
156
+ images.push({
157
+ input: inputs.get(it),
158
+ left: left,
159
+ top: Math.floor((152 - size) / 2)
160
+ });
161
+ left += size;
162
+ });
163
+ canvas = (0, _sharp["default"])({
164
+ create: {
165
+ width: width,
166
+ height: 152,
167
+ channels: 4,
168
+ background: 'transparent'
169
+ }
170
+ }).png().composite(images);
171
+ _context7.next = 7;
172
+ return canvas.toBuffer();
173
+
174
+ case 7:
175
+ canvas = _context7.sent;
176
+
177
+ if (!(result.length < 12)) {
178
+ _context7.next = 12;
179
+ break;
180
+ }
181
+
182
+ _context7.next = 11;
183
+ return (0, _sharp["default"])(canvas).resize({
184
+ height: 55
185
+ }).png().toBuffer();
186
+
187
+ case 11:
188
+ canvas = _context7.sent;
189
+
190
+ case 12:
191
+ return _context7.abrupt("return", message.reply({
192
+ content: caption,
193
+ files: [canvas]
194
+ }));
195
+
196
+ case 13:
197
+ case "end":
198
+ return _context7.stop();
199
+ }
200
+ }
201
+ }, _callee7);
202
+ }));
203
+ return _sendInput.apply(this, arguments);
204
+ }
205
+
206
+ function checkGame(game) {
207
+ return gameInputs.has(game) ? game : _info.aliases.games[game];
208
+ }
209
+
210
+ function isString(x) {
211
+ return Object.prototype.toString.call(x) === '[object String]';
212
+ }
213
+
214
+ var _default = {
215
+ name: 'fg-notation',
216
+ about: {
217
+ name: 'FG Notation',
218
+ value: '[Instructions and source code](https://lotus.chitowarlock.com/fgnotation)\n[Infil\'s Fighting Game Glossary](https://glossary.infil.net)\n[MagicianStuff\'s Fighthing Game notations emotes](https://twitter.com/MagicianStuff/status/1477931054484893697)'
219
+ },
220
+ intents: ['GUILD_MESSAGES'],
221
+ partials: ['MESSAGE'],
222
+ preload: function preload(sequelize) {
223
+ sequelize.define('fginput', {
224
+ guild: {
225
+ type: _sequelize.DataTypes.STRING,
226
+ primaryKey: true
227
+ },
228
+ name: {
229
+ type: _sequelize.DataTypes.STRING,
230
+ primaryKey: true
231
+ },
232
+ createdBy: _sequelize.DataTypes.STRING,
233
+ game: _sequelize.DataTypes.STRING,
234
+ caption: _sequelize.DataTypes.STRING,
235
+ input: _sequelize.DataTypes.STRING
236
+ });
237
+ },
238
+ events: {
239
+ messageCreate: function messageCreate(global, message) {
240
+ return (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
241
+ var client, config, sequelize, guildId, prefix, name, row, inputs;
242
+ return _regenerator["default"].wrap(function _callee$(_context) {
243
+ while (1) {
244
+ switch (_context.prev = _context.next) {
245
+ case 0:
246
+ client = global.client, config = global.config, sequelize = global.sequelize;
247
+
248
+ if (!(message.author.id === client.user.id || !message.member)) {
249
+ _context.next = 3;
250
+ break;
251
+ }
252
+
253
+ return _context.abrupt("return");
254
+
255
+ case 3:
256
+ guildId = message.guildId;
257
+ prefix = config[guildId].prefix;
258
+
259
+ if (!message.content.startsWith(prefix)) {
260
+ _context.next = 14;
261
+ break;
262
+ }
263
+
264
+ name = message.content.split(' ').pop().replace(prefix, '');
265
+ _context.t0 = _info.builtin[name];
266
+
267
+ if (_context.t0) {
268
+ _context.next = 12;
269
+ break;
270
+ }
271
+
272
+ _context.next = 11;
273
+ return sequelize.models.fginput.findOne({
274
+ where: {
275
+ guild: message.guild.id,
276
+ name: name
277
+ }
278
+ });
279
+
280
+ case 11:
281
+ _context.t0 = _context.sent;
282
+
283
+ case 12:
284
+ row = _context.t0;
285
+
286
+ if (row) {
287
+ inputs = new Map([].concat((0, _toConsumableArray2["default"])(basicInputs), (0, _toConsumableArray2["default"])(gameInputs.get(row.game))));
288
+ sendInput(inputs, row.input.split(' '), message, row.caption);
289
+ }
290
+
291
+ case 14:
292
+ case "end":
293
+ return _context.stop();
294
+ }
295
+ }
296
+ }, _callee);
297
+ }))();
298
+ }
299
+ },
300
+ commands: {
301
+ fgi: {
302
+ usage: 'fgi [game] [inputs]',
303
+ desc: 'Converts a list of inputs into an image',
304
+ example: 'fgi sf 236P 214K',
305
+ execute: function () {
306
+ var _execute = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(_ref, _ref2) {
307
+ var param, message, _param, gameInput, i1, game, inputs, result;
308
+
309
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
310
+ while (1) {
311
+ switch (_context2.prev = _context2.next) {
312
+ case 0:
313
+ param = _ref.param;
314
+ message = _ref2.message;
315
+ _param = (0, _slicedToArray2["default"])(param, 3), gameInput = _param[1], i1 = _param[2];
316
+
317
+ if (!(!gameInput || !i1)) {
318
+ _context2.next = 5;
319
+ break;
320
+ }
321
+
322
+ return _context2.abrupt("return", message.reply('Missing arguments. Example: >fgi sf 236P 214K'));
323
+
324
+ case 5:
325
+ game = checkGame(gameInput);
326
+
327
+ if (gameInputs.has(game)) {
328
+ _context2.next = 8;
329
+ break;
330
+ }
331
+
332
+ return _context2.abrupt("return", message.reply("\"".concat(game, "\" is not a valid game. Available games: ").concat(Array.from(gameInputs.keys()).join(' '))));
333
+
334
+ case 8:
335
+ try {
336
+ inputs = new Map([].concat((0, _toConsumableArray2["default"])(basicInputs), (0, _toConsumableArray2["default"])(gameInputs.get(game))));
337
+ result = param.slice(2).map(function (i) {
338
+ return solveInput(inputs, i.toLowerCase());
339
+ }).flat();
340
+ sendInput(inputs, result, message);
341
+ } catch (err) {
342
+ message.reply(err.message);
343
+ }
344
+
345
+ case 9:
346
+ case "end":
347
+ return _context2.stop();
348
+ }
349
+ }
350
+ }, _callee2);
351
+ }));
352
+
353
+ function execute(_x5, _x6) {
354
+ return _execute.apply(this, arguments);
355
+ }
356
+
357
+ return execute;
358
+ }()
359
+ },
360
+ fgsave: {
361
+ usage: 'fgsave [game] [name] [inputs]',
362
+ desc: 'Saves a list of inputs into a command',
363
+ example: 'fgi sf testName 236P 214K',
364
+ execute: function () {
365
+ var _execute2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(_ref3, _ref4) {
366
+ var param, sequelize, message, _param2, gameInput, name, i1, game, inputs, input;
367
+
368
+ return _regenerator["default"].wrap(function _callee3$(_context3) {
369
+ while (1) {
370
+ switch (_context3.prev = _context3.next) {
371
+ case 0:
372
+ param = _ref3.param, sequelize = _ref3.sequelize;
373
+ message = _ref4.message;
374
+ _param2 = (0, _slicedToArray2["default"])(param, 4), gameInput = _param2[1], name = _param2[2], i1 = _param2[3];
375
+
376
+ if (!(!gameInput || !name || !i1)) {
377
+ _context3.next = 5;
378
+ break;
379
+ }
380
+
381
+ return _context3.abrupt("return", message.reply('Missing arguments. Example: >fgi sf testName 236P 214K'));
382
+
383
+ case 5:
384
+ game = checkGame(gameInput);
385
+
386
+ if (gameInputs.has(game)) {
387
+ _context3.next = 8;
388
+ break;
389
+ }
390
+
391
+ return _context3.abrupt("return", message.reply("\"".concat(game, "\" is not a valid game. Available games: ").concat(Array.from(gameInputs.keys()).join(' '))));
392
+
393
+ case 8:
394
+ _context3.prev = 8;
395
+ inputs = new Map([].concat((0, _toConsumableArray2["default"])(basicInputs), (0, _toConsumableArray2["default"])(gameInputs.get(game))));
396
+ input = param.slice(3).map(function (i) {
397
+ return solveInput(inputs, i.toLowerCase());
398
+ }).flat().join(' ');
399
+ _context3.next = 13;
400
+ return sequelize.models.fginput.create({
401
+ guild: message.guild.id,
402
+ name: name,
403
+ createdBy: message.author.id,
404
+ game: game,
405
+ input: input
406
+ });
407
+
408
+ case 13:
409
+ message.channel.send("Saved command \"".concat(input, "\" as \"").concat(name, "\""));
410
+ _context3.next = 19;
411
+ break;
412
+
413
+ case 16:
414
+ _context3.prev = 16;
415
+ _context3.t0 = _context3["catch"](8);
416
+ message.reply(_context3.t0.message);
417
+
418
+ case 19:
419
+ case "end":
420
+ return _context3.stop();
421
+ }
422
+ }
423
+ }, _callee3, null, [[8, 16]]);
424
+ }));
425
+
426
+ function execute(_x7, _x8) {
427
+ return _execute2.apply(this, arguments);
428
+ }
429
+
430
+ return execute;
431
+ }()
432
+ },
433
+ fgcaption: {
434
+ usage: 'fgcaption [name] [caption]',
435
+ desc: 'Adds a caption to a saved input command',
436
+ example: 'fgcaption testName This is a caption',
437
+ execute: function () {
438
+ var _execute3 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(_ref5, _ref6) {
439
+ var param, sequelize, message, _param3, name, i1, row;
440
+
441
+ return _regenerator["default"].wrap(function _callee4$(_context4) {
442
+ while (1) {
443
+ switch (_context4.prev = _context4.next) {
444
+ case 0:
445
+ param = _ref5.param, sequelize = _ref5.sequelize;
446
+ message = _ref6.message;
447
+ _param3 = (0, _slicedToArray2["default"])(param, 3), name = _param3[1], i1 = _param3[2];
448
+
449
+ if (!(!name || !i1)) {
450
+ _context4.next = 5;
451
+ break;
452
+ }
453
+
454
+ return _context4.abrupt("return", message.reply('Missing arguments. Example: >fgi testName This is a caption'));
455
+
456
+ case 5:
457
+ _context4.next = 7;
458
+ return sequelize.models.fginput.findOne({
459
+ where: {
460
+ guild: message.guild.id,
461
+ name: name
462
+ }
463
+ });
464
+
465
+ case 7:
466
+ row = _context4.sent;
467
+
468
+ if (row) {
469
+ _context4.next = 10;
470
+ break;
471
+ }
472
+
473
+ return _context4.abrupt("return", message.reply("\"".concat(name, "\" is not a saved input list")));
474
+
475
+ case 10:
476
+ row.caption = param.slice(2).join(' ');
477
+ _context4.next = 13;
478
+ return row.save();
479
+
480
+ case 13:
481
+ message.channel.send("Saved caption for input list \"".concat(name, "\""));
482
+
483
+ case 14:
484
+ case "end":
485
+ return _context4.stop();
486
+ }
487
+ }
488
+ }, _callee4);
489
+ }));
490
+
491
+ function execute(_x9, _x10) {
492
+ return _execute3.apply(this, arguments);
493
+ }
494
+
495
+ return execute;
496
+ }()
497
+ },
498
+ fgglossary: {
499
+ usage: 'fgglossary [search term]',
500
+ desc: 'Searches for a term on Infil\'s Glossary',
501
+ example: 'fgglossary mexican uppercut',
502
+ execute: function () {
503
+ var _execute4 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(_ref7, _ref8) {
504
+ var param, sequelize, message, params, search, result, url;
505
+ return _regenerator["default"].wrap(function _callee5$(_context5) {
506
+ while (1) {
507
+ switch (_context5.prev = _context5.next) {
508
+ case 0:
509
+ param = _ref7.param, sequelize = _ref7.sequelize;
510
+ message = _ref8.message;
511
+ params = param.slice(1);
512
+
513
+ if (!(params.length === 0)) {
514
+ _context5.next = 5;
515
+ break;
516
+ }
517
+
518
+ return _context5.abrupt("return", message.reply('Missing search term. Example: >fgglossary mexican uppercut'));
519
+
520
+ case 5:
521
+ search = params.join(' ').toLowerCase();
522
+ result = terms.filter(function (i) {
523
+ return i.includes(search);
524
+ });
525
+ url = "https://glossary.infil.net/?t=".concat(params.join('%20').toLowerCase());
526
+
527
+ if (!(result.length === 0)) {
528
+ _context5.next = 10;
529
+ break;
530
+ }
531
+
532
+ return _context5.abrupt("return", message.reply("Term \"".concat(search, "\" not found")));
533
+
534
+ case 10:
535
+ if (!(result.length === 1)) {
536
+ _context5.next = 12;
537
+ break;
538
+ }
539
+
540
+ return _context5.abrupt("return", message.reply("```".concat(glossary[result[0]].def, "```Source: <").concat(url, ">")));
541
+
542
+ case 12:
543
+ message.reply("Multiple terms found: ".concat(url));
544
+
545
+ case 13:
546
+ case "end":
547
+ return _context5.stop();
548
+ }
549
+ }
550
+ }, _callee5);
551
+ }));
552
+
553
+ function execute(_x11, _x12) {
554
+ return _execute4.apply(this, arguments);
555
+ }
556
+
557
+ return execute;
558
+ }()
559
+ }
560
+ }
561
+ };
562
+ exports["default"] = _default;