attache-rails 1.2.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 80c8e4b1162ddf43b90a59647789c537376ac1fc
4
- data.tar.gz: 3dee083046ac2e67b999842d8518fbc15fa778af
3
+ metadata.gz: 2cfe86f76fd5a554ae12df2b35d5caf64fc2f33b
4
+ data.tar.gz: c7264375ecb8d71c990e072f2bcf771e883b9161
5
5
  SHA512:
6
- metadata.gz: 28b6fe50a55963a0125c8e71df717dc1de05997f2b6152b265430c3fe06455804836a96b0055d4d55a2d670b2f92427c87773e965da9c50931de41836e48252d
7
- data.tar.gz: 60a0e4eaed38097d35345386c18d3bd4cf33c0f1dbf7a2eab1a279bf494ea5738c30e4b7bbdfa5d52f505776364a0811899d7d446d592c8a4f2297a7c12c0b83
6
+ metadata.gz: 21c012b4fc60c73cb9badde551bb36a3507b9c59fe916a35bdadc25d4b56f0f8a4c8c1e7f2dd19c1391fd0d04ba78c8917892eb71b959cdd3a1dde488b4f86ed
7
+ data.tar.gz: d0261a66a609ca86c38a21bde0a28d15a6f60a3606f705bd31c1e2922b46af8575ce0b2e0aaab5c63d0dbd7d2ed62acce7710f9ad1e1e09b2b9c0d16a94061fb
data/README.md CHANGED
@@ -33,17 +33,12 @@ Add the attache javascript to your `application.js`
33
33
 
34
34
  #### Using its components alone
35
35
 
36
- If you prefer to skip automatic upgrading of `input[type=file]`, you can wield `attache_file_input.AttacheFileInput` yourself
37
-
38
- ``` javascript
39
- // = require attache/file_input
40
- ```
41
-
42
- Or use the lower level components
36
+ If you prefer to skip automatic upgrading of `input[type=file]`, you can wield the components yourself
43
37
 
44
38
  ``` javascript
45
39
  //= require attache/cors_upload
46
40
  //= require attache/bootstrap3
41
+ //= require attache/file_input
47
42
 
48
43
  attache_cors_upload.CORSUpload
49
44
  attache_bootstrap3.Bootstrap3FilePreview
@@ -1,9 +1,18 @@
1
1
  (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.attache = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
2
2
  'use strict';
3
3
 
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.upgradeFileInput = undefined;
8
+
9
+ var _bootstrap = require('./attache/bootstrap3');
10
+
4
11
  var _file_input = require('./attache/file_input');
5
12
 
6
- var upgradeFileInput = function upgradeFileInput() {
13
+ var _cors_upload = require('./attache/cors_upload');
14
+
15
+ var upgradeFileInput = exports.upgradeFileInput = function upgradeFileInput() {
7
16
  var safeWords = { 'class': 'className', 'for': 'htmlFor' };
8
17
  var sel = document.getElementsByClassName('enable-attache');
9
18
  var ele, attrs, name, value;
@@ -26,16 +35,20 @@ var upgradeFileInput = function upgradeFileInput() {
26
35
  wrap.className = 'enable-attache';
27
36
  wrap.dataset.attacheProps = JSON.stringify(attrs);
28
37
  ele.parentNode.replaceChild(wrap, ele);
29
- ReactDOM.render(React.createElement(_file_input.AttacheFileInput, React.__spread({}, attrs)), wrap);
38
+ ReactDOM.render(React.createElement(_file_input.AttacheFileInput, $.extend({}, attrs)), wrap);
30
39
  }
31
40
  }; /*global $*/
41
+ /*global window*/
32
42
  /*global React*/
33
43
  /*global ReactDOM*/
34
44
 
45
+ window.attache_cors_upload = { CORSUpload: _cors_upload.CORSUpload };
46
+ window.attache_bootstrap3 = { Bootstrap3Header: _bootstrap.Bootstrap3Header, Bootstrap3FilePreview: _bootstrap.Bootstrap3FilePreview, Bootstrap3Placeholder: _bootstrap.Bootstrap3Placeholder };
47
+ window.attache_file_input = { AttacheFileInput: _file_input.AttacheFileInput };
35
48
  $(document).on('page:change turbolinks:load', upgradeFileInput);
36
49
  $(upgradeFileInput);
37
50
 
38
- },{"./attache/file_input":4}],2:[function(require,module,exports){
51
+ },{"./attache/bootstrap3":2,"./attache/cors_upload":3,"./attache/file_input":4}],2:[function(require,module,exports){
39
52
  'use strict';
40
53
 
41
54
  Object.defineProperty(exports, "__esModule", {
@@ -166,8 +179,8 @@ var CORSUpload = exports.CORSUpload = (function () {
166
179
  // for overwriting
167
180
 
168
181
  _createClass(CORSUpload, [{
169
- key: 'createLocalThumbnail',
170
- value: function createLocalThumbnail() {}
182
+ key: 'onStart',
183
+ value: function onStart() {}
171
184
  }, {
172
185
  key: 'onComplete',
173
186
  value: function onComplete(uid, json) {}
@@ -193,7 +206,7 @@ var CORSUpload = exports.CORSUpload = (function () {
193
206
  _results = [];
194
207
  for (_i = 0, _len = this.files.length; _i < _len; _i++) {
195
208
  f = this.files[_i];
196
- this.createLocalThumbnail(f); // if any
209
+ this.onStart(f); // if any
197
210
  f.uid = prefix + counter++;
198
211
  this.onProgress(f.uid, { src: f.src, filename: f.name, percentLoaded: 0, bytesLoaded: 0, bytesTotal: f.size });
199
212
  _results.push(this.performUpload(f, url));
@@ -253,19 +266,17 @@ var CORSUpload = exports.CORSUpload = (function () {
253
266
  },{}],4:[function(require,module,exports){
254
267
  'use strict';
255
268
 
256
- var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; /*global $*/
257
- /*global window*/
258
- /*global React*/
259
- /*global ReactDOM*/
269
+ var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
260
270
 
261
271
  Object.defineProperty(exports, "__esModule", {
262
272
  value: true
263
273
  });
264
- exports.AttacheFileInput = undefined;
265
-
266
- var _cors_upload = require('./cors_upload');
267
-
268
- var _bootstrap = require('./bootstrap3');
274
+ /*global $*/
275
+ /*global window*/
276
+ /*global React*/
277
+ /*global ReactDOM*/
278
+ /*global attache_bootstrap3 */
279
+ /*global attache_cors_upload */
269
280
 
270
281
  var AttacheFileInput = exports.AttacheFileInput = React.createClass({
271
282
  displayName: 'AttacheFileInput',
@@ -305,7 +316,7 @@ var AttacheFileInput = exports.AttacheFileInput = React.createClass({
305
316
  that.state.uploading = that.state.uploading + files.length;
306
317
  if (!that.state.submit_buttons) that.state.submit_buttons = $("button,input[type='submit']", $(file_element).parents('form')[0]).filter(':not(:disabled)');
307
318
 
308
- var upload = new _cors_upload.CORSUpload({
319
+ var upload = new attache_cors_upload.CORSUpload({
309
320
  file_element: file_element,
310
321
  files: files,
311
322
  onProgress: this.setFileValue,
@@ -351,9 +362,9 @@ var AttacheFileInput = exports.AttacheFileInput = React.createClass({
351
362
  },
352
363
  render: function render() {
353
364
  var that = this;
354
- var Header = window.AttacheHeader || _bootstrap.Bootstrap3Header;
355
- var FilePreview = window.AttacheFilePreview || _bootstrap.Bootstrap3FilePreview;
356
- var Placeholder = window.AttachePlaceholder || _bootstrap.Bootstrap3Placeholder;
365
+ var Header = window.AttacheHeader || attache_bootstrap3.Bootstrap3Header;
366
+ var FilePreview = window.AttacheFilePreview || attache_bootstrap3.Bootstrap3FilePreview;
367
+ var Placeholder = window.AttachePlaceholder || attache_bootstrap3.Bootstrap3Placeholder;
357
368
 
358
369
  if (that.state.uploading > 0) {
359
370
  that.state.submit_buttons.attr('disabled', true);
@@ -426,6 +437,5 @@ var AttacheFileInput = exports.AttacheFileInput = React.createClass({
426
437
  }
427
438
  });
428
439
 
429
- },{"./bootstrap3":2,"./cors_upload":3}]},{},[1])(1)
430
- });
431
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy5udm0vdjQuMS4wL2xpYi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS9ub2RlX21vZHVsZXMvYnJvd3Nlci1wYWNrL19wcmVsdWRlLmpzIiwic3JjL2phdmFzY3JpcHRzL2F0dGFjaGUuanMiLCJzcmMvamF2YXNjcmlwdHMvYXR0YWNoZS9ib290c3RyYXAzLmpzIiwic3JjL2phdmFzY3JpcHRzL2F0dGFjaGUvY29yc191cGxvYWQuanMiLCJzcmMvamF2YXNjcmlwdHMvYXR0YWNoZS9maWxlX2lucHV0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztBQ01BLElBQUksZ0JBQWdCLEdBQUcsU0FBbkIsZ0JBQWdCLEdBQWU7QUFDakMsTUFBSSxTQUFTLEdBQUcsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQTtBQUMxRCxNQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsc0JBQXNCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtBQUMzRCxNQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQTtBQUMzQixPQUFLLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDeEMsT0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUNaLFNBQUssR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQTtBQUNoQyxRQUFJLEtBQUssRUFBRTtBQUNULFdBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO0tBQzFCLE1BQU07QUFDTCxXQUFLLEdBQUcsRUFBRSxDQUFBO0FBQ1YsV0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzlDLFlBQUksR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtBQUM3QixhQUFLLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUE7QUFDL0IsWUFBSSxJQUFJLEtBQUssT0FBTyxFQUFFLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLGlCQUFpQixDQUFDLENBQUE7QUFDaEYsWUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUE7QUFDOUIsYUFBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQTtPQUNwQjtLQUNGO0FBQ0QsUUFBSSxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQUN4QyxRQUFJLENBQUMsU0FBUyxHQUFHLGdCQUFnQixDQUFBO0FBQ2pDLFFBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUE7QUFDakQsT0FBRyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFBO0FBQ3RDLFlBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGFBQWEsYUF6QjlCLGdCQUFnQixFQXlCaUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQTtHQUN4RjtDQUNGOzs7O0FBQUEsQUFFRCxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLDZCQUE2QixFQUFFLGdCQUFnQixDQUFDLENBQUE7QUFDL0QsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUE7Ozs7Ozs7Ozs7O0FDL0JaLElBQUkscUJBQXFCLFdBQXJCLHFCQUFxQixHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7O0FBQ25ELGlCQUFlLDZCQUFJO0FBQ2pCLFdBQU8sRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUE7R0FDdEI7QUFFRCxhQUFXLHVCQUFFLEtBQUssRUFBRTtBQUNsQixRQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQTtBQUN6QyxLQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO0dBQzNDO0FBRUQsWUFBVSxzQkFBRSxLQUFLLEVBQUU7QUFDakIsS0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtHQUM1QztBQUVELFFBQU0sb0JBQUk7QUFDUixRQUFJLGdCQUFnQixHQUFHLHNCQUFzQjs7O0FBQUEsQUFHN0MsUUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRTtBQUN4QyxzQkFBZ0IsR0FBRyxnQkFBZ0IsR0FBRyxrQkFBa0IsQ0FBQTtBQUN4RCxVQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSwwQ0FBMEMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyx1QkFBdUIsR0FBRyxFQUFFLENBQUEsQUFBQyxDQUFBO0FBQ3BJLFVBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFBLEdBQUksR0FBRyxDQUFBO0FBQy9GLFVBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLFlBQVksR0FBRyxTQUFTLENBQUEsQUFBQyxDQUFBO0FBQy9FLFVBQUksUUFBUSxHQUFHLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUE7QUFDcEQsVUFBSSxRQUFRLEdBQ1o7O1VBQUssU0FBUyxFQUFDLFVBQVU7UUFDdkI7OztBQUNFLHFCQUFTLEVBQUUsU0FBUyxBQUFDO0FBQ3JCLGdCQUFJLEVBQUMsYUFBYTtBQUNsQiw2QkFBZSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQUFBQztBQUN4Qyw2QkFBYyxHQUFHO0FBQ2pCLDZCQUFjLEtBQUs7QUFDbkIsaUJBQUssRUFBRSxRQUFRLEFBQUM7VUFDZixPQUFPO1NBQ0o7T0FDRixBQUNMLENBQUE7S0FDRjs7O0FBQUEsQUFHRCxRQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO0FBQ2xCLFVBQUksR0FBRyxHQUFHLDZCQUFLLEdBQUcsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQUFBQyxFQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsV0FBVyxBQUFDLEVBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLEFBQUMsR0FBRyxDQUFBO0tBQzNGOzs7QUFBQSxBQUdELFdBQ0E7O1FBQUssU0FBUyxFQUFFLGdCQUFnQixBQUFDO01BQzlCLFFBQVE7TUFDUixHQUFHO01BQ0o7O1VBQUssU0FBUyxFQUFDLFVBQVU7UUFDdkI7O1lBQUssU0FBUyxFQUFDLFdBQVc7VUFDdkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRO1NBQ2hCO1FBQ047OztBQUNFLGdCQUFJLEVBQUMsU0FBUztBQUNkLHFCQUFTLEVBQUMsWUFBWTtBQUN0QixtQkFBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxBQUFDO0FBQzdCLGlCQUFLLEVBQUMsaUJBQWlCOztTQUFZO09BQ2pDO0tBQ0YsQ0FDTDtHQUNGO0NBQ0YsQ0FBQyxDQUFBOztBQUVLLElBQUkscUJBQXFCLFdBQXJCLHFCQUFxQixHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7O0FBQ25ELFFBQU0sb0JBQUk7QUFDUixXQUNBOztRQUFLLFNBQVMsRUFBQyxzQkFBc0I7TUFDbkMsNkJBQUssR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxBQUFDLEdBQUc7S0FDeEIsQ0FDTDtHQUNGO0NBQ0YsQ0FBQyxDQUFBOztBQUVLLElBQUksZ0JBQWdCLFdBQWhCLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7O0FBQzlDLFFBQU0sb0JBQUk7QUFDUixXQUNBLHFDQUFZLENBQ1g7R0FDRjtDQUNGLENBQUMsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDOUVGLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQTs7SUFFRixVQUFVLFdBQVYsVUFBVTtBQUNyQixXQURXLFVBQVUsQ0FDUixPQUFPLEVBQUU7MEJBRFgsVUFBVTs7QUFFbkIsUUFBSSxPQUFPLElBQUksSUFBSSxFQUFFLE9BQU8sR0FBRyxFQUFFLENBQUE7QUFDakMsUUFBSSxNQUFNLENBQUE7QUFDVixTQUFLLE1BQU0sSUFBSSxPQUFPLEVBQUU7QUFDdEIsVUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQTtLQUMvQjtHQUNGOzs7QUFBQTtlQVBVLFVBQVU7OzJDQVVHLEVBQUc7OzsrQkFDZixHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUc7OzsrQkFDZCxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUc7Ozs0QkFDakIsR0FBRyxFQUFFLE1BQU0sRUFBRTtBQUFFLFdBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQTtLQUFFOzs7dUNBRW5CO0FBQ2xCLFVBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFBO0FBQzVDLFVBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFBO0FBQzNCLFNBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFBO0FBQzVCLFVBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtBQUNyQixXQUFHLEdBQUcsR0FBRyxHQUNQLFFBQVEsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQ2hELFFBQVEsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQ2hELGNBQWMsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLEdBQzVELEVBQUUsQ0FBQTtPQUNMOztBQUVELFlBQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFBO0FBQ3pCLGNBQVEsR0FBRyxFQUFFLENBQUE7QUFDYixXQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUU7QUFDdEQsU0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUE7QUFDbEIsWUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQztBQUFBLEFBQzVCLFNBQUMsQ0FBQyxHQUFHLEdBQUcsTUFBTSxHQUFJLE9BQU8sRUFBRSxBQUFDLENBQUE7QUFDNUIsWUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQTtBQUM5RyxnQkFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFBO09BQzFDO0FBQ0QsYUFBTyxRQUFRLENBQUE7S0FDaEI7OztzQ0FFa0IsTUFBTSxFQUFFLEdBQUcsRUFBRTtBQUM5QixVQUFJLEdBQUcsQ0FBQTtBQUNQLFNBQUcsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFBO0FBQzFCLFVBQUksR0FBRyxDQUFDLGVBQWUsSUFBSSxJQUFJLEVBQUU7QUFDL0IsV0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFBO09BQzVCLE1BQU0sSUFBSSxPQUFPLGNBQWMsS0FBSyxXQUFXLEVBQUU7QUFDaEQsV0FBRyxHQUFHLElBQUksY0FBYyxFQUFFLENBQUE7QUFDMUIsV0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUE7T0FDdEIsTUFBTTtBQUNMLFdBQUcsR0FBRyxJQUFJLENBQUE7T0FDWDtBQUNELGFBQU8sR0FBRyxDQUFBO0tBQ1g7OztrQ0FFYyxJQUFJLEVBQUUsR0FBRyxFQUFFO0FBQ3hCLFVBQUksYUFBYSxFQUFFLEdBQUcsQ0FBQTtBQUN0QixtQkFBYSxHQUFHLElBQUksQ0FBQTtBQUNwQixTQUFHLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQSxBQUFDLEdBQUcsT0FBTyxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUMzRixTQUFHLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQTtBQUN4QyxVQUFJLENBQUMsR0FBRyxFQUFFO0FBQ1IsWUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLG9CQUFvQixDQUFDLENBQUE7T0FDN0MsTUFBTTtBQUNMLFdBQUcsQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDLEVBQUU7QUFDeEIsY0FBSSxHQUFHLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRTtBQUN0Qix5QkFBYSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFBO1dBQ3RFLE1BQU07QUFDTCxtQkFBTyxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLE1BQU0sR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFBO1dBQzFFO1NBQ0YsQ0FBQTtBQUNELFdBQUcsQ0FBQyxPQUFPLEdBQUcsWUFBWTtBQUN4QixpQkFBTyxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsd0JBQXdCLENBQUMsQ0FBQTtTQUNqRSxDQUFBO0FBQ0QsV0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLEVBQUU7QUFDbkMsY0FBSSxhQUFhLENBQUE7QUFDakIsY0FBSSxDQUFDLENBQUMsZ0JBQWdCLEVBQUU7QUFDdEIseUJBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEFBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFJLEdBQUcsQ0FBQyxDQUFBO0FBQ3RELG1CQUFPLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFBO1dBQzVKO1NBQ0YsQ0FBQTtPQUNGO0FBQ0QsYUFBTyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO0tBQ3RCOzs7U0FoRlUsVUFBVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNDaEIsSUFBSSxnQkFBZ0IsV0FBaEIsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQzs7QUFDOUMsaUJBQWUsNkJBQUk7QUFDakIsUUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFBO0FBQ2QsUUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxFQUFFO0FBQzVCLE9BQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsVUFBVSxHQUFHLEVBQUUsSUFBSSxFQUFFO0FBQ2hFLFlBQUksSUFBSSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUE7T0FDNUIsQ0FBQyxDQUFBO0tBQ0g7QUFDRCxXQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFBO0dBQzlEO0FBRUQsVUFBUSxvQkFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO0FBQ2hCLEtBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQTtBQUNsQixLQUFDLENBQUMsZUFBZSxFQUFFLENBQUE7O0FBRW5CLFFBQUksU0FBUyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUk7QUFBQSxBQUMxRCxRQUFJLFFBQVEsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQzs7QUFBQSxBQUUxRSxRQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUE7QUFDN0YsV0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTs7QUFFNUIsUUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7R0FDMUI7QUFFRCxlQUFhLHlCQUFFLFlBQVksRUFBRSxLQUFLLEVBQUU7O0FBRWxDLFFBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsT0FBTTtBQUN4QyxRQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUU7QUFDeEIsVUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFBO0FBQ3JCLFdBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUFBLEtBQ25COztBQUVELFFBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQzs7QUFBQSxBQUV6QixRQUFJLElBQUksR0FBRyxJQUFJLENBQUE7O0FBRWYsUUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQTtBQUMxRCxRQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDLDZCQUE2QixFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQTs7QUFFMUosUUFBSSxNQUFNLEdBQUcsaUJBMUNSLFVBQVUsQ0EwQ2E7QUFDMUIsa0JBQVksRUFBRSxZQUFZO0FBQzFCLFdBQUssRUFBRSxLQUFLO0FBQ1osZ0JBQVUsRUFBRSxJQUFJLENBQUMsWUFBWTtBQUM3QixnQkFBVSx3QkFBSTtBQUNaLFlBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUE7QUFDdEIsWUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFBO09BQ3pDO0FBQ0QsYUFBTyxtQkFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFO0FBQ3BCLFlBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUE7QUFDdEIsWUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLGtDQUFrQyxFQUFFLENBQUMsQ0FBQTtPQUM3RztLQUNGLENBQUMsQ0FBQTtBQUNGLFVBQU0sQ0FBQyxnQkFBZ0IsRUFBRTs7OztBQUFBLEFBSXpCLGdCQUFZLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQTtHQUN4QjtBQUVELFVBQVEsc0JBQUk7QUFDVixRQUFJLFlBQVksR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQTtBQUN4RCxRQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxZQUFZLElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFBO0dBQ3JFO0FBRUQsWUFBVSxzQkFBRSxDQUFDLEVBQUU7QUFDYixLQUFDLENBQUMsZUFBZSxFQUFFLENBQUE7QUFDbkIsS0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFBO0FBQ2xCLEtBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQUE7R0FDM0Q7QUFFRCxhQUFXLHVCQUFFLENBQUMsRUFBRTtBQUNkLEtBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQTtBQUNuQixLQUFDLENBQUMsY0FBYyxFQUFFLENBQUE7QUFDbEIsS0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtHQUM5RDtBQUVELFFBQU0sa0JBQUUsQ0FBQyxFQUFFO0FBQ1QsS0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFBO0FBQ25CLEtBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQTtBQUNsQixRQUFJLFlBQVksR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQTtBQUN4RCxRQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQ3hFLEtBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLENBQUE7R0FDOUQ7QUFFRCxjQUFZLHdCQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUU7QUFDeEIsUUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFBO0FBQzdCLFFBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0dBQzFCO0FBRUQsUUFBTSxvQkFBSTtBQUNSLFFBQUksSUFBSSxHQUFHLElBQUksQ0FBQTtBQUNmLFFBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxhQUFhLGVBN0Y1QixnQkFBZ0IsQUE2RmdDLENBQUE7QUFDckQsUUFBSSxXQUFXLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixlQTlGcEIscUJBQXFCLEFBOEZ3QixDQUFBO0FBQ3BFLFFBQUksV0FBVyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsZUEvRkcscUJBQXFCLEFBK0ZDLENBQUE7O0FBRXBFLFFBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsQ0FBQyxFQUFFO0FBQzVCLFVBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUE7S0FDakQsTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFO0FBQ3BDLFVBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUE7S0FDakQ7O0FBRUQsUUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFBO0FBQ2pCLEtBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsVUFBVSxHQUFHLEVBQUUsTUFBTSxFQUFFOztBQUU5QyxVQUFJLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtBQUM3QyxhQUFPLElBQUksQ0FBQyxHQUFHLENBQUE7QUFDZixhQUFPLElBQUksQ0FBQyxRQUFRLENBQUE7QUFDcEIsVUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7O0FBQUEsQUFFL0IsWUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQTtBQUNyQyxVQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUU7QUFDZixZQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUNsQyxjQUFNLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUE7QUFDbkQsYUFBSyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUE7QUFDekUsYUFBSyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQTtBQUMvQyxjQUFNLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtPQUNwRTtBQUNELFVBQUksVUFBVSxHQUFHLFNBQVMsR0FBRyxHQUFHLENBQUE7QUFDaEMsY0FBUSxDQUFDLElBQUksQ0FDWDs7VUFBSyxHQUFHLEVBQUUsVUFBVSxBQUFDLEVBQUMsU0FBUyxFQUFDLG9CQUFvQjtRQUNsRDtBQUNFLGNBQUksRUFBQyxRQUFRO0FBQ2IsY0FBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxBQUFDO0FBQ3RCLGVBQUssRUFBRSxJQUFJLEFBQUM7QUFDWixrQkFBUSxFQUFDLE1BQU0sR0FBRztRQUNwQixvQkFBQyxXQUFXLGVBQUssTUFBTSxJQUFFLEdBQUcsRUFBRSxHQUFHLEFBQUMsRUFBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxBQUFDLElBQUc7T0FDMUUsQ0FDUCxDQUFBO0tBQ0YsQ0FBQyxDQUFBOztBQUVGLFFBQUksWUFBWSxHQUFHLEVBQUUsQ0FBQTtBQUNyQixRQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsRUFBRTtBQUMzRCxPQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsVUFBVSxHQUFHLEVBQUUsR0FBRyxFQUFFO0FBQ3JFLG9CQUFZLENBQUMsSUFBSSxDQUNmLG9CQUFDLFdBQVcsYUFBQyxHQUFHLEVBQUMsYUFBYSxJQUFLLElBQUksQ0FBQyxLQUFLLElBQUUsR0FBRyxFQUFFLEdBQUcsQUFBQyxJQUFHLENBQzVELENBQUE7T0FDRixDQUFDLENBQUE7S0FDSDs7QUFFRCxRQUFJLFFBQVEsR0FBRyxFQUFFLENBQUE7QUFDakIsS0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixFQUFFLFVBQVUsS0FBSyxFQUFFLE9BQU8sRUFBRTtBQUM5RCxVQUFJLFVBQVUsR0FBRyxTQUFTLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQTtBQUN6QyxjQUFRLENBQUMsSUFBSSxDQUNYO0FBQ0UsV0FBRyxFQUFFLFVBQVUsQUFBQztBQUNoQixZQUFJLEVBQUMsUUFBUTtBQUNiLFlBQUksRUFBRSxPQUFPLENBQUMsU0FBUyxBQUFDO0FBQ3hCLGFBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxBQUFDLEdBQUcsQ0FDMUIsQ0FBQTtLQUNGLENBQUMsQ0FBQTs7QUFFRixRQUFJLFNBQVMsR0FBRyxDQUFDLHVCQUF1QixFQUFFLDZCQUE2QixHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUseUJBQXlCLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUE7QUFDMUwsV0FDQTs7O0FBQ0UsZUFBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxBQUFDO0FBQ3ZCLGlCQUFTLEVBQUUsU0FBUyxBQUFDO0FBQ3JCLGtCQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsQUFBQztBQUM1QixtQkFBVyxFQUFFLElBQUksQ0FBQyxXQUFXLEFBQUM7QUFDOUIsY0FBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEFBQUM7TUFDcEIsd0NBQU8sSUFBSSxFQUFDLE1BQU0sSUFBSyxJQUFJLENBQUMsS0FBSyxJQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxBQUFDLElBQUc7TUFDOUQsK0JBQU8sSUFBSSxFQUFDLFFBQVEsRUFBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEFBQUMsRUFBQyxLQUFLLEVBQUMsRUFBRSxHQUFHO01BQ3ZELG9CQUFDLE1BQU0sRUFBSyxJQUFJLENBQUMsS0FBSyxDQUFJO01BQ3pCLFFBQVE7TUFDUixZQUFZO01BQ1osUUFBUTtLQUNILENBQ1A7R0FDRjtDQUNGLENBQUMsQ0FBQSIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIGUodCxuLHIpe2Z1bmN0aW9uIHMobyx1KXtpZighbltvXSl7aWYoIXRbb10pe3ZhciBhPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7aWYoIXUmJmEpcmV0dXJuIGEobywhMCk7aWYoaSlyZXR1cm4gaShvLCEwKTt2YXIgZj1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK28rXCInXCIpO3Rocm93IGYuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixmfXZhciBsPW5bb109e2V4cG9ydHM6e319O3Rbb11bMF0uY2FsbChsLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIG49dFtvXVsxXVtlXTtyZXR1cm4gcyhuP246ZSl9LGwsbC5leHBvcnRzLGUsdCxuLHIpfXJldHVybiBuW29dLmV4cG9ydHN9dmFyIGk9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rKylzKHJbb10pO3JldHVybiBzfSkiLCIvKmdsb2JhbCAkKi9cbi8qZ2xvYmFsIFJlYWN0Ki9cbi8qZ2xvYmFsIFJlYWN0RE9NKi9cblxuaW1wb3J0IHsgQXR0YWNoZUZpbGVJbnB1dCB9IGZyb20gJy4vYXR0YWNoZS9maWxlX2lucHV0J1xuXG52YXIgdXBncmFkZUZpbGVJbnB1dCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHNhZmVXb3JkcyA9IHsgJ2NsYXNzJzogJ2NsYXNzTmFtZScsICdmb3InOiAnaHRtbEZvcicgfVxuICB2YXIgc2VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZW5hYmxlLWF0dGFjaGUnKVxuICB2YXIgZWxlLCBhdHRycywgbmFtZSwgdmFsdWVcbiAgZm9yICh2YXIgaSA9IHNlbC5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIGVsZSA9IHNlbFtpXVxuICAgIGF0dHJzID0gZWxlLmRhdGFzZXQuYXR0YWNoZVByb3BzXG4gICAgaWYgKGF0dHJzKSB7XG4gICAgICBhdHRycyA9IEpTT04ucGFyc2UoYXR0cnMpXG4gICAgfSBlbHNlIHtcbiAgICAgIGF0dHJzID0ge31cbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZWxlLmF0dHJpYnV0ZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgbmFtZSA9IGVsZS5hdHRyaWJ1dGVzW2pdLm5hbWVcbiAgICAgICAgdmFsdWUgPSBlbGUuYXR0cmlidXRlc1tqXS52YWx1ZVxuICAgICAgICBpZiAobmFtZSA9PT0gJ2NsYXNzJykgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCdlbmFibGUtYXR0YWNoZScsICdhdHRhY2hlLWVuYWJsZWQnKVxuICAgICAgICBuYW1lID0gc2FmZVdvcmRzW25hbWVdIHx8IG5hbWVcbiAgICAgICAgYXR0cnNbbmFtZV0gPSB2YWx1ZVxuICAgICAgfVxuICAgIH1cbiAgICB2YXIgd3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG4gICAgd3JhcC5jbGFzc05hbWUgPSAnZW5hYmxlLWF0dGFjaGUnXG4gICAgd3JhcC5kYXRhc2V0LmF0dGFjaGVQcm9wcyA9IEpTT04uc3RyaW5naWZ5KGF0dHJzKVxuICAgIGVsZS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZCh3cmFwLCBlbGUpXG4gICAgUmVhY3RET00ucmVuZGVyKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQXR0YWNoZUZpbGVJbnB1dCwgUmVhY3QuX19zcHJlYWQoe30sIGF0dHJzKSksIHdyYXApXG4gIH1cbn1cblxuJChkb2N1bWVudCkub24oJ3BhZ2U6Y2hhbmdlIHR1cmJvbGlua3M6bG9hZCcsIHVwZ3JhZGVGaWxlSW5wdXQpXG4kKHVwZ3JhZGVGaWxlSW5wdXQpXG4iLCIvKmdsb2JhbCAkKi9cbi8qZ2xvYmFsIFJlYWN0Ki9cblxuZXhwb3J0IHZhciBCb290c3RyYXAzRmlsZVByZXZpZXcgPSBSZWFjdC5jcmVhdGVDbGFzcyh7XG4gIGdldEluaXRpYWxTdGF0ZSAoKSB7XG4gICAgcmV0dXJuIHsgc3JjV2FzOiAnJyB9XG4gIH0sXG5cbiAgb25TcmNMb2FkZWQgKGV2ZW50KSB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7IHNyY1dhczogdGhpcy5wcm9wcy5zcmMgfSlcbiAgICAkKGV2ZW50LnRhcmdldCkudHJpZ2dlcignYXR0YWNoZTppbWdsb2FkJylcbiAgfSxcblxuICBvblNyY0Vycm9yIChldmVudCkge1xuICAgICQoZXZlbnQudGFyZ2V0KS50cmlnZ2VyKCdhdHRhY2hlOmltZ2Vycm9yJylcbiAgfSxcblxuICByZW5kZXIgKCkge1xuICAgIHZhciBwcmV2aWV3Q2xhc3NOYW1lID0gJ2F0dGFjaGUtZmlsZS1wcmV2aWV3J1xuXG4gICAgLy8gcHJvZ3Jlc3NiYXJcbiAgICBpZiAodGhpcy5zdGF0ZS5zcmNXYXMgIT09IHRoaXMucHJvcHMuc3JjKSB7XG4gICAgICBwcmV2aWV3Q2xhc3NOYW1lID0gcHJldmlld0NsYXNzTmFtZSArICcgYXR0YWNoZS1sb2FkaW5nJ1xuICAgICAgdmFyIGNsYXNzTmFtZSA9IHRoaXMucHJvcHMuY2xhc3NOYW1lIHx8ICdwcm9ncmVzcy1iYXIgcHJvZ3Jlc3MtYmFyLXN0cmlwZWQgYWN0aXZlJyArICh0aGlzLnByb3BzLnNyYyA/ICcgcHJvZ3Jlc3MtYmFyLXN1Y2Nlc3MnIDogJycpXG4gICAgICB2YXIgcGN0U3RyaW5nID0gdGhpcy5wcm9wcy5wY3RTdHJpbmcgfHwgKHRoaXMucHJvcHMuc3JjID8gMTAwIDogdGhpcy5wcm9wcy5wZXJjZW50TG9hZGVkKSArICclJ1xuICAgICAgdmFyIHBjdERlc2MgPSB0aGlzLnByb3BzLnBjdERlc2MgfHwgKHRoaXMucHJvcHMuc3JjID8gJ0xvYWRpbmcuLi4nIDogcGN0U3RyaW5nKVxuICAgICAgdmFyIHBjdFN0eWxlID0geyB3aWR0aDogcGN0U3RyaW5nLCBtaW5XaWR0aDogJzNlbScgfVxuICAgICAgdmFyIHByb2dyZXNzID0gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcm9ncmVzc1wiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICAgICAgcm9sZT1cInByb2dyZXNzYmFyXCJcbiAgICAgICAgICBhcmlhLXZhbHVlbm93PXt0aGlzLnByb3BzLnBlcmNlbnRMb2FkZWR9XG4gICAgICAgICAgYXJpYS12YWx1ZW1pbj1cIjBcIlxuICAgICAgICAgIGFyaWEtdmFsdWVtYXg9XCIxMDBcIlxuICAgICAgICAgIHN0eWxlPXtwY3RTdHlsZX0+XG4gICAgICAgICAge3BjdERlc2N9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICApXG4gICAgfVxuXG4gICAgLy8gaW1nIHRhZ1xuICAgIGlmICh0aGlzLnByb3BzLnNyYykge1xuICAgICAgdmFyIGltZyA9IDxpbWcgc3JjPXt0aGlzLnByb3BzLnNyY30gb25Mb2FkPXt0aGlzLm9uU3JjTG9hZGVkfSBvbkVycm9yPXt0aGlzLm9uU3JjRXJyb3J9IC8+XG4gICAgfVxuXG4gICAgLy8gY29tYmluZWRcbiAgICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtwcmV2aWV3Q2xhc3NOYW1lfT5cbiAgICAgIHtwcm9ncmVzc31cbiAgICAgIHtpbWd9XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImNsZWFyZml4XCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHVsbC1sZWZ0XCI+XG4gICAgICAgICAge3RoaXMucHJvcHMuZmlsZW5hbWV9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YVxuICAgICAgICAgIGhyZWY9XCIjcmVtb3ZlXCJcbiAgICAgICAgICBjbGFzc05hbWU9XCJwdWxsLXJpZ2h0XCJcbiAgICAgICAgICBvbkNsaWNrPXt0aGlzLnByb3BzLm9uUmVtb3ZlfVxuICAgICAgICAgIHRpdGxlPVwiQ2xpY2sgdG8gcmVtb3ZlXCI+JnRpbWVzOzwvYT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIClcbiAgfVxufSlcblxuZXhwb3J0IHZhciBCb290c3RyYXAzUGxhY2Vob2xkZXIgPSBSZWFjdC5jcmVhdGVDbGFzcyh7XG4gIHJlbmRlciAoKSB7XG4gICAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImF0dGFjaGUtZmlsZS1wcmV2aWV3XCI+XG4gICAgICA8aW1nIHNyYz17dGhpcy5wcm9wcy5zcmN9IC8+XG4gICAgPC9kaXY+XG4gICAgKVxuICB9XG59KVxuXG5leHBvcnQgdmFyIEJvb3RzdHJhcDNIZWFkZXIgPSBSZWFjdC5jcmVhdGVDbGFzcyh7XG4gIHJlbmRlciAoKSB7XG4gICAgcmV0dXJuIChcbiAgICA8bm9zY3JpcHQgLz5cbiAgICApXG4gIH1cbn0pXG4iLCIvKmdsb2JhbCAkKi9cbi8qZ2xvYmFsIGFsZXJ0Ki9cbi8qZ2xvYmFsIFhNTEh0dHBSZXF1ZXN0Ki9cbi8qZ2xvYmFsIFhEb21haW5SZXF1ZXN0Ki9cblxudmFyIGNvdW50ZXIgPSAwXG5cbmV4cG9ydCBjbGFzcyBDT1JTVXBsb2FkIHtcbiAgY29uc3RydWN0b3IgKG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucyA9PSBudWxsKSBvcHRpb25zID0ge31cbiAgICB2YXIgb3B0aW9uXG4gICAgZm9yIChvcHRpb24gaW4gb3B0aW9ucykge1xuICAgICAgdGhpc1tvcHRpb25dID0gb3B0aW9uc1tvcHRpb25dXG4gICAgfVxuICB9XG5cbiAgLy8gZm9yIG92ZXJ3cml0aW5nXG4gIGNyZWF0ZUxvY2FsVGh1bWJuYWlsICgpIHsgfVxuICBvbkNvbXBsZXRlICh1aWQsIGpzb24pIHsgfVxuICBvblByb2dyZXNzICh1aWQsIGpzb24pIHsgfVxuICBvbkVycm9yICh1aWQsIHN0YXR1cykgeyBhbGVydChzdGF0dXMpIH1cblxuICBoYW5kbGVGaWxlU2VsZWN0ICgpIHtcbiAgICB2YXIgZiwgX2ksIF9sZW4sIF9yZXN1bHRzLCB1cmwsICRlbGUsIHByZWZpeFxuICAgICRlbGUgPSAkKHRoaXMuZmlsZV9lbGVtZW50KVxuICAgIHVybCA9ICRlbGUuZGF0YSgndXBsb2FkdXJsJylcbiAgICBpZiAoJGVsZS5kYXRhKCdobWFjJykpIHtcbiAgICAgIHVybCA9IHVybCArXG4gICAgICAgICc/aG1hYz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KCRlbGUuZGF0YSgnaG1hYycpKSArXG4gICAgICAgICcmdXVpZD0nICsgZW5jb2RlVVJJQ29tcG9uZW50KCRlbGUuZGF0YSgndXVpZCcpKSArXG4gICAgICAgICcmZXhwaXJhdGlvbj0nICsgZW5jb2RlVVJJQ29tcG9uZW50KCRlbGUuZGF0YSgnZXhwaXJhdGlvbicpKSArXG4gICAgICAgICcnXG4gICAgfVxuXG4gICAgcHJlZml4ID0gRGF0ZS5ub3coKSArICdfJ1xuICAgIF9yZXN1bHRzID0gW11cbiAgICBmb3IgKF9pID0gMCwgX2xlbiA9IHRoaXMuZmlsZXMubGVuZ3RoOyBfaSA8IF9sZW47IF9pKyspIHtcbiAgICAgIGYgPSB0aGlzLmZpbGVzW19pXVxuICAgICAgdGhpcy5jcmVhdGVMb2NhbFRodW1ibmFpbChmKSAvLyBpZiBhbnlcbiAgICAgIGYudWlkID0gcHJlZml4ICsgKGNvdW50ZXIrKylcbiAgICAgIHRoaXMub25Qcm9ncmVzcyhmLnVpZCwgeyBzcmM6IGYuc3JjLCBmaWxlbmFtZTogZi5uYW1lLCBwZXJjZW50TG9hZGVkOiAwLCBieXRlc0xvYWRlZDogMCwgYnl0ZXNUb3RhbDogZi5zaXplIH0pXG4gICAgICBfcmVzdWx0cy5wdXNoKHRoaXMucGVyZm9ybVVwbG9hZChmLCB1cmwpKVxuICAgIH1cbiAgICByZXR1cm4gX3Jlc3VsdHNcbiAgfVxuXG4gIGNyZWF0ZUNPUlNSZXF1ZXN0IChtZXRob2QsIHVybCkge1xuICAgIHZhciB4aHJcbiAgICB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKVxuICAgIGlmICh4aHIud2l0aENyZWRlbnRpYWxzICE9IG51bGwpIHtcbiAgICAgIHhoci5vcGVuKG1ldGhvZCwgdXJsLCB0cnVlKVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIFhEb21haW5SZXF1ZXN0ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgeGhyID0gbmV3IFhEb21haW5SZXF1ZXN0KClcbiAgICAgIHhoci5vcGVuKG1ldGhvZCwgdXJsKVxuICAgIH0gZWxzZSB7XG4gICAgICB4aHIgPSBudWxsXG4gICAgfVxuICAgIHJldHVybiB4aHJcbiAgfVxuXG4gIHBlcmZvcm1VcGxvYWQgKGZpbGUsIHVybCkge1xuICAgIHZhciB0aGlzX3MzdXBsb2FkLCB4aHJcbiAgICB0aGlzX3MzdXBsb2FkID0gdGhpc1xuICAgIHVybCA9IHVybCArICh1cmwuaW5kZXhPZignPycpID09PSAtMSA/ICc/JyA6ICcmJykgKyAnZmlsZT0nICsgZW5jb2RlVVJJQ29tcG9uZW50KGZpbGUubmFtZSlcbiAgICB4aHIgPSB0aGlzLmNyZWF0ZUNPUlNSZXF1ZXN0KCdQVVQnLCB1cmwpXG4gICAgaWYgKCF4aHIpIHtcbiAgICAgIHRoaXMub25FcnJvcihmaWxlLnVpZCwgJ0NPUlMgbm90IHN1cHBvcnRlZCcpXG4gICAgfSBlbHNlIHtcbiAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICBpZiAoeGhyLnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgdGhpc19zM3VwbG9hZC5vbkNvbXBsZXRlKGZpbGUudWlkLCBKU09OLnBhcnNlKGUudGFyZ2V0LnJlc3BvbnNlVGV4dCkpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXNfczN1cGxvYWQub25FcnJvcihmaWxlLnVpZCwgeGhyLnN0YXR1cyArICcgJyArIHhoci5zdGF0dXNUZXh0KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB4aHIub25lcnJvciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNfczN1cGxvYWQub25FcnJvcihmaWxlLnVpZCwgJ1VuYWJsZSB0byByZWFjaCBzZXJ2ZXInKVxuICAgICAgfVxuICAgICAgeGhyLnVwbG9hZC5vbnByb2dyZXNzID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgdmFyIHBlcmNlbnRMb2FkZWRcbiAgICAgICAgaWYgKGUubGVuZ3RoQ29tcHV0YWJsZSkge1xuICAgICAgICAgIHBlcmNlbnRMb2FkZWQgPSBNYXRoLnJvdW5kKChlLmxvYWRlZCAvIGUudG90YWwpICogMTAwKVxuICAgICAgICAgIHJldHVybiB0aGlzX3MzdXBsb2FkLm9uUHJvZ3Jlc3MoZmlsZS51aWQsIHsgc3JjOiBmaWxlLnNyYywgZmlsZW5hbWU6IGZpbGUubmFtZSwgcGVyY2VudExvYWRlZDogcGVyY2VudExvYWRlZCwgYnl0ZXNMb2FkZWQ6IGUubG9hZGVkLCBieXRlc1RvdGFsOiBlLnRvdGFsIH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHhoci5zZW5kKGZpbGUpXG4gIH1cbn1cbiIsIi8qZ2xvYmFsICQqL1xuLypnbG9iYWwgd2luZG93Ki9cbi8qZ2xvYmFsIFJlYWN0Ki9cbi8qZ2xvYmFsIFJlYWN0RE9NKi9cblxuaW1wb3J0IHsgQ09SU1VwbG9hZCB9IGZyb20gJy4vY29yc191cGxvYWQnXG5pbXBvcnQgeyBCb290c3RyYXAzSGVhZGVyLCBCb290c3RyYXAzRmlsZVByZXZpZXcsIEJvb3RzdHJhcDNQbGFjZWhvbGRlciB9IGZyb20gJy4vYm9vdHN0cmFwMydcblxuZXhwb3J0IHZhciBBdHRhY2hlRmlsZUlucHV0ID0gUmVhY3QuY3JlYXRlQ2xhc3Moe1xuICBnZXRJbml0aWFsU3RhdGUgKCkge1xuICAgIHZhciBmaWxlcyA9IHt9XG4gICAgaWYgKHRoaXMucHJvcHNbJ2RhdGEtdmFsdWUnXSkge1xuICAgICAgJC5lYWNoKEpTT04ucGFyc2UodGhpcy5wcm9wc1snZGF0YS12YWx1ZSddKSwgZnVuY3Rpb24gKHVpZCwganNvbikge1xuICAgICAgICBpZiAoanNvbikgZmlsZXNbdWlkXSA9IGpzb25cbiAgICAgIH0pXG4gICAgfVxuICAgIHJldHVybiB7IGZpbGVzOiBmaWxlcywgYXR0YWNoZXNfZGlzY2FyZGVkOiBbXSwgdXBsb2FkaW5nOiAwIH1cbiAgfSxcblxuICBvblJlbW92ZSAodWlkLCBlKSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuXG4gICAgdmFyIGZpZWxkbmFtZSA9IFJlYWN0RE9NLmZpbmRET01Ob2RlKHRoaXMpLmZpcnN0Q2hpbGQubmFtZSAvLyB3aGVuICAgJ3VzZXJbYXZhdGFyXSdcbiAgICB2YXIgbmV3ZmllbGQgPSBmaWVsZG5hbWUucmVwbGFjZSgvXFx3K1xcXShcXFtcXF18KSQvLCAnYXR0YWNoZXNfZGlzY2FyZGVkXVtdJykgLy8gYmVjb21lICd1c2VyW2F0dGFjaGVzX2Rpc2NhcmRlZF1bXSdcblxuICAgIHRoaXMuc3RhdGUuYXR0YWNoZXNfZGlzY2FyZGVkLnB1c2goeyBmaWVsZG5hbWU6IG5ld2ZpZWxkLCBwYXRoOiB0aGlzLnN0YXRlLmZpbGVzW3VpZF0ucGF0aCB9KVxuICAgIGRlbGV0ZSB0aGlzLnN0YXRlLmZpbGVzW3VpZF1cblxuICAgIHRoaXMuc2V0U3RhdGUodGhpcy5zdGF0ZSlcbiAgfSxcblxuICBwZXJmb3JtVXBsb2FkIChmaWxlX2VsZW1lbnQsIGZpbGVzKSB7XG4gICAgLy8gdXNlciBjYW5jZWxsZWQgZmlsZSBjaG9vc2VyIGRpYWxvZy4gaWdub3JlXG4gICAgaWYgKCFmaWxlcyB8fCBmaWxlcy5sZW5ndGggPT09IDApIHJldHVyblxuICAgIGlmICghdGhpcy5wcm9wcy5tdWx0aXBsZSkge1xuICAgICAgdGhpcy5zdGF0ZS5maWxlcyA9IHt9XG4gICAgICBmaWxlcyA9IFtmaWxlc1swXV0gLy8gYXJyYXkgb2YgMSBlbGVtZW50XG4gICAgfVxuXG4gICAgdGhpcy5zZXRTdGF0ZSh0aGlzLnN0YXRlKVxuICAgIC8vIHVwbG9hZCB0aGUgZmlsZSB2aWEgQ09SU1xuICAgIHZhciB0aGF0ID0gdGhpc1xuXG4gICAgdGhhdC5zdGF0ZS51cGxvYWRpbmcgPSB0aGF0LnN0YXRlLnVwbG9hZGluZyArIGZpbGVzLmxlbmd0aFxuICAgIGlmICghdGhhdC5zdGF0ZS5zdWJtaXRfYnV0dG9ucykgdGhhdC5zdGF0ZS5zdWJtaXRfYnV0dG9ucyA9ICQoXCJidXR0b24saW5wdXRbdHlwZT0nc3VibWl0J11cIiwgJChmaWxlX2VsZW1lbnQpLnBhcmVudHMoJ2Zvcm0nKVswXSkuZmlsdGVyKCc6bm90KDpkaXNhYmxlZCknKVxuXG4gICAgdmFyIHVwbG9hZCA9IG5ldyBDT1JTVXBsb2FkKHtcbiAgICAgIGZpbGVfZWxlbWVudDogZmlsZV9lbGVtZW50LFxuICAgICAgZmlsZXM6IGZpbGVzLFxuICAgICAgb25Qcm9ncmVzczogdGhpcy5zZXRGaWxlVmFsdWUsXG4gICAgICBvbkNvbXBsZXRlICgpIHtcbiAgICAgICAgdGhhdC5zdGF0ZS51cGxvYWRpbmctLVxuICAgICAgICB0aGF0LnNldEZpbGVWYWx1ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG4gICAgICB9LFxuICAgICAgb25FcnJvciAodWlkLCBzdGF0dXMpIHtcbiAgICAgICAgdGhhdC5zdGF0ZS51cGxvYWRpbmctLVxuICAgICAgICB0aGF0LnNldEZpbGVWYWx1ZSh1aWQsIHsgcGN0U3RyaW5nOiAnOTAlJywgcGN0RGVzYzogc3RhdHVzLCBjbGFzc05hbWU6ICdwcm9ncmVzcy1iYXIgcHJvZ3Jlc3MtYmFyLWRhbmdlcicgfSlcbiAgICAgIH1cbiAgICB9KVxuICAgIHVwbG9hZC5oYW5kbGVGaWxlU2VsZWN0KClcblxuICAgIC8vIHdlIGRvbid0IHdhbnQgdGhlIGZpbGUgYmluYXJ5IHRvIGJlIHVwbG9hZGVkIGluIHRoZSBtYWluIGZvcm1cbiAgICAvLyBzbyB0aGUgYWN0dWFsIGZpbGUgaW5wdXQgaXMgbmV1dGVyZWRcbiAgICBmaWxlX2VsZW1lbnQudmFsdWUgPSAnJ1xuICB9LFxuXG4gIG9uQ2hhbmdlICgpIHtcbiAgICB2YXIgZmlsZV9lbGVtZW50ID0gUmVhY3RET00uZmluZERPTU5vZGUodGhpcykuZmlyc3RDaGlsZFxuICAgIHRoaXMucGVyZm9ybVVwbG9hZChmaWxlX2VsZW1lbnQsIGZpbGVfZWxlbWVudCAmJiBmaWxlX2VsZW1lbnQuZmlsZXMpXG4gIH0sXG5cbiAgb25EcmFnT3ZlciAoZSkge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAkKFJlYWN0RE9NLmZpbmRET01Ob2RlKHRoaXMpKS5hZGRDbGFzcygnYXR0YWNoZS1kcmFnb3ZlcicpXG4gIH0sXG5cbiAgb25EcmFnTGVhdmUgKGUpIHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgJChSZWFjdERPTS5maW5kRE9NTm9kZSh0aGlzKSkucmVtb3ZlQ2xhc3MoJ2F0dGFjaGUtZHJhZ292ZXInKVxuICB9LFxuXG4gIG9uRHJvcCAoZSkge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICB2YXIgZmlsZV9lbGVtZW50ID0gUmVhY3RET00uZmluZERPTU5vZGUodGhpcykuZmlyc3RDaGlsZFxuICAgIHRoaXMucGVyZm9ybVVwbG9hZChmaWxlX2VsZW1lbnQsIGUudGFyZ2V0LmZpbGVzIHx8IGUuZGF0YVRyYW5zZmVyLmZpbGVzKVxuICAgICQoUmVhY3RET00uZmluZERPTU5vZGUodGhpcykpLnJlbW92ZUNsYXNzKCdhdHRhY2hlLWRyYWdvdmVyJylcbiAgfSxcblxuICBzZXRGaWxlVmFsdWUgKGtleSwgdmFsdWUpIHtcbiAgICB0aGlzLnN0YXRlLmZpbGVzW2tleV0gPSB2YWx1ZVxuICAgIHRoaXMuc2V0U3RhdGUodGhpcy5zdGF0ZSlcbiAgfSxcblxuICByZW5kZXIgKCkge1xuICAgIHZhciB0aGF0ID0gdGhpc1xuICAgIHZhciBIZWFkZXIgPSB3aW5kb3cuQXR0YWNoZUhlYWRlciB8fCBCb290c3RyYXAzSGVhZGVyXG4gICAgdmFyIEZpbGVQcmV2aWV3ID0gd2luZG93LkF0dGFjaGVGaWxlUHJldmlldyB8fCBCb290c3RyYXAzRmlsZVByZXZpZXdcbiAgICB2YXIgUGxhY2Vob2xkZXIgPSB3aW5kb3cuQXR0YWNoZVBsYWNlaG9sZGVyIHx8IEJvb3RzdHJhcDNQbGFjZWhvbGRlclxuXG4gICAgaWYgKHRoYXQuc3RhdGUudXBsb2FkaW5nID4gMCkge1xuICAgICAgdGhhdC5zdGF0ZS5zdWJtaXRfYnV0dG9ucy5hdHRyKCdkaXNhYmxlZCcsIHRydWUpXG4gICAgfSBlbHNlIGlmICh0aGF0LnN0YXRlLnN1Ym1pdF9idXR0b25zKSB7XG4gICAgICB0aGF0LnN0YXRlLnN1Ym1pdF9idXR0b25zLmF0dHIoJ2Rpc2FibGVkJywgbnVsbClcbiAgICB9XG5cbiAgICB2YXIgcHJldmlld3MgPSBbXVxuICAgICQuZWFjaCh0aGF0LnN0YXRlLmZpbGVzLCBmdW5jdGlvbiAoa2V5LCByZXN1bHQpIHtcbiAgICAgIC8vIGpzb24gaXMgaW5wdXRbdmFsdWVdLCBkcm9wIG5vbiBlc3NlbnRpYWwgdmFsdWVzXG4gICAgICB2YXIgY29weSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocmVzdWx0KSlcbiAgICAgIGRlbGV0ZSBjb3B5LnNyY1xuICAgICAgZGVsZXRlIGNvcHkuZmlsZW5hbWVcbiAgICAgIHZhciBqc29uID0gSlNPTi5zdHJpbmdpZnkoY29weSlcbiAgICAgIC8vXG4gICAgICByZXN1bHQubXVsdGlwbGUgPSB0aGF0LnByb3BzLm11bHRpcGxlXG4gICAgICBpZiAocmVzdWx0LnBhdGgpIHtcbiAgICAgICAgdmFyIHBhcnRzID0gcmVzdWx0LnBhdGguc3BsaXQoJy8nKVxuICAgICAgICByZXN1bHQuZmlsZW5hbWUgPSBwYXJ0cy5wb3AoKS5zcGxpdCgvWyM/XS8pLnNoaWZ0KClcbiAgICAgICAgcGFydHMucHVzaChlbmNvZGVVUklDb21wb25lbnQodGhhdC5wcm9wc1snZGF0YS1nZW9tZXRyeSddIHx8ICcxMjh4MTI4IycpKVxuICAgICAgICBwYXJ0cy5wdXNoKGVuY29kZVVSSUNvbXBvbmVudChyZXN1bHQuZmlsZW5hbWUpKVxuICAgICAgICByZXN1bHQuc3JjID0gdGhhdC5wcm9wc1snZGF0YS1kb3dubG9hZHVybCddICsgJy8nICsgcGFydHMuam9pbignLycpXG4gICAgICB9XG4gICAgICB2YXIgcHJldmlld0tleSA9ICdwcmV2aWV3JyArIGtleVxuICAgICAgcHJldmlld3MucHVzaChcbiAgICAgICAgPGRpdiBrZXk9e3ByZXZpZXdLZXl9IGNsYXNzTmFtZT1cImF0dGFjaGUtZmlsZS1pbnB1dFwiPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cImhpZGRlblwiXG4gICAgICAgICAgICBuYW1lPXt0aGF0LnByb3BzLm5hbWV9XG4gICAgICAgICAgICB2YWx1ZT17anNvbn1cbiAgICAgICAgICAgIHJlYWRPbmx5PVwidHJ1ZVwiIC8+XG4gICAgICAgICAgPEZpbGVQcmV2aWV3IHsuLi5yZXN1bHR9IGtleT17a2V5fSBvblJlbW92ZT17dGhhdC5vblJlbW92ZS5iaW5kKHRoYXQsIGtleSl9IC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKVxuICAgIH0pXG5cbiAgICB2YXIgcGxhY2Vob2xkZXJzID0gW11cbiAgICBpZiAocHJldmlld3MubGVuZ3RoID09PSAwICYmIHRoYXQucHJvcHNbJ2RhdGEtcGxhY2Vob2xkZXInXSkge1xuICAgICAgJC5lYWNoKEpTT04ucGFyc2UodGhhdC5wcm9wc1snZGF0YS1wbGFjZWhvbGRlciddKSwgZnVuY3Rpb24gKHVpZCwgc3JjKSB7XG4gICAgICAgIHBsYWNlaG9sZGVycy5wdXNoKFxuICAgICAgICAgIDxQbGFjZWhvbGRlciBrZXk9XCJwbGFjZWhvbGRlclwiIHsuLi50aGF0LnByb3BzfSBzcmM9e3NyY30gLz5cbiAgICAgICAgKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICB2YXIgZGlzY2FyZHMgPSBbXVxuICAgICQuZWFjaCh0aGF0LnN0YXRlLmF0dGFjaGVzX2Rpc2NhcmRlZCwgZnVuY3Rpb24gKGluZGV4LCBkaXNjYXJkKSB7XG4gICAgICB2YXIgZGlzY2FyZEtleSA9ICdkaXNjYXJkJyArIGRpc2NhcmQucGF0aFxuICAgICAgZGlzY2FyZHMucHVzaChcbiAgICAgICAgPGlucHV0XG4gICAgICAgICAga2V5PXtkaXNjYXJkS2V5fVxuICAgICAgICAgIHR5cGU9XCJoaWRkZW5cIlxuICAgICAgICAgIG5hbWU9e2Rpc2NhcmQuZmllbGRuYW1lfVxuICAgICAgICAgIHZhbHVlPXtkaXNjYXJkLnBhdGh9IC8+XG4gICAgICApXG4gICAgfSlcblxuICAgIHZhciBjbGFzc05hbWUgPSBbJ2F0dGFjaGUtZmlsZS1zZWxlY3RvcicsICdhdHRhY2hlLXBsYWNlaG9sZGVycy1jb3VudC0nICsgcGxhY2Vob2xkZXJzLmxlbmd0aCwgJ2F0dGFjaGUtcHJldmlld3MtY291bnQtJyArIHByZXZpZXdzLmxlbmd0aCwgdGhpcy5wcm9wc1snZGF0YS1jbGFzc25hbWUnXV0uam9pbignICcpLnRyaW0oKVxuICAgIHJldHVybiAoXG4gICAgPGxhYmVsXG4gICAgICBodG1sRm9yPXt0aGF0LnByb3BzLmlkfVxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICBvbkRyYWdPdmVyPXt0aGlzLm9uRHJhZ092ZXJ9XG4gICAgICBvbkRyYWdMZWF2ZT17dGhpcy5vbkRyYWdMZWF2ZX1cbiAgICAgIG9uRHJvcD17dGhpcy5vbkRyb3B9PlxuICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgey4uLnRoYXQucHJvcHN9IG9uQ2hhbmdlPXt0aGlzLm9uQ2hhbmdlfSAvPlxuICAgICAgPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPXt0aGF0LnByb3BzLm5hbWV9IHZhbHVlPVwiXCIgLz5cbiAgICAgIDxIZWFkZXIgey4uLnRoYXQucHJvcHN9IC8+XG4gICAgICB7cHJldmlld3N9XG4gICAgICB7cGxhY2Vob2xkZXJzfVxuICAgICAge2Rpc2NhcmRzfVxuICAgIDwvbGFiZWw+XG4gICAgKVxuICB9XG59KVxuIl19
440
+ },{}]},{},[1])(1)
441
+ });
@@ -98,5 +98,4 @@ var Bootstrap3Header = exports.Bootstrap3Header = React.createClass({
98
98
  });
99
99
 
100
100
  },{}]},{},[1])(1)
101
- });
102
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy5udm0vdjQuMS4wL2xpYi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS9ub2RlX21vZHVsZXMvYnJvd3Nlci1wYWNrL19wcmVsdWRlLmpzIiwic3JjL2phdmFzY3JpcHRzL2F0dGFjaGUvYm9vdHN0cmFwMy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7O0FDR08sSUFBSSxxQkFBcUIsV0FBckIscUJBQXFCLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQzs7QUFDbkQsaUJBQWUsNkJBQUk7QUFDakIsV0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQTtHQUN0QjtBQUVELGFBQVcsdUJBQUUsS0FBSyxFQUFFO0FBQ2xCLFFBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFBO0FBQ3pDLEtBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUE7R0FDM0M7QUFFRCxZQUFVLHNCQUFFLEtBQUssRUFBRTtBQUNqQixLQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO0dBQzVDO0FBRUQsUUFBTSxvQkFBSTtBQUNSLFFBQUksZ0JBQWdCLEdBQUcsc0JBQXNCOzs7QUFBQSxBQUc3QyxRQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO0FBQ3hDLHNCQUFnQixHQUFHLGdCQUFnQixHQUFHLGtCQUFrQixDQUFBO0FBQ3hELFVBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLDBDQUEwQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLHVCQUF1QixHQUFHLEVBQUUsQ0FBQSxBQUFDLENBQUE7QUFDcEksVUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUEsR0FBSSxHQUFHLENBQUE7QUFDL0YsVUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsWUFBWSxHQUFHLFNBQVMsQ0FBQSxBQUFDLENBQUE7QUFDL0UsVUFBSSxRQUFRLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQTtBQUNwRCxVQUFJLFFBQVEsR0FDWjs7VUFBSyxTQUFTLEVBQUMsVUFBVTtRQUN2Qjs7O0FBQ0UscUJBQVMsRUFBRSxTQUFTLEFBQUM7QUFDckIsZ0JBQUksRUFBQyxhQUFhO0FBQ2xCLDZCQUFlLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxBQUFDO0FBQ3hDLDZCQUFjLEdBQUc7QUFDakIsNkJBQWMsS0FBSztBQUNuQixpQkFBSyxFQUFFLFFBQVEsQUFBQztVQUNmLE9BQU87U0FDSjtPQUNGLEFBQ0wsQ0FBQTtLQUNGOzs7QUFBQSxBQUdELFFBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUU7QUFDbEIsVUFBSSxHQUFHLEdBQUcsNkJBQUssR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxBQUFDLEVBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXLEFBQUMsRUFBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsQUFBQyxHQUFHLENBQUE7S0FDM0Y7OztBQUFBLEFBR0QsV0FDQTs7UUFBSyxTQUFTLEVBQUUsZ0JBQWdCLEFBQUM7TUFDOUIsUUFBUTtNQUNSLEdBQUc7TUFDSjs7VUFBSyxTQUFTLEVBQUMsVUFBVTtRQUN2Qjs7WUFBSyxTQUFTLEVBQUMsV0FBVztVQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVE7U0FDaEI7UUFDTjs7O0FBQ0UsZ0JBQUksRUFBQyxTQUFTO0FBQ2QscUJBQVMsRUFBQyxZQUFZO0FBQ3RCLG1CQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEFBQUM7QUFDN0IsaUJBQUssRUFBQyxpQkFBaUI7O1NBQVk7T0FDakM7S0FDRixDQUNMO0dBQ0Y7Q0FDRixDQUFDLENBQUE7O0FBRUssSUFBSSxxQkFBcUIsV0FBckIscUJBQXFCLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQzs7QUFDbkQsUUFBTSxvQkFBSTtBQUNSLFdBQ0E7O1FBQUssU0FBUyxFQUFDLHNCQUFzQjtNQUNuQyw2QkFBSyxHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEFBQUMsR0FBRztLQUN4QixDQUNMO0dBQ0Y7Q0FDRixDQUFDLENBQUE7O0FBRUssSUFBSSxnQkFBZ0IsV0FBaEIsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQzs7QUFDOUMsUUFBTSxvQkFBSTtBQUNSLFdBQ0EscUNBQVksQ0FDWDtHQUNGO0NBQ0YsQ0FBQyxDQUFBIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrbytcIidcIik7dGhyb3cgZi5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSIsIi8qZ2xvYmFsICQqL1xuLypnbG9iYWwgUmVhY3QqL1xuXG5leHBvcnQgdmFyIEJvb3RzdHJhcDNGaWxlUHJldmlldyA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtcbiAgZ2V0SW5pdGlhbFN0YXRlICgpIHtcbiAgICByZXR1cm4geyBzcmNXYXM6ICcnIH1cbiAgfSxcblxuICBvblNyY0xvYWRlZCAoZXZlbnQpIHtcbiAgICB0aGlzLnNldFN0YXRlKHsgc3JjV2FzOiB0aGlzLnByb3BzLnNyYyB9KVxuICAgICQoZXZlbnQudGFyZ2V0KS50cmlnZ2VyKCdhdHRhY2hlOmltZ2xvYWQnKVxuICB9LFxuXG4gIG9uU3JjRXJyb3IgKGV2ZW50KSB7XG4gICAgJChldmVudC50YXJnZXQpLnRyaWdnZXIoJ2F0dGFjaGU6aW1nZXJyb3InKVxuICB9LFxuXG4gIHJlbmRlciAoKSB7XG4gICAgdmFyIHByZXZpZXdDbGFzc05hbWUgPSAnYXR0YWNoZS1maWxlLXByZXZpZXcnXG5cbiAgICAvLyBwcm9ncmVzc2JhclxuICAgIGlmICh0aGlzLnN0YXRlLnNyY1dhcyAhPT0gdGhpcy5wcm9wcy5zcmMpIHtcbiAgICAgIHByZXZpZXdDbGFzc05hbWUgPSBwcmV2aWV3Q2xhc3NOYW1lICsgJyBhdHRhY2hlLWxvYWRpbmcnXG4gICAgICB2YXIgY2xhc3NOYW1lID0gdGhpcy5wcm9wcy5jbGFzc05hbWUgfHwgJ3Byb2dyZXNzLWJhciBwcm9ncmVzcy1iYXItc3RyaXBlZCBhY3RpdmUnICsgKHRoaXMucHJvcHMuc3JjID8gJyBwcm9ncmVzcy1iYXItc3VjY2VzcycgOiAnJylcbiAgICAgIHZhciBwY3RTdHJpbmcgPSB0aGlzLnByb3BzLnBjdFN0cmluZyB8fCAodGhpcy5wcm9wcy5zcmMgPyAxMDAgOiB0aGlzLnByb3BzLnBlcmNlbnRMb2FkZWQpICsgJyUnXG4gICAgICB2YXIgcGN0RGVzYyA9IHRoaXMucHJvcHMucGN0RGVzYyB8fCAodGhpcy5wcm9wcy5zcmMgPyAnTG9hZGluZy4uLicgOiBwY3RTdHJpbmcpXG4gICAgICB2YXIgcGN0U3R5bGUgPSB7IHdpZHRoOiBwY3RTdHJpbmcsIG1pbldpZHRoOiAnM2VtJyB9XG4gICAgICB2YXIgcHJvZ3Jlc3MgPSAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInByb2dyZXNzXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgICAgICByb2xlPVwicHJvZ3Jlc3NiYXJcIlxuICAgICAgICAgIGFyaWEtdmFsdWVub3c9e3RoaXMucHJvcHMucGVyY2VudExvYWRlZH1cbiAgICAgICAgICBhcmlhLXZhbHVlbWluPVwiMFwiXG4gICAgICAgICAgYXJpYS12YWx1ZW1heD1cIjEwMFwiXG4gICAgICAgICAgc3R5bGU9e3BjdFN0eWxlfT5cbiAgICAgICAgICB7cGN0RGVzY31cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIClcbiAgICB9XG5cbiAgICAvLyBpbWcgdGFnXG4gICAgaWYgKHRoaXMucHJvcHMuc3JjKSB7XG4gICAgICB2YXIgaW1nID0gPGltZyBzcmM9e3RoaXMucHJvcHMuc3JjfSBvbkxvYWQ9e3RoaXMub25TcmNMb2FkZWR9IG9uRXJyb3I9e3RoaXMub25TcmNFcnJvcn0gLz5cbiAgICB9XG5cbiAgICAvLyBjb21iaW5lZFxuICAgIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e3ByZXZpZXdDbGFzc05hbWV9PlxuICAgICAge3Byb2dyZXNzfVxuICAgICAge2ltZ31cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY2xlYXJmaXhcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwdWxsLWxlZnRcIj5cbiAgICAgICAgICB7dGhpcy5wcm9wcy5maWxlbmFtZX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxhXG4gICAgICAgICAgaHJlZj1cIiNyZW1vdmVcIlxuICAgICAgICAgIGNsYXNzTmFtZT1cInB1bGwtcmlnaHRcIlxuICAgICAgICAgIG9uQ2xpY2s9e3RoaXMucHJvcHMub25SZW1vdmV9XG4gICAgICAgICAgdGl0bGU9XCJDbGljayB0byByZW1vdmVcIj4mdGltZXM7PC9hPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgKVxuICB9XG59KVxuXG5leHBvcnQgdmFyIEJvb3RzdHJhcDNQbGFjZWhvbGRlciA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtcbiAgcmVuZGVyICgpIHtcbiAgICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiYXR0YWNoZS1maWxlLXByZXZpZXdcIj5cbiAgICAgIDxpbWcgc3JjPXt0aGlzLnByb3BzLnNyY30gLz5cbiAgICA8L2Rpdj5cbiAgICApXG4gIH1cbn0pXG5cbmV4cG9ydCB2YXIgQm9vdHN0cmFwM0hlYWRlciA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtcbiAgcmVuZGVyICgpIHtcbiAgICByZXR1cm4gKFxuICAgIDxub3NjcmlwdCAvPlxuICAgIClcbiAgfVxufSlcbiJdfQ==
101
+ });
@@ -30,8 +30,8 @@ var CORSUpload = exports.CORSUpload = (function () {
30
30
  // for overwriting
31
31
 
32
32
  _createClass(CORSUpload, [{
33
- key: 'createLocalThumbnail',
34
- value: function createLocalThumbnail() {}
33
+ key: 'onStart',
34
+ value: function onStart() {}
35
35
  }, {
36
36
  key: 'onComplete',
37
37
  value: function onComplete(uid, json) {}
@@ -57,7 +57,7 @@ var CORSUpload = exports.CORSUpload = (function () {
57
57
  _results = [];
58
58
  for (_i = 0, _len = this.files.length; _i < _len; _i++) {
59
59
  f = this.files[_i];
60
- this.createLocalThumbnail(f); // if any
60
+ this.onStart(f); // if any
61
61
  f.uid = prefix + counter++;
62
62
  this.onProgress(f.uid, { src: f.src, filename: f.name, percentLoaded: 0, bytesLoaded: 0, bytesTotal: f.size });
63
63
  _results.push(this.performUpload(f, url));
@@ -115,5 +115,4 @@ var CORSUpload = exports.CORSUpload = (function () {
115
115
  })();
116
116
 
117
117
  },{}]},{},[1])(1)
118
- });
119
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy5udm0vdjQuMS4wL2xpYi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS9ub2RlX21vZHVsZXMvYnJvd3Nlci1wYWNrL19wcmVsdWRlLmpzIiwic3JjL2phdmFzY3JpcHRzL2F0dGFjaGUvY29yc191cGxvYWQuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7QUNLQSxJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUE7O0lBRUYsVUFBVSxXQUFWLFVBQVU7QUFDckIsV0FEVyxVQUFVLENBQ1IsT0FBTyxFQUFFOzBCQURYLFVBQVU7O0FBRW5CLFFBQUksT0FBTyxJQUFJLElBQUksRUFBRSxPQUFPLEdBQUcsRUFBRSxDQUFBO0FBQ2pDLFFBQUksTUFBTSxDQUFBO0FBQ1YsU0FBSyxNQUFNLElBQUksT0FBTyxFQUFFO0FBQ3RCLFVBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUE7S0FDL0I7R0FDRjs7O0FBQUE7ZUFQVSxVQUFVOzsyQ0FVRyxFQUFHOzs7K0JBQ2YsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFHOzs7K0JBQ2QsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFHOzs7NEJBQ2pCLEdBQUcsRUFBRSxNQUFNLEVBQUU7QUFBRSxXQUFLLENBQUMsTUFBTSxDQUFDLENBQUE7S0FBRTs7O3VDQUVuQjtBQUNsQixVQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQTtBQUM1QyxVQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQTtBQUMzQixTQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQTtBQUM1QixVQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7QUFDckIsV0FBRyxHQUFHLEdBQUcsR0FDUCxRQUFRLEdBQUcsa0JBQWtCLENB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Q0wsbUJBQU8sYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxNQUFNLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQTtXQUMxRTtTQUNGLENBQUE7QUFDRCxXQUFHLENBQUMsT0FBTyxHQUFHLFlBQVk7QUFDeEIsaUJBQU8sYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLHdCQUF3QixDQUFDLENBQUE7U0FDakUsQ0FBQTtBQUNELFdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxFQUFFO0FBQ25DLGNBQUksYUFBYSxDQUFBO0FBQ2pCLGNBQUksQ0FBQyxDQUFDLGdCQUFnQixFQUFFO0FBQ3RCLHlCQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxBQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBSSxHQUFHLENBQUMsQ0FBQTtBQUN0RCxtQkFBTyxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQTtXQUM1SjtTQUNGLENBQUE7T0FDRjtBQUNELGFBQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtLQUN0Qjs7O1NBaEZVLFVBQVUiLCJmaWxlIjoiZ2VuZXJhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiBlKHQsbixyKXtmdW5jdGlvbiBzKG8sdSl7aWYoIW5bb10pe2lmKCF0W29dKXt2YXIgYT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2lmKCF1JiZhKXJldHVybiBhKG8sITApO2lmKGkpcmV0dXJuIGkobywhMCk7dmFyIGY9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitvK1wiJ1wiKTt0aHJvdyBmLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsZn12YXIgbD1uW29dPXtleHBvcnRzOnt9fTt0W29dWzBdLmNhbGwobC5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBuPXRbb11bMV1bZV07cmV0dXJuIHMobj9uOmUpfSxsLGwuZXhwb3J0cyxlLHQsbixyKX1yZXR1cm4gbltvXS5leHBvcnRzfXZhciBpPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7Zm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspcyhyW29dKTtyZXR1cm4gc30pIiwiLypnbG9iYWwgJCovXG4vKmdsb2JhbCBhbGVydCovXG4vKmdsb2JhbCBYTUxIdHRwUmVxdWVzdCovXG4vKmdsb2JhbCBYRG9tYWluUmVxdWVzdCovXG5cbnZhciBjb3VudGVyID0gMFxuXG5leHBvcnQgY2xhc3MgQ09SU1VwbG9hZCB7XG4gIGNvbnN0cnVjdG9yIChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9XG4gICAgdmFyIG9wdGlvblxuICAgIGZvciAob3B0aW9uIGluIG9wdGlvbnMpIHtcbiAgICAgIHRoaXNbb3B0aW9uXSA9IG9wdGlvbnNbb3B0aW9uXVxuICAgIH1cbiAgfVxuXG4gIC8vIGZvciBvdmVyd3JpdGluZ1xuICBjcmVhdGVMb2NhbFRodW1ibmFpbCAoKSB7IH1cbiAgb25Db21wbGV0ZSAodWlkLCBqc29uKSB7IH1cbiAgb25Qcm9ncmVzcyAodWlkLCBqc29uKSB7IH1cbiAgb25FcnJvciAodWlkLCBzdGF0dXMpIHsgYWxlcnQoc3RhdHVzKSB9XG5cbiAgaGFuZGxlRmlsZVNlbGVjdCAoKSB7XG4gICAgdmFyIGYsIF9pLCBfbGVuLCBfcmVzdWx0cywgdXJsLCAkZWxlLCBwcmVmaXhcbiAgICAkZWxlID0gJCh0aGlzLmZpbGVfZWxlbWVudClcbiAgICB1cmwgPSAkZWxlLmRhdGEoJ3VwbG9hZHVybCcpXG4gICAgaWYgKCRlbGUuZGF0YSgnaG1hYycpKSB7XG4gICAgICB1cmwgPSB1cmwgK1xuICAgICAgICAnP2htYWM9JyArIGVuY29kZVVSSUNvbXBvbmVudCgkZWxlLmRhdGEoJ2htYWMnKSkgK1xuICAgICAgICAnJnV1aWQ9JyArIGVuY29kZVVSSUNvbXBvbmVudCgkZWxlLmRhdGEoJ3V1aWQnKSkgK1xuICAgICAgICAnJmV4cGlyYXRpb249JyArIGVuY29kZVVSSUNvbXBvbmVudCgkZWxlLmRhdGEoJ2V4cGlyYXRpb24nKSkgK1xuICAgICAgICAnJ1xuICAgIH1cblxuICAgIHByZWZpeCA9IERhdGUubm93KCkgKyAnXydcbiAgICBfcmVzdWx0cyA9IFtdXG4gICAgZm9yIChfaSA9IDAsIF9sZW4gPSB0aGlzLmZpbGVzLmxlbmd0aDsgX2kgPCBfbGVuOyBfaSsrKSB7XG4gICAgICBmID0gdGhpcy5maWxlc1tfaV1cbiAgICAgIHRoaXMuY3JlYXRlTG9jYWxUaHVtYm5haWwoZikgLy8gaWYgYW55XG4gICAgICBmLnVpZCA9IHByZWZpeCArIChjb3VudGVyKyspXG4gICAgICB0aGlzLm9uUHJvZ3Jlc3MoZi51aWQsIHsgc3JjOiBmLnNyYywgZmlsZW5hbWU6IGYubmFtZSwgcGVyY2VudExvYWRlZDogMCwgYnl0ZXNMb2FkZWQ6IDAsIGJ5dGVzVG90YWw6IGYuc2l6ZSB9KVxuICAgICAgX3Jlc3VsdHMucHVzaCh0aGlzLnBlcmZvcm1VcGxvYWQoZiwgdXJsKSlcbiAgICB9XG4gICAgcmV0dXJuIF9yZXN1bHRzXG4gIH1cblxuICBjcmVhdGVDT1JTUmVxdWVzdCAobWV0aG9kLCB1cmwpIHtcbiAgICB2YXIgeGhyXG4gICAgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KClcbiAgICBpZiAoeGhyLndpdGhDcmVkZW50aWFscyAhPSBudWxsKSB7XG4gICAgICB4aHIub3BlbihtZXRob2QsIHVybCwgdHJ1ZSlcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBYRG9tYWluUmVxdWVzdCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHhociA9IG5ldyBYRG9tYWluUmVxdWVzdCgpXG4gICAgICB4aHIub3BlbihtZXRob2QsIHVybClcbiAgICB9IGVsc2Uge1xuICAgICAgeGhyID0gbnVsbFxuICAgIH1cbiAgICByZXR1cm4geGhyXG4gIH1cblxuICBwZXJmb3JtVXBsb2FkIChmaWxlLCB1cmwpIHtcbiAgICB2YXIgdGhpc19zM3VwbG9hZCwgeGhyXG4gICAgdGhpc19zM3VwbG9hZCA9IHRoaXNcbiAgICB1cmwgPSB1cmwgKyAodXJsLmluZGV4T2YoJz8nKSA9PT0gLTEgPyAnPycgOiAnJicpICsgJ2ZpbGU9JyArIGVuY29kZVVSSUNvbXBvbmVudChmaWxlLm5hbWUpXG4gICAgeGhyID0gdGhpcy5jcmVhdGVDT1JTUmVxdWVzdCgnUFVUJywgdXJsKVxuICAgIGlmICgheGhyKSB7XG4gICAgICB0aGlzLm9uRXJyb3IoZmlsZS51aWQsICdDT1JTIG5vdCBzdXBwb3J0ZWQnKVxuICAgIH0gZWxzZSB7XG4gICAgICB4aHIub25sb2FkID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgaWYgKHhoci5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgICAgIHRoaXNfczN1cGxvYWQub25Db21wbGV0ZShmaWxlLnVpZCwgSlNPTi5wYXJzZShlLnRhcmdldC5yZXNwb25zZVRleHQpKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aGlzX3MzdXBsb2FkLm9uRXJyb3IoZmlsZS51aWQsIHhoci5zdGF0dXMgKyAnICcgKyB4aHIuc3RhdHVzVGV4dClcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgeGhyLm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzX3MzdXBsb2FkLm9uRXJyb3IoZmlsZS51aWQsICdVbmFibGUgdG8gcmVhY2ggc2VydmVyJylcbiAgICAgIH1cbiAgICAgIHhoci51cGxvYWQub25wcm9ncmVzcyA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIHZhciBwZXJjZW50TG9hZGVkXG4gICAgICAgIGlmIChlLmxlbmd0aENvbXB1dGFibGUpIHtcbiAgICAgICAgICBwZXJjZW50TG9hZGVkID0gTWF0aC5yb3VuZCgoZS5sb2FkZWQgLyBlLnRvdGFsKSAqIDEwMClcbiAgICAgICAgICByZXR1cm4gdGhpc19zM3VwbG9hZC5vblByb2dyZXNzKGZpbGUudWlkLCB7IHNyYzogZmlsZS5zcmMsIGZpbGVuYW1lOiBmaWxlLm5hbWUsIHBlcmNlbnRMb2FkZWQ6IHBlcmNlbnRMb2FkZWQsIGJ5dGVzTG9hZGVkOiBlLmxvYWRlZCwgYnl0ZXNUb3RhbDogZS50b3RhbCB9KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB4aHIuc2VuZChmaWxlKVxuICB9XG59XG4iXX0=
118
+ });
@@ -1,234 +1,17 @@
1
1
  (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.attache_file_input = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
2
2
  'use strict';
3
3
 
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- /*global $*/
8
- /*global React*/
9
-
10
- var Bootstrap3FilePreview = exports.Bootstrap3FilePreview = React.createClass({
11
- displayName: 'Bootstrap3FilePreview',
12
- getInitialState: function getInitialState() {
13
- return { srcWas: '' };
14
- },
15
- onSrcLoaded: function onSrcLoaded(event) {
16
- this.setState({ srcWas: this.props.src });
17
- $(event.target).trigger('attache:imgload');
18
- },
19
- onSrcError: function onSrcError(event) {
20
- $(event.target).trigger('attache:imgerror');
21
- },
22
- render: function render() {
23
- var previewClassName = 'attache-file-preview';
24
-
25
- // progressbar
26
- if (this.state.srcWas !== this.props.src) {
27
- previewClassName = previewClassName + ' attache-loading';
28
- var className = this.props.className || 'progress-bar progress-bar-striped active' + (this.props.src ? ' progress-bar-success' : '');
29
- var pctString = this.props.pctString || (this.props.src ? 100 : this.props.percentLoaded) + '%';
30
- var pctDesc = this.props.pctDesc || (this.props.src ? 'Loading...' : pctString);
31
- var pctStyle = { width: pctString, minWidth: '3em' };
32
- var progress = React.createElement(
33
- 'div',
34
- { className: 'progress' },
35
- React.createElement(
36
- 'div',
37
- {
38
- className: className,
39
- role: 'progressbar',
40
- 'aria-valuenow': this.props.percentLoaded,
41
- 'aria-valuemin': '0',
42
- 'aria-valuemax': '100',
43
- style: pctStyle },
44
- pctDesc
45
- )
46
- );
47
- }
48
-
49
- // img tag
50
- if (this.props.src) {
51
- var img = React.createElement('img', { src: this.props.src, onLoad: this.onSrcLoaded, onError: this.onSrcError });
52
- }
53
-
54
- // combined
55
- return React.createElement(
56
- 'div',
57
- { className: previewClassName },
58
- progress,
59
- img,
60
- React.createElement(
61
- 'div',
62
- { className: 'clearfix' },
63
- React.createElement(
64
- 'div',
65
- { className: 'pull-left' },
66
- this.props.filename
67
- ),
68
- React.createElement(
69
- 'a',
70
- {
71
- href: '#remove',
72
- className: 'pull-right',
73
- onClick: this.props.onRemove,
74
- title: 'Click to remove' },
75
- '×'
76
- )
77
- )
78
- );
79
- }
80
- });
81
-
82
- var Bootstrap3Placeholder = exports.Bootstrap3Placeholder = React.createClass({
83
- displayName: 'Bootstrap3Placeholder',
84
- render: function render() {
85
- return React.createElement(
86
- 'div',
87
- { className: 'attache-file-preview' },
88
- React.createElement('img', { src: this.props.src })
89
- );
90
- }
91
- });
92
-
93
- var Bootstrap3Header = exports.Bootstrap3Header = React.createClass({
94
- displayName: 'Bootstrap3Header',
95
- render: function render() {
96
- return React.createElement('noscript', null);
97
- }
98
- });
99
-
100
- },{}],2:[function(require,module,exports){
101
- 'use strict';
102
-
103
- var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
4
+ var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
104
5
 
105
6
  Object.defineProperty(exports, "__esModule", {
106
7
  value: true
107
8
  });
108
-
109
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
110
-
111
9
  /*global $*/
112
- /*global alert*/
113
- /*global XMLHttpRequest*/
114
- /*global XDomainRequest*/
115
-
116
- var counter = 0;
117
-
118
- var CORSUpload = exports.CORSUpload = (function () {
119
- function CORSUpload(options) {
120
- _classCallCheck(this, CORSUpload);
121
-
122
- if (options == null) options = {};
123
- var option;
124
- for (option in options) {
125
- this[option] = options[option];
126
- }
127
- }
128
-
129
- // for overwriting
130
-
131
- _createClass(CORSUpload, [{
132
- key: 'createLocalThumbnail',
133
- value: function createLocalThumbnail() {}
134
- }, {
135
- key: 'onComplete',
136
- value: function onComplete(uid, json) {}
137
- }, {
138
- key: 'onProgress',
139
- value: function onProgress(uid, json) {}
140
- }, {
141
- key: 'onError',
142
- value: function onError(uid, status) {
143
- alert(status);
144
- }
145
- }, {
146
- key: 'handleFileSelect',
147
- value: function handleFileSelect() {
148
- var f, _i, _len, _results, url, $ele, prefix;
149
- $ele = $(this.file_element);
150
- url = $ele.data('uploadurl');
151
- if ($ele.data('hmac')) {
152
- url = url + '?hmac=' + encodeURIComponent($ele.data('hmac')) + '&uuid=' + encodeURIComponent($ele.data('uuid')) + '&expiration=' + encodeURIComponent($ele.data('expiration')) + '';
153
- }
154
-
155
- prefix = Date.now() + '_';
156
- _results = [];
157
- for (_i = 0, _len = this.files.length; _i < _len; _i++) {
158
- f = this.files[_i];
159
- this.createLocalThumbnail(f); // if any
160
- f.uid = prefix + counter++;
161
- this.onProgress(f.uid, { src: f.src, filename: f.name, percentLoaded: 0, bytesLoaded: 0, bytesTotal: f.size });
162
- _results.push(this.performUpload(f, url));
163
- }
164
- return _results;
165
- }
166
- }, {
167
- key: 'createCORSRequest',
168
- value: function createCORSRequest(method, url) {
169
- var xhr;
170
- xhr = new XMLHttpRequest();
171
- if (xhr.withCredentials != null) {
172
- xhr.open(method, url, true);
173
- } else if (typeof XDomainRequest !== 'undefined') {
174
- xhr = new XDomainRequest();
175
- xhr.open(method, url);
176
- } else {
177
- xhr = null;
178
- }
179
- return xhr;
180
- }
181
- }, {
182
- key: 'performUpload',
183
- value: function performUpload(file, url) {
184
- var this_s3upload, xhr;
185
- this_s3upload = this;
186
- url = url + (url.indexOf('?') === -1 ? '?' : '&') + 'file=' + encodeURIComponent(file.name);
187
- xhr = this.createCORSRequest('PUT', url);
188
- if (!xhr) {
189
- this.onError(file.uid, 'CORS not supported');
190
- } else {
191
- xhr.onload = function (e) {
192
- if (xhr.status === 200) {
193
- this_s3upload.onComplete(file.uid, JSON.parse(e.target.responseText));
194
- } else {
195
- return this_s3upload.onError(file.uid, xhr.status + ' ' + xhr.statusText);
196
- }
197
- };
198
- xhr.onerror = function () {
199
- return this_s3upload.onError(file.uid, 'Unable to reach server');
200
- };
201
- xhr.upload.onprogress = function (e) {
202
- var percentLoaded;
203
- if (e.lengthComputable) {
204
- percentLoaded = Math.round(e.loaded / e.total * 100);
205
- return this_s3upload.onProgress(file.uid, { src: file.src, filename: file.name, percentLoaded: percentLoaded, bytesLoaded: e.loaded, bytesTotal: e.total });
206
- }
207
- };
208
- }
209
- return xhr.send(file);
210
- }
211
- }]);
212
-
213
- return CORSUpload;
214
- })();
215
-
216
- },{}],3:[function(require,module,exports){
217
- 'use strict';
218
-
219
- var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; /*global $*/
220
10
  /*global window*/
221
11
  /*global React*/
222
12
  /*global ReactDOM*/
223
-
224
- Object.defineProperty(exports, "__esModule", {
225
- value: true
226
- });
227
- exports.AttacheFileInput = undefined;
228
-
229
- var _cors_upload = require('./cors_upload');
230
-
231
- var _bootstrap = require('./bootstrap3');
13
+ /*global attache_bootstrap3 */
14
+ /*global attache_cors_upload */
232
15
 
233
16
  var AttacheFileInput = exports.AttacheFileInput = React.createClass({
234
17
  displayName: 'AttacheFileInput',
@@ -268,7 +51,7 @@ var AttacheFileInput = exports.AttacheFileInput = React.createClass({
268
51
  that.state.uploading = that.state.uploading + files.length;
269
52
  if (!that.state.submit_buttons) that.state.submit_buttons = $("button,input[type='submit']", $(file_element).parents('form')[0]).filter(':not(:disabled)');
270
53
 
271
- var upload = new _cors_upload.CORSUpload({
54
+ var upload = new attache_cors_upload.CORSUpload({
272
55
  file_element: file_element,
273
56
  files: files,
274
57
  onProgress: this.setFileValue,
@@ -314,9 +97,9 @@ var AttacheFileInput = exports.AttacheFileInput = React.createClass({
314
97
  },
315
98
  render: function render() {
316
99
  var that = this;
317
- var Header = window.AttacheHeader || _bootstrap.Bootstrap3Header;
318
- var FilePreview = window.AttacheFilePreview || _bootstrap.Bootstrap3FilePreview;
319
- var Placeholder = window.AttachePlaceholder || _bootstrap.Bootstrap3Placeholder;
100
+ var Header = window.AttacheHeader || attache_bootstrap3.Bootstrap3Header;
101
+ var FilePreview = window.AttacheFilePreview || attache_bootstrap3.Bootstrap3FilePreview;
102
+ var Placeholder = window.AttachePlaceholder || attache_bootstrap3.Bootstrap3Placeholder;
320
103
 
321
104
  if (that.state.uploading > 0) {
322
105
  that.state.submit_buttons.attr('disabled', true);
@@ -389,6 +172,5 @@ var AttacheFileInput = exports.AttacheFileInput = React.createClass({
389
172
  }
390
173
  });
391
174
 
392
- },{"./bootstrap3":1,"./cors_upload":2}]},{},[3])(3)
393
- });
394
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy5udm0vdjQuMS4wL2xpYi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS9ub2RlX21vZHVsZXMvYnJvd3Nlci1wYWNrL19wcmVsdWRlLmpzIiwic3JjL2phdmFzY3JpcHRzL2F0dGFjaGUvYm9vdHN0cmFwMy5qcyIsInNyYy9qYXZhc2NyaXB0cy9hdHRhY2hlL2NvcnNfdXBsb2FkLmpzIiwic3JjL2phdmFzY3JpcHRzL2F0dGFjaGUvZmlsZV9pbnB1dC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7O0FDR08sSUFBSSxxQkFBcUIsV0FBckIscUJBQXFCLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQzs7QUFDbkQsaUJBQWUsNkJBQUk7QUFDakIsV0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQTtHQUN0QjtBQUVELGFBQVcsdUJBQUUsS0FBSyxFQUFFO0FBQ2xCLFFBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFBO0FBQ3pDLEtBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUE7R0FDM0M7QUFFRCxZQUFVLHNCQUFFLEtBQUssRUFBRTtBQUNqQixLQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO0dBQzVDO0FBRUQsUUFBTSxvQkFBSTtBQUNSLFFBQUksZ0JBQWdCLEdBQUcsc0JBQXNCOzs7QUFBQSxBQUc3QyxRQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO0FBQ3hDLHNCQUFnQixHQUFHLGdCQUFnQixHQUFHLGtCQUFrQixDQUFBO0FBQ3hELFVBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLDBDQUEwQyxJQUFJLElB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TUFDekIsUUFBUTtNQUNSLFlBQVk7TUFDWixRQUFRO0tBQ0gsQ0FDUDtHQUNGO0NBQ0YsQ0FBQyxDQUFBIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrbytcIidcIik7dGhyb3cgZi5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSIsIi8qZ2xvYmFsICQqL1xuLypnbG9iYWwgUmVhY3QqL1xuXG5leHBvcnQgdmFyIEJvb3RzdHJhcDNGaWxlUHJldmlldyA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtcbiAgZ2V0SW5pdGlhbFN0YXRlICgpIHtcbiAgICByZXR1cm4geyBzcmNXYXM6ICcnIH1cbiAgfSxcblxuICBvblNyY0xvYWRlZCAoZXZlbnQpIHtcbiAgICB0aGlzLnNldFN0YXRlKHsgc3JjV2FzOiB0aGlzLnByb3BzLnNyYyB9KVxuICAgICQoZXZlbnQudGFyZ2V0KS50cmlnZ2VyKCdhdHRhY2hlOmltZ2xvYWQnKVxuICB9LFxuXG4gIG9uU3JjRXJyb3IgKGV2ZW50KSB7XG4gICAgJChldmVudC50YXJnZXQpLnRyaWdnZXIoJ2F0dGFjaGU6aW1nZXJyb3InKVxuICB9LFxuXG4gIHJlbmRlciAoKSB7XG4gICAgdmFyIHByZXZpZXdDbGFzc05hbWUgPSAnYXR0YWNoZS1maWxlLXByZXZpZXcnXG5cbiAgICAvLyBwcm9ncmVzc2JhclxuICAgIGlmICh0aGlzLnN0YXRlLnNyY1dhcyAhPT0gdGhpcy5wcm9wcy5zcmMpIHtcbiAgICAgIHByZXZpZXdDbGFzc05hbWUgPSBwcmV2aWV3Q2xhc3NOYW1lICsgJyBhdHRhY2hlLWxvYWRpbmcnXG4gICAgICB2YXIgY2xhc3NOYW1lID0gdGhpcy5wcm9wcy5jbGFzc05hbWUgfHwgJ3Byb2dyZXNzLWJhciBwcm9ncmVzcy1iYXItc3RyaXBlZCBhY3RpdmUnICsgKHRoaXMucHJvcHMuc3JjID8gJyBwcm9ncmVzcy1iYXItc3VjY2VzcycgOiAnJylcbiAgICAgIHZhciBwY3RTdHJpbmcgPSB0aGlzLnByb3BzLnBjdFN0cmluZyB8fCAodGhpcy5wcm9wcy5zcmMgPyAxMDAgOiB0aGlzLnByb3BzLnBlcmNlbnRMb2FkZWQpICsgJyUnXG4gICAgICB2YXIgcGN0RGVzYyA9IHRoaXMucHJvcHMucGN0RGVzYyB8fCAodGhpcy5wcm9wcy5zcmMgPyAnTG9hZGluZy4uLicgOiBwY3RTdHJpbmcpXG4gICAgICB2YXIgcGN0U3R5bGUgPSB7IHdpZHRoOiBwY3RTdHJpbmcsIG1pbldpZHRoOiAnM2VtJyB9XG4gICAgICB2YXIgcHJvZ3Jlc3MgPSAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInByb2dyZXNzXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgICAgICByb2xlPVwicHJvZ3Jlc3NiYXJcIlxuICAgICAgICAgIGFyaWEtdmFsdWVub3c9e3RoaXMucHJvcHMucGVyY2VudExvYWRlZH1cbiAgICAgICAgICBhcmlhLXZhbHVlbWluPVwiMFwiXG4gICAgICAgICAgYXJpYS12YWx1ZW1heD1cIjEwMFwiXG4gICAgICAgICAgc3R5bGU9e3BjdFN0eWxlfT5cbiAgICAgICAgICB7cGN0RGVzY31cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIClcbiAgICB9XG5cbiAgICAvLyBpbWcgdGFnXG4gICAgaWYgKHRoaXMucHJvcHMuc3JjKSB7XG4gICAgICB2YXIgaW1nID0gPGltZyBzcmM9e3RoaXMucHJvcHMuc3JjfSBvbkxvYWQ9e3RoaXMub25TcmNMb2FkZWR9IG9uRXJyb3I9e3RoaXMub25TcmNFcnJvcn0gLz5cbiAgICB9XG5cbiAgICAvLyBjb21iaW5lZFxuICAgIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e3ByZXZpZXdDbGFzc05hbWV9PlxuICAgICAge3Byb2dyZXNzfVxuICAgICAge2ltZ31cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY2xlYXJmaXhcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwdWxsLWxlZnRcIj5cbiAgICAgICAgICB7dGhpcy5wcm9wcy5maWxlbmFtZX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxhXG4gICAgICAgICAgaHJlZj1cIiNyZW1vdmVcIlxuICAgICAgICAgIGNsYXNzTmFtZT1cInB1bGwtcmlnaHRcIlxuICAgICAgICAgIG9uQ2xpY2s9e3RoaXMucHJvcHMub25SZW1vdmV9XG4gICAgICAgICAgdGl0bGU9XCJDbGljayB0byByZW1vdmVcIj4mdGltZXM7PC9hPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgKVxuICB9XG59KVxuXG5leHBvcnQgdmFyIEJvb3RzdHJhcDNQbGFjZWhvbGRlciA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtcbiAgcmVuZGVyICgpIHtcbiAgICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiYXR0YWNoZS1maWxlLXByZXZpZXdcIj5cbiAgICAgIDxpbWcgc3JjPXt0aGlzLnByb3BzLnNyY30gLz5cbiAgICA8L2Rpdj5cbiAgICApXG4gIH1cbn0pXG5cbmV4cG9ydCB2YXIgQm9vdHN0cmFwM0hlYWRlciA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtcbiAgcmVuZGVyICgpIHtcbiAgICByZXR1cm4gKFxuICAgIDxub3NjcmlwdCAvPlxuICAgIClcbiAgfVxufSlcbiIsIi8qZ2xvYmFsICQqL1xuLypnbG9iYWwgYWxlcnQqL1xuLypnbG9iYWwgWE1MSHR0cFJlcXVlc3QqL1xuLypnbG9iYWwgWERvbWFpblJlcXVlc3QqL1xuXG52YXIgY291bnRlciA9IDBcblxuZXhwb3J0IGNsYXNzIENPUlNVcGxvYWQge1xuICBjb25zdHJ1Y3RvciAob3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zID09IG51bGwpIG9wdGlvbnMgPSB7fVxuICAgIHZhciBvcHRpb25cbiAgICBmb3IgKG9wdGlvbiBpbiBvcHRpb25zKSB7XG4gICAgICB0aGlzW29wdGlvbl0gPSBvcHRpb25zW29wdGlvbl1cbiAgICB9XG4gIH1cblxuICAvLyBmb3Igb3ZlcndyaXRpbmdcbiAgY3JlYXRlTG9jYWxUaHVtYm5haWwgKCkgeyB9XG4gIG9uQ29tcGxldGUgKHVpZCwganNvbikgeyB9XG4gIG9uUHJvZ3Jlc3MgKHVpZCwganNvbikgeyB9XG4gIG9uRXJyb3IgKHVpZCwgc3RhdHVzKSB7IGFsZXJ0KHN0YXR1cykgfVxuXG4gIGhhbmRsZUZpbGVTZWxlY3QgKCkge1xuICAgIHZhciBmLCBfaSwgX2xlbiwgX3Jlc3VsdHMsIHVybCwgJGVsZSwgcHJlZml4XG4gICAgJGVsZSA9ICQodGhpcy5maWxlX2VsZW1lbnQpXG4gICAgdXJsID0gJGVsZS5kYXRhKCd1cGxvYWR1cmwnKVxuICAgIGlmICgkZWxlLmRhdGEoJ2htYWMnKSkge1xuICAgICAgdXJsID0gdXJsICtcbiAgICAgICAgJz9obWFjPScgKyBlbmNvZGVVUklDb21wb25lbnQoJGVsZS5kYXRhKCdobWFjJykpICtcbiAgICAgICAgJyZ1dWlkPScgKyBlbmNvZGVVUklDb21wb25lbnQoJGVsZS5kYXRhKCd1dWlkJykpICtcbiAgICAgICAgJyZleHBpcmF0aW9uPScgKyBlbmNvZGVVUklDb21wb25lbnQoJGVsZS5kYXRhKCdleHBpcmF0aW9uJykpICtcbiAgICAgICAgJydcbiAgICB9XG5cbiAgICBwcmVmaXggPSBEYXRlLm5vdygpICsgJ18nXG4gICAgX3Jlc3VsdHMgPSBbXVxuICAgIGZvciAoX2kgPSAwLCBfbGVuID0gdGhpcy5maWxlcy5sZW5ndGg7IF9pIDwgX2xlbjsgX2krKykge1xuICAgICAgZiA9IHRoaXMuZmlsZXNbX2ldXG4gICAgICB0aGlzLmNyZWF0ZUxvY2FsVGh1bWJuYWlsKGYpIC8vIGlmIGFueVxuICAgICAgZi51aWQgPSBwcmVmaXggKyAoY291bnRlcisrKVxuICAgICAgdGhpcy5vblByb2dyZXNzKGYudWlkLCB7IHNyYzogZi5zcmMsIGZpbGVuYW1lOiBmLm5hbWUsIHBlcmNlbnRMb2FkZWQ6IDAsIGJ5dGVzTG9hZGVkOiAwLCBieXRlc1RvdGFsOiBmLnNpemUgfSlcbiAgICAgIF9yZXN1bHRzLnB1c2godGhpcy5wZXJmb3JtVXBsb2FkKGYsIHVybCkpXG4gICAgfVxuICAgIHJldHVybiBfcmVzdWx0c1xuICB9XG5cbiAgY3JlYXRlQ09SU1JlcXVlc3QgKG1ldGhvZCwgdXJsKSB7XG4gICAgdmFyIHhoclxuICAgIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpXG4gICAgaWYgKHhoci53aXRoQ3JlZGVudGlhbHMgIT0gbnVsbCkge1xuICAgICAgeGhyLm9wZW4obWV0aG9kLCB1cmwsIHRydWUpXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgWERvbWFpblJlcXVlc3QgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB4aHIgPSBuZXcgWERvbWFpblJlcXVlc3QoKVxuICAgICAgeGhyLm9wZW4obWV0aG9kLCB1cmwpXG4gICAgfSBlbHNlIHtcbiAgICAgIHhociA9IG51bGxcbiAgICB9XG4gICAgcmV0dXJuIHhoclxuICB9XG5cbiAgcGVyZm9ybVVwbG9hZCAoZmlsZSwgdXJsKSB7XG4gICAgdmFyIHRoaXNfczN1cGxvYWQsIHhoclxuICAgIHRoaXNfczN1cGxvYWQgPSB0aGlzXG4gICAgdXJsID0gdXJsICsgKHVybC5pbmRleE9mKCc/JykgPT09IC0xID8gJz8nIDogJyYnKSArICdmaWxlPScgKyBlbmNvZGVVUklDb21wb25lbnQoZmlsZS5uYW1lKVxuICAgIHhociA9IHRoaXMuY3JlYXRlQ09SU1JlcXVlc3QoJ1BVVCcsIHVybClcbiAgICBpZiAoIXhocikge1xuICAgICAgdGhpcy5vbkVycm9yKGZpbGUudWlkLCAnQ09SUyBub3Qgc3VwcG9ydGVkJylcbiAgICB9IGVsc2Uge1xuICAgICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIGlmICh4aHIuc3RhdHVzID09PSAyMDApIHtcbiAgICAgICAgICB0aGlzX3MzdXBsb2FkLm9uQ29tcGxldGUoZmlsZS51aWQsIEpTT04ucGFyc2UoZS50YXJnZXQucmVzcG9uc2VUZXh0KSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpc19zM3VwbG9hZC5vbkVycm9yKGZpbGUudWlkLCB4aHIuc3RhdHVzICsgJyAnICsgeGhyLnN0YXR1c1RleHQpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHhoci5vbmVycm9yID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpc19zM3VwbG9hZC5vbkVycm9yKGZpbGUudWlkLCAnVW5hYmxlIHRvIHJlYWNoIHNlcnZlcicpXG4gICAgICB9XG4gICAgICB4aHIudXBsb2FkLm9ucHJvZ3Jlc3MgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICB2YXIgcGVyY2VudExvYWRlZFxuICAgICAgICBpZiAoZS5sZW5ndGhDb21wdXRhYmxlKSB7XG4gICAgICAgICAgcGVyY2VudExvYWRlZCA9IE1hdGgucm91bmQoKGUubG9hZGVkIC8gZS50b3RhbCkgKiAxMDApXG4gICAgICAgICAgcmV0dXJuIHRoaXNfczN1cGxvYWQub25Qcm9ncmVzcyhmaWxlLnVpZCwgeyBzcmM6IGZpbGUuc3JjLCBmaWxlbmFtZTogZmlsZS5uYW1lLCBwZXJjZW50TG9hZGVkOiBwZXJjZW50TG9hZGVkLCBieXRlc0xvYWRlZDogZS5sb2FkZWQsIGJ5dGVzVG90YWw6IGUudG90YWwgfSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geGhyLnNlbmQoZmlsZSlcbiAgfVxufVxuIiwiLypnbG9iYWwgJCovXG4vKmdsb2JhbCB3aW5kb3cqL1xuLypnbG9iYWwgUmVhY3QqL1xuLypnbG9iYWwgUmVhY3RET00qL1xuXG5pbXBvcnQgeyBDT1JTVXBsb2FkIH0gZnJvbSAnLi9jb3JzX3VwbG9hZCdcbmltcG9ydCB7IEJvb3RzdHJhcDNIZWFkZXIsIEJvb3RzdHJhcDNGaWxlUHJldmlldywgQm9vdHN0cmFwM1BsYWNlaG9sZGVyIH0gZnJvbSAnLi9ib290c3RyYXAzJ1xuXG5leHBvcnQgdmFyIEF0dGFjaGVGaWxlSW5wdXQgPSBSZWFjdC5jcmVhdGVDbGFzcyh7XG4gIGdldEluaXRpYWxTdGF0ZSAoKSB7XG4gICAgdmFyIGZpbGVzID0ge31cbiAgICBpZiAodGhpcy5wcm9wc1snZGF0YS12YWx1ZSddKSB7XG4gICAgICAkLmVhY2goSlNPTi5wYXJzZSh0aGlzLnByb3BzWydkYXRhLXZhbHVlJ10pLCBmdW5jdGlvbiAodWlkLCBqc29uKSB7XG4gICAgICAgIGlmIChqc29uKSBmaWxlc1t1aWRdID0ganNvblxuICAgICAgfSlcbiAgICB9XG4gICAgcmV0dXJuIHsgZmlsZXM6IGZpbGVzLCBhdHRhY2hlc19kaXNjYXJkZWQ6IFtdLCB1cGxvYWRpbmc6IDAgfVxuICB9LFxuXG4gIG9uUmVtb3ZlICh1aWQsIGUpIHtcbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG5cbiAgICB2YXIgZmllbGRuYW1lID0gUmVhY3RET00uZmluZERPTU5vZGUodGhpcykuZmlyc3RDaGlsZC5uYW1lIC8vIHdoZW4gICAndXNlclthdmF0YXJdJ1xuICAgIHZhciBuZXdmaWVsZCA9IGZpZWxkbmFtZS5yZXBsYWNlKC9cXHcrXFxdKFxcW1xcXXwpJC8sICdhdHRhY2hlc19kaXNjYXJkZWRdW10nKSAvLyBiZWNvbWUgJ3VzZXJbYXR0YWNoZXNfZGlzY2FyZGVkXVtdJ1xuXG4gICAgdGhpcy5zdGF0ZS5hdHRhY2hlc19kaXNjYXJkZWQucHVzaCh7IGZpZWxkbmFtZTogbmV3ZmllbGQsIHBhdGg6IHRoaXMuc3RhdGUuZmlsZXNbdWlkXS5wYXRoIH0pXG4gICAgZGVsZXRlIHRoaXMuc3RhdGUuZmlsZXNbdWlkXVxuXG4gICAgdGhpcy5zZXRTdGF0ZSh0aGlzLnN0YXRlKVxuICB9LFxuXG4gIHBlcmZvcm1VcGxvYWQgKGZpbGVfZWxlbWVudCwgZmlsZXMpIHtcbiAgICAvLyB1c2VyIGNhbmNlbGxlZCBmaWxlIGNob29zZXIgZGlhbG9nLiBpZ25vcmVcbiAgICBpZiAoIWZpbGVzIHx8IGZpbGVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuXG4gICAgaWYgKCF0aGlzLnByb3BzLm11bHRpcGxlKSB7XG4gICAgICB0aGlzLnN0YXRlLmZpbGVzID0ge31cbiAgICAgIGZpbGVzID0gW2ZpbGVzWzBdXSAvLyBhcnJheSBvZiAxIGVsZW1lbnRcbiAgICB9XG5cbiAgICB0aGlzLnNldFN0YXRlKHRoaXMuc3RhdGUpXG4gICAgLy8gdXBsb2FkIHRoZSBmaWxlIHZpYSBDT1JTXG4gICAgdmFyIHRoYXQgPSB0aGlzXG5cbiAgICB0aGF0LnN0YXRlLnVwbG9hZGluZyA9IHRoYXQuc3RhdGUudXBsb2FkaW5nICsgZmlsZXMubGVuZ3RoXG4gICAgaWYgKCF0aGF0LnN0YXRlLnN1Ym1pdF9idXR0b25zKSB0aGF0LnN0YXRlLnN1Ym1pdF9idXR0b25zID0gJChcImJ1dHRvbixpbnB1dFt0eXBlPSdzdWJtaXQnXVwiLCAkKGZpbGVfZWxlbWVudCkucGFyZW50cygnZm9ybScpWzBdKS5maWx0ZXIoJzpub3QoOmRpc2FibGVkKScpXG5cbiAgICB2YXIgdXBsb2FkID0gbmV3IENPUlNVcGxvYWQoe1xuICAgICAgZmlsZV9lbGVtZW50OiBmaWxlX2VsZW1lbnQsXG4gICAgICBmaWxlczogZmlsZXMsXG4gICAgICBvblByb2dyZXNzOiB0aGlzLnNldEZpbGVWYWx1ZSxcbiAgICAgIG9uQ29tcGxldGUgKCkge1xuICAgICAgICB0aGF0LnN0YXRlLnVwbG9hZGluZy0tXG4gICAgICAgIHRoYXQuc2V0RmlsZVZhbHVlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cylcbiAgICAgIH0sXG4gICAgICBvbkVycm9yICh1aWQsIHN0YXR1cykge1xuICAgICAgICB0aGF0LnN0YXRlLnVwbG9hZGluZy0tXG4gICAgICAgIHRoYXQuc2V0RmlsZVZhbHVlKHVpZCwgeyBwY3RTdHJpbmc6ICc5MCUnLCBwY3REZXNjOiBzdGF0dXMsIGNsYXNzTmFtZTogJ3Byb2dyZXNzLWJhciBwcm9ncmVzcy1iYXItZGFuZ2VyJyB9KVxuICAgICAgfVxuICAgIH0pXG4gICAgdXBsb2FkLmhhbmRsZUZpbGVTZWxlY3QoKVxuXG4gICAgLy8gd2UgZG9uJ3Qgd2FudCB0aGUgZmlsZSBiaW5hcnkgdG8gYmUgdXBsb2FkZWQgaW4gdGhlIG1haW4gZm9ybVxuICAgIC8vIHNvIHRoZSBhY3R1YWwgZmlsZSBpbnB1dCBpcyBuZXV0ZXJlZFxuICAgIGZpbGVfZWxlbWVudC52YWx1ZSA9ICcnXG4gIH0sXG5cbiAgb25DaGFuZ2UgKCkge1xuICAgIHZhciBmaWxlX2VsZW1lbnQgPSBSZWFjdERPTS5maW5kRE9NTm9kZSh0aGlzKS5maXJzdENoaWxkXG4gICAgdGhpcy5wZXJmb3JtVXBsb2FkKGZpbGVfZWxlbWVudCwgZmlsZV9lbGVtZW50ICYmIGZpbGVfZWxlbWVudC5maWxlcylcbiAgfSxcblxuICBvbkRyYWdPdmVyIChlKSB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICQoUmVhY3RET00uZmluZERPTU5vZGUodGhpcykpLmFkZENsYXNzKCdhdHRhY2hlLWRyYWdvdmVyJylcbiAgfSxcblxuICBvbkRyYWdMZWF2ZSAoZSkge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAkKFJlYWN0RE9NLmZpbmRET01Ob2RlKHRoaXMpKS5yZW1vdmVDbGFzcygnYXR0YWNoZS1kcmFnb3ZlcicpXG4gIH0sXG5cbiAgb25Ecm9wIChlKSB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIHZhciBmaWxlX2VsZW1lbnQgPSBSZWFjdERPTS5maW5kRE9NTm9kZSh0aGlzKS5maXJzdENoaWxkXG4gICAgdGhpcy5wZXJmb3JtVXBsb2FkKGZpbGVfZWxlbWVudCwgZS50YXJnZXQuZmlsZXMgfHwgZS5kYXRhVHJhbnNmZXIuZmlsZXMpXG4gICAgJChSZWFjdERPTS5maW5kRE9NTm9kZSh0aGlzKSkucmVtb3ZlQ2xhc3MoJ2F0dGFjaGUtZHJhZ292ZXInKVxuICB9LFxuXG4gIHNldEZpbGVWYWx1ZSAoa2V5LCB2YWx1ZSkge1xuICAgIHRoaXMuc3RhdGUuZmlsZXNba2V5XSA9IHZhbHVlXG4gICAgdGhpcy5zZXRTdGF0ZSh0aGlzLnN0YXRlKVxuICB9LFxuXG4gIHJlbmRlciAoKSB7XG4gICAgdmFyIHRoYXQgPSB0aGlzXG4gICAgdmFyIEhlYWRlciA9IHdpbmRvdy5BdHRhY2hlSGVhZGVyIHx8IEJvb3RzdHJhcDNIZWFkZXJcbiAgICB2YXIgRmlsZVByZXZpZXcgPSB3aW5kb3cuQXR0YWNoZUZpbGVQcmV2aWV3IHx8IEJvb3RzdHJhcDNGaWxlUHJldmlld1xuICAgIHZhciBQbGFjZWhvbGRlciA9IHdpbmRvdy5BdHRhY2hlUGxhY2Vob2xkZXIgfHwgQm9vdHN0cmFwM1BsYWNlaG9sZGVyXG5cbiAgICBpZiAodGhhdC5zdGF0ZS51cGxvYWRpbmcgPiAwKSB7XG4gICAgICB0aGF0LnN0YXRlLnN1Ym1pdF9idXR0b25zLmF0dHIoJ2Rpc2FibGVkJywgdHJ1ZSlcbiAgICB9IGVsc2UgaWYgKHRoYXQuc3RhdGUuc3VibWl0X2J1dHRvbnMpIHtcbiAgICAgIHRoYXQuc3RhdGUuc3VibWl0X2J1dHRvbnMuYXR0cignZGlzYWJsZWQnLCBudWxsKVxuICAgIH1cblxuICAgIHZhciBwcmV2aWV3cyA9IFtdXG4gICAgJC5lYWNoKHRoYXQuc3RhdGUuZmlsZXMsIGZ1bmN0aW9uIChrZXksIHJlc3VsdCkge1xuICAgICAgLy8ganNvbiBpcyBpbnB1dFt2YWx1ZV0sIGRyb3Agbm9uIGVzc2VudGlhbCB2YWx1ZXNcbiAgICAgIHZhciBjb3B5ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShyZXN1bHQpKVxuICAgICAgZGVsZXRlIGNvcHkuc3JjXG4gICAgICBkZWxldGUgY29weS5maWxlbmFtZVxuICAgICAgdmFyIGpzb24gPSBKU09OLnN0cmluZ2lmeShjb3B5KVxuICAgICAgLy9cbiAgICAgIHJlc3VsdC5tdWx0aXBsZSA9IHRoYXQucHJvcHMubXVsdGlwbGVcbiAgICAgIGlmIChyZXN1bHQucGF0aCkge1xuICAgICAgICB2YXIgcGFydHMgPSByZXN1bHQucGF0aC5zcGxpdCgnLycpXG4gICAgICAgIHJlc3VsdC5maWxlbmFtZSA9IHBhcnRzLnBvcCgpLnNwbGl0KC9bIz9dLykuc2hpZnQoKVxuICAgICAgICBwYXJ0cy5wdXNoKGVuY29kZVVSSUNvbXBvbmVudCh0aGF0LnByb3BzWydkYXRhLWdlb21ldHJ5J10gfHwgJzEyOHgxMjgjJykpXG4gICAgICAgIHBhcnRzLnB1c2goZW5jb2RlVVJJQ29tcG9uZW50KHJlc3VsdC5maWxlbmFtZSkpXG4gICAgICAgIHJlc3VsdC5zcmMgPSB0aGF0LnByb3BzWydkYXRhLWRvd25sb2FkdXJsJ10gKyAnLycgKyBwYXJ0cy5qb2luKCcvJylcbiAgICAgIH1cbiAgICAgIHZhciBwcmV2aWV3S2V5ID0gJ3ByZXZpZXcnICsga2V5XG4gICAgICBwcmV2aWV3cy5wdXNoKFxuICAgICAgICA8ZGl2IGtleT17cHJldmlld0tleX0gY2xhc3NOYW1lPVwiYXR0YWNoZS1maWxlLWlucHV0XCI+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwiaGlkZGVuXCJcbiAgICAgICAgICAgIG5hbWU9e3RoYXQucHJvcHMubmFtZX1cbiAgICAgICAgICAgIHZhbHVlPXtqc29ufVxuICAgICAgICAgICAgcmVhZE9ubHk9XCJ0cnVlXCIgLz5cbiAgICAgICAgICA8RmlsZVByZXZpZXcgey4uLnJlc3VsdH0ga2V5PXtrZXl9IG9uUmVtb3ZlPXt0aGF0Lm9uUmVtb3ZlLmJpbmQodGhhdCwga2V5KX0gLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICApXG4gICAgfSlcblxuICAgIHZhciBwbGFjZWhvbGRlcnMgPSBbXVxuICAgIGlmIChwcmV2aWV3cy5sZW5ndGggPT09IDAgJiYgdGhhdC5wcm9wc1snZGF0YS1wbGFjZWhvbGRlciddKSB7XG4gICAgICAkLmVhY2goSlNPTi5wYXJzZSh0aGF0LnByb3BzWydkYXRhLXBsYWNlaG9sZGVyJ10pLCBmdW5jdGlvbiAodWlkLCBzcmMpIHtcbiAgICAgICAgcGxhY2Vob2xkZXJzLnB1c2goXG4gICAgICAgICAgPFBsYWNlaG9sZGVyIGtleT1cInBsYWNlaG9sZGVyXCIgey4uLnRoYXQucHJvcHN9IHNyYz17c3JjfSAvPlxuICAgICAgICApXG4gICAgICB9KVxuICAgIH1cblxuICAgIHZhciBkaXNjYXJkcyA9IFtdXG4gICAgJC5lYWNoKHRoYXQuc3RhdGUuYXR0YWNoZXNfZGlzY2FyZGVkLCBmdW5jdGlvbiAoaW5kZXgsIGRpc2NhcmQpIHtcbiAgICAgIHZhciBkaXNjYXJkS2V5ID0gJ2Rpc2NhcmQnICsgZGlzY2FyZC5wYXRoXG4gICAgICBkaXNjYXJkcy5wdXNoKFxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBrZXk9e2Rpc2NhcmRLZXl9XG4gICAgICAgICAgdHlwZT1cImhpZGRlblwiXG4gICAgICAgICAgbmFtZT17ZGlzY2FyZC5maWVsZG5hbWV9XG4gICAgICAgICAgdmFsdWU9e2Rpc2NhcmQucGF0aH0gLz5cbiAgICAgIClcbiAgICB9KVxuXG4gICAgdmFyIGNsYXNzTmFtZSA9IFsnYXR0YWNoZS1maWxlLXNlbGVjdG9yJywgJ2F0dGFjaGUtcGxhY2Vob2xkZXJzLWNvdW50LScgKyBwbGFjZWhvbGRlcnMubGVuZ3RoLCAnYXR0YWNoZS1wcmV2aWV3cy1jb3VudC0nICsgcHJldmlld3MubGVuZ3RoLCB0aGlzLnByb3BzWydkYXRhLWNsYXNzbmFtZSddXS5qb2luKCcgJykudHJpbSgpXG4gICAgcmV0dXJuIChcbiAgICA8bGFiZWxcbiAgICAgIGh0bWxGb3I9e3RoYXQucHJvcHMuaWR9XG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgIG9uRHJhZ092ZXI9e3RoaXMub25EcmFnT3Zlcn1cbiAgICAgIG9uRHJhZ0xlYXZlPXt0aGlzLm9uRHJhZ0xlYXZlfVxuICAgICAgb25Ecm9wPXt0aGlzLm9uRHJvcH0+XG4gICAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiB7Li4udGhhdC5wcm9wc30gb25DaGFuZ2U9e3RoaXMub25DaGFuZ2V9IC8+XG4gICAgICA8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9e3RoYXQucHJvcHMubmFtZX0gdmFsdWU9XCJcIiAvPlxuICAgICAgPEhlYWRlciB7Li4udGhhdC5wcm9wc30gLz5cbiAgICAgIHtwcmV2aWV3c31cbiAgICAgIHtwbGFjZWhvbGRlcnN9XG4gICAgICB7ZGlzY2FyZHN9XG4gICAgPC9sYWJlbD5cbiAgICApXG4gIH1cbn0pXG4iXX0=
175
+ },{}]},{},[1])(1)
176
+ });
data/lib/attache/rails.rb CHANGED
@@ -5,4 +5,5 @@ end
5
5
 
6
6
  require "attache/rails/engine"
7
7
  require "attache/rails/model"
8
+ require 'attache/rails/railtie'
8
9
  require "attache/api/test" if defined?(Rails) && Rails.env.test?
@@ -57,5 +57,3 @@ module Attache
57
57
  end
58
58
  end
59
59
  end
60
-
61
- ActiveRecord::Base.send(:include, Attache::Rails::Model)
@@ -0,0 +1,11 @@
1
+ require 'rails'
2
+
3
+ module Attache
4
+ module Rails
5
+ class Attache::Rails::Railtie < ::Rails::Railtie
6
+ initializer "attache-rails.configure" do |app|
7
+ ActiveRecord::Base.send(:include, Attache::Rails::Model)
8
+ end
9
+ end
10
+ end
11
+ end
@@ -1,5 +1,5 @@
1
1
  module Attache
2
2
  module Rails
3
- VERSION = "1.2.0"
3
+ VERSION = "2.0.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: attache-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - choonkeat
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-17 00:00:00.000000000 Z
11
+ date: 2016-06-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -126,6 +126,7 @@ files:
126
126
  - lib/attache/rails.rb
127
127
  - lib/attache/rails/engine.rb
128
128
  - lib/attache/rails/model.rb
129
+ - lib/attache/rails/railtie.rb
129
130
  - lib/attache/rails/version.rb
130
131
  - lib/generators/attache/rails/templates/upgrade_v2_to_v3_migration.rb.erb
131
132
  - lib/generators/attache/rails/upgrade_v2_to_v3_generator.rb