zmp-cli 3.15.6 → 3.15.7

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 (166) hide show
  1. package/README.md +1 -0
  2. package/build/index.js +1 -184
  3. package/config/index.js +1 -44
  4. package/create/index.js +1 -230
  5. package/create/init-zmp-ui.js +1 -216
  6. package/create/templates/app-parameters.js +9 -25
  7. package/create/templates/common/webpack/build.js +2 -40
  8. package/create/templates/copy-assets.js +1 -158
  9. package/create/templates/core/copy-assets.js +14 -82
  10. package/create/templates/core/generate-home-page.js +16 -38
  11. package/create/templates/core/generate-root.js +28 -63
  12. package/create/templates/core/generate-routes.js +12 -38
  13. package/create/templates/core/generate-scripts.js +16 -65
  14. package/create/templates/create-folders.js +1 -30
  15. package/create/templates/generate-config-xml.js +2 -9
  16. package/create/templates/generate-index.js +10 -35
  17. package/create/templates/generate-manifest.js +1 -49
  18. package/create/templates/generate-recoil.js +4 -16
  19. package/create/templates/generate-routes.js +1 -16
  20. package/create/templates/generate-scripts.js +1 -16
  21. package/create/templates/generate-service-worker.js +4 -10
  22. package/create/templates/generate-store.js +4 -15
  23. package/create/templates/generate-styles.js +10 -64
  24. package/create/templates/generate-webpack-config.js +43 -125
  25. package/create/templates/generate-zmp-custom.js +14 -72
  26. package/create/templates/react/copy-assets.js +1 -85
  27. package/create/templates/react/generate-home-page.js +20 -50
  28. package/create/templates/react/generate-root.js +15 -44
  29. package/create/templates/react/generate-routes.js +1 -16
  30. package/create/templates/react/generate-scripts.js +12 -38
  31. package/create/templates/react/pages/404.js +2 -10
  32. package/create/templates/react/pages/about.js +2 -10
  33. package/create/templates/react/pages/catalog.js +3 -17
  34. package/create/templates/react/pages/dynamic-route.js +2 -10
  35. package/create/templates/react/pages/form.js +6 -26
  36. package/create/templates/react/pages/index copy.js +1 -17
  37. package/create/templates/react/pages/index.js +1 -17
  38. package/create/templates/react/pages/settings.js +3 -17
  39. package/create/templates/react/pages/user.js +8 -27
  40. package/create/templates/react-typescript/components/app-items.js +2 -9
  41. package/create/templates/react-typescript/components/index.js +1 -9
  42. package/create/templates/react-typescript/components/navbar-back.js +2 -9
  43. package/create/templates/react-typescript/components/user-card.js +2 -9
  44. package/create/templates/react-typescript/copy-assets.js +1 -94
  45. package/create/templates/react-typescript/generate-home-page.js +20 -52
  46. package/create/templates/react-typescript/generate-root.js +14 -45
  47. package/create/templates/react-typescript/generate-routes.js +1 -12
  48. package/create/templates/react-typescript/generate-scripts.js +12 -37
  49. package/create/templates/react-typescript/pages/404.js +2 -10
  50. package/create/templates/react-typescript/pages/about.js +2 -10
  51. package/create/templates/react-typescript/pages/catalog.js +3 -17
  52. package/create/templates/react-typescript/pages/dynamic-route.js +2 -10
  53. package/create/templates/react-typescript/pages/form.js +6 -26
  54. package/create/templates/react-typescript/pages/index.js +1 -17
  55. package/create/templates/react-typescript/pages/settings.js +3 -17
  56. package/create/templates/react-typescript/pages/user.js +8 -27
  57. package/create/templates/svelte/copy-assets.js +1 -47
  58. package/create/templates/svelte/generate-home-page.js +20 -56
  59. package/create/templates/svelte/generate-root.js +22 -80
  60. package/create/templates/svelte/generate-routes.js +7 -22
  61. package/create/templates/svelte/generate-scripts.js +7 -23
  62. package/create/templates/vue/copy-assets.js +1 -67
  63. package/create/templates/vue/generate-home-page.js +2 -8
  64. package/create/templates/vue/generate-root.js +3 -13
  65. package/create/templates/vue/generate-routes.js +1 -7
  66. package/create/templates/vue/generate-scripts.js +9 -26
  67. package/create/templates/vue/global-components.d.js +1 -0
  68. package/create/templates/zaui/copy-assets.js +1 -90
  69. package/create/templates/zaui/generate-home-page.js +27 -53
  70. package/create/templates/zaui/generate-root.js +14 -34
  71. package/create/templates/zaui/generate-routes.js +1 -10
  72. package/create/templates/zaui/generate-scripts.js +6 -20
  73. package/create/templates/zaui/generate-user-card.js +3 -18
  74. package/create/templates/zaui/pages/about.js +3 -20
  75. package/create/templates/zaui/pages/form.js +3 -20
  76. package/create/templates/zaui/pages/index.js +1 -9
  77. package/create/templates/zaui/pages/user.js +3 -20
  78. package/create/utils/colors.js +1 -94
  79. package/create/utils/generate-app-config.js +1 -34
  80. package/create/utils/generate-gitignore.js +1 -43
  81. package/create/utils/generate-npm-scripts.js +1 -26
  82. package/create/utils/generate-package-json.js +1 -132
  83. package/create/utils/generate-readme.js +1 -28
  84. package/create/utils/get-options.js +1 -204
  85. package/create/utils/indent.js +1 -31
  86. package/create/utils/npm-scripts.js +1 -62
  87. package/create/utils/string.js +1 -13
  88. package/create/utils/styles-extension.js +1 -9
  89. package/create/utils/template-if.js +1 -9
  90. package/deploy/index.js +1 -149
  91. package/deploy/utils/get-options.js +1 -69
  92. package/deploy/utils/request-upload.js +1 -34
  93. package/deploy/utils/upload-app.js +1 -82
  94. package/index.js +1 -319
  95. package/login/index.js +1 -169
  96. package/login/utils/get-options.js +1 -58
  97. package/login/utils/zalo-login.js +1 -32
  98. package/migrate/icons/update-icon-v3.js +1 -19
  99. package/migrate/index.js +1 -60
  100. package/migrate/utils/get-options.js +1 -46
  101. package/migrate/utils/migrate-react.js +1 -33
  102. package/package.json +11 -39
  103. package/start/generate-hr-config.js +1 -59
  104. package/start/index.js +1 -382
  105. package/sync/index-to-app-config.js +1 -146
  106. package/sync/index.js +1 -55
  107. package/utils/axios.js +1 -15
  108. package/utils/check-update.js +1 -53
  109. package/utils/constants.js +1 -20
  110. package/utils/env.js +1 -39
  111. package/utils/error.js +1 -16
  112. package/utils/find-files-by-ext.js +1 -27
  113. package/utils/find-free-port.js +1 -11
  114. package/utils/fs-extra.js +1 -90
  115. package/utils/generate-pages-map.js +1 -17
  116. package/utils/get-app-info.js +1 -22
  117. package/utils/get-current-project.js +1 -25
  118. package/utils/get-ip.js +1 -19
  119. package/utils/log.js +1 -19
  120. package/utils/node-blob.js +1 -106
  121. package/utils/resumable.d.js +1 -0
  122. package/utils/resumable.js +1 -1204
  123. package/utils/spinner.js +1 -25
  124. package/utils/tunnel.js +1 -36
  125. package/.editorconfig +0 -15
  126. package/.eslintignore +0 -8
  127. package/.eslintrc.js +0 -10
  128. package/.vscode/launch.json +0 -23
  129. package/LICENSE +0 -21
  130. package/README.git.md +0 -37
  131. package/assets/index.js +0 -147
  132. package/build/dist/index.dev.js +0 -217
  133. package/config/dist/index.dev.js +0 -48
  134. package/create/templates/dist/generate-styles.dev.js +0 -46
  135. package/create/templates/react/dist/generate-scripts.dev.js +0 -23
  136. package/create/templates/react-typescript/dist/generate-scripts.dev.js +0 -23
  137. package/create/utils/dist/get-options.dev.js +0 -277
  138. package/deploy/dist/index.dev.js +0 -227
  139. package/deploy/utils/dist/request-upload.dev.js +0 -62
  140. package/deploy/utils/dist/upload-app.dev.js +0 -113
  141. package/dist/bundle.js +0 -1
  142. package/dist/index.dev.js +0 -352
  143. package/jsconfig.json +0 -8
  144. package/login/dist/index.dev.js +0 -223
  145. package/login/utils/dist/zalo-login.dev.js +0 -41
  146. package/screenshots/wellcome.jpg +0 -0
  147. package/show-qr-app/assets/css/style.css +0 -87
  148. package/show-qr-app/assets/js/qrcode.min.js +0 -1
  149. package/show-qr-app/index.html +0 -57
  150. package/show-qr-app/package.json +0 -14
  151. package/start/dist/index.dev.js +0 -312
  152. package/ui/server.js +0 -194
  153. package/ui/www/css/app.css +0 -1
  154. package/ui/www/css/app.css.map +0 -1
  155. package/ui/www/fonts/ZMPIcons-Regular.eot +0 -0
  156. package/ui/www/fonts/ZMPIcons-Regular.ttf +0 -0
  157. package/ui/www/fonts/ZMPIcons-Regular.woff +0 -0
  158. package/ui/www/fonts/ZMPIcons-Regular.woff2 +0 -0
  159. package/ui/www/images/logo.png +0 -0
  160. package/ui/www/index.html +0 -1
  161. package/ui/www/js/app.js +0 -3
  162. package/ui/www/js/app.js.LICENSE.txt +0 -20
  163. package/ui/www/js/app.js.map +0 -1
  164. package/ui/www/static/icons/apple-touch-icon.png +0 -0
  165. package/ui/www/static/icons/favicon.png +0 -0
  166. package/utils/dist/get-app-info.dev.js +0 -54
@@ -1,1204 +1 @@
1
- const FileAPI = require('file-api');
2
- const Blob = require('./node-blob');
3
- const XMLHttpRequest = require('xhr2');
4
- const { agent } = require('./axios');
5
-
6
- XMLHttpRequest.nodejsSet({
7
- httpAgent: agent,
8
- httpsAgent: agent,
9
- });
10
-
11
- const File = FileAPI.File;
12
- const FileList = FileAPI.FileList;
13
- const FileReader = FileAPI.FileReader;
14
-
15
- const Resumable = function (opts) {
16
- if (!(this instanceof Resumable)) {
17
- return new Resumable(opts);
18
- }
19
- this.version = 1.0;
20
- // SUPPORTED BY BROWSER?
21
- // Check if these features are support by the browser:
22
- // - File object type
23
- // - Blob object type
24
- // - FileList object type
25
- // - slicing files
26
- this.support =
27
- typeof File !== 'undefined' &&
28
- typeof Blob !== 'undefined' &&
29
- typeof FileList !== 'undefined' &&
30
- (!!Blob.prototype.webkitSlice ||
31
- !!Blob.prototype.mozSlice ||
32
- !!Blob.prototype.slice ||
33
- false);
34
- if (!this.support) return false;
35
-
36
- // PROPERTIES
37
- var $ = this;
38
- $.files = [];
39
- $.defaults = {
40
- chunkSize: 1 * 1024 * 1024,
41
- forceChunkSize: false,
42
- simultaneousUploads: 3,
43
- fileParameterName: 'file',
44
- chunkNumberParameterName: 'resumableChunkNumber',
45
- chunkSizeParameterName: 'resumableChunkSize',
46
- currentChunkSizeParameterName: 'resumableCurrentChunkSize',
47
- totalSizeParameterName: 'resumableTotalSize',
48
- typeParameterName: 'resumableType',
49
- identifierParameterName: 'resumableIdentifier',
50
- fileNameParameterName: 'resumableFilename',
51
- relativePathParameterName: 'resumableRelativePath',
52
- totalChunksParameterName: 'resumableTotalChunks',
53
- throttleProgressCallbacks: 0.5,
54
- query: {},
55
- headers: {},
56
- preprocess: null,
57
- method: 'multipart',
58
- uploadMethod: 'POST',
59
- testMethod: 'GET',
60
- prioritizeFirstAndLastChunk: false,
61
- target: '/',
62
- testTarget: null,
63
- parameterNamespace: '',
64
- testChunks: true,
65
- generateUniqueIdentifier: null,
66
- getTarget: null,
67
- maxChunkRetries: 100,
68
- chunkRetryInterval: undefined,
69
- permanentErrors: [400, 404, 415, 500, 501],
70
- maxFiles: undefined,
71
- withCredentials: false,
72
- xhrTimeout: 0,
73
- clearInput: true,
74
- chunkFormat: 'blob',
75
- setChunkTypeFromFile: false,
76
- maxFilesErrorCallback: function (files, errorCount) {
77
- var maxFiles = $.getOpt('maxFiles');
78
- alert(
79
- 'Please upload no more than ' +
80
- maxFiles +
81
- ' file' +
82
- (maxFiles === 1 ? '' : 's') +
83
- ' at a time.'
84
- );
85
- },
86
- minFileSize: 1,
87
- minFileSizeErrorCallback: function (file, errorCount) {
88
- alert(
89
- file.fileName ||
90
- file.name +
91
- ' is too small, please upload files larger than ' +
92
- $h.formatSize($.getOpt('minFileSize')) +
93
- '.'
94
- );
95
- },
96
- maxFileSize: undefined,
97
- maxFileSizeErrorCallback: function (file, errorCount) {
98
- alert(
99
- file.fileName ||
100
- file.name +
101
- ' is too large, please upload files less than ' +
102
- $h.formatSize($.getOpt('maxFileSize')) +
103
- '.'
104
- );
105
- },
106
- fileType: [],
107
- fileTypeErrorCallback: function (file, errorCount) {
108
- alert(
109
- file.fileName ||
110
- file.name +
111
- ' has type not allowed, please upload files of type ' +
112
- $.getOpt('fileType') +
113
- '.'
114
- );
115
- },
116
- };
117
- $.opts = opts || {};
118
- $.getOpt = function (o) {
119
- var $opt = this;
120
- // Get multiple option if passed an array
121
- if (o instanceof Array) {
122
- var options = {};
123
- $h.each(o, function (option) {
124
- options[option] = $opt.getOpt(option);
125
- });
126
- return options;
127
- }
128
- // Otherwise, just return a simple option
129
- if ($opt instanceof ResumableChunk) {
130
- if (typeof $opt.opts[o] !== 'undefined') {
131
- return $opt.opts[o];
132
- } else {
133
- $opt = $opt.fileObj;
134
- }
135
- }
136
- if ($opt instanceof ResumableFile) {
137
- if (typeof $opt.opts[o] !== 'undefined') {
138
- return $opt.opts[o];
139
- } else {
140
- $opt = $opt.resumableObj;
141
- }
142
- }
143
- if ($opt instanceof Resumable) {
144
- if (typeof $opt.opts[o] !== 'undefined') {
145
- return $opt.opts[o];
146
- } else {
147
- return $opt.defaults[o];
148
- }
149
- }
150
- };
151
-
152
- // EVENTS
153
- // catchAll(event, ...)
154
- // fileSuccess(file), fileProgress(file), fileAdded(file, event), filesAdded(files, filesSkipped), fileRetry(file),
155
- // fileError(file, message), complete(), progress(), error(message, file), pause()
156
- $.events = [];
157
- $.on = function (event, callback) {
158
- $.events.push(event.toLowerCase(), callback);
159
- };
160
- $.fire = function () {
161
- // `arguments` is an object, not array, in FF, so:
162
- var args = [];
163
- for (var i = 0; i < arguments.length; i++) args.push(arguments[i]);
164
- // Find event listeners, and support pseudo-event `catchAll`
165
- var event = args[0].toLowerCase();
166
- for (var i = 0; i <= $.events.length; i += 2) {
167
- if ($.events[i] == event) $.events[i + 1].apply($, args.slice(1));
168
- if ($.events[i] == 'catchall') $.events[i + 1].apply(null, args);
169
- }
170
- if (event == 'fileerror') $.fire('error', args[2], args[1]);
171
- if (event == 'fileprogress') $.fire('progress');
172
- };
173
-
174
- // INTERNAL HELPER METHODS (handy, but ultimately not part of uploading)
175
- var $h = {
176
- stopEvent: function (e) {
177
- e.stopPropagation();
178
- e.preventDefault();
179
- },
180
- each: function (o, callback) {
181
- if (typeof o.length !== 'undefined') {
182
- for (var i = 0; i < o.length; i++) {
183
- // Array or FileList
184
- if (callback(o[i]) === false) return;
185
- }
186
- } else {
187
- for (i in o) {
188
- // Object
189
- if (callback(i, o[i]) === false) return;
190
- }
191
- }
192
- },
193
- generateUniqueIdentifier: function (file, event) {
194
- var custom = $.getOpt('generateUniqueIdentifier');
195
- if (typeof custom === 'function') {
196
- return custom(file, event);
197
- }
198
- var relativePath = file.webkitRelativePath || file.fileName || file.name; // Some confusion in different versions of Firefox
199
- var size = file.size;
200
- return size + '-' + relativePath.replace(/[^0-9a-zA-Z_-]/gim, '');
201
- },
202
- contains: function (array, test) {
203
- var result = false;
204
-
205
- $h.each(array, function (value) {
206
- if (value == test) {
207
- result = true;
208
- return false;
209
- }
210
- return true;
211
- });
212
-
213
- return result;
214
- },
215
- formatSize: function (size) {
216
- if (size < 1024) {
217
- return size + ' bytes';
218
- } else if (size < 1024 * 1024) {
219
- return (size / 1024.0).toFixed(0) + ' KB';
220
- } else if (size < 1024 * 1024 * 1024) {
221
- return (size / 1024.0 / 1024.0).toFixed(1) + ' MB';
222
- } else {
223
- return (size / 1024.0 / 1024.0 / 1024.0).toFixed(1) + ' GB';
224
- }
225
- },
226
- getTarget: function (request, params) {
227
- var target = $.getOpt('target');
228
-
229
- if (request === 'test' && $.getOpt('testTarget')) {
230
- target =
231
- $.getOpt('testTarget') === '/'
232
- ? $.getOpt('target')
233
- : $.getOpt('testTarget');
234
- }
235
-
236
- if (typeof target === 'function') {
237
- return target(params);
238
- }
239
-
240
- var separator = target.indexOf('?') < 0 ? '?' : '&';
241
- var joinedParams = params.join('&');
242
-
243
- return target + separator + joinedParams;
244
- },
245
- };
246
-
247
- var onDrop = function (event) {
248
- $h.stopEvent(event);
249
-
250
- //handle dropped things as items if we can (this lets us deal with folders nicer in some cases)
251
- if (event.dataTransfer && event.dataTransfer.items) {
252
- loadFiles(event.dataTransfer.items, event);
253
- }
254
- //else handle them as files
255
- else if (event.dataTransfer && event.dataTransfer.files) {
256
- loadFiles(event.dataTransfer.files, event);
257
- }
258
- };
259
- var preventDefault = function (e) {
260
- e.preventDefault();
261
- };
262
-
263
- /**
264
- * processes a single upload item (file or directory)
265
- * @param {Object} item item to upload, may be file or directory entry
266
- * @param {string} path current file path
267
- * @param {File[]} items list of files to append new items to
268
- * @param {Function} cb callback invoked when item is processed
269
- */
270
- function processItem(item, path, items, cb) {
271
- var entry;
272
- if (item.isFile) {
273
- // file provided
274
- return item.file(function (file) {
275
- file.relativePath = path + file.name;
276
- items.push(file);
277
- cb();
278
- });
279
- } else if (item.isDirectory) {
280
- // item is already a directory entry, just assign
281
- entry = item;
282
- } else if (item instanceof File) {
283
- items.push(item);
284
- }
285
- if ('function' === typeof item.webkitGetAsEntry) {
286
- // get entry from file object
287
- entry = item.webkitGetAsEntry();
288
- }
289
- if (entry && entry.isDirectory) {
290
- // directory provided, process it
291
- return processDirectory(entry, path + entry.name + '/', items, cb);
292
- }
293
- if ('function' === typeof item.getAsFile) {
294
- // item represents a File object, convert it
295
- item = item.getAsFile();
296
- if (item instanceof File) {
297
- item.relativePath = path + item.name;
298
- items.push(item);
299
- }
300
- }
301
- cb(); // indicate processing is done
302
- }
303
-
304
- /**
305
- * cps-style list iteration.
306
- * invokes all functions in list and waits for their callback to be
307
- * triggered.
308
- * @param {Function[]} items list of functions expecting callback parameter
309
- * @param {Function} cb callback to trigger after the last callback has been invoked
310
- */
311
- function processCallbacks(items, cb) {
312
- if (!items || items.length === 0) {
313
- // empty or no list, invoke callback
314
- return cb();
315
- }
316
- // invoke current function, pass the next part as continuation
317
- items[0](function () {
318
- processCallbacks(items.slice(1), cb);
319
- });
320
- }
321
-
322
- /**
323
- * recursively traverse directory and collect files to upload
324
- * @param {Object} directory directory to process
325
- * @param {string} path current path
326
- * @param {File[]} items target list of items
327
- * @param {Function} cb callback invoked after traversing directory
328
- */
329
- function processDirectory(directory, path, items, cb) {
330
- var dirReader = directory.createReader();
331
- dirReader.readEntries(function (entries) {
332
- if (!entries.length) {
333
- // empty directory, skip
334
- return cb();
335
- }
336
- // process all conversion callbacks, finally invoke own one
337
- processCallbacks(
338
- entries.map(function (entry) {
339
- // bind all properties except for callback
340
- return processItem.bind(null, entry, path, items);
341
- }),
342
- cb
343
- );
344
- });
345
- }
346
-
347
- /**
348
- * process items to extract files to be uploaded
349
- * @param {File[]} items items to process
350
- * @param {Event} event event that led to upload
351
- */
352
- function loadFiles(items, event) {
353
- if (!items.length) {
354
- return; // nothing to do
355
- }
356
- $.fire('beforeAdd');
357
- var files = [];
358
- processCallbacks(
359
- Array.prototype.map.call(items, function (item) {
360
- // bind all properties except for callback
361
- return processItem.bind(null, item, '', files);
362
- }),
363
- function () {
364
- if (files.length) {
365
- // at least one file found
366
- appendFilesFromFileList(files, event);
367
- }
368
- }
369
- );
370
- }
371
-
372
- var appendFilesFromFileList = function (fileList, event) {
373
- // check for uploading too many files
374
- var errorCount = 0;
375
- var o = $.getOpt([
376
- 'maxFiles',
377
- 'minFileSize',
378
- 'maxFileSize',
379
- 'maxFilesErrorCallback',
380
- 'minFileSizeErrorCallback',
381
- 'maxFileSizeErrorCallback',
382
- 'fileType',
383
- 'fileTypeErrorCallback',
384
- ]);
385
- if (
386
- typeof o.maxFiles !== 'undefined' &&
387
- o.maxFiles < fileList.length + $.files.length
388
- ) {
389
- // if single-file upload, file is already added, and trying to add 1 new file, simply replace the already-added file
390
- if (o.maxFiles === 1 && $.files.length === 1 && fileList.length === 1) {
391
- $.removeFile($.files[0]);
392
- } else {
393
- o.maxFilesErrorCallback(fileList, errorCount++);
394
- return false;
395
- }
396
- }
397
- var files = [],
398
- filesSkipped = [],
399
- remaining = fileList.length;
400
- var decreaseReamining = function () {
401
- if (!--remaining) {
402
- // all files processed, trigger event
403
- if (!files.length && !filesSkipped.length) {
404
- // no succeeded files, just skip
405
- return;
406
- }
407
- setTimeout(function () {
408
- $.fire('filesAdded', files, filesSkipped);
409
- }, 0);
410
- }
411
- };
412
- $h.each(fileList, function (file) {
413
- var fileName = file.name;
414
- if (o.fileType.length > 0) {
415
- var fileTypeFound = false;
416
- for (var index in o.fileType) {
417
- var extension = '.' + o.fileType[index];
418
- if (
419
- fileName
420
- .toLowerCase()
421
- .indexOf(
422
- extension.toLowerCase(),
423
- fileName.length - extension.length
424
- ) !== -1
425
- ) {
426
- fileTypeFound = true;
427
- break;
428
- }
429
- }
430
- if (!fileTypeFound) {
431
- o.fileTypeErrorCallback(file, errorCount++);
432
- return false;
433
- }
434
- }
435
-
436
- if (typeof o.minFileSize !== 'undefined' && file.size < o.minFileSize) {
437
- o.minFileSizeErrorCallback(file, errorCount++);
438
- return false;
439
- }
440
- if (typeof o.maxFileSize !== 'undefined' && file.size > o.maxFileSize) {
441
- o.maxFileSizeErrorCallback(file, errorCount++);
442
- return false;
443
- }
444
-
445
- function addFile(uniqueIdentifier) {
446
- if (!$.getFromUniqueIdentifier(uniqueIdentifier)) {
447
- (function () {
448
- file.uniqueIdentifier = uniqueIdentifier;
449
- var f = new ResumableFile($, file, uniqueIdentifier);
450
- $.files.push(f);
451
- files.push(f);
452
- f.container = typeof event != 'undefined' ? event.srcElement : null;
453
- setTimeout(function () {
454
- $.fire('fileAdded', f, event);
455
- }, 0);
456
- })();
457
- } else {
458
- filesSkipped.push(file);
459
- }
460
- decreaseReamining();
461
- }
462
- // directories have size == 0
463
- var uniqueIdentifier = $h.generateUniqueIdentifier(file, event);
464
- if (uniqueIdentifier && typeof uniqueIdentifier.then === 'function') {
465
- // Promise or Promise-like object provided as unique identifier
466
- uniqueIdentifier.then(
467
- function (uniqueIdentifier) {
468
- // unique identifier generation succeeded
469
- addFile(uniqueIdentifier);
470
- },
471
- function () {
472
- // unique identifier generation failed
473
- // skip further processing, only decrease file count
474
- decreaseReamining();
475
- }
476
- );
477
- } else {
478
- // non-Promise provided as unique identifier, process synchronously
479
- addFile(uniqueIdentifier);
480
- }
481
- });
482
- };
483
-
484
- // INTERNAL OBJECT TYPES
485
- function ResumableFile(resumableObj, file, uniqueIdentifier) {
486
- var $ = this;
487
- $.opts = {};
488
- $.getOpt = resumableObj.getOpt;
489
- $._prevProgress = 0;
490
- $.resumableObj = resumableObj;
491
- $.file = file;
492
- $.fileName = file.fileName || file.name; // Some confusion in different versions of Firefox
493
- $.size = file.size;
494
- $.relativePath = file.relativePath || file.webkitRelativePath || $.fileName;
495
- $.uniqueIdentifier = uniqueIdentifier;
496
- $._pause = false;
497
- $.container = '';
498
- var _error = uniqueIdentifier !== undefined;
499
-
500
- // Callback when something happens within the chunk
501
- var chunkEvent = function (event, message) {
502
- // event can be 'progress', 'success', 'error' or 'retry'
503
- switch (event) {
504
- case 'progress':
505
- $.resumableObj.fire('fileProgress', $, message);
506
- break;
507
- case 'error':
508
- $.abort();
509
- _error = true;
510
- $.chunks = [];
511
- $.resumableObj.fire('fileError', $, message);
512
- break;
513
- case 'success':
514
- if (_error) return;
515
- $.resumableObj.fire('fileProgress', $); // it's at least progress
516
- if ($.isComplete()) {
517
- $.resumableObj.fire('fileSuccess', $, message);
518
- }
519
- break;
520
- case 'retry':
521
- $.resumableObj.fire('fileRetry', $);
522
- break;
523
- }
524
- };
525
-
526
- // Main code to set up a file object with chunks,
527
- // packaged to be able to handle retries if needed.
528
- $.chunks = [];
529
- $.abort = function () {
530
- // Stop current uploads
531
- var abortCount = 0;
532
- $h.each($.chunks, function (c) {
533
- if (c.status() == 'uploading') {
534
- c.abort();
535
- abortCount++;
536
- }
537
- });
538
- if (abortCount > 0) $.resumableObj.fire('fileProgress', $);
539
- };
540
- $.cancel = function () {
541
- // Reset this file to be void
542
- var _chunks = $.chunks;
543
- $.chunks = [];
544
- // Stop current uploads
545
- $h.each(_chunks, function (c) {
546
- if (c.status() == 'uploading') {
547
- c.abort();
548
- $.resumableObj.uploadNextChunk();
549
- }
550
- });
551
- $.resumableObj.removeFile($);
552
- $.resumableObj.fire('fileProgress', $);
553
- };
554
- $.retry = function () {
555
- $.bootstrap();
556
- var firedRetry = false;
557
- $.resumableObj.on('chunkingComplete', function () {
558
- if (!firedRetry) $.resumableObj.upload();
559
- firedRetry = true;
560
- });
561
- };
562
- $.bootstrap = function () {
563
- $.abort();
564
- _error = false;
565
- // Rebuild stack of chunks from file
566
- $.chunks = [];
567
- $._prevProgress = 0;
568
- var round = $.getOpt('forceChunkSize') ? Math.ceil : Math.floor;
569
- var maxOffset = Math.max(round($.file.size / $.getOpt('chunkSize')), 1);
570
- for (var offset = 0; offset < maxOffset; offset++) {
571
- (function (offset) {
572
- setTimeout(function () {
573
- $.chunks.push(
574
- new ResumableChunk($.resumableObj, $, offset, chunkEvent)
575
- );
576
- $.resumableObj.fire('chunkingProgress', $, offset / maxOffset);
577
- }, 0);
578
- })(offset);
579
- }
580
- setTimeout(function () {
581
- $.resumableObj.fire('chunkingComplete', $);
582
- }, 0);
583
- };
584
- $.progress = function () {
585
- if (_error) return 1;
586
- // Sum up progress across everything
587
- var ret = 0;
588
- var error = false;
589
- $h.each($.chunks, function (c) {
590
- if (c.status() == 'error') error = true;
591
- ret += c.progress(true); // get chunk progress relative to entire file
592
- });
593
- ret = error ? 1 : ret > 0.99999 ? 1 : ret;
594
- ret = Math.max($._prevProgress, ret); // We don't want to lose percentages when an upload is paused
595
- $._prevProgress = ret;
596
- return ret;
597
- };
598
- $.isUploading = function () {
599
- var uploading = false;
600
- $h.each($.chunks, function (chunk) {
601
- if (chunk.status() == 'uploading') {
602
- uploading = true;
603
- return false;
604
- }
605
- });
606
- return uploading;
607
- };
608
- $.isComplete = function () {
609
- var outstanding = false;
610
- $h.each($.chunks, function (chunk) {
611
- var status = chunk.status();
612
- if (
613
- status == 'pending' ||
614
- status == 'uploading' ||
615
- chunk.preprocessState === 1
616
- ) {
617
- outstanding = true;
618
- return false;
619
- }
620
- });
621
- return !outstanding;
622
- };
623
- $.pause = function (pause) {
624
- if (typeof pause === 'undefined') {
625
- $._pause = $._pause ? false : true;
626
- } else {
627
- $._pause = pause;
628
- }
629
- };
630
- $.isPaused = function () {
631
- return $._pause;
632
- };
633
-
634
- // Bootstrap and return
635
- $.resumableObj.fire('chunkingStart', $);
636
- $.bootstrap();
637
- return this;
638
- }
639
-
640
- function ResumableChunk(resumableObj, fileObj, offset, callback) {
641
- var $ = this;
642
- $.opts = {};
643
- $.getOpt = resumableObj.getOpt;
644
- $.resumableObj = resumableObj;
645
- $.fileObj = fileObj;
646
- $.fileObjSize = fileObj.size;
647
- $.fileObjType = fileObj.file.type;
648
- $.offset = offset;
649
- $.callback = callback;
650
- $.lastProgressCallback = new Date();
651
- $.tested = false;
652
- $.retries = 0;
653
- $.pendingRetry = false;
654
- $.preprocessState = 0; // 0 = unprocessed, 1 = processing, 2 = finished
655
-
656
- // Computed properties
657
- var chunkSize = $.getOpt('chunkSize');
658
- $.loaded = 0;
659
- $.startByte = $.offset * chunkSize;
660
- $.endByte = Math.min($.fileObjSize, ($.offset + 1) * chunkSize);
661
- if ($.fileObjSize - $.endByte < chunkSize && !$.getOpt('forceChunkSize')) {
662
- // The last chunk will be bigger than the chunk size, but less than 2*chunkSize
663
- $.endByte = $.fileObjSize;
664
- }
665
- $.xhr = null;
666
-
667
- // test() makes a GET request without any data to see if the chunk has already been uploaded in a previous session
668
- $.test = function () {
669
- // Set up request and listen for event
670
- $.xhr = new XMLHttpRequest();
671
-
672
- var testHandler = function (e) {
673
- $.tested = true;
674
- var status = $.status();
675
- if (status == 'success') {
676
- $.callback(status, $.message());
677
- $.resumableObj.uploadNextChunk();
678
- } else {
679
- $.send();
680
- }
681
- };
682
- $.xhr.addEventListener('load', testHandler, false);
683
- $.xhr.addEventListener('error', testHandler, false);
684
- $.xhr.addEventListener('timeout', testHandler, false);
685
-
686
- // Add data from the query options
687
- var params = [];
688
- var parameterNamespace = $.getOpt('parameterNamespace');
689
- var customQuery = $.getOpt('query');
690
- if (typeof customQuery == 'function')
691
- customQuery = customQuery($.fileObj, $);
692
- $h.each(customQuery, function (k, v) {
693
- params.push(
694
- [
695
- encodeURIComponent(parameterNamespace + k),
696
- encodeURIComponent(v),
697
- ].join('=')
698
- );
699
- });
700
- // Add extra data to identify chunk
701
- params = params.concat(
702
- [
703
- // define key/value pairs for additional parameters
704
- ['chunkNumberParameterName', $.offset + 1],
705
- ['chunkSizeParameterName', $.getOpt('chunkSize')],
706
- ['currentChunkSizeParameterName', $.endByte - $.startByte],
707
- ['totalSizeParameterName', $.fileObjSize],
708
- ['typeParameterName', $.fileObjType],
709
- ['identifierParameterName', $.fileObj.uniqueIdentifier],
710
- ['fileNameParameterName', $.fileObj.fileName],
711
- ['relativePathParameterName', $.fileObj.relativePath],
712
- ['totalChunksParameterName', $.fileObj.chunks.length],
713
- ]
714
- .filter(function (pair) {
715
- // include items that resolve to truthy values
716
- // i.e. exclude false, null, undefined and empty strings
717
- return $.getOpt(pair[0]);
718
- })
719
- .map(function (pair) {
720
- // map each key/value pair to its final form
721
- return [
722
- parameterNamespace + $.getOpt(pair[0]),
723
- encodeURIComponent(pair[1]),
724
- ].join('=');
725
- })
726
- );
727
- // Append the relevant chunk and send it
728
- $.xhr.open($.getOpt('testMethod'), $h.getTarget('test', params));
729
- $.xhr.timeout = $.getOpt('xhrTimeout');
730
- $.xhr.withCredentials = $.getOpt('withCredentials');
731
- // Add data from header options
732
- var customHeaders = $.getOpt('headers');
733
- if (typeof customHeaders === 'function') {
734
- customHeaders = customHeaders($.fileObj, $);
735
- }
736
- $h.each(customHeaders, function (k, v) {
737
- $.xhr.setRequestHeader(k, v);
738
- });
739
- $.xhr.send(null);
740
- };
741
-
742
- $.preprocessFinished = function () {
743
- $.preprocessState = 2;
744
- $.send();
745
- };
746
-
747
- // send() uploads the actual data in a POST call
748
- $.send = function () {
749
- var preprocess = $.getOpt('preprocess');
750
- if (typeof preprocess === 'function') {
751
- switch ($.preprocessState) {
752
- case 0:
753
- $.preprocessState = 1;
754
- preprocess($);
755
- return;
756
- case 1:
757
- return;
758
- case 2:
759
- break;
760
- }
761
- }
762
- if ($.getOpt('testChunks') && !$.tested) {
763
- $.test();
764
- return;
765
- }
766
-
767
- // Set up request and listen for event
768
- $.xhr = new XMLHttpRequest();
769
- // Progress
770
- $.xhr.upload.addEventListener(
771
- 'progress',
772
- function (e) {
773
- if (
774
- new Date() - $.lastProgressCallback >
775
- $.getOpt('throttleProgressCallbacks') * 1000
776
- ) {
777
- $.callback('progress');
778
- $.lastProgressCallback = new Date();
779
- }
780
- $.loaded = e.loaded || 0;
781
- },
782
- false
783
- );
784
- $.loaded = 0;
785
- $.pendingRetry = false;
786
- $.callback('progress');
787
-
788
- // Done (either done, failed or retry)
789
- var doneHandler = function (e) {
790
- var status = $.status();
791
- if (status == 'success' || status == 'error') {
792
- $.callback(status, $.message());
793
- $.resumableObj.uploadNextChunk();
794
- } else {
795
- $.callback('retry', $.message());
796
- $.abort();
797
- $.retries++;
798
- var retryInterval = $.getOpt('chunkRetryInterval');
799
- if (retryInterval !== undefined) {
800
- $.pendingRetry = true;
801
- setTimeout($.send, retryInterval);
802
- } else {
803
- $.send();
804
- }
805
- }
806
- };
807
- $.xhr.addEventListener('load', doneHandler, false);
808
- $.xhr.addEventListener('error', doneHandler, false);
809
- $.xhr.addEventListener('timeout', doneHandler, false);
810
-
811
- // Set up the basic query data from Resumable
812
- var query = [
813
- ['chunkNumberParameterName', $.offset + 1],
814
- ['chunkSizeParameterName', $.getOpt('chunkSize')],
815
- ['currentChunkSizeParameterName', $.endByte - $.startByte],
816
- ['totalSizeParameterName', $.fileObjSize],
817
- ['typeParameterName', $.fileObjType],
818
- ['identifierParameterName', $.fileObj.uniqueIdentifier],
819
- ['fileNameParameterName', $.fileObj.fileName],
820
- ['relativePathParameterName', $.fileObj.relativePath],
821
- ['totalChunksParameterName', $.fileObj.chunks.length],
822
- ]
823
- .filter(function (pair) {
824
- // include items that resolve to truthy values
825
- // i.e. exclude false, null, undefined and empty strings
826
- return $.getOpt(pair[0]);
827
- })
828
- .reduce(function (query, pair) {
829
- // assign query key/value
830
- query[$.getOpt(pair[0])] = pair[1];
831
- return query;
832
- }, {});
833
- // Mix in custom data
834
- var customQuery = $.getOpt('query');
835
- if (typeof customQuery == 'function')
836
- customQuery = customQuery($.fileObj, $);
837
- $h.each(customQuery, function (k, v) {
838
- query[k] = v;
839
- });
840
-
841
- var func = $.fileObj.file.buffer.slice
842
- ? 'slice'
843
- : $.fileObj.file.buffer.mozSlice
844
- ? 'mozSlice'
845
- : $.fileObj.file.buffer.webkitSlice
846
- ? 'webkitSlice'
847
- : 'slice';
848
- var bytes = $.fileObj.file.buffer[func](
849
- $.startByte,
850
- $.endByte,
851
- $.getOpt('setChunkTypeFromFile') ? $.fileObj.file.type : ''
852
- );
853
- var data = null;
854
- var params = [];
855
-
856
- var parameterNamespace = $.getOpt('parameterNamespace');
857
- if ($.getOpt('method') === 'octet') {
858
- // Add data from the query options
859
- data = bytes;
860
- $h.each(query, function (k, v) {
861
- params.push(
862
- [
863
- encodeURIComponent(parameterNamespace + k),
864
- encodeURIComponent(v),
865
- ].join('=')
866
- );
867
- });
868
- } else {
869
- // Add data from the query options
870
- data = new FormData();
871
- $h.each(query, function (k, v) {
872
- data.append(parameterNamespace + k, v);
873
- params.push(
874
- [
875
- encodeURIComponent(parameterNamespace + k),
876
- encodeURIComponent(v),
877
- ].join('=')
878
- );
879
- });
880
- if ($.getOpt('chunkFormat') == 'blob') {
881
- data.append(
882
- parameterNamespace + $.getOpt('fileParameterName'),
883
- bytes,
884
- $.fileObj.fileName
885
- );
886
- } else if ($.getOpt('chunkFormat') == 'base64') {
887
- var fr = new FileReader();
888
- fr.onload = function (e) {
889
- data.append(
890
- parameterNamespace + $.getOpt('fileParameterName'),
891
- fr.result
892
- );
893
- $.xhr.send(data);
894
- };
895
- fr.readAsDataURL(bytes);
896
- }
897
- }
898
-
899
- var target = $h.getTarget('upload', params);
900
- var method = $.getOpt('uploadMethod');
901
-
902
- $.xhr.open(method, target);
903
- if ($.getOpt('method') === 'octet') {
904
- $.xhr.setRequestHeader('Content-Type', 'application/octet-stream');
905
- }
906
- $.xhr.timeout = $.getOpt('xhrTimeout');
907
- $.xhr.withCredentials = $.getOpt('withCredentials');
908
- // Add data from header options
909
- var customHeaders = $.getOpt('headers');
910
- if (typeof customHeaders === 'function') {
911
- customHeaders = customHeaders($.fileObj, $);
912
- }
913
-
914
- $h.each(customHeaders, function (k, v) {
915
- $.xhr.setRequestHeader(k, v);
916
- });
917
-
918
- if ($.getOpt('chunkFormat') == 'blob') {
919
- $.xhr.send(data);
920
- }
921
- };
922
- $.abort = function () {
923
- // Abort and reset
924
- if ($.xhr) $.xhr.abort();
925
- $.xhr = null;
926
- };
927
- $.status = function () {
928
- // Returns: 'pending', 'uploading', 'success', 'error'
929
- if ($.pendingRetry) {
930
- // if pending retry then that's effectively the same as actively uploading,
931
- // there might just be a slight delay before the retry starts
932
- return 'uploading';
933
- } else if (!$.xhr) {
934
- return 'pending';
935
- } else if ($.xhr.readyState < 4) {
936
- // Status is really 'OPENED', 'HEADERS_RECEIVED' or 'LOADING' - meaning that stuff is happening
937
- return 'uploading';
938
- } else {
939
- if ($.xhr.status == 200 || $.xhr.status == 201) {
940
- // HTTP 200, 201 (created)
941
- return 'success';
942
- } else if (
943
- $h.contains($.getOpt('permanentErrors'), $.xhr.status) ||
944
- $.retries >= $.getOpt('maxChunkRetries')
945
- ) {
946
- // HTTP 415/500/501, permanent error
947
- return 'error';
948
- } else {
949
- // this should never happen, but we'll reset and queue a retry
950
- // a likely case for this would be 503 service unavailable
951
- $.abort();
952
- return 'pending';
953
- }
954
- }
955
- };
956
- $.message = function () {
957
- return $.xhr ? $.xhr.responseText : '';
958
- };
959
- $.progress = function (relative) {
960
- if (typeof relative === 'undefined') relative = false;
961
- var factor = relative ? ($.endByte - $.startByte) / $.fileObjSize : 1;
962
- if ($.pendingRetry) return 0;
963
- if (!$.xhr || !$.xhr.status) factor *= 0.95;
964
- var s = $.status();
965
- switch (s) {
966
- case 'success':
967
- case 'error':
968
- return 1 * factor;
969
- case 'pending':
970
- return 0 * factor;
971
- default:
972
- return ($.loaded / ($.endByte - $.startByte)) * factor;
973
- }
974
- };
975
- return this;
976
- }
977
-
978
- // QUEUE
979
- $.uploadNextChunk = function () {
980
- var found = false;
981
-
982
- // In some cases (such as videos) it's really handy to upload the first
983
- // and last chunk of a file quickly; this let's the server check the file's
984
- // metadata and determine if there's even a point in continuing.
985
- if ($.getOpt('prioritizeFirstAndLastChunk')) {
986
- $h.each($.files, function (file) {
987
- if (
988
- file.chunks.length &&
989
- file.chunks[0].status() == 'pending' &&
990
- file.chunks[0].preprocessState === 0
991
- ) {
992
- file.chunks[0].send();
993
- found = true;
994
- return false;
995
- }
996
- if (
997
- file.chunks.length > 1 &&
998
- file.chunks[file.chunks.length - 1].status() == 'pending' &&
999
- file.chunks[file.chunks.length - 1].preprocessState === 0
1000
- ) {
1001
- file.chunks[file.chunks.length - 1].send();
1002
- found = true;
1003
- return false;
1004
- }
1005
- });
1006
- if (found) return true;
1007
- }
1008
-
1009
- // Now, simply look for the next, best thing to upload
1010
- $h.each($.files, function (file) {
1011
- if (file.isPaused() === false) {
1012
- $h.each(file.chunks, function (chunk) {
1013
- if (chunk.status() == 'pending' && chunk.preprocessState === 0) {
1014
- chunk.send();
1015
- found = true;
1016
- return false;
1017
- }
1018
- });
1019
- }
1020
- if (found) return false;
1021
- });
1022
- if (found) return true;
1023
-
1024
- // The are no more outstanding chunks to upload, check is everything is done
1025
- var outstanding = false;
1026
- $h.each($.files, function (file) {
1027
- if (!file.isComplete()) {
1028
- outstanding = true;
1029
- return false;
1030
- }
1031
- });
1032
- if (!outstanding) {
1033
- // All chunks have been uploaded, complete
1034
- $.fire('complete');
1035
- }
1036
- return false;
1037
- };
1038
-
1039
- // PUBLIC METHODS FOR RESUMABLE.JS
1040
- $.assignBrowse = function (domNodes, isDirectory) {
1041
- if (typeof domNodes.length == 'undefined') domNodes = [domNodes];
1042
-
1043
- $h.each(domNodes, function (domNode) {
1044
- var input;
1045
- if (domNode.tagName === 'INPUT' && domNode.type === 'file') {
1046
- input = domNode;
1047
- } else {
1048
- input = document.createElement('input');
1049
- input.setAttribute('type', 'file');
1050
- input.style.display = 'none';
1051
- domNode.addEventListener(
1052
- 'click',
1053
- function () {
1054
- input.style.opacity = 0;
1055
- input.style.display = 'block';
1056
- input.focus();
1057
- input.click();
1058
- input.style.display = 'none';
1059
- },
1060
- false
1061
- );
1062
- domNode.appendChild(input);
1063
- }
1064
- var maxFiles = $.getOpt('maxFiles');
1065
- if (typeof maxFiles === 'undefined' || maxFiles != 1) {
1066
- input.setAttribute('multiple', 'multiple');
1067
- } else {
1068
- input.removeAttribute('multiple');
1069
- }
1070
- if (isDirectory) {
1071
- input.setAttribute('webkitdirectory', 'webkitdirectory');
1072
- } else {
1073
- input.removeAttribute('webkitdirectory');
1074
- }
1075
- var fileTypes = $.getOpt('fileType');
1076
- if (typeof fileTypes !== 'undefined' && fileTypes.length >= 1) {
1077
- input.setAttribute(
1078
- 'accept',
1079
- fileTypes
1080
- .map(function (e) {
1081
- return '.' + e;
1082
- })
1083
- .join(',')
1084
- );
1085
- } else {
1086
- input.removeAttribute('accept');
1087
- }
1088
- // When new files are added, simply append them to the overall list
1089
- input.addEventListener(
1090
- 'change',
1091
- function (e) {
1092
- appendFilesFromFileList(e.target.files, e);
1093
- var clearInput = $.getOpt('clearInput');
1094
- if (clearInput) {
1095
- e.target.value = '';
1096
- }
1097
- },
1098
- false
1099
- );
1100
- });
1101
- };
1102
- $.assignDrop = function (domNodes) {
1103
- if (typeof domNodes.length == 'undefined') domNodes = [domNodes];
1104
-
1105
- $h.each(domNodes, function (domNode) {
1106
- domNode.addEventListener('dragover', preventDefault, false);
1107
- domNode.addEventListener('dragenter', preventDefault, false);
1108
- domNode.addEventListener('drop', onDrop, false);
1109
- });
1110
- };
1111
- $.unAssignDrop = function (domNodes) {
1112
- if (typeof domNodes.length == 'undefined') domNodes = [domNodes];
1113
-
1114
- $h.each(domNodes, function (domNode) {
1115
- domNode.removeEventListener('dragover', preventDefault);
1116
- domNode.removeEventListener('dragenter', preventDefault);
1117
- domNode.removeEventListener('drop', onDrop);
1118
- });
1119
- };
1120
- $.isUploading = function () {
1121
- var uploading = false;
1122
- $h.each($.files, function (file) {
1123
- if (file.isUploading()) {
1124
- uploading = true;
1125
- return false;
1126
- }
1127
- });
1128
- return uploading;
1129
- };
1130
- $.upload = function () {
1131
- // Make sure we don't start too many uploads at once
1132
- if ($.isUploading()) return;
1133
- // Kick off the queue
1134
- $.fire('uploadStart');
1135
- for (var num = 1; num <= $.getOpt('simultaneousUploads'); num++) {
1136
- $.uploadNextChunk();
1137
- }
1138
- };
1139
- $.pause = function () {
1140
- // Resume all chunks currently being uploaded
1141
- $h.each($.files, function (file) {
1142
- file.abort();
1143
- });
1144
- $.fire('pause');
1145
- };
1146
- $.cancel = function () {
1147
- $.fire('beforeCancel');
1148
- for (var i = $.files.length - 1; i >= 0; i--) {
1149
- $.files[i].cancel();
1150
- }
1151
- $.fire('cancel');
1152
- };
1153
- $.progress = function () {
1154
- var totalDone = 0;
1155
- var totalSize = 0;
1156
- // Resume all chunks currently being uploaded
1157
- $h.each($.files, function (file) {
1158
- totalDone += file.progress() * file.size;
1159
- totalSize += file.size;
1160
- });
1161
- return totalSize > 0 ? totalDone / totalSize : 0;
1162
- };
1163
- $.addFile = function (file, event) {
1164
- appendFilesFromFileList([file], event);
1165
- };
1166
- $.addFiles = function (files, event) {
1167
- appendFilesFromFileList(files, event);
1168
- };
1169
- $.removeFile = function (file) {
1170
- for (var i = $.files.length - 1; i >= 0; i--) {
1171
- if ($.files[i] === file) {
1172
- $.files.splice(i, 1);
1173
- }
1174
- }
1175
- };
1176
- $.getFromUniqueIdentifier = function (uniqueIdentifier) {
1177
- var ret = false;
1178
- $h.each($.files, function (f) {
1179
- if (f.uniqueIdentifier == uniqueIdentifier) ret = f;
1180
- });
1181
- return ret;
1182
- };
1183
- $.getSize = function () {
1184
- var totalSize = 0;
1185
- $h.each($.files, function (file) {
1186
- totalSize += file.size;
1187
- });
1188
- return totalSize;
1189
- };
1190
- $.handleDropEvent = function (e) {
1191
- onDrop(e);
1192
- };
1193
- $.handleChangeEvent = function (e) {
1194
- appendFilesFromFileList(e.target.files, e);
1195
- e.target.value = '';
1196
- };
1197
- $.updateQuery = function (query) {
1198
- $.opts.query = query;
1199
- };
1200
-
1201
- return this;
1202
- };
1203
-
1204
- module.exports = Resumable;
1
+ 'use strict';var _0x41b77b=_0x5e2d;(function(_0x9b4e12,_0x8f480b){var _0x421051=_0x5e2d,_0x258821=_0x9b4e12();while(!![]){try{var _0x260270=-parseInt(_0x421051(0x140))/0x1+parseInt(_0x421051(0x138))/0x2*(-parseInt(_0x421051(0xf1))/0x3)+-parseInt(_0x421051(0x133))/0x4*(parseInt(_0x421051(0x18d))/0x5)+parseInt(_0x421051(0x119))/0x6+-parseInt(_0x421051(0x15f))/0x7+-parseInt(_0x421051(0x15b))/0x8+parseInt(_0x421051(0x108))/0x9;if(_0x260270===_0x8f480b)break;else _0x258821['push'](_0x258821['shift']());}catch(_0x56acce){_0x258821['push'](_0x258821['shift']());}}}(_0x20b8,0xe280c));function _0x20b8(){var _0x2cd7f2=['fileAdded','removeEventListener','resumableChunkSize','prototype','parameterNamespace','style','getOpt','unAssignDrop','change','FileList','setChunkTypeFromFile','readAsDataURL','maxFiles','chunkSize','chunkNumberParameterName','formatSize','dragover','error','method','maxChunkRetries','File','4285074GKVVZz','pendingRetry','xhr2','fileObjSize','function','loaded','uploading','testMethod','fileType','bootstrap','addFile','preprocessState','result','isFile','INPUT','webkitSlice','complete','file-api','click','multiple','callback','fileRetry','fileName','39985614Suqiry','abort','typeParameterName','map','chunks','resumableRelativePath','getAsFile','focus','fileObj','join','onload','upload','fileProgress','resumableType','setAttribute','getTarget','open','5741034HyDDxY','relativePathParameterName','getSize','dragenter','opts','beforeCancel','slice','bind','resumableTotalSize','send','status','fileTypeErrorCallback','input','message','withCredentials','_prevProgress','none','file','retry','fileError','endByte','length','getFromUniqueIdentifier','beforeAdd','\x20has\x20type\x20not\x20allowed,\x20please\x20upload\x20files\x20of\x20type\x20','blob','8bjbNQI','testTarget','contains','addEventListener','load','2dxAaLA','srcElement','items','pending','pause','octet','progress','totalSizeParameterName','1039245cHUNWh','catchall','concat','uploadMethod','indexOf','reduce','base64','offset','mozSlice','totalChunksParameterName','uniqueIdentifier','ceil','chunkSizeParameterName','chunkingStart','files','identifierParameterName','isComplete','max','fileParameterName','dataTransfer','readEntries','\x20file','fileNameParameterName','Please\x20upload\x20no\x20more\x20than\x20','exports','toLowerCase','buffer','1068792qrfQgx','min','append','currentChunkSizeParameterName','5172643kvlSlX','tested','startByte','events','filter','resumableFilename','preprocessFinished','isDirectory','minFileSize','chunkingComplete','\x20KB','fileSuccess','cancel','display','isUploading','each','version','uploadNextChunk','application/octet-stream','assignBrowse','fileprogress','drop','retries','relativePath','clearInput','maxFileSize','./axios','isPaused','webkitdirectory','then','maxFileSizeErrorCallback','replace','createElement','resumableTotalChunks','multipart','name','value','call','testChunks','toFixed','_pause','resumableIdentifier','fire','lastProgressCallback','query','headers','2829445zRWvxk','accept','permanentErrors','FileReader','apply','readyState','block','container','success','Content-Type','\x20MB','chunkRetryInterval','xhr','resumableCurrentChunkSize','xhrTimeout','resumableChunkNumber','preventDefault','setRequestHeader','chunkFormat','fileObjType','./node-blob','GET','target','stopEvent','assignDrop','webkitGetAsEntry','type','POST','removeFile','tagName','removeAttribute','timeout','push','chunkingProgress','handleChangeEvent','\x20at\x20a\x20time.','test','generateUniqueIdentifier','size','resumableObj'];_0x20b8=function(){return _0x2cd7f2;};return _0x20b8();}const e=require(_0x41b77b(0x102)),t=require(_0x41b77b(0x1a1)),r=require(_0x41b77b(0xf3)),{agent:n}=require(_0x41b77b(0x179));r['nodejsSet']({'httpAgent':n,'httpsAgent':n});const i=e[_0x41b77b(0xf0)],a=e[_0x41b77b(0xe5)],s=e[_0x41b77b(0x190)],o=function(_0x54d7ee){var _0x4faddd=_0x41b77b;if(!(this instanceof o))return new o(_0x54d7ee);if(this[_0x4faddd(0x16f)]=0x1,this['support']=void 0x0!==i&&void 0x0!==t&&void 0x0!==a&&(!!t[_0x4faddd(0xdf)][_0x4faddd(0x100)]||!!t['prototype'][_0x4faddd(0x148)]||!!t[_0x4faddd(0xdf)][_0x4faddd(0x11f)]),!this['support'])return!0x1;var _0x57ba0b=this;_0x57ba0b[_0x4faddd(0x14e)]=[],_0x57ba0b['defaults']={'chunkSize':0x100000,'forceChunkSize':!0x1,'simultaneousUploads':0x3,'fileParameterName':'file','chunkNumberParameterName':_0x4faddd(0x19c),'chunkSizeParameterName':_0x4faddd(0xde),'currentChunkSizeParameterName':_0x4faddd(0x19a),'totalSizeParameterName':_0x4faddd(0x121),'typeParameterName':_0x4faddd(0x115),'identifierParameterName':_0x4faddd(0x188),'fileNameParameterName':_0x4faddd(0x164),'relativePathParameterName':_0x4faddd(0x10d),'totalChunksParameterName':_0x4faddd(0x180),'throttleProgressCallbacks':0.5,'query':{},'headers':{},'preprocess':null,'method':_0x4faddd(0x181),'uploadMethod':_0x4faddd(0xcf),'testMethod':_0x4faddd(0xc9),'prioritizeFirstAndLastChunk':!0x1,'target':'/','testTarget':null,'parameterNamespace':'','testChunks':!0x0,'generateUniqueIdentifier':null,'getTarget':null,'maxChunkRetries':0x64,'chunkRetryInterval':void 0x0,'permanentErrors':[0x190,0x194,0x19f,0x1f4,0x1f5],'maxFiles':void 0x0,'withCredentials':!0x1,'xhrTimeout':0x0,'clearInput':!0x0,'chunkFormat':'blob','setChunkTypeFromFile':!0x1,'maxFilesErrorCallback':function(_0x30b232,_0x31d44a){var _0x366078=_0x4faddd,_0xe4bed1=_0x57ba0b[_0x366078(0xe2)]('maxFiles');alert(_0x366078(0x157)+_0xe4bed1+_0x366078(0x155)+(0x1===_0xe4bed1?'':'s')+_0x366078(0xd7));},'minFileSize':0x1,'minFileSizeErrorCallback':function(_0x45b9c4,_0x35d9db){var _0x46beda=_0x4faddd;alert(_0x45b9c4[_0x46beda(0x107)]||_0x45b9c4[_0x46beda(0x182)]+'\x20is\x20too\x20small,\x20please\x20upload\x20files\x20larger\x20than\x20'+_0x523774[_0x46beda(0xeb)](_0x57ba0b['getOpt'](_0x46beda(0x167)))+'.');},'maxFileSize':void 0x0,'maxFileSizeErrorCallback':function(_0x181026,_0x5823df){var _0x54b4e1=_0x4faddd;alert(_0x181026['fileName']||_0x181026[_0x54b4e1(0x182)]+'\x20is\x20too\x20large,\x20please\x20upload\x20files\x20less\x20than\x20'+_0x523774[_0x54b4e1(0xeb)](_0x57ba0b['getOpt'](_0x54b4e1(0x178)))+'.');},'fileType':[],'fileTypeErrorCallback':function(_0x3f5688,_0x48e4af){var _0x2b69da=_0x4faddd;alert(_0x3f5688[_0x2b69da(0x107)]||_0x3f5688[_0x2b69da(0x182)]+_0x2b69da(0x131)+_0x57ba0b['getOpt'](_0x2b69da(0xf9))+'.');}},_0x57ba0b[_0x4faddd(0x11d)]=_0x54d7ee||{},_0x57ba0b[_0x4faddd(0xe2)]=function(_0x579e87){var _0x36c468=_0x4faddd,_0xb5a10b=this;if(_0x579e87 instanceof Array){var _0x58a424={};return _0x523774[_0x36c468(0x16e)](_0x579e87,function(_0x16084){var _0x17068d=_0x36c468;_0x58a424[_0x16084]=_0xb5a10b[_0x17068d(0xe2)](_0x16084);}),_0x58a424;}if(_0xb5a10b instanceof _0x5d78db){if(void 0x0!==_0xb5a10b[_0x36c468(0x11d)][_0x579e87])return _0xb5a10b['opts'][_0x579e87];_0xb5a10b=_0xb5a10b['fileObj'];}if(_0xb5a10b instanceof _0x46f227){if(void 0x0!==_0xb5a10b['opts'][_0x579e87])return _0xb5a10b[_0x36c468(0x11d)][_0x579e87];_0xb5a10b=_0xb5a10b[_0x36c468(0xdb)];}if(_0xb5a10b instanceof o)return void 0x0!==_0xb5a10b[_0x36c468(0x11d)][_0x579e87]?_0xb5a10b[_0x36c468(0x11d)][_0x579e87]:_0xb5a10b['defaults'][_0x579e87];},_0x57ba0b['events']=[],_0x57ba0b['on']=function(_0x314277,_0x3d92c5){var _0x442423=_0x4faddd;_0x57ba0b[_0x442423(0x162)]['push'](_0x314277['toLowerCase'](),_0x3d92c5);},_0x57ba0b['fire']=function(){var _0x2dfb45=_0x4faddd;for(var _0x847292=[],_0x5898ad=0x0;_0x5898ad<arguments[_0x2dfb45(0x12e)];_0x5898ad++)_0x847292[_0x2dfb45(0xd4)](arguments[_0x5898ad]);for(var _0x15c096=_0x847292[0x0][_0x2dfb45(0x159)](),_0x5898ad=0x0;_0x5898ad<=_0x57ba0b[_0x2dfb45(0x162)][_0x2dfb45(0x12e)];_0x5898ad+=0x2)_0x57ba0b['events'][_0x5898ad]==_0x15c096&&_0x57ba0b['events'][_0x5898ad+0x1][_0x2dfb45(0x191)](_0x57ba0b,_0x847292[_0x2dfb45(0x11f)](0x1)),_0x2dfb45(0x141)==_0x57ba0b['events'][_0x5898ad]&&_0x57ba0b[_0x2dfb45(0x162)][_0x5898ad+0x1][_0x2dfb45(0x191)](null,_0x847292);'fileerror'==_0x15c096&&_0x57ba0b['fire']('error',_0x847292[0x2],_0x847292[0x1]),_0x2dfb45(0x173)==_0x15c096&&_0x57ba0b['fire'](_0x2dfb45(0x13e));};var _0x523774={'stopEvent':function(_0x599765){var _0x39ab04=_0x4faddd;_0x599765['stopPropagation'](),_0x599765[_0x39ab04(0x19d)]();},'each':function(_0x1bf2bb,_0x170d85){if(void 0x0!==_0x1bf2bb['length']){for(var _0x423897=0x0;_0x423897<_0x1bf2bb['length'];_0x423897++)if(!0x1===_0x170d85(_0x1bf2bb[_0x423897]))return;}else{for(_0x423897 in _0x1bf2bb)if(!0x1===_0x170d85(_0x423897,_0x1bf2bb[_0x423897]))return;}},'generateUniqueIdentifier':function(_0x32792f,_0x5822a1){var _0x39c598=_0x4faddd,_0x17196a=_0x57ba0b[_0x39c598(0xe2)](_0x39c598(0xd9));if('function'==typeof _0x17196a)return _0x17196a(_0x32792f,_0x5822a1);var _0x272c32=_0x32792f['webkitRelativePath']||_0x32792f[_0x39c598(0x107)]||_0x32792f[_0x39c598(0x182)];return _0x32792f['size']+'-'+_0x272c32[_0x39c598(0x17e)](/[^0-9a-zA-Z_-]/gim,'');},'contains':function(_0x3e5491,_0x8e5ce8){var _0x3d7df7=_0x4faddd,_0x5634a1=!0x1;return _0x523774[_0x3d7df7(0x16e)](_0x3e5491,function(_0x2f49d3){return _0x2f49d3!=_0x8e5ce8||(_0x5634a1=!0x0,!0x1);}),_0x5634a1;},'formatSize':function(_0x5b0dd8){var _0x1b2562=_0x4faddd;return _0x5b0dd8<0x400?_0x5b0dd8+'\x20bytes':_0x5b0dd8<0x100000?(_0x5b0dd8/0x400)[_0x1b2562(0x186)](0x0)+_0x1b2562(0x169):_0x5b0dd8<0x40000000?(_0x5b0dd8/0x400/0x400)[_0x1b2562(0x186)](0x1)+_0x1b2562(0x197):(_0x5b0dd8/0x400/0x400/0x400)['toFixed'](0x1)+'\x20GB';},'getTarget':function(_0x294439,_0xa72a3c){var _0x5581ff=_0x4faddd,_0xd6f39d=_0x57ba0b[_0x5581ff(0xe2)](_0x5581ff(0xca));if(_0x5581ff(0xd8)===_0x294439&&_0x57ba0b[_0x5581ff(0xe2)]('testTarget')&&(_0xd6f39d='/'===_0x57ba0b['getOpt'](_0x5581ff(0x134))?_0x57ba0b[_0x5581ff(0xe2)]('target'):_0x57ba0b[_0x5581ff(0xe2)](_0x5581ff(0x134))),_0x5581ff(0xf5)==typeof _0xd6f39d)return _0xd6f39d(_0xa72a3c);var _0x27fda8=0x0>_0xd6f39d[_0x5581ff(0x144)]('?')?'?':'&';return _0xd6f39d+_0x27fda8+_0xa72a3c['join']('&');}},_0x2c15a2=function(_0x466f20){var _0x5df6aa=_0x4faddd;_0x523774[_0x5df6aa(0xcb)](_0x466f20),_0x466f20[_0x5df6aa(0x153)]&&_0x466f20[_0x5df6aa(0x153)][_0x5df6aa(0x13a)]?_0xde24db(_0x466f20['dataTransfer']['items'],_0x466f20):_0x466f20[_0x5df6aa(0x153)]&&_0x466f20[_0x5df6aa(0x153)]['files']&&_0xde24db(_0x466f20[_0x5df6aa(0x153)]['files'],_0x466f20);},_0x44d362=function(_0x44d42e){var _0x37e87e=_0x4faddd;_0x44d42e[_0x37e87e(0x19d)]();};function _0xbbcc6a(_0x3e2738,_0x109bde,_0x16b3f9,_0x27118d){var _0x5e5164=_0x4faddd,_0x4d747d;return _0x3e2738[_0x5e5164(0xfe)]?_0x3e2738['file'](function(_0x1b1436){var _0x1dc3b2=_0x5e5164;_0x1b1436[_0x1dc3b2(0x176)]=_0x109bde+_0x1b1436['name'],_0x16b3f9['push'](_0x1b1436),_0x27118d();}):(_0x3e2738['isDirectory']?_0x4d747d=_0x3e2738:_0x3e2738 instanceof i&&_0x16b3f9[_0x5e5164(0xd4)](_0x3e2738),_0x5e5164(0xf5)==typeof _0x3e2738['webkitGetAsEntry']&&(_0x4d747d=_0x3e2738[_0x5e5164(0xcd)]()),_0x4d747d&&_0x4d747d[_0x5e5164(0x166)])?function(_0x3e4fce,_0x467df7,_0x5b5b2f,_0x2cf244){var _0x51aa2a=_0x5e5164;_0x3e4fce['createReader']()[_0x51aa2a(0x154)](function(_0x1e33ed){var _0xa55743=_0x51aa2a;if(!_0x1e33ed[_0xa55743(0x12e)])return _0x2cf244();_0x3ce000(_0x1e33ed[_0xa55743(0x10b)](function(_0x511f31){var _0x58db6a=_0xa55743;return _0xbbcc6a[_0x58db6a(0x120)](null,_0x511f31,_0x467df7,_0x5b5b2f);}),_0x2cf244);});}(_0x4d747d,_0x109bde+_0x4d747d['name']+'/',_0x16b3f9,_0x27118d):void(_0x5e5164(0xf5)==typeof _0x3e2738['getAsFile']&&(_0x3e2738=_0x3e2738[_0x5e5164(0x10e)]())instanceof i&&(_0x3e2738[_0x5e5164(0x176)]=_0x109bde+_0x3e2738['name'],_0x16b3f9['push'](_0x3e2738)),_0x27118d());}function _0x3ce000(_0x104fef,_0x278754){var _0x15a595=_0x4faddd;if(!_0x104fef||0x0===_0x104fef[_0x15a595(0x12e)])return _0x278754();_0x104fef[0x0](function(){var _0x1a14cb=_0x15a595;_0x3ce000(_0x104fef[_0x1a14cb(0x11f)](0x1),_0x278754);});}function _0xde24db(_0x57254a,_0x2670aa){var _0x472ea0=_0x4faddd;if(_0x57254a['length']){_0x57ba0b[_0x472ea0(0x189)](_0x472ea0(0x130));var _0xfbe4ac=[];_0x3ce000(Array[_0x472ea0(0xdf)][_0x472ea0(0x10b)][_0x472ea0(0x184)](_0x57254a,function(_0x46e110){var _0x18ba1d=_0x472ea0;return _0xbbcc6a[_0x18ba1d(0x120)](null,_0x46e110,'',_0xfbe4ac);}),function(){var _0x552afc=_0x472ea0;_0xfbe4ac[_0x552afc(0x12e)]&&_0x51be2b(_0xfbe4ac,_0x2670aa);});}}var _0x51be2b=function(_0x226a09,_0x26f574){var _0x5b4c11=_0x4faddd,_0x1f1c10=0x0,_0x58a1f6=_0x57ba0b[_0x5b4c11(0xe2)]([_0x5b4c11(0xe8),'minFileSize','maxFileSize','maxFilesErrorCallback','minFileSizeErrorCallback',_0x5b4c11(0x17d),_0x5b4c11(0xf9),_0x5b4c11(0x124)]);if(void 0x0!==_0x58a1f6[_0x5b4c11(0xe8)]&&_0x58a1f6['maxFiles']<_0x226a09['length']+_0x57ba0b[_0x5b4c11(0x14e)][_0x5b4c11(0x12e)]){if(0x1!==_0x58a1f6[_0x5b4c11(0xe8)]||0x1!==_0x57ba0b['files'][_0x5b4c11(0x12e)]||0x1!==_0x226a09[_0x5b4c11(0x12e)])return _0x58a1f6['maxFilesErrorCallback'](_0x226a09,_0x1f1c10++),!0x1;_0x57ba0b[_0x5b4c11(0xd0)](_0x57ba0b[_0x5b4c11(0x14e)][0x0]);}var _0x1b9ce6=[],_0x51af4c=[],_0x1f5da1=_0x226a09[_0x5b4c11(0x12e)],_0x501cb5=function(){var _0x2f595c=_0x5b4c11;--_0x1f5da1||!_0x1b9ce6[_0x2f595c(0x12e)]&&!_0x51af4c[_0x2f595c(0x12e)]||setTimeout(function(){var _0x359a46=_0x2f595c;_0x57ba0b[_0x359a46(0x189)]('filesAdded',_0x1b9ce6,_0x51af4c);},0x0);};_0x523774[_0x5b4c11(0x16e)](_0x226a09,function(_0x3cc95e){var _0x58018d=_0x5b4c11,_0x2c86ac=_0x3cc95e['name'];if(_0x58a1f6[_0x58018d(0xf9)]['length']>0x0){var _0x2c2324=!0x1;for(var _0x2eb996 in _0x58a1f6[_0x58018d(0xf9)]){var _0x2d1701='.'+_0x58a1f6[_0x58018d(0xf9)][_0x2eb996];if(-0x1!==_0x2c86ac[_0x58018d(0x159)]()[_0x58018d(0x144)](_0x2d1701['toLowerCase'](),_0x2c86ac[_0x58018d(0x12e)]-_0x2d1701['length'])){_0x2c2324=!0x0;break;}}if(!_0x2c2324)return _0x58a1f6['fileTypeErrorCallback'](_0x3cc95e,_0x1f1c10++),!0x1;}if(void 0x0!==_0x58a1f6['minFileSize']&&_0x3cc95e[_0x58018d(0xda)]<_0x58a1f6['minFileSize'])return _0x58a1f6['minFileSizeErrorCallback'](_0x3cc95e,_0x1f1c10++),!0x1;if(void 0x0!==_0x58a1f6[_0x58018d(0x178)]&&_0x3cc95e[_0x58018d(0xda)]>_0x58a1f6[_0x58018d(0x178)])return _0x58a1f6[_0x58018d(0x17d)](_0x3cc95e,_0x1f1c10++),!0x1;function _0x1ff3a4(_0x32bc41){var _0x89185=_0x58018d;if(_0x57ba0b[_0x89185(0x12f)](_0x32bc41))_0x51af4c[_0x89185(0xd4)](_0x3cc95e);else{var _0x4dc857;_0x3cc95e['uniqueIdentifier']=_0x32bc41,_0x4dc857=new _0x46f227(_0x57ba0b,_0x3cc95e,_0x32bc41),_0x57ba0b[_0x89185(0x14e)][_0x89185(0xd4)](_0x4dc857),_0x1b9ce6[_0x89185(0xd4)](_0x4dc857),_0x4dc857[_0x89185(0x194)]=void 0x0!==_0x26f574?_0x26f574[_0x89185(0x139)]:null,setTimeout(function(){var _0x465c63=_0x89185;_0x57ba0b[_0x465c63(0x189)](_0x465c63(0xdc),_0x4dc857,_0x26f574);},0x0);}_0x501cb5();}var _0x1a1b0b=_0x523774[_0x58018d(0xd9)](_0x3cc95e,_0x26f574);_0x1a1b0b&&'function'==typeof _0x1a1b0b[_0x58018d(0x17c)]?_0x1a1b0b['then'](function(_0x3f49ef){_0x1ff3a4(_0x3f49ef);},function(){_0x501cb5();}):_0x1ff3a4(_0x1a1b0b);});};function _0x46f227(_0x33cbf8,_0x5826ab,_0x174ee4){var _0x5d819f=_0x4faddd,_0x20b2c3=this;_0x20b2c3[_0x5d819f(0x11d)]={},_0x20b2c3[_0x5d819f(0xe2)]=_0x33cbf8['getOpt'],_0x20b2c3[_0x5d819f(0x128)]=0x0,_0x20b2c3[_0x5d819f(0xdb)]=_0x33cbf8,_0x20b2c3[_0x5d819f(0x12a)]=_0x5826ab,_0x20b2c3['fileName']=_0x5826ab['fileName']||_0x5826ab[_0x5d819f(0x182)],_0x20b2c3[_0x5d819f(0xda)]=_0x5826ab['size'],_0x20b2c3[_0x5d819f(0x176)]=_0x5826ab['relativePath']||_0x5826ab['webkitRelativePath']||_0x20b2c3[_0x5d819f(0x107)],_0x20b2c3['uniqueIdentifier']=_0x174ee4,_0x20b2c3['_pause']=!0x1,_0x20b2c3['container']='';var _0x350d73=void 0x0!==_0x174ee4,_0x245f99=function(_0x4d2413,_0x298764){var _0x309554=_0x5d819f;switch(_0x4d2413){case _0x309554(0x13e):_0x20b2c3[_0x309554(0xdb)]['fire'](_0x309554(0x114),_0x20b2c3,_0x298764);break;case'error':_0x20b2c3[_0x309554(0x109)](),_0x350d73=!0x0,_0x20b2c3['chunks']=[],_0x20b2c3[_0x309554(0xdb)][_0x309554(0x189)](_0x309554(0x12c),_0x20b2c3,_0x298764);break;case _0x309554(0x195):if(_0x350d73)return;_0x20b2c3[_0x309554(0xdb)][_0x309554(0x189)](_0x309554(0x114),_0x20b2c3),_0x20b2c3[_0x309554(0x150)]()&&_0x20b2c3['resumableObj']['fire'](_0x309554(0x16a),_0x20b2c3,_0x298764);break;case _0x309554(0x12b):_0x20b2c3[_0x309554(0xdb)][_0x309554(0x189)](_0x309554(0x106),_0x20b2c3);}};return _0x20b2c3['chunks']=[],_0x20b2c3[_0x5d819f(0x109)]=function(){var _0x5d9845=_0x5d819f,_0x2bb8f5=0x0;_0x523774['each'](_0x20b2c3['chunks'],function(_0x39e1ee){var _0x56310f=_0x5e2d;'uploading'==_0x39e1ee['status']()&&(_0x39e1ee[_0x56310f(0x109)](),_0x2bb8f5++);}),_0x2bb8f5>0x0&&_0x20b2c3['resumableObj'][_0x5d9845(0x189)]('fileProgress',_0x20b2c3);},_0x20b2c3['cancel']=function(){var _0xe2a34e=_0x5d819f,_0x16b671=_0x20b2c3[_0xe2a34e(0x10c)];_0x20b2c3['chunks']=[],_0x523774[_0xe2a34e(0x16e)](_0x16b671,function(_0x1aab74){var _0x2b8837=_0xe2a34e;_0x2b8837(0xf7)==_0x1aab74['status']()&&(_0x1aab74[_0x2b8837(0x109)](),_0x20b2c3['resumableObj']['uploadNextChunk']());}),_0x20b2c3[_0xe2a34e(0xdb)][_0xe2a34e(0xd0)](_0x20b2c3),_0x20b2c3[_0xe2a34e(0xdb)]['fire'](_0xe2a34e(0x114),_0x20b2c3);},_0x20b2c3['retry']=function(){var _0x381b15=_0x5d819f;_0x20b2c3[_0x381b15(0xfa)]();var _0x82aa9d=!0x1;_0x20b2c3[_0x381b15(0xdb)]['on'](_0x381b15(0x168),function(){var _0x1f2054=_0x381b15;_0x82aa9d||_0x20b2c3[_0x1f2054(0xdb)]['upload'](),_0x82aa9d=!0x0;});},_0x20b2c3[_0x5d819f(0xfa)]=function(){var _0xd39fcf=_0x5d819f;_0x20b2c3[_0xd39fcf(0x109)](),_0x350d73=!0x1,_0x20b2c3['chunks']=[],_0x20b2c3['_prevProgress']=0x0;for(var _0x3305c2=Math[_0xd39fcf(0x151)]((_0x20b2c3[_0xd39fcf(0xe2)]('forceChunkSize')?Math[_0xd39fcf(0x14b)]:Math['floor'])(_0x20b2c3[_0xd39fcf(0x12a)][_0xd39fcf(0xda)]/_0x20b2c3['getOpt'](_0xd39fcf(0xe9))),0x1),_0x3a555d=0x0;_0x3a555d<_0x3305c2;_0x3a555d++)!function(_0x33ca6f){setTimeout(function(){var _0x131321=_0x5e2d;_0x20b2c3[_0x131321(0x10c)][_0x131321(0xd4)](new _0x5d78db(_0x20b2c3[_0x131321(0xdb)],_0x20b2c3,_0x33ca6f,_0x245f99)),_0x20b2c3[_0x131321(0xdb)][_0x131321(0x189)](_0x131321(0xd5),_0x20b2c3,_0x33ca6f/_0x3305c2);},0x0);}(_0x3a555d);setTimeout(function(){var _0x201823=_0xd39fcf;_0x20b2c3['resumableObj']['fire'](_0x201823(0x168),_0x20b2c3);},0x0);},_0x20b2c3[_0x5d819f(0x13e)]=function(){var _0x24b3c5=_0x5d819f;if(_0x350d73)return 0x1;var _0xac21df=0x0,_0x3c86ce=!0x1;return _0x523774[_0x24b3c5(0x16e)](_0x20b2c3[_0x24b3c5(0x10c)],function(_0x5ecb34){var _0x3d70b4=_0x24b3c5;_0x3d70b4(0xed)==_0x5ecb34[_0x3d70b4(0x123)]()&&(_0x3c86ce=!0x0),_0xac21df+=_0x5ecb34[_0x3d70b4(0x13e)](!0x0);}),_0xac21df=_0x3c86ce?0x1:_0xac21df>0.99999?0x1:_0xac21df,_0xac21df=Math['max'](_0x20b2c3[_0x24b3c5(0x128)],_0xac21df),_0x20b2c3[_0x24b3c5(0x128)]=_0xac21df,_0xac21df;},_0x20b2c3[_0x5d819f(0x16d)]=function(){var _0x164aef=_0x5d819f,_0x2d2d06=!0x1;return _0x523774[_0x164aef(0x16e)](_0x20b2c3['chunks'],function(_0x47dc04){var _0x38aa5f=_0x164aef;if(_0x38aa5f(0xf7)==_0x47dc04['status']())return _0x2d2d06=!0x0,!0x1;}),_0x2d2d06;},_0x20b2c3['isComplete']=function(){var _0x330010=_0x5d819f,_0x11428e=!0x1;return _0x523774[_0x330010(0x16e)](_0x20b2c3[_0x330010(0x10c)],function(_0xc6f39b){var _0x59d0dd=_0x330010,_0x124d20=_0xc6f39b[_0x59d0dd(0x123)]();if(_0x59d0dd(0x13b)==_0x124d20||_0x59d0dd(0xf7)==_0x124d20||0x1===_0xc6f39b[_0x59d0dd(0xfc)])return _0x11428e=!0x0,!0x1;}),!_0x11428e;},_0x20b2c3[_0x5d819f(0x13c)]=function(_0x5c5e8b){var _0x74bb9=_0x5d819f;void 0x0===_0x5c5e8b?_0x20b2c3['_pause']=!_0x20b2c3[_0x74bb9(0x187)]:_0x20b2c3[_0x74bb9(0x187)]=_0x5c5e8b;},_0x20b2c3[_0x5d819f(0x17a)]=function(){var _0x1f9592=_0x5d819f;return _0x20b2c3[_0x1f9592(0x187)];},_0x20b2c3[_0x5d819f(0xdb)][_0x5d819f(0x189)](_0x5d819f(0x14d),_0x20b2c3),_0x20b2c3[_0x5d819f(0xfa)](),this;}function _0x5d78db(_0x2221e8,_0x515fdd,_0x215221,_0x212720){var _0x195213=_0x4faddd,_0x4305dd=this;_0x4305dd[_0x195213(0x11d)]={},_0x4305dd[_0x195213(0xe2)]=_0x2221e8[_0x195213(0xe2)],_0x4305dd[_0x195213(0xdb)]=_0x2221e8,_0x4305dd[_0x195213(0x110)]=_0x515fdd,_0x4305dd['fileObjSize']=_0x515fdd[_0x195213(0xda)],_0x4305dd[_0x195213(0x1a0)]=_0x515fdd[_0x195213(0x12a)][_0x195213(0xce)],_0x4305dd[_0x195213(0x147)]=_0x215221,_0x4305dd[_0x195213(0x105)]=_0x212720,_0x4305dd[_0x195213(0x18a)]=new Date(),_0x4305dd['tested']=!0x1,_0x4305dd[_0x195213(0x175)]=0x0,_0x4305dd['pendingRetry']=!0x1,_0x4305dd[_0x195213(0xfc)]=0x0;var _0x43d6a9=_0x4305dd[_0x195213(0xe2)](_0x195213(0xe9));return _0x4305dd[_0x195213(0xf6)]=0x0,_0x4305dd[_0x195213(0x161)]=_0x4305dd[_0x195213(0x147)]*_0x43d6a9,_0x4305dd[_0x195213(0x12d)]=Math[_0x195213(0x15c)](_0x4305dd[_0x195213(0xf4)],(_0x4305dd[_0x195213(0x147)]+0x1)*_0x43d6a9),_0x4305dd[_0x195213(0xf4)]-_0x4305dd[_0x195213(0x12d)]<_0x43d6a9&&!_0x4305dd[_0x195213(0xe2)]('forceChunkSize')&&(_0x4305dd[_0x195213(0x12d)]=_0x4305dd['fileObjSize']),_0x4305dd[_0x195213(0x199)]=null,_0x4305dd[_0x195213(0xd8)]=function(){var _0x3090fd=_0x195213;_0x4305dd[_0x3090fd(0x199)]=new r();var _0x1b0b70=function(_0x2aece0){var _0x55a814=_0x3090fd;_0x4305dd['tested']=!0x0;var _0xb9937e=_0x4305dd['status']();'success'==_0xb9937e?(_0x4305dd[_0x55a814(0x105)](_0xb9937e,_0x4305dd[_0x55a814(0x126)]()),_0x4305dd[_0x55a814(0xdb)]['uploadNextChunk']()):_0x4305dd[_0x55a814(0x122)]();};_0x4305dd[_0x3090fd(0x199)][_0x3090fd(0x136)]('load',_0x1b0b70,!0x1),_0x4305dd[_0x3090fd(0x199)][_0x3090fd(0x136)]('error',_0x1b0b70,!0x1),_0x4305dd['xhr'][_0x3090fd(0x136)]('timeout',_0x1b0b70,!0x1);var _0x388b49=[],_0x16f0ba=_0x4305dd[_0x3090fd(0xe2)](_0x3090fd(0xe0)),_0x49df33=_0x4305dd[_0x3090fd(0xe2)](_0x3090fd(0x18b));_0x3090fd(0xf5)==typeof _0x49df33&&(_0x49df33=_0x49df33(_0x4305dd['fileObj'],_0x4305dd)),_0x523774['each'](_0x49df33,function(_0xde9d23,_0x3b7989){var _0x57f4fb=_0x3090fd;_0x388b49[_0x57f4fb(0xd4)]([encodeURIComponent(_0x16f0ba+_0xde9d23),encodeURIComponent(_0x3b7989)][_0x57f4fb(0x111)]('='));}),_0x388b49=_0x388b49[_0x3090fd(0x142)]([[_0x3090fd(0xea),_0x4305dd['offset']+0x1],[_0x3090fd(0x14c),_0x4305dd[_0x3090fd(0xe2)](_0x3090fd(0xe9))],[_0x3090fd(0x15e),_0x4305dd[_0x3090fd(0x12d)]-_0x4305dd[_0x3090fd(0x161)]],[_0x3090fd(0x13f),_0x4305dd[_0x3090fd(0xf4)]],[_0x3090fd(0x10a),_0x4305dd[_0x3090fd(0x1a0)]],[_0x3090fd(0x14f),_0x4305dd['fileObj'][_0x3090fd(0x14a)]],[_0x3090fd(0x156),_0x4305dd['fileObj']['fileName']],['relativePathParameterName',_0x4305dd[_0x3090fd(0x110)][_0x3090fd(0x176)]],[_0x3090fd(0x149),_0x4305dd[_0x3090fd(0x110)][_0x3090fd(0x10c)]['length']]][_0x3090fd(0x163)](function(_0x31bd40){var _0x2a5fec=_0x3090fd;return _0x4305dd[_0x2a5fec(0xe2)](_0x31bd40[0x0]);})['map'](function(_0x59980c){var _0x1eaff0=_0x3090fd;return[_0x16f0ba+_0x4305dd[_0x1eaff0(0xe2)](_0x59980c[0x0]),encodeURIComponent(_0x59980c[0x1])][_0x1eaff0(0x111)]('=');})),_0x4305dd[_0x3090fd(0x199)][_0x3090fd(0x118)](_0x4305dd[_0x3090fd(0xe2)](_0x3090fd(0xf8)),_0x523774[_0x3090fd(0x117)](_0x3090fd(0xd8),_0x388b49)),_0x4305dd[_0x3090fd(0x199)]['timeout']=_0x4305dd[_0x3090fd(0xe2)](_0x3090fd(0x19b)),_0x4305dd['xhr'][_0x3090fd(0x127)]=_0x4305dd[_0x3090fd(0xe2)](_0x3090fd(0x127));var _0x37216d=_0x4305dd['getOpt'](_0x3090fd(0x18c));_0x3090fd(0xf5)==typeof _0x37216d&&(_0x37216d=_0x37216d(_0x4305dd[_0x3090fd(0x110)],_0x4305dd)),_0x523774['each'](_0x37216d,function(_0x418e53,_0x15c08e){var _0x4a209e=_0x3090fd;_0x4305dd[_0x4a209e(0x199)][_0x4a209e(0x19e)](_0x418e53,_0x15c08e);}),_0x4305dd['xhr'][_0x3090fd(0x122)](null);},_0x4305dd[_0x195213(0x165)]=function(){var _0x2875f9=_0x195213;_0x4305dd[_0x2875f9(0xfc)]=0x2,_0x4305dd[_0x2875f9(0x122)]();},_0x4305dd[_0x195213(0x122)]=function(){var _0x1769ab=_0x195213,_0x5e2810=_0x4305dd[_0x1769ab(0xe2)]('preprocess');if(_0x1769ab(0xf5)==typeof _0x5e2810)switch(_0x4305dd['preprocessState']){case 0x0:_0x4305dd[_0x1769ab(0xfc)]=0x1,_0x5e2810(_0x4305dd);return;case 0x1:return;}if(_0x4305dd['getOpt'](_0x1769ab(0x185))&&!_0x4305dd[_0x1769ab(0x160)]){_0x4305dd[_0x1769ab(0xd8)]();return;}_0x4305dd[_0x1769ab(0x199)]=new r(),_0x4305dd[_0x1769ab(0x199)][_0x1769ab(0x113)][_0x1769ab(0x136)](_0x1769ab(0x13e),function(_0x313f16){var _0x48450e=_0x1769ab;new Date()-_0x4305dd[_0x48450e(0x18a)]>0x3e8*_0x4305dd[_0x48450e(0xe2)]('throttleProgressCallbacks')&&(_0x4305dd[_0x48450e(0x105)]('progress'),_0x4305dd[_0x48450e(0x18a)]=new Date()),_0x4305dd[_0x48450e(0xf6)]=_0x313f16['loaded']||0x0;},!0x1),_0x4305dd[_0x1769ab(0xf6)]=0x0,_0x4305dd[_0x1769ab(0xf2)]=!0x1,_0x4305dd[_0x1769ab(0x105)]('progress');var _0x2650bf=function(_0x493fc0){var _0x5dd266=_0x1769ab,_0x40ab0f=_0x4305dd[_0x5dd266(0x123)]();if(_0x5dd266(0x195)==_0x40ab0f||_0x5dd266(0xed)==_0x40ab0f)_0x4305dd[_0x5dd266(0x105)](_0x40ab0f,_0x4305dd[_0x5dd266(0x126)]()),_0x4305dd[_0x5dd266(0xdb)][_0x5dd266(0x170)]();else{_0x4305dd[_0x5dd266(0x105)](_0x5dd266(0x12b),_0x4305dd[_0x5dd266(0x126)]()),_0x4305dd[_0x5dd266(0x109)](),_0x4305dd[_0x5dd266(0x175)]++;var _0x240391=_0x4305dd[_0x5dd266(0xe2)](_0x5dd266(0x198));void 0x0!==_0x240391?(_0x4305dd['pendingRetry']=!0x0,setTimeout(_0x4305dd['send'],_0x240391)):_0x4305dd[_0x5dd266(0x122)]();}};_0x4305dd['xhr'][_0x1769ab(0x136)](_0x1769ab(0x137),_0x2650bf,!0x1),_0x4305dd[_0x1769ab(0x199)][_0x1769ab(0x136)](_0x1769ab(0xed),_0x2650bf,!0x1),_0x4305dd[_0x1769ab(0x199)][_0x1769ab(0x136)]('timeout',_0x2650bf,!0x1);var _0x4bb363=[[_0x1769ab(0xea),_0x4305dd[_0x1769ab(0x147)]+0x1],[_0x1769ab(0x14c),_0x4305dd[_0x1769ab(0xe2)](_0x1769ab(0xe9))],['currentChunkSizeParameterName',_0x4305dd[_0x1769ab(0x12d)]-_0x4305dd[_0x1769ab(0x161)]],[_0x1769ab(0x13f),_0x4305dd[_0x1769ab(0xf4)]],[_0x1769ab(0x10a),_0x4305dd[_0x1769ab(0x1a0)]],[_0x1769ab(0x14f),_0x4305dd['fileObj'][_0x1769ab(0x14a)]],[_0x1769ab(0x156),_0x4305dd[_0x1769ab(0x110)][_0x1769ab(0x107)]],[_0x1769ab(0x11a),_0x4305dd[_0x1769ab(0x110)][_0x1769ab(0x176)]],[_0x1769ab(0x149),_0x4305dd[_0x1769ab(0x110)]['chunks'][_0x1769ab(0x12e)]]]['filter'](function(_0x2ec7a6){var _0x4a6608=_0x1769ab;return _0x4305dd[_0x4a6608(0xe2)](_0x2ec7a6[0x0]);})[_0x1769ab(0x145)](function(_0x1cae73,_0x48df72){return _0x1cae73[_0x4305dd['getOpt'](_0x48df72[0x0])]=_0x48df72[0x1],_0x1cae73;},{}),_0x1239db=_0x4305dd['getOpt']('query');_0x1769ab(0xf5)==typeof _0x1239db&&(_0x1239db=_0x1239db(_0x4305dd[_0x1769ab(0x110)],_0x4305dd)),_0x523774['each'](_0x1239db,function(_0x3d8d0a,_0x4f1e81){_0x4bb363[_0x3d8d0a]=_0x4f1e81;});var _0x530704=_0x4305dd[_0x1769ab(0x110)][_0x1769ab(0x12a)]['buffer'][_0x1769ab(0x11f)]?_0x1769ab(0x11f):_0x4305dd[_0x1769ab(0x110)][_0x1769ab(0x12a)][_0x1769ab(0x15a)][_0x1769ab(0x148)]?'mozSlice':_0x4305dd['fileObj'][_0x1769ab(0x12a)]['buffer'][_0x1769ab(0x100)]?_0x1769ab(0x100):'slice',_0x25ff98=_0x4305dd[_0x1769ab(0x110)][_0x1769ab(0x12a)][_0x1769ab(0x15a)][_0x530704](_0x4305dd[_0x1769ab(0x161)],_0x4305dd[_0x1769ab(0x12d)],_0x4305dd[_0x1769ab(0xe2)](_0x1769ab(0xe6))?_0x4305dd['fileObj'][_0x1769ab(0x12a)]['type']:''),_0x3a4b17=null,_0x300624=[],_0x4832c8=_0x4305dd[_0x1769ab(0xe2)](_0x1769ab(0xe0));if(_0x1769ab(0x13d)===_0x4305dd[_0x1769ab(0xe2)](_0x1769ab(0xee)))_0x3a4b17=_0x25ff98,_0x523774['each'](_0x4bb363,function(_0x10212b,_0x48a2cf){var _0x267b68=_0x1769ab;_0x300624[_0x267b68(0xd4)]([encodeURIComponent(_0x4832c8+_0x10212b),encodeURIComponent(_0x48a2cf)][_0x267b68(0x111)]('='));});else{if(_0x3a4b17=new FormData(),_0x523774['each'](_0x4bb363,function(_0x475ed1,_0x15f9ca){var _0x396206=_0x1769ab;_0x3a4b17['append'](_0x4832c8+_0x475ed1,_0x15f9ca),_0x300624['push']([encodeURIComponent(_0x4832c8+_0x475ed1),encodeURIComponent(_0x15f9ca)][_0x396206(0x111)]('='));}),_0x1769ab(0x132)==_0x4305dd[_0x1769ab(0xe2)]('chunkFormat'))_0x3a4b17[_0x1769ab(0x15d)](_0x4832c8+_0x4305dd['getOpt'](_0x1769ab(0x152)),_0x25ff98,_0x4305dd['fileObj'][_0x1769ab(0x107)]);else{if(_0x1769ab(0x146)==_0x4305dd[_0x1769ab(0xe2)](_0x1769ab(0x19f))){var _0x36308e=new s();_0x36308e[_0x1769ab(0x112)]=function(_0x86dc98){var _0x482a69=_0x1769ab;_0x3a4b17['append'](_0x4832c8+_0x4305dd[_0x482a69(0xe2)](_0x482a69(0x152)),_0x36308e[_0x482a69(0xfd)]),_0x4305dd[_0x482a69(0x199)]['send'](_0x3a4b17);},_0x36308e[_0x1769ab(0xe7)](_0x25ff98);}}}var _0x5402ee=_0x523774[_0x1769ab(0x117)]('upload',_0x300624),_0x565a5f=_0x4305dd[_0x1769ab(0xe2)](_0x1769ab(0x143));_0x4305dd['xhr'][_0x1769ab(0x118)](_0x565a5f,_0x5402ee),_0x1769ab(0x13d)===_0x4305dd['getOpt'](_0x1769ab(0xee))&&_0x4305dd[_0x1769ab(0x199)]['setRequestHeader'](_0x1769ab(0x196),_0x1769ab(0x171)),_0x4305dd[_0x1769ab(0x199)][_0x1769ab(0xd3)]=_0x4305dd[_0x1769ab(0xe2)](_0x1769ab(0x19b)),_0x4305dd[_0x1769ab(0x199)][_0x1769ab(0x127)]=_0x4305dd[_0x1769ab(0xe2)](_0x1769ab(0x127));var _0x53fb80=_0x4305dd['getOpt'](_0x1769ab(0x18c));_0x1769ab(0xf5)==typeof _0x53fb80&&(_0x53fb80=_0x53fb80(_0x4305dd[_0x1769ab(0x110)],_0x4305dd)),_0x523774[_0x1769ab(0x16e)](_0x53fb80,function(_0x99c5db,_0x58b157){var _0x56c254=_0x1769ab;_0x4305dd[_0x56c254(0x199)][_0x56c254(0x19e)](_0x99c5db,_0x58b157);}),'blob'==_0x4305dd[_0x1769ab(0xe2)](_0x1769ab(0x19f))&&_0x4305dd['xhr']['send'](_0x3a4b17);},_0x4305dd[_0x195213(0x109)]=function(){var _0x176175=_0x195213;_0x4305dd[_0x176175(0x199)]&&_0x4305dd[_0x176175(0x199)][_0x176175(0x109)](),_0x4305dd[_0x176175(0x199)]=null;},_0x4305dd[_0x195213(0x123)]=function(){var _0x5aaa07=_0x195213;return _0x4305dd[_0x5aaa07(0xf2)]?_0x5aaa07(0xf7):_0x4305dd[_0x5aaa07(0x199)]?_0x4305dd[_0x5aaa07(0x199)][_0x5aaa07(0x192)]<0x4?_0x5aaa07(0xf7):0xc8==_0x4305dd[_0x5aaa07(0x199)]['status']||0xc9==_0x4305dd[_0x5aaa07(0x199)][_0x5aaa07(0x123)]?_0x5aaa07(0x195):_0x523774[_0x5aaa07(0x135)](_0x4305dd[_0x5aaa07(0xe2)](_0x5aaa07(0x18f)),_0x4305dd[_0x5aaa07(0x199)][_0x5aaa07(0x123)])||_0x4305dd[_0x5aaa07(0x175)]>=_0x4305dd[_0x5aaa07(0xe2)](_0x5aaa07(0xef))?'error':(_0x4305dd['abort'](),_0x5aaa07(0x13b)):'pending';},_0x4305dd['message']=function(){var _0x3fd719=_0x195213;return _0x4305dd[_0x3fd719(0x199)]?_0x4305dd[_0x3fd719(0x199)]['responseText']:'';},_0x4305dd[_0x195213(0x13e)]=function(_0x4c2ffd){var _0x19631f=_0x195213;void 0x0===_0x4c2ffd&&(_0x4c2ffd=!0x1);var _0x205110=_0x4c2ffd?(_0x4305dd[_0x19631f(0x12d)]-_0x4305dd[_0x19631f(0x161)])/_0x4305dd[_0x19631f(0xf4)]:0x1;if(_0x4305dd[_0x19631f(0xf2)])return 0x0;switch(_0x4305dd[_0x19631f(0x199)]&&_0x4305dd[_0x19631f(0x199)][_0x19631f(0x123)]||(_0x205110*=0.95),_0x4305dd[_0x19631f(0x123)]()){case'success':case _0x19631f(0xed):return 0x1*_0x205110;case _0x19631f(0x13b):return 0x0*_0x205110;default:return _0x4305dd[_0x19631f(0xf6)]/(_0x4305dd[_0x19631f(0x12d)]-_0x4305dd[_0x19631f(0x161)])*_0x205110;}},this;}return _0x57ba0b[_0x4faddd(0x170)]=function(){var _0xfccece=_0x4faddd,_0x231be0=!0x1;if(_0x57ba0b[_0xfccece(0xe2)]('prioritizeFirstAndLastChunk')&&(_0x523774[_0xfccece(0x16e)](_0x57ba0b['files'],function(_0x10dac3){var _0xbe7514=_0xfccece;return _0x10dac3[_0xbe7514(0x10c)][_0xbe7514(0x12e)]&&_0xbe7514(0x13b)==_0x10dac3[_0xbe7514(0x10c)][0x0]['status']()&&0x0===_0x10dac3[_0xbe7514(0x10c)][0x0][_0xbe7514(0xfc)]?(_0x10dac3[_0xbe7514(0x10c)][0x0][_0xbe7514(0x122)](),_0x231be0=!0x0,!0x1):_0x10dac3[_0xbe7514(0x10c)][_0xbe7514(0x12e)]>0x1&&'pending'==_0x10dac3[_0xbe7514(0x10c)][_0x10dac3[_0xbe7514(0x10c)][_0xbe7514(0x12e)]-0x1][_0xbe7514(0x123)]()&&0x0===_0x10dac3[_0xbe7514(0x10c)][_0x10dac3[_0xbe7514(0x10c)][_0xbe7514(0x12e)]-0x1]['preprocessState']?(_0x10dac3[_0xbe7514(0x10c)][_0x10dac3[_0xbe7514(0x10c)]['length']-0x1][_0xbe7514(0x122)](),_0x231be0=!0x0,!0x1):void 0x0;}),_0x231be0)||(_0x523774['each'](_0x57ba0b[_0xfccece(0x14e)],function(_0x57b232){var _0x5c0c99=_0xfccece;if(!0x1===_0x57b232['isPaused']()&&_0x523774[_0x5c0c99(0x16e)](_0x57b232[_0x5c0c99(0x10c)],function(_0x38ba7d){var _0x5d1521=_0x5c0c99;if(_0x5d1521(0x13b)==_0x38ba7d[_0x5d1521(0x123)]()&&0x0===_0x38ba7d[_0x5d1521(0xfc)])return _0x38ba7d[_0x5d1521(0x122)](),_0x231be0=!0x0,!0x1;}),_0x231be0)return!0x1;}),_0x231be0))return!0x0;var _0x59d375=!0x1;return _0x523774['each'](_0x57ba0b[_0xfccece(0x14e)],function(_0x11247){var _0x10b4ff=_0xfccece;if(!_0x11247[_0x10b4ff(0x150)]())return _0x59d375=!0x0,!0x1;}),_0x59d375||_0x57ba0b[_0xfccece(0x189)](_0xfccece(0x101)),!0x1;},_0x57ba0b[_0x4faddd(0x172)]=function(_0x33f942,_0x2e14a7){var _0xd0ab6a=_0x4faddd;void 0x0===_0x33f942[_0xd0ab6a(0x12e)]&&(_0x33f942=[_0x33f942]),_0x523774[_0xd0ab6a(0x16e)](_0x33f942,function(_0x3d1619){var _0x515e7a=_0xd0ab6a;_0x515e7a(0xff)===_0x3d1619[_0x515e7a(0xd1)]&&_0x515e7a(0x12a)===_0x3d1619[_0x515e7a(0xce)]?_0x593952=_0x3d1619:((_0x593952=document[_0x515e7a(0x17f)](_0x515e7a(0x125)))[_0x515e7a(0x116)]('type',_0x515e7a(0x12a)),_0x593952[_0x515e7a(0xe1)]['display']='none',_0x3d1619[_0x515e7a(0x136)](_0x515e7a(0x103),function(){var _0x3d797a=_0x515e7a;_0x593952['style']['opacity']=0x0,_0x593952[_0x3d797a(0xe1)][_0x3d797a(0x16c)]=_0x3d797a(0x193),_0x593952[_0x3d797a(0x10f)](),_0x593952[_0x3d797a(0x103)](),_0x593952[_0x3d797a(0xe1)][_0x3d797a(0x16c)]=_0x3d797a(0x129);},!0x1),_0x3d1619['appendChild'](_0x593952));var _0x593952,_0x2b6116=_0x57ba0b[_0x515e7a(0xe2)](_0x515e7a(0xe8));void 0x0===_0x2b6116||0x1!=_0x2b6116?_0x593952[_0x515e7a(0x116)](_0x515e7a(0x104),_0x515e7a(0x104)):_0x593952[_0x515e7a(0xd2)](_0x515e7a(0x104)),_0x2e14a7?_0x593952[_0x515e7a(0x116)](_0x515e7a(0x17b),_0x515e7a(0x17b)):_0x593952[_0x515e7a(0xd2)](_0x515e7a(0x17b));var _0x2f2942=_0x57ba0b[_0x515e7a(0xe2)](_0x515e7a(0xf9));void 0x0!==_0x2f2942&&_0x2f2942[_0x515e7a(0x12e)]>=0x1?_0x593952['setAttribute'](_0x515e7a(0x18e),_0x2f2942[_0x515e7a(0x10b)](function(_0x59ac5a){return'.'+_0x59ac5a;})[_0x515e7a(0x111)](',')):_0x593952[_0x515e7a(0xd2)](_0x515e7a(0x18e)),_0x593952[_0x515e7a(0x136)](_0x515e7a(0xe4),function(_0x5957c0){var _0x937129=_0x515e7a;_0x51be2b(_0x5957c0['target']['files'],_0x5957c0),_0x57ba0b['getOpt'](_0x937129(0x177))&&(_0x5957c0[_0x937129(0xca)]['value']='');},!0x1);});},_0x57ba0b[_0x4faddd(0xcc)]=function(_0x5cdd8f){var _0x5be18f=_0x4faddd;void 0x0===_0x5cdd8f[_0x5be18f(0x12e)]&&(_0x5cdd8f=[_0x5cdd8f]),_0x523774[_0x5be18f(0x16e)](_0x5cdd8f,function(_0x11c734){var _0x4b5555=_0x5be18f;_0x11c734[_0x4b5555(0x136)](_0x4b5555(0xec),_0x44d362,!0x1),_0x11c734[_0x4b5555(0x136)](_0x4b5555(0x11c),_0x44d362,!0x1),_0x11c734['addEventListener'](_0x4b5555(0x174),_0x2c15a2,!0x1);});},_0x57ba0b[_0x4faddd(0xe3)]=function(_0x2cd219){var _0xd961d=_0x4faddd;void 0x0===_0x2cd219['length']&&(_0x2cd219=[_0x2cd219]),_0x523774[_0xd961d(0x16e)](_0x2cd219,function(_0xde65df){var _0x5d41f6=_0xd961d;_0xde65df[_0x5d41f6(0xdd)]('dragover',_0x44d362),_0xde65df['removeEventListener'](_0x5d41f6(0x11c),_0x44d362),_0xde65df['removeEventListener'](_0x5d41f6(0x174),_0x2c15a2);});},_0x57ba0b[_0x4faddd(0x16d)]=function(){var _0x14e2db=_0x4faddd,_0x5ccd98=!0x1;return _0x523774[_0x14e2db(0x16e)](_0x57ba0b[_0x14e2db(0x14e)],function(_0x27a23d){var _0x1a301e=_0x14e2db;if(_0x27a23d[_0x1a301e(0x16d)]())return _0x5ccd98=!0x0,!0x1;}),_0x5ccd98;},_0x57ba0b[_0x4faddd(0x113)]=function(){var _0x5c666c=_0x4faddd;if(!_0x57ba0b[_0x5c666c(0x16d)]()){_0x57ba0b[_0x5c666c(0x189)]('uploadStart');for(var _0x4eabb9=0x1;_0x4eabb9<=_0x57ba0b[_0x5c666c(0xe2)]('simultaneousUploads');_0x4eabb9++)_0x57ba0b[_0x5c666c(0x170)]();}},_0x57ba0b[_0x4faddd(0x13c)]=function(){var _0x55869a=_0x4faddd;_0x523774[_0x55869a(0x16e)](_0x57ba0b['files'],function(_0x1e4a9a){var _0x468342=_0x55869a;_0x1e4a9a[_0x468342(0x109)]();}),_0x57ba0b[_0x55869a(0x189)](_0x55869a(0x13c));},_0x57ba0b[_0x4faddd(0x16b)]=function(){var _0x2afdec=_0x4faddd;_0x57ba0b[_0x2afdec(0x189)](_0x2afdec(0x11e));for(var _0x5819d5=_0x57ba0b['files'][_0x2afdec(0x12e)]-0x1;_0x5819d5>=0x0;_0x5819d5--)_0x57ba0b[_0x2afdec(0x14e)][_0x5819d5]['cancel']();_0x57ba0b[_0x2afdec(0x189)](_0x2afdec(0x16b));},_0x57ba0b[_0x4faddd(0x13e)]=function(){var _0x33c4c1=_0x4faddd,_0x530b24=0x0,_0x24a2ed=0x0;return _0x523774[_0x33c4c1(0x16e)](_0x57ba0b[_0x33c4c1(0x14e)],function(_0x288fab){var _0x1f110d=_0x33c4c1;_0x530b24+=_0x288fab[_0x1f110d(0x13e)]()*_0x288fab['size'],_0x24a2ed+=_0x288fab['size'];}),_0x24a2ed>0x0?_0x530b24/_0x24a2ed:0x0;},_0x57ba0b[_0x4faddd(0xfb)]=function(_0x38faf2,_0x5b5160){_0x51be2b([_0x38faf2],_0x5b5160);},_0x57ba0b['addFiles']=function(_0xa632aa,_0x1953a6){_0x51be2b(_0xa632aa,_0x1953a6);},_0x57ba0b[_0x4faddd(0xd0)]=function(_0x5827ed){var _0x5b9f17=_0x4faddd;for(var _0x8c89df=_0x57ba0b[_0x5b9f17(0x14e)][_0x5b9f17(0x12e)]-0x1;_0x8c89df>=0x0;_0x8c89df--)_0x57ba0b['files'][_0x8c89df]===_0x5827ed&&_0x57ba0b[_0x5b9f17(0x14e)]['splice'](_0x8c89df,0x1);},_0x57ba0b['getFromUniqueIdentifier']=function(_0x362cc2){var _0x1ccdba=_0x4faddd,_0x52df15=!0x1;return _0x523774['each'](_0x57ba0b[_0x1ccdba(0x14e)],function(_0x3dbb09){var _0x5d8937=_0x1ccdba;_0x3dbb09[_0x5d8937(0x14a)]==_0x362cc2&&(_0x52df15=_0x3dbb09);}),_0x52df15;},_0x57ba0b[_0x4faddd(0x11b)]=function(){var _0x1f3331=_0x4faddd,_0x5799f4=0x0;return _0x523774[_0x1f3331(0x16e)](_0x57ba0b[_0x1f3331(0x14e)],function(_0x4fae12){var _0x29f6af=_0x1f3331;_0x5799f4+=_0x4fae12[_0x29f6af(0xda)];}),_0x5799f4;},_0x57ba0b['handleDropEvent']=function(_0xd41c68){_0x2c15a2(_0xd41c68);},_0x57ba0b[_0x4faddd(0xd6)]=function(_0x59e967){var _0x32943f=_0x4faddd;_0x51be2b(_0x59e967[_0x32943f(0xca)][_0x32943f(0x14e)],_0x59e967),_0x59e967[_0x32943f(0xca)][_0x32943f(0x183)]='';},_0x57ba0b['updateQuery']=function(_0x5651c1){var _0x52d4a2=_0x4faddd;_0x57ba0b['opts'][_0x52d4a2(0x18b)]=_0x5651c1;},this;};function _0x5e2d(_0x5ed0a0,_0x118d71){var _0x20b8f1=_0x20b8();return _0x5e2d=function(_0x5e2d8b,_0xdfc93a){_0x5e2d8b=_0x5e2d8b-0xc9;var _0x285467=_0x20b8f1[_0x5e2d8b];return _0x285467;},_0x5e2d(_0x5ed0a0,_0x118d71);}module[_0x41b77b(0x158)]=o;