engine2 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (145) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +2 -0
  3. data/Rakefile +138 -0
  4. data/conf/message.yaml +93 -0
  5. data/conf/message_pl.yaml +93 -0
  6. data/engine2.gemspec +34 -0
  7. data/lib/engine2.rb +34 -0
  8. data/lib/engine2/action.rb +217 -0
  9. data/lib/engine2/core.rb +572 -0
  10. data/lib/engine2/handler.rb +134 -0
  11. data/lib/engine2/meta.rb +969 -0
  12. data/lib/engine2/meta/decode_meta.rb +110 -0
  13. data/lib/engine2/meta/delete_meta.rb +73 -0
  14. data/lib/engine2/meta/form_meta.rb +144 -0
  15. data/lib/engine2/meta/infra_meta.rb +292 -0
  16. data/lib/engine2/meta/link_meta.rb +133 -0
  17. data/lib/engine2/meta/list_meta.rb +284 -0
  18. data/lib/engine2/meta/save_meta.rb +63 -0
  19. data/lib/engine2/meta/view_meta.rb +22 -0
  20. data/lib/engine2/model.rb +390 -0
  21. data/lib/engine2/models/Files.rb +38 -0
  22. data/lib/engine2/models/UserInfo.rb +24 -0
  23. data/lib/engine2/post_bootstrap.rb +83 -0
  24. data/lib/engine2/pre_bootstrap.rb +27 -0
  25. data/lib/engine2/scheme.rb +202 -0
  26. data/lib/engine2/templates.rb +229 -0
  27. data/lib/engine2/type_info.rb +342 -0
  28. data/lib/engine2/version.rb +9 -0
  29. data/public/assets/javascripts.js +13 -0
  30. data/public/assets/styles.css +4 -0
  31. data/public/css/angular-motion.css +1022 -0
  32. data/public/css/angular-ui-tree.min.css +1 -0
  33. data/public/css/app.css +196 -0
  34. data/public/css/bootstrap-additions.css +1560 -0
  35. data/public/css/bootstrap.min.css +11 -0
  36. data/public/css/font-awesome.min.css +4 -0
  37. data/public/favicon.ico +0 -0
  38. data/public/fonts/FontAwesome.otf +0 -0
  39. data/public/fonts/fontawesome-webfont.eot +0 -0
  40. data/public/fonts/fontawesome-webfont.svg +655 -0
  41. data/public/fonts/fontawesome-webfont.ttf +0 -0
  42. data/public/fonts/fontawesome-webfont.woff +0 -0
  43. data/public/fonts/fontawesome-webfont.woff2 +0 -0
  44. data/public/fonts/glyphicons-halflings-regular.eot +0 -0
  45. data/public/fonts/glyphicons-halflings-regular.svg +288 -0
  46. data/public/fonts/glyphicons-halflings-regular.ttf +0 -0
  47. data/public/fonts/glyphicons-halflings-regular.woff +0 -0
  48. data/public/fonts/glyphicons-halflings-regular.woff2 +0 -0
  49. data/public/images/file.png +0 -0
  50. data/public/images/folder-closed.png +0 -0
  51. data/public/images/folder.png +0 -0
  52. data/public/images/node-closed-2.png +0 -0
  53. data/public/images/node-closed-light.png +0 -0
  54. data/public/images/node-closed.png +0 -0
  55. data/public/images/node-opened-2.png +0 -0
  56. data/public/images/node-opened-light.png +0 -0
  57. data/public/images/node-opened.png +0 -0
  58. data/public/img/ajax-loader-dark.gif +0 -0
  59. data/public/img/ajax-loader-light.gif +0 -0
  60. data/public/img/ajax-loader.gif +0 -0
  61. data/public/js/angular-animate.js +4115 -0
  62. data/public/js/angular-cookies.js +322 -0
  63. data/public/js/angular-local-storage.js +455 -0
  64. data/public/js/angular-route.js +1022 -0
  65. data/public/js/angular-sanitize.js +717 -0
  66. data/public/js/angular-strap.js +4339 -0
  67. data/public/js/angular-strap.tpl.js +43 -0
  68. data/public/js/angular-ui-tree.js +1569 -0
  69. data/public/js/angular.js +30714 -0
  70. data/public/js/i18n/angular-locale_pl.js +115 -0
  71. data/public/js/lodash.custom.min.js +97 -0
  72. data/public/js/ng-file-upload-shim.min.js +2 -0
  73. data/public/js/ng-file-upload.min.js +3 -0
  74. data/views/app.coffee +3 -0
  75. data/views/engine2.coffee +557 -0
  76. data/views/engine2actions.coffee +849 -0
  77. data/views/engine2templates.coffee +0 -0
  78. data/views/fields/blob.slim +22 -0
  79. data/views/fields/bs_select.slim +10 -0
  80. data/views/fields/bsselect_picker.slim +18 -0
  81. data/views/fields/bsselect_picker_opt.slim +22 -0
  82. data/views/fields/checkbox.slim +11 -0
  83. data/views/fields/checkbox_buttons.slim +6 -0
  84. data/views/fields/checkbox_buttons_opt.slim +8 -0
  85. data/views/fields/currency.slim +10 -0
  86. data/views/fields/date.slim +21 -0
  87. data/views/fields/date_range.slim +44 -0
  88. data/views/fields/date_time.slim +42 -0
  89. data/views/fields/datetime.slim +42 -0
  90. data/views/fields/decimal.slim +11 -0
  91. data/views/fields/decimal_date.slim +22 -0
  92. data/views/fields/decimal_time.slim +26 -0
  93. data/views/fields/email.slim +13 -0
  94. data/views/fields/file_store.slim +61 -0
  95. data/views/fields/input_text.slim +14 -0
  96. data/views/fields/integer.slim +11 -0
  97. data/views/fields/list_bsselect.slim +18 -0
  98. data/views/fields/list_bsselect_opt.slim +21 -0
  99. data/views/fields/list_buttons.slim +3 -0
  100. data/views/fields/list_buttons_opt.slim +5 -0
  101. data/views/fields/list_select.slim +11 -0
  102. data/views/fields/list_select_opt.slim +15 -0
  103. data/views/fields/password.slim +14 -0
  104. data/views/fields/radio_checkbox.slim +10 -0
  105. data/views/fields/scaffold.slim +2 -0
  106. data/views/fields/scaffold_picker.slim +20 -0
  107. data/views/fields/select_picker.slim +12 -0
  108. data/views/fields/select_picker_opt.slim +16 -0
  109. data/views/fields/text_area.slim +10 -0
  110. data/views/fields/time.slim +22 -0
  111. data/views/fields/typeahead_picker.slim +25 -0
  112. data/views/index.slim +44 -0
  113. data/views/infra/index.slim +5 -0
  114. data/views/infra/inspect.slim +81 -0
  115. data/views/modals/close_m.slim +15 -0
  116. data/views/modals/confirm_m.slim +19 -0
  117. data/views/modals/empty_m.slim +12 -0
  118. data/views/modals/menu_m.slim +13 -0
  119. data/views/modals/yes_no_m.slim +19 -0
  120. data/views/panels/menu_m.slim +9 -0
  121. data/views/scaffold/confirm.slim +3 -0
  122. data/views/scaffold/fields.slim +10 -0
  123. data/views/scaffold/form.slim +11 -0
  124. data/views/scaffold/list.slim +42 -0
  125. data/views/scaffold/message.slim +3 -0
  126. data/views/scaffold/search.slim +20 -0
  127. data/views/scaffold/view.slim +18 -0
  128. data/views/search_fields/bsmselect_picker.slim +25 -0
  129. data/views/search_fields/bsselect_picker.slim +24 -0
  130. data/views/search_fields/checkbox.slim +11 -0
  131. data/views/search_fields/checkbox2.slim +14 -0
  132. data/views/search_fields/checkbox_buttons.slim +10 -0
  133. data/views/search_fields/date_range.slim +46 -0
  134. data/views/search_fields/decimal_date_range.slim +47 -0
  135. data/views/search_fields/input_text.slim +18 -0
  136. data/views/search_fields/integer.slim +18 -0
  137. data/views/search_fields/integer_range.slim +27 -0
  138. data/views/search_fields/list_bsmselect.slim +24 -0
  139. data/views/search_fields/list_bsselect.slim +22 -0
  140. data/views/search_fields/list_buttons.slim +8 -0
  141. data/views/search_fields/list_select.slim +17 -0
  142. data/views/search_fields/scaffold_picker.slim +19 -0
  143. data/views/search_fields/select_picker.slim +17 -0
  144. data/views/search_fields/typeahead_picker.slim +25 -0
  145. metadata +327 -0
@@ -0,0 +1,115 @@
1
+ 'use strict';
2
+ angular.module("ngLocale", [], ["$provide", function($provide) {
3
+ var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
4
+ function getDecimals(n) {
5
+ n = n + '';
6
+ var i = n.indexOf('.');
7
+ return (i == -1) ? 0 : n.length - i - 1;
8
+ }
9
+
10
+ function getVF(n, opt_precision) {
11
+ var v = opt_precision;
12
+
13
+ if (undefined === v) {
14
+ v = Math.min(getDecimals(n), 3);
15
+ }
16
+
17
+ var base = Math.pow(10, v);
18
+ var f = ((n * base) | 0) % base;
19
+ return {v: v, f: f};
20
+ }
21
+
22
+ $provide.value("$locale", {
23
+ "DATETIME_FORMATS": {
24
+ "AMPMS": [
25
+ "AM",
26
+ "PM"
27
+ ],
28
+ "DAY": [
29
+ "niedziela",
30
+ "poniedzia\u0142ek",
31
+ "wtorek",
32
+ "\u015broda",
33
+ "czwartek",
34
+ "pi\u0105tek",
35
+ "sobota"
36
+ ],
37
+ "MONTH": [
38
+ "stycznia",
39
+ "lutego",
40
+ "marca",
41
+ "kwietnia",
42
+ "maja",
43
+ "czerwca",
44
+ "lipca",
45
+ "sierpnia",
46
+ "wrze\u015bnia",
47
+ "pa\u017adziernika",
48
+ "listopada",
49
+ "grudnia"
50
+ ],
51
+ "SHORTDAY": [
52
+ "niedz.",
53
+ "pon.",
54
+ "wt.",
55
+ "\u015br.",
56
+ "czw.",
57
+ "pt.",
58
+ "sob."
59
+ ],
60
+ "SHORTMONTH": [
61
+ "sty",
62
+ "lut",
63
+ "mar",
64
+ "kwi",
65
+ "maj",
66
+ "cze",
67
+ "lip",
68
+ "sie",
69
+ "wrz",
70
+ "pa\u017a",
71
+ "lis",
72
+ "gru"
73
+ ],
74
+ "fullDate": "EEEE, d MMMM y",
75
+ "longDate": "d MMMM y",
76
+ "medium": "d MMM y HH:mm:ss",
77
+ "mediumDate": "d MMM y",
78
+ "mediumTime": "HH:mm:ss",
79
+ "short": "dd.MM.y HH:mm",
80
+ "shortDate": "dd.MM.y",
81
+ "shortTime": "HH:mm"
82
+ },
83
+ "NUMBER_FORMATS": {
84
+ "CURRENCY_SYM": "z\u0142",
85
+ "DECIMAL_SEP": ",",
86
+ "GROUP_SEP": "\u00a0",
87
+ "PATTERNS": [
88
+ {
89
+ "gSize": 3,
90
+ "lgSize": 3,
91
+ "maxFrac": 3,
92
+ "minFrac": 0,
93
+ "minInt": 1,
94
+ "negPre": "-",
95
+ "negSuf": "",
96
+ "posPre": "",
97
+ "posSuf": ""
98
+ },
99
+ {
100
+ "gSize": 3,
101
+ "lgSize": 3,
102
+ "maxFrac": 2,
103
+ "minFrac": 2,
104
+ "minInt": 1,
105
+ "negPre": "-",
106
+ "negSuf": "\u00a0\u00a4",
107
+ "posPre": "",
108
+ "posSuf": "\u00a0\u00a4"
109
+ }
110
+ ]
111
+ },
112
+ "id": "pl",
113
+ "pluralCat": function(n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } if (vf.v == 0 && i % 10 >= 2 && i % 10 <= 4 && (i % 100 < 12 || i % 100 > 14)) { return PLURAL_CATEGORY.FEW; } if (vf.v == 0 && i != 1 && i % 10 >= 0 && i % 10 <= 1 || vf.v == 0 && i % 10 >= 5 && i % 10 <= 9 || vf.v == 0 && i % 100 >= 12 && i % 100 <= 14) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;}
114
+ });
115
+ }]);
@@ -0,0 +1,97 @@
1
+ /**
2
+ * @license
3
+ * lodash 4.9.0 (Custom Build) lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE
4
+ * Build: `lodash category="array,collection,object,seq,lang" plus="template"`
5
+ */
6
+ ;(function(){function n(n,t){return n.set(t[0],t[1]),n}function t(n,t){return n.add(t),n}function r(n,t,r){var e=r.length;switch(e){case 0:return n.call(t);case 1:return n.call(t,r[0]);case 2:return n.call(t,r[0],r[1]);case 3:return n.call(t,r[0],r[1],r[2])}return n.apply(t,r)}function e(n,t,r,e){for(var u=-1,i=n.length;++u<i;){var o=n[u];t(e,o,r(o),n)}return e}function u(n,t){for(var r=-1,e=n.length,u=-1,i=t.length,o=Array(e+i);++r<e;)o[r]=n[r];for(;++u<i;)o[r++]=t[u];return o}function i(n,t){for(var r=-1,e=n.length;++r<e&&t(n[r],r,n)!==false;);
7
+ return n}function o(n,t){for(var r=n.length;r--&&t(n[r],r,n)!==false;);return n}function f(n,t){for(var r=-1,e=n.length;++r<e;)if(!t(n[r],r,n))return false;return true}function c(n,t){for(var r=-1,e=n.length,u=0,i=[];++r<e;){var o=n[r];t(o,r,n)&&(i[u++]=o)}return i}function a(n,t){return!!n.length&&d(n,t,0)>-1}function l(n,t,r){for(var e=-1,u=n.length;++e<u;)if(r(t,n[e]))return true;return false}function s(n,t){for(var r=-1,e=n.length,u=Array(e);++r<e;)u[r]=t(n[r],r,n);return u}function h(n,t){for(var r=-1,e=t.length,u=n.length;++r<e;)n[u+r]=t[r];
8
+ return n}function _(n,t,r,e){var u=-1,i=n.length;for(e&&i&&(r=n[++u]);++u<i;)r=t(r,n[u],u,n);return r}function p(n,t,r,e){var u=n.length;for(e&&u&&(r=n[--u]);u--;)r=t(r,n[u],u,n);return r}function v(n,t){for(var r=-1,e=n.length;++r<e;)if(t(n[r],r,n))return true;return false}function g(n,t,r,e){var u;return r(n,function(n,r,i){return t(n,r,i)?(u=e?r:n,false):Ei}),u}function y(n,t,r){for(var e=n.length,u=r?e:-1;r?u--:++u<e;)if(t(n[u],u,n))return u;return-1}function d(n,t,r){if(t!==t)return E(n,r);for(var e=r-1,u=n.length;++e<u;)if(n[e]===t)return e;
9
+ return-1}function b(n,t,r,e){for(var u=r-1,i=n.length;++u<i;)if(e(n[u],t))return u;return-1}function w(n,t,r,e,u){return u(n,function(n,u,i){r=e?(e=false,n):t(r,n,u,i)}),r}function m(n,t){var r=n.length;for(n.sort(t);r--;)n[r]=n[r].c;return n}function j(n,t){for(var r=-1,e=Array(n);++r<n;)e[r]=t(r);return e}function O(n,t){return s(t,function(t){return[t,n[t]]})}function A(n){return function(t){return n(t)}}function k(n,t){return s(t,function(t){return n[t]})}function x(n){return n&&n.Object===Object?n:null;
10
+ }function I(n,t){if(n!==t){var r=null===n,e=n===Ei,u=n===n,i=null===t,o=t===Ei,f=t===t;if(n>t&&!i||!u||r&&!o&&f||e&&f)return 1;if(t>n&&!r||!f||i&&!e&&u||o&&u)return-1}return 0}function R(n,t,r){for(var e=-1,u=n.a,i=t.a,o=u.length,f=r.length;++e<o;){var c=I(u[e],i[e]);if(c){if(e>=f)return c;var a=r[e];return c*("desc"==a?-1:1)}}return n.b-t.b}function W(n,t){for(var r=n.length,e=0;r--;)n[r]===t&&e++;return e}function S(n){return If[n]}function B(n){return"\\"+Wf[n]}function E(n,t,r){for(var e=n.length,u=t+(r?0:-1);r?u--:++u<e;){
11
+ var i=n[u];if(i!==i)return u}return-1}function $(n){var t=false;if(null!=n&&typeof n.toString!="function")try{t=!!(n+"")}catch(r){}return t}function L(n,t){return n=typeof n=="number"||rf.test(n)?+n:-1,t=null==t?to:t,n>-1&&n%1==0&&t>n}function z(n){for(var t,r=[];!(t=n.next()).done;)r.push(t.value);return r}function M(n){var t=-1,r=Array(n.size);return n.forEach(function(n,e){r[++t]=[e,n]}),r}function D(n,t){for(var r=-1,e=n.length,u=0,i=[];++r<e;){var o=n[r];o!==t&&o!==Di||(n[r]=Di,i[u++]=r)}return i;
12
+ }function N(n){var t=-1,r=Array(n.size);return n.forEach(function(n){r[++t]=n}),r}function P(n){if(!n||!Af.test(n))return n.length;for(var t=Of.lastIndex=0;Of.test(n);)t++;return t}function U(n){return n.match(Of)}function C(n){if(mu(n)&&!sa(n)&&!(n instanceof T)){if(n instanceof q)return n;if(Ff.call(n,"__wrapped__"))return xr(n)}return new q(n)}function F(){}function q(n,t){this.__wrapped__=n,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=Ei}function T(n){this.__wrapped__=n,
13
+ this.__actions__=[],this.__dir__=1,this.__filtered__=false,this.__iteratees__=[],this.__takeCount__=uo,this.__views__=[]}function V(){var n=new T(this.__wrapped__);return n.__actions__=Dt(this.__actions__),n.__dir__=this.__dir__,n.__filtered__=this.__filtered__,n.__iteratees__=Dt(this.__iteratees__),n.__takeCount__=this.__takeCount__,n.__views__=Dt(this.__views__),n}function K(){if(this.__filtered__){var n=new T(this);n.__dir__=-1,n.__filtered__=true}else n=this.clone(),n.__dir__*=-1;return n}function G(){
14
+ var n=this.__wrapped__.value(),t=this.__dir__,r=sa(n),e=0>t,u=r?n.length:0,i=cr(0,u,this.__views__),o=i.start,f=i.end,c=f-o,a=e?f:o-1,l=this.__iteratees__,s=l.length,h=0,_=ac(c,this.__takeCount__);if(!r||Li>u||u==c&&_==c)return At(n,this.__actions__);var p=[];n:for(;c--&&_>h;){a+=t;for(var v=-1,g=n[a];++v<s;){var y=l[v],d=y.iteratee,b=y.type,w=d(g);if(b==Yi)g=w;else if(!w){if(b==Xi)continue n;break n}}p[h++]=g}return p}function J(){}function H(n,t){return X(n,t)&&delete n[t]}function Q(n,t){if(yc){
15
+ var r=n[t];return r===Mi?Ei:r}return Ff.call(n,t)?n[t]:Ei}function X(n,t){return yc?n[t]!==Ei:Ff.call(n,t)}function Y(n,t,r){n[t]=yc&&r===Ei?Mi:r}function Z(n){var t=-1,r=n?n.length:0;for(this.clear();++t<r;){var e=n[t];this.set(e[0],e[1])}}function nn(){this.__data__={hash:new J,map:_c?new _c:[],string:new J}}function tn(n){var t=this.__data__;return yr(n)?H(typeof n=="string"?t.string:t.hash,n):_c?t.map["delete"](n):vn(t.map,n)}function rn(n){var t=this.__data__;return yr(n)?Q(typeof n=="string"?t.string:t.hash,n):_c?t.map.get(n):gn(t.map,n);
16
+ }function en(n){var t=this.__data__;return yr(n)?X(typeof n=="string"?t.string:t.hash,n):_c?t.map.has(n):yn(t.map,n)}function un(n,t){var r=this.__data__;return yr(n)?Y(typeof n=="string"?r.string:r.hash,n,t):_c?r.map.set(n,t):bn(r.map,n,t),this}function on(n){var t=-1,r=n?n.length:0;for(this.__data__=new Z;++t<r;)this.push(n[t])}function fn(n,t){var r=n.__data__;if(yr(t)){var e=r.__data__,u=typeof t=="string"?e.string:e.hash;return u[t]===Mi}return r.has(t)}function cn(n){var t=this.__data__;if(yr(n)){
17
+ var r=t.__data__,e=typeof n=="string"?r.string:r.hash;e[n]=Mi}else t.set(n,Mi)}function an(n){var t=-1,r=n?n.length:0;for(this.clear();++t<r;){var e=n[t];this.set(e[0],e[1])}}function ln(){this.__data__={array:[],map:null}}function sn(n){var t=this.__data__,r=t.array;return r?vn(r,n):t.map["delete"](n)}function hn(n){var t=this.__data__,r=t.array;return r?gn(r,n):t.map.get(n)}function _n(n){var t=this.__data__,r=t.array;return r?yn(r,n):t.map.has(n)}function pn(n,t){var r=this.__data__,e=r.array;e&&(Li-1>e.length?bn(e,n,t):(r.array=null,
18
+ r.map=new Z(e)));var u=r.map;return u&&u.set(n,t),this}function vn(n,t){var r=dn(n,t);if(0>r)return false;var e=n.length-1;return r==e?n.pop():tc.call(n,r,1),true}function gn(n,t){var r=dn(n,t);return 0>r?Ei:n[r][1]}function yn(n,t){return dn(n,t)>-1}function dn(n,t){for(var r=n.length;r--;)if(ru(n[r][0],t))return r;return-1}function bn(n,t,r){var e=dn(n,t);0>e?n.push([t,r]):n[e][1]=r}function wn(n,t,r,e){return n===Ei||ru(n,Uf[r])&&!Ff.call(e,r)?t:n}function mn(n,t,r){(r===Ei||ru(n[t],r))&&(typeof t!="number"||r!==Ei||t in n)||(n[t]=r);
19
+ }function jn(n,t,r){var e=n[t];Ff.call(n,t)&&ru(e,r)&&(r!==Ei||t in n)||(n[t]=r)}function On(n,t,r,e){return Wc(n,function(n,u,i){t(e,n,r(n),i)}),e}function An(n,t){return n&&Nt(t,fi(t),n)}function kn(n,t){for(var r=-1,e=null==n,u=t.length,i=Array(u);++r<u;)i[r]=e?Ei:ui(n,t[r]);return i}function xn(n){return cu(n)?n:[]}function In(n){return typeof n=="function"?n:Ii}function Rn(n){return typeof n=="string"||zu(n)?n:n+""}function Wn(n){return sa(n)?n:Pc(n)}function Sn(n,t,r){return n===n&&(r!==Ei&&(n=n>r?r:n),
20
+ t!==Ei&&(n=t>n?t:n)),n}function Bn(n,t,r,e,u,o,f){var c;if(e&&(c=o?e(n,u,o,f):e(n)),c!==Ei)return c;if(!wu(n))return n;var a=sa(n);if(a){if(c=lr(n),!t)return Dt(n,c)}else{var l=fr(n),s=l==ho||l==_o;if(ha(n))return It(n,t);if(l==go||l==fo||s&&!o){if($(n))return o?n:{};if(c=sr(s?{}:n),!t)return Ut(n,An(c,n))}else{if(!xf[l])return o?n:{};c=hr(n,l,Bn,t)}}f||(f=new an);var h=f.get(n);if(h)return h;if(f.set(n,c),!a)var _=r?Yt(n):fi(n);return i(_||n,function(u,i){_&&(i=u,u=n[i]),jn(c,i,Bn(u,t,r,e,i,n,f));
21
+ }),c}function En(n){return wu(n)?Zf(n):{}}function $n(n,t,r,e){var u=-1,i=a,o=true,f=n.length,c=[],h=t.length;if(!f)return c;r&&(t=s(t,A(r))),e?(i=l,o=false):Li>t.length||(i=fn,o=false,t=new on(t));n:for(;++u<f;){var _=n[u],p=r?r(_):_;if(o&&p===p){for(var v=h;v--;)if(t[v]===p)continue n;c.push(_)}else i(t,p,e)||c.push(_)}return c}function Ln(n,t){var r=true;return Wc(n,function(n,e,u){return r=!!t(n,e,u)}),r}function zn(n,t,r,e){var u=n.length;for(r=qu(r),0>r&&(r=-r>u?0:u+r),e=e===Ei||e>u?u:qu(e),0>e&&(e+=u),
22
+ e=r>e?0:Tu(e);e>r;)n[r++]=t;return n}function Mn(n,t){var r=[];return Wc(n,function(n,e,u){t(n,e,u)&&r.push(n)}),r}function Dn(n,t,r,e,u){var i=-1,o=n.length;for(r||(r=pr),u||(u=[]);++i<o;){var f=n[i];t>0&&r(f)?t>1?Dn(f,t-1,r,e,u):h(u,f):e||(u[u.length]=f)}return u}function Nn(n,t){return n&&Bc(n,t,fi)}function Pn(n,t){return n&&Ec(n,t,fi)}function Un(n,t){return c(t,function(t){return yu(n[t])})}function Cn(n,t){t=gr(t,n)?[t]:Wn(t);for(var r=0,e=t.length;null!=n&&e>r;)n=n[t[r++]];return r&&r==e?n:Ei;
23
+ }function Fn(n,t,r){var e=t(n);return sa(n)?e:h(e,r(n))}function qn(n,t){return Ff.call(n,t)||typeof n=="object"&&t in n&&null===ir(n)}function Tn(n,t){return t in Object(n)}function Vn(n,t,r){for(var e=r?l:a,u=n[0].length,i=n.length,o=i,f=Array(i),c=1/0,h=[];o--;){var _=n[o];o&&t&&(_=s(_,A(t))),c=ac(_.length,c),f[o]=r||!t&&(120>u||120>_.length)?Ei:new on(o&&_)}_=n[0];var p=-1,v=f[0];n:for(;++p<u&&c>h.length;){var g=_[p],y=t?t(g):g;if(!(v?fn(v,y):e(h,y,r))){for(o=i;--o;){var d=f[o];if(!(d?fn(d,y):e(n[o],y,r)))continue n;
24
+ }v&&v.push(y),h.push(g)}}return h}function Kn(n,t,r,e){return Nn(n,function(n,u,i){t(e,r(n),u,i)}),e}function Gn(n,t,e){gr(t,n)||(t=Wn(t),n=Or(n,t),t=Vr(t));var u=null==n?n:n[t];return null==u?Ei:r(u,n,e)}function Jn(n,t,r,e,u){return n===t?true:null==n||null==t||!wu(n)&&!mu(t)?n!==n&&t!==t:Hn(n,t,Jn,r,e,u)}function Hn(n,t,r,e,u,i){var o=sa(n),f=sa(t),c=co,a=co;o||(c=fr(n),c=c==fo?go:c),f||(a=fr(t),a=a==fo?go:a);var l=c==go&&!$(n),s=a==go&&!$(t),h=c==a;if(h&&!l)return i||(i=new an),o||Mu(n)?Ht(n,t,r,e,u,i):Qt(n,t,c,r,e,u,i);
25
+ if(!(u&Ji)){var _=l&&Ff.call(n,"__wrapped__"),p=s&&Ff.call(t,"__wrapped__");if(_||p){var v=_?n.value():n,g=p?t.value():t;return i||(i=new an),r(v,g,e,u,i)}}return h?(i||(i=new an),Xt(n,t,r,e,u,i)):false}function Qn(n,t,r,e){var u=r.length,i=u,o=!e;if(null==n)return!i;for(n=Object(n);u--;){var f=r[u];if(o&&f[2]?f[1]!==n[f[0]]:!(f[0]in n))return false}for(;++u<i;){f=r[u];var c=f[0],a=n[c],l=f[1];if(o&&f[2]){if(a===Ei&&!(c in n))return false}else{var s=new an;if(e)var h=e(a,l,c,n,t,s);if(!(h===Ei?Jn(l,a,e,Gi|Ji,s):h))return false;
26
+ }}return true}function Xn(n){return typeof n=="function"?n:null==n?Ii:typeof n=="object"?sa(n)?rt(n[0],n[1]):tt(n):Bi(n)}function Yn(n){return fc(Object(n))}function Zn(n){n=null==n?n:Object(n);var t=[];for(var r in n)t.push(r);return t}function nt(n,t){var r=-1,e=fu(n)?Array(n.length):[];return Wc(n,function(n,u,i){e[++r]=t(n,u,i)}),e}function tt(n){var t=rr(n);return 1==t.length&&t[0][2]?mr(t[0][0],t[0][1]):function(r){return r===n||Qn(r,n,t)}}function rt(n,t){return gr(n)&&wr(t)?mr(n,t):function(r){
27
+ var e=ui(r,n);return e===Ei&&e===t?oi(r,n):Jn(t,e,Ei,Gi|Ji)}}function et(n,t,r,e,u){if(n!==t){if(!sa(t)&&!Mu(t))var o=ci(t);i(o||t,function(i,f){if(o&&(f=i,i=t[f]),wu(i))u||(u=new an),ut(n,t,f,r,et,e,u);else{var c=e?e(n[f],i,f+"",n,t,u):Ei;c===Ei&&(c=i),mn(n,f,c)}})}}function ut(n,t,r,e,u,i,o){var f=n[r],c=t[r],a=o.get(c);if(a)return mn(n,r,a),Ei;var l=i?i(f,c,r+"",n,t,o):Ei,s=l===Ei;s&&(l=c,sa(c)||Mu(c)?sa(f)?l=f:cu(f)?l=Dt(f):(s=false,l=Bn(c,true)):Su(c)||iu(c)?iu(f)?l=Ku(f):!wu(f)||e&&yu(f)?(s=false,l=Bn(c,true)):l=f:s=false),
28
+ o.set(c,l),s&&u(l,c,e,i,o),o["delete"](c),mn(n,r,l)}function it(n,t,r){var e=-1;t=s(t.length?t:[Ii],tr());var u=nt(n,function(n,r,u){var i=s(t,function(t){return t(n)});return{a:i,b:++e,c:n}});return m(u,function(n,t){return R(n,t,r)})}function ot(n,t){return n=Object(n),_(t,function(t,r){return r in n&&(t[r]=n[r]),t},{})}function ft(n,t){for(var r=-1,e=Zt(n),u=e.length,i={};++r<u;){var o=e[r],f=n[o];t(f,o)&&(i[o]=f)}return i}function ct(n){return function(t){return null==t?Ei:t[n]}}function at(n){
29
+ return function(t){return Cn(t,n)}}function lt(n,t,r,e){var u=e?b:d,i=-1,o=t.length,f=n;for(r&&(f=s(n,A(r)));++i<o;)for(var c=0,a=t[i],l=r?r(a):a;(c=u(f,l,c,e))>-1;)f!==n&&tc.call(f,c,1),tc.call(n,c,1);return n}function st(n,t){for(var r=n?t.length:0,e=r-1;r--;){var u=t[r];if(e==r||u!=i){var i=u;if(L(u))tc.call(n,u,1);else if(gr(u,n))delete n[u];else{var o=Wn(u),f=Or(n,o);null!=f&&delete f[Vr(o)]}}}return n}function ht(n,t){return n+ec(lc()*(t-n+1))}function _t(n,t,r,e){t=gr(t,n)?[t]:Wn(t);for(var u=-1,i=t.length,o=i-1,f=n;null!=f&&++u<i;){
30
+ var c=t[u];if(wu(f)){var a=r;if(u!=o){var l=f[c];a=e?e(l,c,f):Ei,a===Ei&&(a=null==l?L(t[u+1])?[]:{}:l)}jn(f,c,a)}f=f[c]}return n}function pt(n,t,r){var e=-1,u=n.length;0>t&&(t=-t>u?0:u+t),r=r>u?u:r,0>r&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0;for(var i=Array(u);++e<u;)i[e]=n[e+t];return i}function vt(n,t){var r;return Wc(n,function(n,e,u){return r=t(n,e,u),!r}),!!r}function gt(n,t,r){var e=0,u=n?n.length:e;if(typeof t=="number"&&t===t&&oo>=u){for(;u>e;){var i=e+u>>>1,o=n[i];(r?t>=o:t>o)&&null!==o?e=i+1:u=i;
31
+ }return u}return yt(n,t,Ii,r)}function yt(n,t,r,e){t=r(t);for(var u=0,i=n?n.length:0,o=t!==t,f=null===t,c=t===Ei;i>u;){var a=ec((u+i)/2),l=r(n[a]),s=l!==Ei,h=l===l;if(o)var _=h||e;else _=f?h&&s&&(e||null!=l):c?h&&(e||s):null==l?false:e?t>=l:t>l;_?u=a+1:i=a}return ac(i,io)}function dt(n){return bt(n)}function bt(n,t){for(var r=0,e=n.length,u=n[0],i=t?t(u):u,o=i,f=1,c=[u];++r<e;)u=n[r],i=t?t(u):u,ru(i,o)||(o=i,c[f++]=u);return c}function wt(n,t,r){var e=-1,u=a,i=n.length,o=true,f=[],c=f;if(r)o=false,u=l;else if(i<Li)c=t?[]:f;else{
32
+ var s=t?null:Lc(n);if(s)return N(s);o=false,u=fn,c=new on}n:for(;++e<i;){var h=n[e],_=t?t(h):h;if(o&&_===_){for(var p=c.length;p--;)if(c[p]===_)continue n;t&&c.push(_),f.push(h)}else u(c,_,r)||(c!==f&&c.push(_),f.push(h))}return f}function mt(n,t){t=gr(t,n)?[t]:Wn(t),n=Or(n,t);var r=Vr(t);return null!=n&&ii(n,r)?delete n[r]:true}function jt(n,t,r,e){return _t(n,t,r(Cn(n,t)),e)}function Ot(n,t,r,e){for(var u=n.length,i=e?u:-1;(e?i--:++i<u)&&t(n[i],i,n););return r?pt(n,e?0:i,e?i+1:u):pt(n,e?i+1:0,e?u:i);
33
+ }function At(n,t){var r=n;return r instanceof T&&(r=r.value()),_(t,function(n,t){return t.func.apply(t.thisArg,h([n],t.args))},r)}function kt(n,t,r){for(var e=-1,u=n.length;++e<u;)var i=i?h($n(i,n[e],t,r),$n(n[e],i,t,r)):n[e];return i&&i.length?wt(i,t,r):[]}function xt(n,t,r){for(var e=-1,u=n.length,i=t.length,o={};++e<u;){var f=i>e?t[e]:Ei;r(o,n[e],f)}return o}function It(n,t){if(t)return n.slice();var r=new n.constructor(n.length);return n.copy(r),r}function Rt(n){var t=new n.constructor(n.byteLength);
34
+ return new Hf(t).set(new Hf(n)),t}function Wt(n,t){var r=t?Rt(n.buffer):n.buffer;return new n.constructor(r,n.byteOffset,n.byteLength)}function St(t,r,e){var u=r?e(M(t),true):M(t);return _(u,n,new t.constructor)}function Bt(n){var t=new n.constructor(n.source,Xo.exec(n));return t.lastIndex=n.lastIndex,t}function Et(n,r,e){var u=r?e(N(n),true):N(n);return _(u,t,new n.constructor)}function $t(n){return Ic?Object(Ic.call(n)):{}}function Lt(n,t){var r=t?Rt(n.buffer):n.buffer;return new n.constructor(r,n.byteOffset,n.length);
35
+ }function zt(n,t,r,e){for(var u=-1,i=n.length,o=r.length,f=-1,c=t.length,a=cc(i-o,0),l=Array(c+a),s=!e;++f<c;)l[f]=t[f];for(;++u<o;)(s||i>u)&&(l[r[u]]=n[u]);for(;a--;)l[f++]=n[u++];return l}function Mt(n,t,r,e){for(var u=-1,i=n.length,o=-1,f=r.length,c=-1,a=t.length,l=cc(i-f,0),s=Array(l+a),h=!e;++u<l;)s[u]=n[u];for(var _=u;++c<a;)s[_+c]=t[c];for(;++o<f;)(h||i>u)&&(s[_+r[o]]=n[u++]);return s}function Dt(n,t){var r=-1,e=n.length;for(t||(t=Array(e));++r<e;)t[r]=n[r];return t}function Nt(n,t,r){return Pt(n,t,r);
36
+ }function Pt(n,t,r,e){r||(r={});for(var u=-1,i=t.length;++u<i;){var o=t[u],f=e?e(r[o],n[o],o,r,n):n[o];jn(r,o,f)}return r}function Ut(n,t){return Nt(n,or(n),t)}function Ct(n,t){return function(r,u){var i=sa(r)?e:On,o=t?t():{};return i(r,n,tr(u),o)}}function Ft(n){return Qe(function(t,r){var e=-1,u=r.length,i=u>1?r[u-1]:Ei,o=u>2?r[2]:Ei;for(i=typeof i=="function"?(u--,i):Ei,o&&vr(r[0],r[1],o)&&(i=3>u?Ei:i,u=1),t=Object(t);++e<u;){var f=r[e];f&&n(t,f,e,i)}return t})}function qt(n,t){return function(r,e){
37
+ if(null==r)return r;if(!fu(r))return n(r,e);for(var u=r.length,i=t?u:-1,o=Object(r);(t?i--:++i<u)&&e(o[i],i,o)!==false;);return r}}function Tt(n){return function(t,r,e){for(var u=-1,i=Object(t),o=e(t),f=o.length;f--;){var c=o[n?f:++u];if(r(i[c],c,i)===false)break}return t}}function Vt(n){return function(){var t=arguments;switch(t.length){case 0:return new n;case 1:return new n(t[0]);case 2:return new n(t[0],t[1]);case 3:return new n(t[0],t[1],t[2]);case 4:return new n(t[0],t[1],t[2],t[3]);case 5:return new n(t[0],t[1],t[2],t[3],t[4]);
38
+ case 6:return new n(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new n(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var r=En(n.prototype),e=n.apply(r,t);return wu(e)?e:r}}function Kt(n,t,r,e,u,i,o,f,c,a){function l(){for(var y=arguments.length,d=y,b=Array(y);d--;)b[d]=arguments[d];if(p)var w=ur(l),m=W(b,w);if(e&&(b=zt(b,e,u,p)),i&&(b=Mt(b,i,o,p)),y-=m,p&&a>y){var j=D(b,w);return Jt(n,t,Kt,l.placeholder,r,b,j,f,c,a-y)}var O=h?r:this,A=_?O[n]:n;return y=b.length,f?b=Ar(b,f):v&&y>1&&b.reverse(),s&&y>c&&(b.length=c),
39
+ this&&this!==Nf&&this instanceof l&&(A=g||Vt(A)),A.apply(O,b)}var s=t&Vi,h=t&Ni,_=t&Pi,p=t&(Ci|Fi),v=t&Ki,g=_?Ei:Vt(n);return l}function Gt(n,t){return function(r,e){return Kn(r,n,t(e),{})}}function Jt(n,t,r,e,u,i,o,f,c,a){var l=t&Ci,s=f?Dt(f):Ei,h=l?o:Ei,_=l?Ei:o,p=l?i:Ei,v=l?Ei:i;t|=l?qi:Ti,t&=~(l?Ti:qi),t&Ui||(t&=~(Ni|Pi));var g=[n,t,u,p,h,v,_,s,c,a],y=r.apply(Ei,g);return dr(n)&&Nc(y,g),y.placeholder=e,y}function Ht(n,t,r,e,u,i){var o=-1,f=u&Ji,c=u&Gi,a=n.length,l=t.length;if(!(a==l||f&&l>a))return false;
40
+ var s=i.get(n);if(s)return s==t;var h=true;for(i.set(n,t);++o<a;){var _=n[o],p=t[o];if(e)var g=f?e(p,_,o,t,n,i):e(_,p,o,n,t,i);if(g!==Ei){if(g)continue;h=false;break}if(c){if(!v(t,function(n){return _===n||r(_,n,e,u,i)})){h=false;break}}else if(_!==p&&!r(_,p,e,u,i)){h=false;break}}return i["delete"](n),h}function Qt(n,t,r,e,u,i,o){switch(r){case xo:if(n.byteLength!=t.byteLength||n.byteOffset!=t.byteOffset)return false;n=n.buffer,t=t.buffer;case ko:return!(n.byteLength!=t.byteLength||!e(new Hf(n),new Hf(t)));case ao:
41
+ case lo:return+n==+t;case so:return n.name==t.name&&n.message==t.message;case vo:return n!=+n?t!=+t:n==+t;case bo:case mo:return n==t+"";case po:var f=M;case wo:var c=i&Ji;if(f||(f=N),n.size!=t.size&&!c)return false;var a=o.get(n);return a?a==t:(i|=Gi,o.set(n,t),Ht(f(n),f(t),e,u,i,o));case jo:if(Ic)return Ic.call(n)==Ic.call(t)}return false}function Xt(n,t,r,e,u,i){var o=u&Ji,f=fi(n),c=f.length,a=fi(t),l=a.length;if(c!=l&&!o)return false;for(var s=c;s--;){var h=f[s];if(!(o?h in t:qn(t,h)))return false}var _=i.get(n);
42
+ if(_)return _==t;var p=true;i.set(n,t);for(var v=o;++s<c;){h=f[s];var g=n[h],y=t[h];if(e)var d=o?e(y,g,h,t,n,i):e(g,y,h,n,t,i);if(!(d===Ei?g===y||r(g,y,e,u,i):d)){p=false;break}v||(v="constructor"==h)}if(p&&!v){var b=n.constructor,w=t.constructor;b!=w&&"constructor"in n&&"constructor"in t&&!(typeof b=="function"&&b instanceof b&&typeof w=="function"&&w instanceof w)&&(p=false)}return i["delete"](n),p}function Yt(n){return Fn(n,fi,or)}function Zt(n){return Fn(n,ci,Dc)}function nr(n){for(var t=n.name+"",r=wc[t],e=Ff.call(wc,t)?r.length:0;e--;){
43
+ var u=r[e],i=u.func;if(null==i||i==n)return u.name}return t}function tr(){var n=C.iteratee||Ri;return n=n===Ri?Xn:n,arguments.length?n(arguments[0],arguments[1]):n}function rr(n){for(var t=gi(n),r=t.length;r--;)t[r][2]=wr(t[r][1]);return t}function er(n,t){var r=n[t];return xu(r)?r:Ei}function ur(n){var t=Ff.call(C,"placeholder")?C:n;return t.placeholder}function ir(n){return uc(Object(n))}function or(n){return Xf(Object(n))}function fr(n){return Tf.call(n)}function cr(n,t,r){for(var e=-1,u=r.length;++e<u;){
44
+ var i=r[e],o=i.size;switch(i.type){case"drop":n+=o;break;case"dropRight":t-=o;break;case"take":t=ac(t,n+o);break;case"takeRight":n=cc(n,t-o)}}return{start:n,end:t}}function ar(n,t,r){t=gr(t,n)?[t]:Wn(t);for(var e,u=-1,i=t.length;++u<i;){var o=t[u];if(!(e=null!=n&&r(n,o)))break;n=n[o]}if(e)return e;var i=n?n.length:0;return!!i&&bu(i)&&L(o,i)&&(sa(n)||Lu(n)||iu(n))}function lr(n){var t=n.length,r=n.constructor(t);return t&&"string"==typeof n[0]&&Ff.call(n,"index")&&(r.index=n.index,r.input=n.input),
45
+ r}function sr(n){return typeof n.constructor!="function"||br(n)?{}:En(ir(n))}function hr(n,t,r,e){var u=n.constructor;switch(t){case ko:return Rt(n);case ao:case lo:return new u(+n);case xo:return Wt(n,e);case Io:case Ro:case Wo:case So:case Bo:case Eo:case $o:case Lo:case zo:return Lt(n,e);case po:return St(n,e,r);case vo:case mo:return new u(n);case bo:return Bt(n);case wo:return Et(n,e,r);case jo:return $t(n)}}function _r(n){var t=n?n.length:Ei;return bu(t)&&(sa(n)||Lu(n)||iu(n))?j(t,String):null;
46
+ }function pr(n){return cu(n)&&(sa(n)||iu(n))}function vr(n,t,r){if(!wu(r))return false;var e=typeof t;return("number"==e?fu(r)&&L(t,r.length):"string"==e&&t in r)?ru(r[t],n):false}function gr(n,t){var r=typeof n;return"number"==r||"symbol"==r?true:!sa(n)&&(zu(n)||Vo.test(n)||!To.test(n)||null!=t&&n in Object(t))}function yr(n){var t=typeof n;return"number"==t||"boolean"==t||"string"==t&&"__proto__"!=n||null==n}function dr(n){var t=nr(n),r=C[t];if(typeof r!="function"||!(t in T.prototype))return false;if(n===r)return true;
47
+ var e=zc(r);return!!e&&n===e[0]}function br(n){var t=n&&n.constructor,r=typeof t=="function"&&t.prototype||Uf;return n===r}function wr(n){return n===n&&!wu(n)}function mr(n,t){return function(r){return null==r?false:r[n]===t&&(t!==Ei||n in Object(r))}}function jr(n,t,r,e,u,i){return wu(n)&&wu(t)&&et(n,t,Ei,jr,i.set(t,n)),n}function Or(n,t){return 1==t.length?n:Cn(n,pt(t,0,-1))}function Ar(n,t){for(var r=n.length,e=ac(t.length,r),u=Dt(n);e--;){var i=t[e];n[e]=L(i,r)?u[i]:Ei}return n}function kr(n){if(null!=n){
48
+ try{return Cf.call(n)}catch(t){}try{return n+""}catch(t){}}return""}function xr(n){if(n instanceof T)return n.clone();var t=new q(n.__wrapped__,n.__chain__);return t.__actions__=Dt(n.__actions__),t.__index__=n.__index__,t.__values__=n.__values__,t}function Ir(n,t,r){t=(r?vr(n,t,r):t===Ei)?1:cc(qu(t),0);var e=n?n.length:0;if(!e||1>t)return[];for(var u=0,i=0,o=Array(rc(e/t));e>u;)o[i++]=pt(n,u,u+=t);return o}function Rr(n){for(var t=-1,r=n?n.length:0,e=0,u=[];++t<r;){var i=n[t];i&&(u[e++]=i)}return u;
49
+ }function Wr(){var n=arguments.length,t=Xe(arguments[0]);if(2>n)return n?Dt(t):[];for(var r=Array(n-1);n--;)r[n-1]=arguments[n];return u(t,Dn(r,1))}function Sr(n,t,r){var e=n?n.length:0;return e?(t=r||t===Ei?1:qu(t),pt(n,0>t?0:t,e)):[]}function Br(n,t,r){var e=n?n.length:0;return e?(t=r||t===Ei?1:qu(t),t=e-t,pt(n,0,0>t?0:t)):[]}function Er(n,t){return n&&n.length?Ot(n,tr(t,3),true,true):[]}function $r(n,t){return n&&n.length?Ot(n,tr(t,3),true):[]}function Lr(n,t,r,e){var u=n?n.length:0;return u?(r&&typeof r!="number"&&vr(n,t,r)&&(r=0,
50
+ e=u),zn(n,t,r,e)):[]}function zr(n,t){return n&&n.length?y(n,tr(t,3)):-1}function Mr(n,t){return n&&n.length?y(n,tr(t,3),true):-1}function Dr(n){var t=n?n.length:0;return t?Dn(n,1):[]}function Nr(n){var t=n?n.length:0;return t?Dn(n,no):[]}function Pr(n,t){var r=n?n.length:0;return r?(t=t===Ei?1:qu(t),Dn(n,t)):[]}function Ur(n){for(var t=-1,r=n?n.length:0,e={};++t<r;){var u=n[t];e[u[0]]=u[1]}return e}function Cr(n){return n?n[0]:Ei}function Fr(n,t,r){var e=n?n.length:0;return e?(r=qu(r),0>r&&(r=cc(e+r,0)),
51
+ d(n,t,r)):-1}function qr(n){return Br(n,1)}function Tr(n,t){return n?oc.call(n,t):""}function Vr(n){var t=n?n.length:0;return t?n[t-1]:Ei}function Kr(n,t,r){var e=n?n.length:0;if(!e)return-1;var u=e;if(r!==Ei&&(u=qu(r),u=(0>u?cc(e+u,0):ac(u,e-1))+1),t!==t)return E(n,u,true);for(;u--;)if(n[u]===t)return u;return-1}function Gr(n,t){return n&&n.length&&t&&t.length?lt(n,t):n}function Jr(n,t,r){return n&&n.length&&t&&t.length?lt(n,t,tr(r)):n}function Hr(n,t,r){return n&&n.length&&t&&t.length?lt(n,t,Ei,r):n;
52
+ }function Qr(n,t){var r=[];if(!n||!n.length)return r;var e=-1,u=[],i=n.length;for(t=tr(t,3);++e<i;){var o=n[e];t(o,e,n)&&(r.push(o),u.push(e))}return st(n,u),r}function Xr(n){return n?sc.call(n):n}function Yr(n,t,r){var e=n?n.length:0;return e?(r&&typeof r!="number"&&vr(n,t,r)?(t=0,r=e):(t=null==t?0:qu(t),r=r===Ei?e:qu(r)),pt(n,t,r)):[]}function Zr(n,t){return gt(n,t)}function ne(n,t,r){return yt(n,t,tr(r))}function te(n,t){var r=n?n.length:0;if(r){var e=gt(n,t);if(r>e&&ru(n[e],t))return e}return-1;
53
+ }function re(n,t){return gt(n,t,true)}function ee(n,t,r){return yt(n,t,tr(r),true)}function ue(n,t){var r=n?n.length:0;if(r){var e=gt(n,t,true)-1;if(ru(n[e],t))return e}return-1}function ie(n){return n&&n.length?dt(n):[]}function oe(n,t){return n&&n.length?bt(n,tr(t)):[]}function fe(n){return Sr(n,1)}function ce(n,t,r){return n&&n.length?(t=r||t===Ei?1:qu(t),pt(n,0,0>t?0:t)):[]}function ae(n,t,r){var e=n?n.length:0;return e?(t=r||t===Ei?1:qu(t),t=e-t,pt(n,0>t?0:t,e)):[]}function le(n,t){return n&&n.length?Ot(n,tr(t,3),false,true):[];
54
+ }function se(n,t){return n&&n.length?Ot(n,tr(t,3)):[]}function he(n){return n&&n.length?wt(n):[]}function _e(n,t){return n&&n.length?wt(n,tr(t)):[]}function pe(n,t){return n&&n.length?wt(n,Ei,t):[]}function ve(n){if(!n||!n.length)return[];var t=0;return n=c(n,function(n){return cu(n)?(t=cc(n.length,t),true):Ei}),j(t,function(t){return s(n,ct(t))})}function ge(n,t){if(!n||!n.length)return[];var e=ve(n);return null==t?e:s(e,function(n){return r(t,Ei,n)})}function ye(n,t){return xt(n||[],t||[],jn)}function de(n,t){
55
+ return xt(n||[],t||[],_t)}function be(n){var t=C(n);return t.__chain__=true,t}function we(n,t){return t(n),n}function me(n,t){return t(n)}function je(){return be(this)}function Oe(){return new q(this.value(),this.__chain__)}function Ae(){this.__values__===Ei&&(this.__values__=Fu(this.value()));var n=this.__index__>=this.__values__.length,t=n?Ei:this.__values__[this.__index__++];return{done:n,value:t}}function ke(){return this}function xe(n){for(var t,r=this;r instanceof F;){var e=xr(r);e.__index__=0,
56
+ e.__values__=Ei,t?u.__wrapped__=e:t=e;var u=e;r=r.__wrapped__}return u.__wrapped__=n,t}function Ie(){var n=this.__wrapped__;if(n instanceof T){var t=n;return this.__actions__.length&&(t=new T(this)),t=t.reverse(),t.__actions__.push({func:me,args:[Xr],thisArg:Ei}),new q(t,this.__chain__)}return this.thru(Xr)}function Re(){return At(this.__wrapped__,this.__actions__)}function We(n,t,r){var e=sa(n)?f:Ln;return r&&vr(n,t,r)&&(t=Ei),e(n,tr(t,3))}function Se(n,t){var r=sa(n)?c:Mn;return r(n,tr(t,3))}function Be(n,t){
57
+ if(t=tr(t,3),sa(n)){var r=y(n,t);return r>-1?n[r]:Ei}return g(n,t,Wc)}function Ee(n,t){if(t=tr(t,3),sa(n)){var r=y(n,t,true);return r>-1?n[r]:Ei}return g(n,t,Sc)}function $e(n,t){return Dn(Pe(n,t),1)}function Le(n,t){return Dn(Pe(n,t),no)}function ze(n,t,r){return r=r===Ei?1:qu(r),Dn(Pe(n,t),r)}function Me(n,t){return typeof t=="function"&&sa(n)?i(n,t):Wc(n,tr(t))}function De(n,t){return typeof t=="function"&&sa(n)?o(n,t):Sc(n,tr(t))}function Ne(n,t,r,e){n=fu(n)?n:ji(n),r=r&&!e?qu(r):0;var u=n.length;
58
+ return 0>r&&(r=cc(u+r,0)),Lu(n)?u>=r&&n.indexOf(t,r)>-1:!!u&&d(n,t,r)>-1}function Pe(n,t){var r=sa(n)?s:nt;return r(n,tr(t,3))}function Ue(n,t,r,e){return null==n?[]:(sa(t)||(t=null==t?[]:[t]),r=e?Ei:r,sa(r)||(r=null==r?[]:[r]),it(n,t,r))}function Ce(n,t,r){var e=sa(n)?_:w,u=3>arguments.length;return e(n,tr(t,4),r,u,Wc)}function Fe(n,t,r){var e=sa(n)?p:w,u=3>arguments.length;return e(n,tr(t,4),r,u,Sc)}function qe(n,t){var r=sa(n)?c:Mn;return t=tr(t,3),r(n,function(n,r,e){return!t(n,r,e)})}function Te(n){
59
+ var t=fu(n)?n:ji(n),r=t.length;return r>0?t[ht(0,r-1)]:Ei}function Ve(n,t,r){var e=-1,u=Fu(n),i=u.length,o=i-1;for(t=(r?vr(n,t,r):t===Ei)?1:Sn(qu(t),0,i);++e<t;){var f=ht(e,o),c=u[f];u[f]=u[e],u[e]=c}return u.length=t,u}function Ke(n){return Ve(n,uo)}function Ge(n){if(null==n)return 0;if(fu(n)){var t=n.length;return t&&Lu(n)?P(n):t}if(mu(n)){var r=fr(n);if(r==po||r==wo)return n.size}return fi(n).length}function Je(n,t,r){var e=sa(n)?v:vt;return r&&vr(n,t,r)&&(t=Ei),e(n,tr(t,3))}function He(n,t){if(typeof n!="function"||t&&typeof t!="function")throw new TypeError(zi);
60
+ var r=function(){var e=arguments,u=t?t.apply(this,e):e[0],i=r.cache;if(i.has(u))return i.get(u);var o=n.apply(this,e);return r.cache=i.set(u,o),o};return r.cache=new(He.Cache||Z),r}function Qe(n,t){if(typeof n!="function")throw new TypeError(zi);return t=cc(t===Ei?n.length-1:qu(t),0),function(){for(var e=arguments,u=-1,i=cc(e.length-t,0),o=Array(i);++u<i;)o[u]=e[t+u];switch(t){case 0:return n.call(this,o);case 1:return n.call(this,e[0],o);case 2:return n.call(this,e[0],e[1],o)}var f=Array(t+1);for(u=-1;++u<t;)f[u]=e[u];
61
+ return f[t]=o,r(n,this,f)}}function Xe(){if(!arguments.length)return[];var n=arguments[0];return sa(n)?n:[n]}function Ye(n){return Bn(n,false,true)}function Ze(n,t){return Bn(n,false,true,t)}function nu(n){return Bn(n,true,true)}function tu(n,t){return Bn(n,true,true,t)}function ru(n,t){return n===t||n!==n&&t!==t}function eu(n,t){return n>t}function uu(n,t){return n>=t}function iu(n){return cu(n)&&Ff.call(n,"callee")&&(!nc.call(n,"callee")||Tf.call(n)==fo)}function ou(n){return mu(n)&&Tf.call(n)==ko}function fu(n){
62
+ return null!=n&&bu(Mc(n))&&!yu(n)}function cu(n){return mu(n)&&fu(n)}function au(n){return n===true||n===false||mu(n)&&Tf.call(n)==ao}function lu(n){return mu(n)&&Tf.call(n)==lo}function su(n){return!!n&&1===n.nodeType&&mu(n)&&!Su(n)}function hu(n){if(fu(n)&&(sa(n)||Lu(n)||yu(n.splice)||iu(n)||ha(n)))return!n.length;if(mu(n)){var t=fr(n);if(t==po||t==wo)return!n.size}for(var r in n)if(Ff.call(n,r))return false;return!(bc&&fi(n).length)}function _u(n,t){return Jn(n,t)}function pu(n,t,r){r=typeof r=="function"?r:Ei;
63
+ var e=r?r(n,t):Ei;return e===Ei?Jn(n,t,r):!!e}function vu(n){return mu(n)?Tf.call(n)==so||typeof n.message=="string"&&typeof n.name=="string":false}function gu(n){return typeof n=="number"&&ic(n)}function yu(n){var t=wu(n)?Tf.call(n):"";return t==ho||t==_o}function du(n){return typeof n=="number"&&n==qu(n)}function bu(n){return typeof n=="number"&&n>-1&&n%1==0&&to>=n}function wu(n){var t=typeof n;return!!n&&("object"==t||"function"==t)}function mu(n){return!!n&&typeof n=="object"}function ju(n){return mu(n)&&fr(n)==po;
64
+ }function Ou(n,t){return n===t||Qn(n,t,rr(t))}function Au(n,t,r){return r=typeof r=="function"?r:Ei,Qn(n,t,rr(t),r)}function ku(n){return Wu(n)&&n!=+n}function xu(n){if(!wu(n))return false;var t=yu(n)||$(n)?Vf:nf;return t.test(kr(n))}function Iu(n){return null===n}function Ru(n){return null==n}function Wu(n){return typeof n=="number"||mu(n)&&Tf.call(n)==vo}function Su(n){if(!mu(n)||Tf.call(n)!=go||$(n))return false;var t=ir(n);if(null===t)return true;var r=Ff.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&Cf.call(r)==qf;
65
+ }function Bu(n){return wu(n)&&Tf.call(n)==bo}function Eu(n){return du(n)&&n>=-to&&to>=n}function $u(n){return mu(n)&&fr(n)==wo}function Lu(n){return typeof n=="string"||!sa(n)&&mu(n)&&Tf.call(n)==mo}function zu(n){return typeof n=="symbol"||mu(n)&&Tf.call(n)==jo}function Mu(n){return mu(n)&&bu(n.length)&&!!kf[Tf.call(n)]}function Du(n){return n===Ei}function Nu(n){return mu(n)&&fr(n)==Oo}function Pu(n){return mu(n)&&Tf.call(n)==Ao}function Uu(n,t){return t>n}function Cu(n,t){return t>=n}function Fu(n){
66
+ if(!n)return[];if(fu(n))return Lu(n)?U(n):Dt(n);if(Yf&&n[Yf])return z(n[Yf]());var t=fr(n),r=t==po?M:t==wo?N:ji;return r(n)}function qu(n){if(!n)return 0===n?n:0;if(n=Vu(n),n===no||n===-no){var t=0>n?-1:1;return t*ro}var r=n%1;return n===n?r?n-r:n:0}function Tu(n){return n?Sn(qu(n),0,uo):0}function Vu(n){if(typeof n=="number")return n;if(zu(n))return eo;if(wu(n)){var t=yu(n.valueOf)?n.valueOf():n;n=wu(t)?t+"":t}if(typeof n!="string")return 0===n?n:+n;n=n.replace(Jo,"");var r=Zo.test(n);return r||tf.test(n)?Sf(n.slice(2),r?2:8):Yo.test(n)?eo:+n;
67
+ }function Ku(n){return Nt(n,ci(n))}function Gu(n){return Sn(qu(n),-to,to)}function Ju(n){if(typeof n=="string")return n;if(null==n)return"";if(zu(n))return Rc?Rc.call(n):"";var t=n+"";return"0"==t&&1/n==-no?"-0":t}function Hu(n,t){var r=En(n);return t?An(r,t):r}function Qu(n,t){return g(n,tr(t,3),Nn,true)}function Xu(n,t){return g(n,tr(t,3),Pn,true)}function Yu(n,t){return null==n?n:Bc(n,tr(t),ci)}function Zu(n,t){return null==n?n:Ec(n,tr(t),ci)}function ni(n,t){return n&&Nn(n,tr(t))}function ti(n,t){
68
+ return n&&Pn(n,tr(t))}function ri(n){return null==n?[]:Un(n,fi(n))}function ei(n){return null==n?[]:Un(n,ci(n))}function ui(n,t,r){var e=null==n?Ei:Cn(n,t);return e===Ei?r:e}function ii(n,t){return null!=n&&ar(n,t,qn)}function oi(n,t){return null!=n&&ar(n,t,Tn)}function fi(n){var t=br(n);if(!t&&!fu(n))return Yn(n);var r=_r(n),e=!!r,u=r||[],i=u.length;for(var o in n)!qn(n,o)||e&&("length"==o||L(o,i))||t&&"constructor"==o||u.push(o);return u}function ci(n){for(var t=-1,r=br(n),e=Zn(n),u=e.length,i=_r(n),o=!!i,f=i||[],c=f.length;++t<u;){
69
+ var a=e[t];o&&("length"==a||L(a,c))||"constructor"==a&&(r||!Ff.call(n,a))||f.push(a)}return f}function ai(n,t){var r={};return t=tr(t,3),Nn(n,function(n,e,u){r[t(n,e,u)]=n}),r}function li(n,t){var r={};return t=tr(t,3),Nn(n,function(n,e,u){r[e]=t(n,e,u)}),r}function si(n,t){return t=tr(t),ft(n,function(n,r){return!t(n,r)})}function hi(n,t){return null==n?{}:ft(n,tr(t))}function _i(n,t,r){t=gr(t,n)?[t]:Wn(t);var e=-1,u=t.length;for(u||(n=Ei,u=1);++e<u;){var i=null==n?Ei:n[t[e]];i===Ei&&(e=u,i=r),n=yu(i)?i.call(n):i;
70
+ }return n}function pi(n,t,r){return null==n?n:_t(n,t,r)}function vi(n,t,r,e){return e=typeof e=="function"?e:Ei,null==n?n:_t(n,t,r,e)}function gi(n){return O(n,fi(n))}function yi(n){return O(n,ci(n))}function di(n,t,r){var e=sa(n)||Mu(n);if(t=tr(t,4),null==r)if(e||wu(n)){var u=n.constructor;r=e?sa(n)?new u:[]:yu(u)?En(ir(n)):{}}else r={};return(e?i:Nn)(n,function(n,e,u){return t(r,n,e,u)}),r}function bi(n,t){return null==n?true:mt(n,t)}function wi(n,t,r){return null==n?n:jt(n,t,In(r))}function mi(n,t,r,e){
71
+ return e=typeof e=="function"?e:Ei,null==n?n:jt(n,t,In(r),e)}function ji(n){return n?k(n,fi(n)):[]}function Oi(n){return null==n?[]:k(n,ci(n))}function Ai(n){return n=Ju(n),n&&Uo.test(n)?n.replace(Po,S):n}function ki(n,t,r){var e=C.templateSettings;r&&vr(n,t,r)&&(t=Ei),n=Ju(n),t=va({},t,e,wn);var u,i,o=va({},t.imports,e.imports,wn),f=fi(o),c=k(o,f),a=0,l=t.interpolate||ef,s="__p+='",h=RegExp((t.escape||ef).source+"|"+l.source+"|"+(l===qo?Qo:ef).source+"|"+(t.evaluate||ef).source+"|$","g"),_="sourceURL"in t?"//# sourceURL="+t.sourceURL+"\n":"";
72
+ n.replace(h,function(t,r,e,o,f,c){return e||(e=o),s+=n.slice(a,c).replace(uf,B),r&&(u=true,s+="'+__e("+r+")+'"),f&&(i=true,s+="';"+f+";\n__p+='"),e&&(s+="'+((__t=("+e+"))==null?'':__t)+'"),a=c+t.length,t}),s+="';";var p=t.variable;p||(s="with(obj){"+s+"}"),s=(i?s.replace(Mo,""):s).replace(Do,"$1").replace(No,"$1;"),s="function("+(p||"obj")+"){"+(p?"":"obj||(obj={});")+"var __t,__p=''"+(u?",__e=_.escape":"")+(i?",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}":";")+s+"return __p}";
73
+ var v=Ia(function(){return Function(f,_+"return "+s).apply(Ei,c)});if(v.source=s,vu(v))throw v;return v}function xi(n){return function(){return n}}function Ii(n){return n}function Ri(n){return Xn(typeof n=="function"?n:Bn(n,true))}function Wi(n,t,r){var e=fi(t),u=Un(t,e);null!=r||wu(t)&&(u.length||!e.length)||(r=t,t=n,n=this,u=Un(t,fi(t)));var o=wu(r)&&"chain"in r?r.chain:true,f=yu(n);return i(u,function(r){var e=t[r];n[r]=e,f&&(n.prototype[r]=function(){var t=this.__chain__;if(o||t){var r=n(this.__wrapped__),u=r.__actions__=Dt(this.__actions__);
74
+ return u.push({func:e,args:arguments,thisArg:n}),r.__chain__=t,r}return e.apply(n,h([this.value()],arguments))})}),n}function Si(){}function Bi(n){return gr(n)?ct(n):at(n)}var Ei,$i="4.9.0",Li=200,zi="Expected a function",Mi="__lodash_hash_undefined__",Di="__lodash_placeholder__",Ni=1,Pi=2,Ui=4,Ci=8,Fi=16,qi=32,Ti=64,Vi=128,Ki=512,Gi=1,Ji=2,Hi=150,Qi=16,Xi=1,Yi=2,Zi=3,no=1/0,to=9007199254740991,ro=1.7976931348623157e308,eo=NaN,uo=4294967295,io=uo-1,oo=uo>>>1,fo="[object Arguments]",co="[object Array]",ao="[object Boolean]",lo="[object Date]",so="[object Error]",ho="[object Function]",_o="[object GeneratorFunction]",po="[object Map]",vo="[object Number]",go="[object Object]",yo="[object Promise]",bo="[object RegExp]",wo="[object Set]",mo="[object String]",jo="[object Symbol]",Oo="[object WeakMap]",Ao="[object WeakSet]",ko="[object ArrayBuffer]",xo="[object DataView]",Io="[object Float32Array]",Ro="[object Float64Array]",Wo="[object Int8Array]",So="[object Int16Array]",Bo="[object Int32Array]",Eo="[object Uint8Array]",$o="[object Uint8ClampedArray]",Lo="[object Uint16Array]",zo="[object Uint32Array]",Mo=/\b__p\+='';/g,Do=/\b(__p\+=)''\+/g,No=/(__e\(.*?\)|\b__t\))\+'';/g,Po=/[&<>"'`]/g,Uo=RegExp(Po.source),Co=/<%-([\s\S]+?)%>/g,Fo=/<%([\s\S]+?)%>/g,qo=/<%=([\s\S]+?)%>/g,To=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Vo=/^\w*$/,Ko=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]/g,Go=/[\\^$.*+?()[\]{}|]/g,Jo=/^\s+|\s+$/g,Ho=/\\(\\)?/g,Qo=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Xo=/\w*$/,Yo=/^[-+]0x[0-9a-f]+$/i,Zo=/^0b[01]+$/i,nf=/^\[object .+?Constructor\]$/,tf=/^0o[0-7]+$/i,rf=/^(?:0|[1-9]\d*)$/,ef=/($^)/,uf=/['\n\r\u2028\u2029\\]/g,of="\\ud800-\\udfff",ff="\\u0300-\\u036f\\ufe20-\\ufe23",cf="\\u20d0-\\u20f0",af="\\ufe0e\\ufe0f",lf="["+of+"]",sf="["+ff+cf+"]",hf="\\ud83c[\\udffb-\\udfff]",_f="(?:"+sf+"|"+hf+")",pf="[^"+of+"]",vf="(?:\\ud83c[\\udde6-\\uddff]){2}",gf="[\\ud800-\\udbff][\\udc00-\\udfff]",yf="\\u200d",df=_f+"?",bf="["+af+"]?",wf="(?:"+yf+"(?:"+[pf,vf,gf].join("|")+")"+bf+df+")*",mf=bf+df+wf,jf="(?:"+[pf+sf+"?",sf,vf,gf,lf].join("|")+")",Of=RegExp(hf+"(?="+hf+")|"+jf+mf,"g"),Af=RegExp("["+yf+of+ff+cf+af+"]"),kf={};
75
+ kf[Io]=kf[Ro]=kf[Wo]=kf[So]=kf[Bo]=kf[Eo]=kf[$o]=kf[Lo]=kf[zo]=true,kf[fo]=kf[co]=kf[ko]=kf[ao]=kf[xo]=kf[lo]=kf[so]=kf[ho]=kf[po]=kf[vo]=kf[go]=kf[bo]=kf[wo]=kf[mo]=kf[Oo]=false;var xf={};xf[fo]=xf[co]=xf[ko]=xf[xo]=xf[ao]=xf[lo]=xf[Io]=xf[Ro]=xf[Wo]=xf[So]=xf[Bo]=xf[po]=xf[vo]=xf[go]=xf[bo]=xf[wo]=xf[mo]=xf[jo]=xf[Eo]=xf[$o]=xf[Lo]=xf[zo]=true,xf[so]=xf[ho]=xf[Oo]=false;var If={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","`":"&#96;"},Rf={"function":true,object:true},Wf={"\\":"\\","'":"'","\n":"n",
76
+ "\r":"r","\u2028":"u2028","\u2029":"u2029"},Sf=parseInt,Bf=Rf[typeof exports]&&exports&&!exports.nodeType?exports:Ei,Ef=Rf[typeof module]&&module&&!module.nodeType?module:Ei,$f=Ef&&Ef.exports===Bf?Bf:Ei,Lf=x(Bf&&Ef&&typeof global=="object"&&global),zf=x(Rf[typeof self]&&self),Mf=x(Rf[typeof window]&&window),Df=x(Rf[typeof this]&&this),Nf=Lf||Mf!==(Df&&Df.window)&&Mf||zf||Df||Function("return this")(),Pf=Array.prototype,Uf=Object.prototype,Cf=Function.prototype.toString,Ff=Uf.hasOwnProperty,qf=Cf.call(Object),Tf=Uf.toString,Vf=RegExp("^"+Cf.call(Ff).replace(Go,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Kf=$f?Nf.Buffer:Ei,Gf=Nf.Reflect,Jf=Nf.Symbol,Hf=Nf.Uint8Array,Qf=Gf?Gf.enumerate:Ei,Xf=Object.getOwnPropertySymbols,Yf=typeof(Yf=Jf&&Jf.iterator)=="symbol"?Yf:Ei,Zf=Object.create,nc=Uf.propertyIsEnumerable,tc=Pf.splice,rc=Math.ceil,ec=Math.floor,uc=Object.getPrototypeOf,ic=Nf.isFinite,oc=Pf.join,fc=Object.keys,cc=Math.max,ac=Math.min,lc=Math.random,sc=Pf.reverse,hc=er(Nf,"DataView"),_c=er(Nf,"Map"),pc=er(Nf,"Promise"),vc=er(Nf,"Set"),gc=er(Nf,"WeakMap"),yc=er(Object,"create"),dc=gc&&new gc,bc=!nc.call({
77
+ valueOf:1},"valueOf"),wc={},mc=kr(hc),jc=kr(_c),Oc=kr(pc),Ac=kr(vc),kc=kr(gc),xc=Jf?Jf.prototype:Ei,Ic=xc?xc.valueOf:Ei,Rc=xc?xc.toString:Ei;C.templateSettings={escape:Co,evaluate:Fo,interpolate:qo,variable:"",imports:{_:C}},C.prototype=F.prototype,C.prototype.constructor=C,q.prototype=En(F.prototype),q.prototype.constructor=q,T.prototype=En(F.prototype),T.prototype.constructor=T,J.prototype=yc?yc(null):Uf,Z.prototype.clear=nn,Z.prototype["delete"]=tn,Z.prototype.get=rn,Z.prototype.has=en,Z.prototype.set=un,
78
+ on.prototype.push=cn,an.prototype.clear=ln,an.prototype["delete"]=sn,an.prototype.get=hn,an.prototype.has=_n,an.prototype.set=pn;var Wc=qt(Nn),Sc=qt(Pn,true),Bc=Tt(),Ec=Tt(true);Qf&&!nc.call({valueOf:1},"valueOf")&&(Zn=function(n){return z(Qf(n))});var $c=dc?function(n,t){return dc.set(n,t),n}:Ii,Lc=vc&&2===new vc([1,2]).size?function(n){return new vc(n)}:Si,zc=dc?function(n){return dc.get(n)}:Si,Mc=ct("length");Xf||(or=function(){return[]});var Dc=Xf?function(n){for(var t=[];n;)h(t,or(n)),n=ir(n);return t;
79
+ }:or;(hc&&fr(new hc(new ArrayBuffer(1)))!=xo||_c&&fr(new _c)!=po||pc&&fr(pc.resolve())!=yo||vc&&fr(new vc)!=wo||gc&&fr(new gc)!=Oo)&&(fr=function(n){var t=Tf.call(n),r=t==go?n.constructor:Ei,e=r?kr(r):Ei;if(e)switch(e){case mc:return xo;case jc:return po;case Oc:return yo;case Ac:return wo;case kc:return Oo}return t});var Nc=function(){var n=0,t=0;return function(r,e){var u=la(),i=Qi-(u-t);if(t=u,i>0){if(++n>=Hi)return r}else n=0;return $c(r,e)}}(),Pc=He(function(n){var t=[];return Ju(n).replace(Ko,function(n,r,e,u){
80
+ t.push(e?u.replace(Ho,"$1"):r||n)}),t}),Uc=Qe(function(n,t){return cu(n)?$n(n,Dn(t,1,cu,true)):[]}),Cc=Qe(function(n,t){var r=Vr(t);return cu(r)&&(r=Ei),cu(n)?$n(n,Dn(t,1,cu,true),tr(r)):[]}),Fc=Qe(function(n,t){var r=Vr(t);return cu(r)&&(r=Ei),cu(n)?$n(n,Dn(t,1,cu,true),Ei,r):[]}),qc=Qe(function(n){var t=s(n,xn);return t.length&&t[0]===n[0]?Vn(t):[]}),Tc=Qe(function(n){var t=Vr(n),r=s(n,xn);return t===Vr(r)?t=Ei:r.pop(),r.length&&r[0]===n[0]?Vn(r,tr(t)):[]}),Vc=Qe(function(n){var t=Vr(n),r=s(n,xn);return t===Vr(r)?t=Ei:r.pop(),
81
+ r.length&&r[0]===n[0]?Vn(r,Ei,t):[]}),Kc=Qe(Gr),Gc=Qe(function(n,t){t=s(Dn(t,1),String);var r=kn(n,t);return st(n,t.sort(I)),r}),Jc=Qe(function(n){return wt(Dn(n,1,cu,true))}),Hc=Qe(function(n){var t=Vr(n);return cu(t)&&(t=Ei),wt(Dn(n,1,cu,true),tr(t))}),Qc=Qe(function(n){var t=Vr(n);return cu(t)&&(t=Ei),wt(Dn(n,1,cu,true),Ei,t)}),Xc=Qe(function(n,t){return cu(n)?$n(n,t):[]}),Yc=Qe(function(n){return kt(c(n,cu))}),Zc=Qe(function(n){var t=Vr(n);return cu(t)&&(t=Ei),kt(c(n,cu),tr(t))}),na=Qe(function(n){
82
+ var t=Vr(n);return cu(t)&&(t=Ei),kt(c(n,cu),Ei,t)}),ta=Qe(ve),ra=Qe(function(n){var t=n.length,r=t>1?n[t-1]:Ei;return r=typeof r=="function"?(n.pop(),r):Ei,ge(n,r)}),ea=Qe(function(n){n=Dn(n,1);var t=n.length,r=t?n[0]:0,e=this.__wrapped__,u=function(t){return kn(t,n)};return 1>=t&&!this.__actions__.length&&e instanceof T&&L(r)?(e=e.slice(r,+r+(t?1:0)),e.__actions__.push({func:me,args:[u],thisArg:Ei}),new q(e,this.__chain__).thru(function(n){return t&&!n.length&&n.push(Ei),n})):this.thru(u)}),ua=Ct(function(n,t,r){
83
+ Ff.call(n,r)?++n[r]:n[r]=1}),ia=Ct(function(n,t,r){Ff.call(n,r)?n[r].push(t):n[r]=[t]}),oa=Qe(function(n,t,e){var u=-1,i=typeof t=="function",o=gr(t),f=fu(n)?Array(n.length):[];return Wc(n,function(n){var c=i?t:o&&null!=n?n[t]:Ei;f[++u]=c?r(c,n,e):Gn(n,t,e)}),f}),fa=Ct(function(n,t,r){n[r]=t}),ca=Ct(function(n,t,r){n[r?0:1].push(t)},function(){return[[],[]]}),aa=Qe(function(n,t){if(null==n)return[];var r=t.length;return r>1&&vr(n,t[0],t[1])?t=[]:r>2&&vr(t[0],t[1],t[2])&&(t.length=1),it(n,Dn(t,1),[]);
84
+ }),la=Date.now;He.Cache=Z;var sa=Array.isArray,ha=Kf?function(n){return n instanceof Kf}:xi(false),_a=Ft(function(n,t){if(bc||br(t)||fu(t))return Nt(t,fi(t),n),Ei;for(var r in t)Ff.call(t,r)&&jn(n,r,t[r])}),pa=Ft(function(n,t){if(bc||br(t)||fu(t))return Nt(t,ci(t),n),Ei;for(var r in t)jn(n,r,t[r])}),va=Ft(function(n,t,r,e){Pt(t,ci(t),n,e)}),ga=Ft(function(n,t,r,e){Pt(t,fi(t),n,e)}),ya=Qe(function(n,t){return kn(n,Dn(t,1))}),da=Qe(function(n){return n.push(Ei,wn),r(va,Ei,n)}),ba=Qe(function(n){return n.push(Ei,jr),
85
+ r(Aa,Ei,n)}),wa=Gt(function(n,t,r){n[t]=r},xi(Ii)),ma=Gt(function(n,t,r){Ff.call(n,t)?n[t].push(r):n[t]=[r]},tr),ja=Qe(Gn),Oa=Ft(function(n,t,r){et(n,t,r)}),Aa=Ft(function(n,t,r,e){et(n,t,r,e)}),ka=Qe(function(n,t){return null==n?{}:(t=s(Dn(t,1),Rn),ot(n,$n(Zt(n),t)))}),xa=Qe(function(n,t){return null==n?{}:ot(n,Dn(t,1))}),Ia=Qe(function(n,t){try{return r(n,Ei,t)}catch(e){return vu(e)?e:Error(e)}});C.assign=_a,C.assignIn=pa,C.assignInWith=va,C.assignWith=ga,C.at=ya,C.castArray=Xe,C.chain=be,C.chunk=Ir,
86
+ C.compact=Rr,C.concat=Wr,C.constant=xi,C.countBy=ua,C.create=Hu,C.defaults=da,C.defaultsDeep=ba,C.difference=Uc,C.differenceBy=Cc,C.differenceWith=Fc,C.drop=Sr,C.dropRight=Br,C.dropRightWhile=Er,C.dropWhile=$r,C.fill=Lr,C.filter=Se,C.flatMap=$e,C.flatMapDeep=Le,C.flatMapDepth=ze,C.flatten=Dr,C.flattenDeep=Nr,C.flattenDepth=Pr,C.fromPairs=Ur,C.functions=ri,C.functionsIn=ei,C.groupBy=ia,C.initial=qr,C.intersection=qc,C.intersectionBy=Tc,C.intersectionWith=Vc,C.invert=wa,C.invertBy=ma,C.invokeMap=oa,
87
+ C.iteratee=Ri,C.keyBy=fa,C.keys=fi,C.keysIn=ci,C.map=Pe,C.mapKeys=ai,C.mapValues=li,C.memoize=He,C.merge=Oa,C.mergeWith=Aa,C.mixin=Wi,C.omit=ka,C.omitBy=si,C.orderBy=Ue,C.partition=ca,C.pick=xa,C.pickBy=hi,C.property=Bi,C.pull=Kc,C.pullAll=Gr,C.pullAllBy=Jr,C.pullAllWith=Hr,C.pullAt=Gc,C.reject=qe,C.remove=Qr,C.rest=Qe,C.reverse=Xr,C.sampleSize=Ve,C.set=pi,C.setWith=vi,C.shuffle=Ke,C.slice=Yr,C.sortBy=aa,C.sortedUniq=ie,C.sortedUniqBy=oe,C.tail=fe,C.take=ce,C.takeRight=ae,C.takeRightWhile=le,C.takeWhile=se,
88
+ C.tap=we,C.thru=me,C.toArray=Fu,C.toPairs=gi,C.toPairsIn=yi,C.toPlainObject=Ku,C.transform=di,C.union=Jc,C.unionBy=Hc,C.unionWith=Qc,C.uniq=he,C.uniqBy=_e,C.uniqWith=pe,C.unset=bi,C.unzip=ve,C.unzipWith=ge,C.update=wi,C.updateWith=mi,C.values=ji,C.valuesIn=Oi,C.without=Xc,C.xor=Yc,C.xorBy=Zc,C.xorWith=na,C.zip=ta,C.zipObject=ye,C.zipObjectDeep=de,C.zipWith=ra,C.entries=gi,C.entriesIn=yi,C.extend=pa,C.extendWith=va,Wi(C,C),C.attempt=Ia,C.clone=Ye,C.cloneDeep=nu,C.cloneDeepWith=tu,C.cloneWith=Ze,C.eq=ru,
89
+ C.escape=Ai,C.every=We,C.find=Be,C.findIndex=zr,C.findKey=Qu,C.findLast=Ee,C.findLastIndex=Mr,C.findLastKey=Xu,C.forEach=Me,C.forEachRight=De,C.forIn=Yu,C.forInRight=Zu,C.forOwn=ni,C.forOwnRight=ti,C.get=ui,C.gt=eu,C.gte=uu,C.has=ii,C.hasIn=oi,C.head=Cr,C.identity=Ii,C.includes=Ne,C.indexOf=Fr,C.invoke=ja,C.isArguments=iu,C.isArray=sa,C.isArrayBuffer=ou,C.isArrayLike=fu,C.isArrayLikeObject=cu,C.isBoolean=au,C.isBuffer=ha,C.isDate=lu,C.isElement=su,C.isEmpty=hu,C.isEqual=_u,C.isEqualWith=pu,C.isError=vu,
90
+ C.isFinite=gu,C.isFunction=yu,C.isInteger=du,C.isLength=bu,C.isMap=ju,C.isMatch=Ou,C.isMatchWith=Au,C.isNaN=ku,C.isNative=xu,C.isNil=Ru,C.isNull=Iu,C.isNumber=Wu,C.isObject=wu,C.isObjectLike=mu,C.isPlainObject=Su,C.isRegExp=Bu,C.isSafeInteger=Eu,C.isSet=$u,C.isString=Lu,C.isSymbol=zu,C.isTypedArray=Mu,C.isUndefined=Du,C.isWeakMap=Nu,C.isWeakSet=Pu,C.join=Tr,C.last=Vr,C.lastIndexOf=Kr,C.lt=Uu,C.lte=Cu,C.noop=Si,C.now=la,C.reduce=Ce,C.reduceRight=Fe,C.result=_i,C.sample=Te,C.size=Ge,C.some=Je,C.sortedIndex=Zr,
91
+ C.sortedIndexBy=ne,C.sortedIndexOf=te,C.sortedLastIndex=re,C.sortedLastIndexBy=ee,C.sortedLastIndexOf=ue,C.template=ki,C.toInteger=qu,C.toLength=Tu,C.toNumber=Vu,C.toSafeInteger=Gu,C.toString=Ju,C.each=Me,C.eachRight=De,C.first=Cr,Wi(C,function(){var n={};return Nn(C,function(t,r){Ff.call(C.prototype,r)||(n[r]=t)}),n}(),{chain:false}),C.VERSION=$i,i(["drop","take"],function(n,t){T.prototype[n]=function(r){var e=this.__filtered__;if(e&&!t)return new T(this);r=r===Ei?1:cc(qu(r),0);var u=this.clone();return e?u.__takeCount__=ac(r,u.__takeCount__):u.__views__.push({
92
+ size:ac(r,uo),type:n+(0>u.__dir__?"Right":"")}),u},T.prototype[n+"Right"]=function(t){return this.reverse()[n](t).reverse()}}),i(["filter","map","takeWhile"],function(n,t){var r=t+1,e=r==Xi||r==Zi;T.prototype[n]=function(n){var t=this.clone();return t.__iteratees__.push({iteratee:tr(n,3),type:r}),t.__filtered__=t.__filtered__||e,t}}),i(["head","last"],function(n,t){var r="take"+(t?"Right":"");T.prototype[n]=function(){return this[r](1).value()[0]}}),i(["initial","tail"],function(n,t){var r="drop"+(t?"":"Right");
93
+ T.prototype[n]=function(){return this.__filtered__?new T(this):this[r](1)}}),T.prototype.compact=function(){return this.filter(Ii)},T.prototype.find=function(n){return this.filter(n).head()},T.prototype.findLast=function(n){return this.reverse().find(n)},T.prototype.invokeMap=Qe(function(n,t){return typeof n=="function"?new T(this):this.map(function(r){return Gn(r,n,t)})}),T.prototype.reject=function(n){return n=tr(n,3),this.filter(function(t){return!n(t)})},T.prototype.slice=function(n,t){n=qu(n);
94
+ var r=this;return r.__filtered__&&(n>0||0>t)?new T(r):(0>n?r=r.takeRight(-n):n&&(r=r.drop(n)),t!==Ei&&(t=qu(t),r=0>t?r.dropRight(-t):r.take(t-n)),r)},T.prototype.takeRightWhile=function(n){return this.reverse().takeWhile(n).reverse()},T.prototype.toArray=function(){return this.take(uo)},Nn(T.prototype,function(n,t){var r=/^(?:filter|find|map|reject)|While$/.test(t),e=/^(?:head|last)$/.test(t),u=C[e?"take"+("last"==t?"Right":""):t],i=e||/^find/.test(t);u&&(C.prototype[t]=function(){var t=this.__wrapped__,o=e?[1]:arguments,f=t instanceof T,c=o[0],a=f||sa(t),l=function(n){
95
+ var t=u.apply(C,h([n],o));return e&&s?t[0]:t};a&&r&&typeof c=="function"&&1!=c.length&&(f=a=false);var s=this.__chain__,_=!!this.__actions__.length,p=i&&!s,v=f&&!_;if(!i&&a){t=v?t:new T(this);var g=n.apply(t,o);return g.__actions__.push({func:me,args:[l],thisArg:Ei}),new q(g,s)}return p&&v?n.apply(this,o):(g=this.thru(l),p?e?g.value()[0]:g.value():g)})}),i(["pop","push","shift","sort","splice","unshift"],function(n){var t=Pf[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:pop|shift)$/.test(n);
96
+ C.prototype[n]=function(){var n=arguments;if(e&&!this.__chain__){var u=this.value();return t.apply(sa(u)?u:[],n)}return this[r](function(r){return t.apply(sa(r)?r:[],n)})}}),Nn(T.prototype,function(n,t){var r=C[t];if(r){var e=r.name+"",u=wc[e]||(wc[e]=[]);u.push({name:t,func:r})}}),wc[Kt(Ei,Pi).name]=[{name:"wrapper",func:Ei}],T.prototype.clone=V,T.prototype.reverse=K,T.prototype.value=G,C.prototype.at=ea,C.prototype.chain=je,C.prototype.commit=Oe,C.prototype.next=Ae,C.prototype.plant=xe,C.prototype.reverse=Ie,
97
+ C.prototype.toJSON=C.prototype.valueOf=C.prototype.value=Re,Yf&&(C.prototype[Yf]=ke),(Mf||zf||{})._=C,typeof define=="function"&&typeof define.amd=="object"&&define.amd? define(function(){return C}):Bf&&Ef?($f&&((Ef.exports=C)._=C),Bf._=C):Nf._=C}).call(this);
@@ -0,0 +1,2 @@
1
+ /*! 12.0.4 */
2
+ !function(){function a(a,b){window.XMLHttpRequest.prototype[a]=b(window.XMLHttpRequest.prototype[a])}function b(a,b,c){try{Object.defineProperty(a,b,{get:c})}catch(d){}}if(window.FileAPI||(window.FileAPI={}),!window.XMLHttpRequest)throw"AJAX is not supported. XMLHttpRequest is not defined.";if(FileAPI.shouldLoad=!window.FormData||FileAPI.forceLoad,FileAPI.shouldLoad){var c=function(a){if(!a.__listeners){a.upload||(a.upload={}),a.__listeners=[];var b=a.upload.addEventListener;a.upload.addEventListener=function(c,d){a.__listeners[c]=d,b&&b.apply(this,arguments)}}};a("open",function(a){return function(b,d,e){c(this),this.__url=d;try{a.apply(this,[b,d,e])}catch(f){f.message.indexOf("Access is denied")>-1&&(this.__origError=f,a.apply(this,[b,"_fix_for_ie_crossdomain__",e]))}}}),a("getResponseHeader",function(a){return function(b){return this.__fileApiXHR&&this.__fileApiXHR.getResponseHeader?this.__fileApiXHR.getResponseHeader(b):null==a?null:a.apply(this,[b])}}),a("getAllResponseHeaders",function(a){return function(){return this.__fileApiXHR&&this.__fileApiXHR.getAllResponseHeaders?this.__fileApiXHR.getAllResponseHeaders():null==a?null:a.apply(this)}}),a("abort",function(a){return function(){return this.__fileApiXHR&&this.__fileApiXHR.abort?this.__fileApiXHR.abort():null==a?null:a.apply(this)}}),a("setRequestHeader",function(a){return function(b,d){if("__setXHR_"===b){c(this);var e=d(this);e instanceof Function&&e(this)}else this.__requestHeaders=this.__requestHeaders||{},this.__requestHeaders[b]=d,a.apply(this,arguments)}}),a("send",function(a){return function(){var c=this;if(arguments[0]&&arguments[0].__isFileAPIShim){var d=arguments[0],e={url:c.__url,jsonp:!1,cache:!0,complete:function(a,d){a&&angular.isString(a)&&-1!==a.indexOf("#2174")&&(a=null),c.__completed=!0,!a&&c.__listeners.load&&c.__listeners.load({type:"load",loaded:c.__loaded,total:c.__total,target:c,lengthComputable:!0}),!a&&c.__listeners.loadend&&c.__listeners.loadend({type:"loadend",loaded:c.__loaded,total:c.__total,target:c,lengthComputable:!0}),"abort"===a&&c.__listeners.abort&&c.__listeners.abort({type:"abort",loaded:c.__loaded,total:c.__total,target:c,lengthComputable:!0}),void 0!==d.status&&b(c,"status",function(){return 0===d.status&&a&&"abort"!==a?500:d.status}),void 0!==d.statusText&&b(c,"statusText",function(){return d.statusText}),b(c,"readyState",function(){return 4}),void 0!==d.response&&b(c,"response",function(){return d.response});var e=d.responseText||(a&&0===d.status&&"abort"!==a?a:void 0);b(c,"responseText",function(){return e}),b(c,"response",function(){return e}),a&&b(c,"err",function(){return a}),c.__fileApiXHR=d,c.onreadystatechange&&c.onreadystatechange(),c.onload&&c.onload()},progress:function(a){if(a.target=c,c.__listeners.progress&&c.__listeners.progress(a),c.__total=a.total,c.__loaded=a.loaded,a.total===a.loaded){var b=this;setTimeout(function(){c.__completed||(c.getAllResponseHeaders=function(){},b.complete(null,{status:204,statusText:"No Content"}))},FileAPI.noContentTimeout||1e4)}},headers:c.__requestHeaders};e.data={},e.files={};for(var f=0;f<d.data.length;f++){var g=d.data[f];null!=g.val&&null!=g.val.name&&null!=g.val.size&&null!=g.val.type?e.files[g.key]=g.val:e.data[g.key]=g.val}setTimeout(function(){if(!FileAPI.hasFlash)throw'Adode Flash Player need to be installed. To check ahead use "FileAPI.hasFlash"';c.__fileApiXHR=FileAPI.upload(e)},1)}else{if(this.__origError)throw this.__origError;a.apply(c,arguments)}}}),window.XMLHttpRequest.__isFileAPIShim=!0,window.FormData=FormData=function(){return{append:function(a,b,c){b.__isFileAPIBlobShim&&(b=b.data[0]),this.data.push({key:a,val:b,name:c})},data:[],__isFileAPIShim:!0}},window.Blob=Blob=function(a){return{data:a,__isFileAPIBlobShim:!0}}}}(),function(){function a(a){return"input"===a[0].tagName.toLowerCase()&&a.attr("type")&&"file"===a.attr("type").toLowerCase()}function b(){try{var a=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");if(a)return!0}catch(b){if(void 0!==navigator.mimeTypes["application/x-shockwave-flash"])return!0}return!1}function c(a){var b=0,c=0;if(window.jQuery)return jQuery(a).offset();if(a.offsetParent)do b+=a.offsetLeft-a.scrollLeft,c+=a.offsetTop-a.scrollTop,a=a.offsetParent;while(a);return{left:b,top:c}}if(FileAPI.shouldLoad){if(FileAPI.hasFlash=b(),FileAPI.forceLoad&&(FileAPI.html5=!1),!FileAPI.upload){var d,e,f,g,h,i=document.createElement("script"),j=document.getElementsByTagName("script");if(window.FileAPI.jsUrl)d=window.FileAPI.jsUrl;else if(window.FileAPI.jsPath)e=window.FileAPI.jsPath;else for(f=0;f<j.length;f++)if(h=j[f].src,g=h.search(/\/ng\-file\-upload[\-a-zA-z0-9\.]*\.js/),g>-1){e=h.substring(0,g+1);break}null==FileAPI.staticPath&&(FileAPI.staticPath=e),i.setAttribute("src",d||e+"FileAPI.min.js"),document.getElementsByTagName("head")[0].appendChild(i)}FileAPI.ngfFixIE=function(d,e,f){if(!b())throw'Adode Flash Player need to be installed. To check ahead use "FileAPI.hasFlash"';var g=function(){var b=e.parent();d.attr("disabled")?b&&b.removeClass("js-fileapi-wrapper"):(e.attr("__ngf_flash_")||(e.unbind("change"),e.unbind("click"),e.bind("change",function(a){h.apply(this,[a]),f.apply(this,[a])}),e.attr("__ngf_flash_","true")),b.addClass("js-fileapi-wrapper"),a(d)||(b.css("position","absolute").css("top",c(d[0]).top+"px").css("left",c(d[0]).left+"px").css("width",d[0].offsetWidth+"px").css("height",d[0].offsetHeight+"px").css("filter","alpha(opacity=0)").css("display",d.css("display")).css("overflow","hidden").css("z-index","900000").css("visibility","visible"),e.css("width",d[0].offsetWidth+"px").css("height",d[0].offsetHeight+"px").css("position","absolute").css("top","0px").css("left","0px")))};d.bind("mouseenter",g);var h=function(a){for(var b=FileAPI.getFiles(a),c=0;c<b.length;c++)void 0===b[c].size&&(b[c].size=0),void 0===b[c].name&&(b[c].name="file"),void 0===b[c].type&&(b[c].type="undefined");a.target||(a.target={}),a.target.files=b,a.target.files!==b&&(a.__files_=b),(a.__files_||a.target.files).item=function(b){return(a.__files_||a.target.files)[b]||null}}},FileAPI.disableFileInput=function(a,b){b?a.removeClass("js-fileapi-wrapper"):a.addClass("js-fileapi-wrapper")}}}(),window.FileReader||(window.FileReader=function(){var a=this,b=!1;this.listeners={},this.addEventListener=function(b,c){a.listeners[b]=a.listeners[b]||[],a.listeners[b].push(c)},this.removeEventListener=function(b,c){a.listeners[b]&&a.listeners[b].splice(a.listeners[b].indexOf(c),1)},this.dispatchEvent=function(b){var c=a.listeners[b.type];if(c)for(var d=0;d<c.length;d++)c[d].call(a,b)},this.onabort=this.onerror=this.onload=this.onloadstart=this.onloadend=this.onprogress=null;var c=function(b,c){var d={type:b,target:a,loaded:c.loaded,total:c.total,error:c.error};return null!=c.result&&(d.target.result=c.result),d},d=function(d){b||(b=!0,a.onloadstart&&a.onloadstart(c("loadstart",d)));var e;"load"===d.type?(a.onloadend&&a.onloadend(c("loadend",d)),e=c("load",d),a.onload&&a.onload(e),a.dispatchEvent(e)):"progress"===d.type?(e=c("progress",d),a.onprogress&&a.onprogress(e),a.dispatchEvent(e)):(e=c("error",d),a.onerror&&a.onerror(e),a.dispatchEvent(e))};this.readAsDataURL=function(a){FileAPI.readAsDataURL(a,d)},this.readAsText=function(a){FileAPI.readAsText(a,d)}});
@@ -0,0 +1,3 @@
1
+ /*! 12.0.4 */
2
+ !window.XMLHttpRequest||window.FileAPI&&FileAPI.shouldLoad||(window.XMLHttpRequest.prototype.setRequestHeader=function(a){return function(b,c){if("__setXHR_"===b){var d=c(this);d instanceof Function&&d(this)}else a.apply(this,arguments)}}(window.XMLHttpRequest.prototype.setRequestHeader));var ngFileUpload=angular.module("ngFileUpload",[]);ngFileUpload.version="12.0.4",ngFileUpload.service("UploadBase",["$http","$q","$timeout",function(a,b,c){function d(d){function e(a){j.notify&&j.notify(a),k.progressFunc&&c(function(){k.progressFunc(a)})}function h(a){return null!=d._start&&g?{loaded:a.loaded+d._start,total:d._file&&d._file.size||a.total,type:a.type,config:d,lengthComputable:!0,target:a.target}:a}function i(){a(d).then(function(a){g&&d._chunkSize&&!d._finished&&d._file?(e({loaded:d._end,total:d._file&&d._file.size,config:d,type:"progress"}),f.upload(d,!0)):(d._finished&&delete d._finished,j.resolve(a))},function(a){j.reject(a)},function(a){j.notify(a)})}d.method=d.method||"POST",d.headers=d.headers||{};var j=d._deferred=d._deferred||b.defer(),k=j.promise;return d.disableProgress||(d.headers.__setXHR_=function(){return function(a){a&&a.upload&&a.upload.addEventListener&&(d.__XHR=a,d.xhrFn&&d.xhrFn(a),a.upload.addEventListener("progress",function(a){a.config=d,e(h(a))},!1),a.upload.addEventListener("load",function(a){a.lengthComputable&&(a.config=d,e(h(a)))},!1))}}),g?d._chunkSize&&d._end&&!d._finished?(d._start=d._end,d._end+=d._chunkSize,i()):d.resumeSizeUrl?a.get(d.resumeSizeUrl).then(function(a){d._start=d.resumeSizeResponseReader?d.resumeSizeResponseReader(a.data):parseInt((null==a.data.size?a.data:a.data.size).toString()),d._chunkSize&&(d._end=d._start+d._chunkSize),i()},function(a){throw a}):d.resumeSize?d.resumeSize().then(function(a){d._start=a,i()},function(a){throw a}):(d._chunkSize&&(d._start=0,d._end=d._start+d._chunkSize),i()):i(),k.success=function(a){return k.then(function(b){a(b.data,b.status,b.headers,d)}),k},k.error=function(a){return k.then(null,function(b){a(b.data,b.status,b.headers,d)}),k},k.progress=function(a){return k.progressFunc=a,k.then(null,null,function(b){a(b)}),k},k.abort=k.pause=function(){return d.__XHR&&c(function(){d.__XHR.abort()}),k},k.xhr=function(a){return d.xhrFn=function(b){return function(){b&&b.apply(k,arguments),a.apply(k,arguments)}}(d.xhrFn),k},f.promisesCount++,k["finally"](function(){f.promisesCount--}),k}function e(a){var b={};for(var c in a)a.hasOwnProperty(c)&&(b[c]=a[c]);return b}var f=this;f.promisesCount=0,this.isResumeSupported=function(){return window.Blob&&window.Blob.prototype.slice};var g=this.isResumeSupported();this.isUploadInProgress=function(){return f.promisesCount>0},this.rename=function(a,b){return a.ngfName=b,a},this.jsonBlob=function(a){null==a||angular.isString(a)||(a=JSON.stringify(a));var b=new window.Blob([a],{type:"application/json"});return b._ngfBlob=!0,b},this.json=function(a){return angular.toJson(a)},this.isFile=function(a){return null!=a&&(a instanceof window.Blob||a.flashId&&a.name&&a.size)},this.upload=function(a,b){function c(b,c){if(b._ngfBlob)return b;if(a._file=a._file||b,null!=a._start&&g){a._end&&a._end>=b.size&&(a._finished=!0,a._end=b.size);var d=b.slice(a._start,a._end||b.size);return d.name=b.name,d.ngfName=b.ngfName,a._chunkSize&&(c.append("_chunkSize",a._chunkSize),c.append("_currentChunkSize",a._end-a._start),c.append("_chunkNumber",Math.floor(a._start/a._chunkSize)),c.append("_totalSize",a._file.size)),d}return b}function h(b,d,e){if(void 0!==d)if(angular.isDate(d)&&(d=d.toISOString()),angular.isString(d))b.append(e,d);else if(f.isFile(d)){var g=c(d,b),i=e.split(",");i[1]&&(g.ngfName=i[1].replace(/^\s+|\s+$/g,""),e=i[0]),a._fileKey=a._fileKey||e,b.append(e,g,g.ngfName||g.name)}else if(angular.isObject(d)){if(d.$$ngfCircularDetection)throw"ngFileUpload: Circular reference in config.data. Make sure specified data for Upload.upload() has no circular reference: "+e;d.$$ngfCircularDetection=!0;try{for(var j in d)if(d.hasOwnProperty(j)&&"$$ngfCircularDetection"!==j){var k=null==a.objectKey?"[i]":a.objectKey;d.length&&parseInt(j)>-1&&(k=null==a.arrayKey?k:a.arrayKey),h(b,d[j],e+k.replace(/[ik]/g,j))}}finally{delete d.$$ngfCircularDetection}}else b.append(e,d)}function i(){a._chunkSize=f.translateScalars(a.resumeChunkSize),a._chunkSize=a._chunkSize?parseInt(a._chunkSize.toString()):null,a.headers=a.headers||{},a.headers["Content-Type"]=void 0,a.transformRequest=a.transformRequest?angular.isArray(a.transformRequest)?a.transformRequest:[a.transformRequest]:[],a.transformRequest.push(function(b){var c,d=new window.FormData;b=b||a.fields||{},a.file&&(b.file=a.file);for(c in b)if(b.hasOwnProperty(c)){var e=b[c];a.formDataAppender?a.formDataAppender(d,c,e):h(d,e,c)}return d})}return b||(a=e(a)),a._isDigested||(a._isDigested=!0,i()),d(a)},this.http=function(b){return b=e(b),b.transformRequest=b.transformRequest||function(b){return window.ArrayBuffer&&b instanceof window.ArrayBuffer||b instanceof window.Blob?b:a.defaults.transformRequest[0].apply(this,arguments)},b._chunkSize=f.translateScalars(b.resumeChunkSize),b._chunkSize=b._chunkSize?parseInt(b._chunkSize.toString()):null,d(b)},this.translateScalars=function(a){if(angular.isString(a)){if(a.search(/kb/i)===a.length-2)return parseFloat(1024*a.substring(0,a.length-2));if(a.search(/mb/i)===a.length-2)return parseFloat(1048576*a.substring(0,a.length-2));if(a.search(/gb/i)===a.length-2)return parseFloat(1073741824*a.substring(0,a.length-2));if(a.search(/b/i)===a.length-1)return parseFloat(a.substring(0,a.length-1));if(a.search(/s/i)===a.length-1)return parseFloat(a.substring(0,a.length-1));if(a.search(/m/i)===a.length-1)return parseFloat(60*a.substring(0,a.length-1));if(a.search(/h/i)===a.length-1)return parseFloat(3600*a.substring(0,a.length-1))}return a},this.urlToBlob=function(c){var d=b.defer();return a({url:c,method:"get",responseType:"arraybuffer"}).then(function(a){var b=new Uint8Array(a.data),c=a.headers("content-type")||"image/WebP",e=new window.Blob([b],{type:c});d.resolve(e)},function(a){d.reject(a)}),d.promise},this.setDefaults=function(a){this.defaults=a||{}},this.defaults={},this.version=ngFileUpload.version}]),ngFileUpload.service("Upload",["$parse","$timeout","$compile","$q","UploadExif",function(a,b,c,d,e){function f(a,b,c){var e=[i.emptyPromise()];return angular.forEach(a,function(d,f){0===d.type.indexOf("image/jpeg")&&i.attrGetter("ngfFixOrientation",b,c,{$file:d})&&e.push(i.happyPromise(i.applyExifRotation(d),d).then(function(b){a.splice(f,1,b)}))}),d.all(e)}function g(a,b,c){var e=i.attrGetter("ngfResize",b,c);if(!e||!i.isResizeSupported()||!a.length)return i.emptyPromise();if(!(e instanceof Function))return h(e,a,b,c);var f=d.defer();e(a).then(function(d){h(d,a,b,c).then(function(a){f.resolve(a)},function(a){f.reject(a)})},function(a){f.reject(a)})}function h(a,b,c,e){function f(d,f){if(0===d.type.indexOf("image")){if(a.pattern&&!i.validatePattern(d,a.pattern))return;var h=i.resize(d,a.width,a.height,a.quality,a.type,a.ratio,a.centerCrop,function(a,b){return i.attrGetter("ngfResizeIf",c,e,{$width:a,$height:b,$file:d})},a.restoreExif!==!1);g.push(h),h.then(function(a){b.splice(f,1,a)},function(a){d.$error="resize",d.$errorParam=(a?(a.message?a.message:a)+": ":"")+(d&&d.name)})}}for(var g=[i.emptyPromise()],h=0;h<b.length;h++)f(b[h],h);return d.all(g)}var i=e;return i.getAttrWithDefaults=function(a,b){if(null!=a[b])return a[b];var c=i.defaults[b];return null==c?c:angular.isString(c)?c:JSON.stringify(c)},i.attrGetter=function(b,c,d,e){var f=this.getAttrWithDefaults(c,b);if(!d)return f;try{return e?a(f)(d,e):a(f)(d)}catch(g){if(b.search(/min|max|pattern/i))return f;throw g}},i.shouldUpdateOn=function(a,b,c){var d=i.attrGetter("ngModelOptions",b,c);return d&&d.updateOn?d.updateOn.split(" ").indexOf(a)>-1:!0},i.emptyPromise=function(){var a=d.defer(),c=arguments;return b(function(){a.resolve.apply(a,c)}),a.promise},i.rejectPromise=function(){var a=d.defer(),c=arguments;return b(function(){a.reject.apply(a,c)}),a.promise},i.happyPromise=function(a,c){var e=d.defer();return a.then(function(a){e.resolve(a)},function(a){b(function(){throw a}),e.resolve(c)}),e.promise},i.updateModel=function(c,d,e,h,j,k,l){function m(f,g,j,l,m){d.$$ngfPrevValidFiles=f,d.$$ngfPrevInvalidFiles=g;var n=f&&f.length?f[0]:null,o=g&&g.length?g[0]:null;c&&(i.applyModelValidation(c,f),c.$setViewValue(m?n:f)),h&&a(h)(e,{$files:f,$file:n,$newFiles:j,$duplicateFiles:l,$invalidFiles:g,$invalidFile:o,$event:k});var p=i.attrGetter("ngfModelInvalid",d);p&&b(function(){a(p).assign(e,m?o:g)}),b(function(){})}function n(){function a(a,b){return a.name===b.name&&(a.$ngfOrigSize||a.size)===(b.$ngfOrigSize||b.size)&&a.type===b.type}function b(b){var c;for(c=0;c<s.length;c++)if(a(b,s[c]))return!0;for(c=0;c<t.length;c++)if(a(b,t[c]))return!0;return!1}if(j){r=[],u=[];for(var c=0;c<j.length;c++)b(j[c])?u.push(j[c]):r.push(j[c])}}function o(a){return angular.isArray(a)?a:[a]}function p(){w=[],v=[],angular.forEach(r,function(a){a.$error?v.push(a):w.push(a)})}function q(){function a(){b(function(){m(x?s.concat(w):w,x?t.concat(v):v,j,u,y)},A&&A.debounce?A.debounce.change||A.debounce:0)}g(z?r:w,d,e).then(function(){z?i.validate(r,s.length,c,d,e).then(function(){p(),a()}):a()},function(a){throw"Could not resize files "+a})}var r,s,t,u=[],v=[],w=[];s=d.$$ngfPrevValidFiles||[],t=d.$$ngfPrevInvalidFiles||[],c&&c.$modelValue&&(s=o(c.$modelValue));var x=i.attrGetter("ngfKeep",d,e);r=(j||[]).slice(0),("distinct"===x||i.attrGetter("ngfKeepDistinct",d,e)===!0)&&n(d,e);var y=!x&&!i.attrGetter("ngfMultiple",d,e)&&!i.attrGetter("multiple",d);if(!x||r.length){i.attrGetter("ngfBeforeModelChange",d,e,{$files:j,$file:j&&j.length?j[0]:null,$newFiles:r,$duplicateFiles:u,$event:k});var z=i.attrGetter("ngfValidateAfterResize",d,e),A=i.attrGetter("ngModelOptions",d,e);i.validate(r,s.length,c,d,e).then(function(){l?m(r,[],j,u,y):(A&&A.allowInvalid||z?w=r:p(),i.attrGetter("ngfFixOrientation",d,e)&&i.isExifSupported()?f(w,d,e).then(function(){q()}):q())})}},i}]),ngFileUpload.directive("ngfSelect",["$parse","$timeout","$compile","Upload",function(a,b,c,d){function e(a){var b=a.match(/Android[^\d]*(\d+)\.(\d+)/);if(b&&b.length>2){var c=d.defaults.androidFixMinorVersion||4;return parseInt(b[1])<4||parseInt(b[1])===c&&parseInt(b[2])<c}return-1===a.indexOf("Chrome")&&/.*Windows.*Safari.*/.test(a)}function f(a,b,c,d,f,h,i,j){function k(){return"input"===b[0].tagName.toLowerCase()&&c.type&&"file"===c.type.toLowerCase()}function l(){return t("ngfChange")||t("ngfSelect")}function m(b){if(j.shouldUpdateOn("change",c,a)){for(var e=b.__files_||b.target&&b.target.files,f=[],g=0;g<e.length;g++)f.push(e[g]);j.updateModel(d,c,a,l(),f.length?f:null,b)}}function n(a){if(b!==a)for(var c=0;c<b[0].attributes.length;c++){var d=b[0].attributes[c];"type"!==d.name&&"class"!==d.name&&"style"!==d.name&&((null==d.value||""===d.value)&&("required"===d.name&&(d.value="required"),"multiple"===d.name&&(d.value="multiple")),a.attr(d.name,"id"===d.name?"ngf-"+d.value:d.value))}}function o(){if(k())return b;var a=angular.element('<input type="file">');n(a);var c=angular.element("<label>upload</label>");return c.css("visibility","hidden").css("position","absolute").css("overflow","hidden").css("width","0px").css("height","0px").css("border","none").css("margin","0px").css("padding","0px").attr("tabindex","-1"),g.push({el:b,ref:c}),document.body.appendChild(c.append(a)[0]),a}function p(c){if(b.attr("disabled"))return!1;if(!t("ngfSelectDisabled",a)){var d=q(c);if(null!=d)return d;r(c);try{k()||document.body.contains(w[0])||(g.push({el:b,ref:w.parent()}),document.body.appendChild(w.parent()[0]),w.bind("change",m))}catch(f){}return e(navigator.userAgent)?setTimeout(function(){w[0].click()},0):w[0].click(),!1}}function q(a){var b=a.changedTouches||a.originalEvent&&a.originalEvent.changedTouches;if("touchstart"===a.type)return v=b?b[0].clientY:0,!0;if(a.stopPropagation(),a.preventDefault(),"touchend"===a.type){var c=b?b[0].clientY:0;if(Math.abs(c-v)>20)return!1}}function r(b){j.shouldUpdateOn("click",c,a)&&w.val()&&(w.val(null),j.updateModel(d,c,a,l(),null,b,!0))}function s(a){if(w&&!w.attr("__ngf_ie10_Fix_")){if(!w[0].parentNode)return void(w=null);a.preventDefault(),a.stopPropagation(),w.unbind("click");var b=w.clone();return w.replaceWith(b),w=b,w.attr("__ngf_ie10_Fix_","true"),w.bind("change",m),w.bind("click",s),w[0].click(),!1}w.removeAttr("__ngf_ie10_Fix_")}var t=function(a,b){return j.attrGetter(a,c,b)};j.registerModelChangeValidator(d,c,a);var u=[];u.push(a.$watch(t("ngfMultiple"),function(){w.attr("multiple",t("ngfMultiple",a))})),u.push(a.$watch(t("ngfCapture"),function(){w.attr("capture",t("ngfCapture",a))})),u.push(a.$watch(t("ngfAccept"),function(){w.attr("accept",t("ngfAccept",a))})),c.$observe("accept",function(){w.attr("accept",t("accept"))}),u.push(function(){c.$$observers&&delete c.$$observers.accept});var v=0,w=b;k()||(w=o()),w.bind("change",m),k()?b.bind("click",r):b.bind("click touchstart touchend",p),-1!==navigator.appVersion.indexOf("MSIE 10")&&w.bind("click",s),d&&d.$formatters.push(function(a){return(null==a||0===a.length)&&w.val()&&w.val(null),a}),a.$on("$destroy",function(){k()||w.parent().remove(),angular.forEach(u,function(a){a()})}),h(function(){for(var a=0;a<g.length;a++){var b=g[a];document.body.contains(b.el[0])||(g.splice(a,1),b.ref.remove())}}),window.FileAPI&&window.FileAPI.ngfFixIE&&window.FileAPI.ngfFixIE(b,w,m)}var g=[];return{restrict:"AEC",require:"?ngModel",link:function(e,g,h,i){f(e,g,h,i,a,b,c,d)}}}]),function(){function a(a){return"img"===a.tagName.toLowerCase()?"image":"audio"===a.tagName.toLowerCase()?"audio":"video"===a.tagName.toLowerCase()?"video":/./}function b(b,c,d,e,f,g,h,i){function j(a){var g=b.attrGetter("ngfNoObjectUrl",f,d);b.dataUrl(a,g)["finally"](function(){c(function(){var b=(g?a.$ngfDataUrl:a.$ngfBlobUrl)||a.$ngfDataUrl;i?e.css("background-image","url('"+(b||"")+"')"):e.attr("src",b),b?e.removeClass("ng-hide"):e.addClass("ng-hide")})})}c(function(){var c=d.$watch(f[g],function(c){var d=h;if("ngfThumbnail"===g&&(d||(d={width:e[0].clientWidth,height:e[0].clientHeight}),0===d.width&&window.getComputedStyle)){var f=getComputedStyle(e[0]);d={width:parseInt(f.width.slice(0,-2)),height:parseInt(f.height.slice(0,-2))}}return angular.isString(c)?(e.removeClass("ng-hide"),i?e.css("background-image","url('"+c+"')"):e.attr("src",c)):void(!c||!c.type||0!==c.type.search(a(e[0]))||i&&0!==c.type.indexOf("image")?e.addClass("ng-hide"):d&&b.isResizeSupported()?b.resize(c,d.width,d.height,d.quality).then(function(a){j(a)},function(a){throw a}):j(c))});d.$on("$destroy",function(){c()})})}ngFileUpload.service("UploadDataUrl",["UploadBase","$timeout","$q",function(a,b,c){var d=a;return d.base64DataUrl=function(a){if(angular.isArray(a)){var b=c.defer(),e=0;return angular.forEach(a,function(c){d.dataUrl(c,!0)["finally"](function(){if(e++,e===a.length){var c=[];angular.forEach(a,function(a){c.push(a.$ngfDataUrl)}),b.resolve(c,a)}})}),b.promise}return d.dataUrl(a,!0)},d.dataUrl=function(a,e){if(!a)return d.emptyPromise(a,a);if(e&&null!=a.$ngfDataUrl||!e&&null!=a.$ngfBlobUrl)return d.emptyPromise(e?a.$ngfDataUrl:a.$ngfBlobUrl,a);var f=e?a.$$ngfDataUrlPromise:a.$$ngfBlobUrlPromise;if(f)return f;var g=c.defer();return b(function(){if(window.FileReader&&a&&(!window.FileAPI||-1===navigator.userAgent.indexOf("MSIE 8")||a.size<2e4)&&(!window.FileAPI||-1===navigator.userAgent.indexOf("MSIE 9")||a.size<4e6)){var c=window.URL||window.webkitURL;if(c&&c.createObjectURL&&!e){var f;try{f=c.createObjectURL(a)}catch(h){return void b(function(){a.$ngfBlobUrl="",g.reject()})}b(function(){if(a.$ngfBlobUrl=f,f){g.resolve(f,a),d.blobUrls=d.blobUrls||[],d.blobUrlsTotalSize=d.blobUrlsTotalSize||0,d.blobUrls.push({url:f,size:a.size}),d.blobUrlsTotalSize+=a.size||0;for(var b=d.defaults.blobUrlsMaxMemory||268435456,e=d.defaults.blobUrlsMaxQueueSize||200;(d.blobUrlsTotalSize>b||d.blobUrls.length>e)&&d.blobUrls.length>1;){var h=d.blobUrls.splice(0,1)[0];c.revokeObjectURL(h.url),d.blobUrlsTotalSize-=h.size}}})}else{var i=new FileReader;i.onload=function(c){b(function(){a.$ngfDataUrl=c.target.result,g.resolve(c.target.result,a),b(function(){delete a.$ngfDataUrl},1e3)})},i.onerror=function(){b(function(){a.$ngfDataUrl="",g.reject()})},i.readAsDataURL(a)}}else b(function(){a[e?"$ngfDataUrl":"$ngfBlobUrl"]="",g.reject()})}),f=e?a.$$ngfDataUrlPromise=g.promise:a.$$ngfBlobUrlPromise=g.promise,f["finally"](function(){delete a[e?"$$ngfDataUrlPromise":"$$ngfBlobUrlPromise"]}),f},d}]),ngFileUpload.directive("ngfSrc",["Upload","$timeout",function(a,c){return{restrict:"AE",link:function(d,e,f){b(a,c,d,e,f,"ngfSrc",a.attrGetter("ngfResize",f,d),!1)}}}]),ngFileUpload.directive("ngfBackground",["Upload","$timeout",function(a,c){return{restrict:"AE",link:function(d,e,f){b(a,c,d,e,f,"ngfBackground",a.attrGetter("ngfResize",f,d),!0)}}}]),ngFileUpload.directive("ngfThumbnail",["Upload","$timeout",function(a,c){return{restrict:"AE",link:function(d,e,f){var g=a.attrGetter("ngfSize",f,d);b(a,c,d,e,f,"ngfThumbnail",g,a.attrGetter("ngfAsBackground",f,d))}}}]),ngFileUpload.config(["$compileProvider",function(a){a.imgSrcSanitizationWhitelist&&a.imgSrcSanitizationWhitelist(/^\s*(https?|ftp|mailto|tel|local|file|data|blob):/),a.aHrefSanitizationWhitelist&&a.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|tel|local|file|data|blob):/)}]),ngFileUpload.filter("ngfDataUrl",["UploadDataUrl","$sce",function(a,b){return function(c,d,e){if(angular.isString(c))return b.trustAsResourceUrl(c);var f=c&&((d?c.$ngfDataUrl:c.$ngfBlobUrl)||c.$ngfDataUrl);return c&&!f?(!c.$ngfDataUrlFilterInProgress&&angular.isObject(c)&&(c.$ngfDataUrlFilterInProgress=!0,a.dataUrl(c,d)),""):(c&&delete c.$ngfDataUrlFilterInProgress,(c&&f?e?b.trustAsResourceUrl(f):f:c)||"")}}])}(),ngFileUpload.service("UploadValidate",["UploadDataUrl","$q","$timeout",function(a,b,c){function d(a){var b="",c=[];if(a.length>2&&"/"===a[0]&&"/"===a[a.length-1])b=a.substring(1,a.length-1);else{var e=a.split(",");if(e.length>1)for(var f=0;f<e.length;f++){var g=d(e[f]);g.regexp?(b+="("+g.regexp+")",f<e.length-1&&(b+="|")):c=c.concat(g.excludes)}else 0===a.indexOf("!")?c.push("^((?!"+d(a.substring(1)).regexp+").)*$"):(0===a.indexOf(".")&&(a="*"+a),b="^"+a.replace(new RegExp("[.\\\\+*?\\[\\^\\]$(){}=!<>|:\\-]","g"),"\\$&")+"$",b=b.replace(/\\\*/g,".*").replace(/\\\?/g,"."))}return{regexp:b,excludes:c}}function e(a,b){null==b||a.$dirty||(a.$setDirty?a.$setDirty():a.$dirty=!0)}var f=a;return f.validatePattern=function(a,b){if(!b)return!0;var c=d(b),e=!0;if(c.regexp&&c.regexp.length){var f=new RegExp(c.regexp,"i");e=null!=a.type&&f.test(a.type)||null!=a.name&&f.test(a.name)}for(var g=c.excludes.length;g--;){var h=new RegExp(c.excludes[g],"i");e=e&&(null==a.type||h.test(a.type))&&(null==a.name||h.test(a.name))}return e},f.ratioToFloat=function(a){var b=a.toString(),c=b.search(/[x:]/i);return b=c>-1?parseFloat(b.substring(0,c))/parseFloat(b.substring(c+1)):parseFloat(b)},f.registerModelChangeValidator=function(a,b,c){a&&a.$formatters.push(function(d){a.$dirty&&(d&&!angular.isArray(d)&&(d=[d]),f.validate(d,0,a,b,c).then(function(){f.applyModelValidation(a,d)}))})},f.applyModelValidation=function(a,b){e(a,b),angular.forEach(a.$ngfValidations,function(b){a.$setValidity(b.name,b.valid)})},f.getValidationAttr=function(a,b,c,d,e){var g="ngf"+c[0].toUpperCase()+c.substr(1),h=f.attrGetter(g,a,b,{$file:e});if(null==h&&(h=f.attrGetter("ngfValidate",a,b,{$file:e}))){var i=(d||c).split(".");h=h[i[0]],i.length>1&&(h=h&&h[i[1]])}return h},f.validate=function(a,c,d,e,g){function h(b,c,h){if(a){for(var i=a.length,j=null;i--;){var k=a[i];if(k){var l=f.getValidationAttr(e,g,b,c,k);null!=l&&(h(k,l,i)||(k.$error=b,(k.$errorMessages=k.$errorMessages||{})[b]=!0,k.$errorParam=l,a.splice(i,1),j=!1))}}null!==j&&d.$ngfValidations.push({name:b,valid:j})}}function i(c,h,i,k,l){function m(a,b,d){null!=d?k(b,d).then(function(e){l(e,d)?a.resolve():(b.$error=c,(b.$errorMessages=b.$errorMessages||{})[c]=!0,b.$errorParam=d,a.reject())},function(){j("ngfValidateForce",{$file:b})?(b.$error=c,(b.$errorMessages=b.$errorMessages||{})[c]=!0,b.$errorParam=d,a.reject()):a.resolve()}):a.resolve()}var n=[f.emptyPromise()];return a?(a=void 0===a.length?[a]:a,angular.forEach(a,function(a){var d=b.defer();return n.push(d.promise),!i||null!=a.type&&0===a.type.search(i)?void("dimensions"===c&&null!=f.attrGetter("ngfDimensions",e)?f.imageDimensions(a).then(function(b){m(d,a,j("ngfDimensions",{$file:a,$width:b.width,$height:b.height}))},function(){d.reject()}):"duration"===c&&null!=f.attrGetter("ngfDuration",e)?f.mediaDuration(a).then(function(b){m(d,a,j("ngfDuration",{$file:a,$duration:b}))},function(){d.reject()}):m(d,a,f.getValidationAttr(e,g,c,h,a))):void d.resolve()}),b.all(n).then(function(){d.$ngfValidations.push({name:c,valid:!0})},function(){d.$ngfValidations.push({name:c,valid:!1})})):void 0}d=d||{},d.$ngfValidations=d.$ngfValidations||[],angular.forEach(d.$ngfValidations,function(a){a.valid=!0});var j=function(a,b){return f.attrGetter(a,e,g,b)};if(null==a||0===a.length)return f.emptyPromise(d);a=void 0===a.length?[a]:a.slice(0),h("maxFiles",null,function(a,b,d){return b>c+d}),h("pattern",null,f.validatePattern),h("minSize","size.min",function(a,b){return a.size+.1>=f.translateScalars(b)}),h("maxSize","size.max",function(a,b){return a.size-.1<=f.translateScalars(b)});var k=0;if(h("maxTotalSize",null,function(b,c){return k+=b.size,k>f.translateScalars(c)?(a.splice(0,a.length),!1):!0}),h("validateFn",null,function(a,b){return b===!0||null===b||""===b}),!a.length)return f.emptyPromise(d,d.$ngfValidations);var l=b.defer(),m=[];return m.push(f.happyPromise(i("maxHeight","height.max",/image/,this.imageDimensions,function(a,b){return a.height<=b}))),m.push(f.happyPromise(i("minHeight","height.min",/image/,this.imageDimensions,function(a,b){return a.height>=b}))),m.push(f.happyPromise(i("maxWidth","width.max",/image/,this.imageDimensions,function(a,b){return a.width<=b}))),m.push(f.happyPromise(i("minWidth","width.min",/image/,this.imageDimensions,function(a,b){return a.width>=b}))),m.push(f.happyPromise(i("dimensions",null,/image/,function(a,b){return f.emptyPromise(b)},function(a){return a}))),m.push(f.happyPromise(i("ratio",null,/image/,this.imageDimensions,function(a,b){for(var c=b.toString().split(","),d=!1,e=0;e<c.length;e++)Math.abs(a.width/a.height-f.ratioToFloat(c[e]))<1e-4&&(d=!0);return d}))),m.push(f.happyPromise(i("maxRatio","ratio.max",/image/,this.imageDimensions,function(a,b){return a.width/a.height-f.ratioToFloat(b)<1e-4}))),m.push(f.happyPromise(i("minRatio","ratio.min",/image/,this.imageDimensions,function(a,b){return a.width/a.height-f.ratioToFloat(b)>-1e-4}))),m.push(f.happyPromise(i("maxDuration","duration.max",/audio|video/,this.mediaDuration,function(a,b){return a<=f.translateScalars(b)}))),m.push(f.happyPromise(i("minDuration","duration.min",/audio|video/,this.mediaDuration,function(a,b){return a>=f.translateScalars(b)}))),m.push(f.happyPromise(i("duration",null,/audio|video/,function(a,b){return f.emptyPromise(b)},function(a){return a}))),m.push(f.happyPromise(i("validateAsyncFn",null,null,function(a,b){return b},function(a){return a===!0||null===a||""===a}))),b.all(m).then(function(){l.resolve(d,d.$ngfValidations)})},f.imageDimensions=function(a){if(a.$ngfWidth&&a.$ngfHeight){var d=b.defer();return c(function(){d.resolve({width:a.$ngfWidth,height:a.$ngfHeight})}),d.promise}if(a.$ngfDimensionPromise)return a.$ngfDimensionPromise;var e=b.defer();return c(function(){return 0!==a.type.indexOf("image")?void e.reject("not image"):void f.dataUrl(a).then(function(b){function d(){var b=h[0].clientWidth,c=h[0].clientHeight;h.remove(),a.$ngfWidth=b,a.$ngfHeight=c,e.resolve({width:b,height:c})}function f(){h.remove(),e.reject("load error")}function g(){c(function(){h[0].parentNode&&(h[0].clientWidth?d():i>10?f():g())},1e3)}var h=angular.element("<img>").attr("src",b).css("visibility","hidden").css("position","fixed").css("max-width","none !important").css("max-height","none !important");h.on("load",d),h.on("error",f);var i=0;g(),angular.element(document.getElementsByTagName("body")[0]).append(h)},function(){e.reject("load error")})}),a.$ngfDimensionPromise=e.promise,a.$ngfDimensionPromise["finally"](function(){delete a.$ngfDimensionPromise}),a.$ngfDimensionPromise},f.mediaDuration=function(a){if(a.$ngfDuration){var d=b.defer();return c(function(){d.resolve(a.$ngfDuration)}),d.promise}if(a.$ngfDurationPromise)return a.$ngfDurationPromise;var e=b.defer();return c(function(){return 0!==a.type.indexOf("audio")&&0!==a.type.indexOf("video")?void e.reject("not media"):void f.dataUrl(a).then(function(b){function d(){var b=h[0].duration;a.$ngfDuration=b,h.remove(),e.resolve(b)}function f(){h.remove(),e.reject("load error")}function g(){c(function(){h[0].parentNode&&(h[0].duration?d():i>10?f():g())},1e3)}var h=angular.element(0===a.type.indexOf("audio")?"<audio>":"<video>").attr("src",b).css("visibility","none").css("position","fixed");h.on("loadedmetadata",d),h.on("error",f);var i=0;g(),angular.element(document.body).append(h)},function(){e.reject("load error")})}),a.$ngfDurationPromise=e.promise,a.$ngfDurationPromise["finally"](function(){delete a.$ngfDurationPromise}),a.$ngfDurationPromise},f}]),ngFileUpload.service("UploadResize",["UploadValidate","$q",function(a,b){var c=a,d=function(a,b,c,d,e){var f=e?Math.max(c/a,d/b):Math.min(c/a,d/b);return{width:a*f,height:b*f,marginX:a*f-c,marginY:b*f-d}},e=function(a,e,f,g,h,i,j,k){var l=b.defer(),m=document.createElement("canvas"),n=document.createElement("img");return n.onload=function(){if(null!=k&&k(n.width,n.height)===!1)return void l.reject("resizeIf");try{if(i){var a=c.ratioToFloat(i),b=n.width/n.height;a>b?(e=n.width,f=e/a):(f=n.height,e=f*a)}e||(e=n.width),f||(f=n.height);var o=d(n.width,n.height,e,f,j);m.width=Math.min(o.width,e),m.height=Math.min(o.height,f);var p=m.getContext("2d");p.drawImage(n,Math.min(0,-o.marginX/2),Math.min(0,-o.marginY/2),o.width,o.height),l.resolve(m.toDataURL(h||"image/WebP",g||.934))}catch(q){l.reject(q)}},n.onerror=function(){l.reject()},n.src=a,l.promise};return c.dataUrltoBlob=function(a,b,c){for(var d=a.split(","),e=d[0].match(/:(.*?);/)[1],f=atob(d[1]),g=f.length,h=new Uint8Array(g);g--;)h[g]=f.charCodeAt(g);var i=new window.Blob([h],{type:e});return i.name=b,i.$ngfOrigSize=c,i},c.isResizeSupported=function(){var a=document.createElement("canvas");return window.atob&&a.getContext&&a.getContext("2d")&&window.Blob},c.isResizeSupported()&&Object.defineProperty(window.Blob.prototype,"name",{get:function(){return this.$ngfName},set:function(a){this.$ngfName=a},configurable:!0}),c.resize=function(a,d,f,g,h,i,j,k,l){if(0!==a.type.indexOf("image"))return c.emptyPromise(a);var m=b.defer();return c.dataUrl(a,!0).then(function(b){e(b,d,f,g,h||a.type,i,j,k).then(function(d){if("image/jpeg"===a.type&&l)try{d=c.restoreExif(b,d)}catch(e){setTimeout(function(){throw e},1)}try{var f=c.dataUrltoBlob(d,a.name,a.size);m.resolve(f)}catch(e){m.reject(e)}},function(b){"resizeIf"===b&&m.resolve(a),m.reject(b)})},function(a){m.reject(a)}),m.promise},c}]),function(){function a(a,c,d,e,f,g,h,i,j,k){function l(){return c.attr("disabled")||r("ngfDropDisabled",a)}function m(b,c){i.updateModel(e,d,a,r("ngfChange")||r("ngfDrop"),b,c)}function n(b,c){if(!i.shouldUpdateOn(b,d,a)||!c)return i.rejectPromise([]);var e=[];c.replace(/<(img src|img [^>]* src) *=\"([^\"]*)\"/gi,function(a,b,c){e.push(c)});var f=[],g=[];if(e.length){angular.forEach(e,function(a){f.push(i.urlToBlob(a).then(function(a){g.push(a)}))});var h=k.defer();return k.all(f).then(function(){h.resolve(g)},function(a){h.reject(a)}),h.promise}return i.emptyPromise()}function o(a,b,c,d){var e=r("ngfDragOverClass",a,{$event:c}),f="dragover";if(angular.isString(e))f=e;else if(e&&(e.delay&&(v=e.delay),e.accept||e.reject)){var g=c.dataTransfer.items;if(null!=g&&g.length)for(var h=e.pattern||r("ngfPattern",a,{$event:c}),j=g.length;j--;){if(!i.validatePattern(g[j],h)){f=e.reject;break}f=e.accept}else f=e.accept}d(f)}function p(b,c,e,f){function g(a,b){var c=k.defer();if(null!=a)if(a.isDirectory){var d=[i.emptyPromise()];if(m){var e={type:"directory"};e.name=e.path=(b||"")+a.name+a.name,n.push(e)}var f=a.createReader(),h=[],p=function(){f.readEntries(function(e){try{e.length?(h=h.concat(Array.prototype.slice.call(e||[],0)),p()):(angular.forEach(h.slice(0),function(c){n.length<=j&&l>=o&&d.push(g(c,(b?b:"")+a.name+"/"))}),k.all(d).then(function(){c.resolve()},function(a){c.reject(a)}))}catch(f){c.reject(f)}},function(a){c.reject(a)})};p()}else a.file(function(a){try{a.path=(b?b:"")+a.name,m&&(a=i.rename(a,a.path)),n.push(a),o+=a.size,c.resolve()}catch(d){c.reject(d)}},function(a){c.reject(a)});return c.promise}var j=i.getValidationAttr(d,a,"maxFiles")||Number.MAX_VALUE,l=i.getValidationAttr(d,a,"maxTotalSize")||Number.MAX_VALUE,m=r("ngfIncludeDir",a),n=[],o=0,p=[i.emptyPromise()];if(b&&b.length>0&&"file"!==h.protocol())for(var q=0;q<b.length;q++){if(b[q].webkitGetAsEntry&&b[q].webkitGetAsEntry()&&b[q].webkitGetAsEntry().isDirectory){var s=b[q].webkitGetAsEntry();if(s.isDirectory&&!e)continue;null!=s&&p.push(g(s))}else{var t=b[q].getAsFile();null!=t&&(n.push(t),o+=t.size)}if(n.length>j||o>l||!f&&n.length>0)break}else if(null!=c)for(var u=0;u<c.length;u++){var v=c.item(u);if((v.type||v.size>0)&&(n.push(v),o+=v.size),n.length>j||o>l||!f&&n.length>0)break}var w=k.defer();return k.all(p).then(function(){if(f||m||!n.length)w.resolve(n);else{for(var a=0;n[a]&&"directory"===n[a].type;)a++;w.resolve([n[a]])}},function(a){w.reject(a)}),w.promise}var q=b(),r=function(a,b,c){return i.attrGetter(a,d,b,c)};if(r("dropAvailable")&&g(function(){a[r("dropAvailable")]?a[r("dropAvailable")].value=q:a[r("dropAvailable")]=q}),!q)return void(r("ngfHideOnDropNotAvailable",a)===!0&&c.css("display","none"));null==r("ngfSelect")&&i.registerModelChangeValidator(e,d,a);var s,t=null,u=f(r("ngfStopPropagation")),v=1;c[0].addEventListener("dragover",function(b){if(!l()&&i.shouldUpdateOn("drop",d,a)){if(b.preventDefault(),u(a)&&b.stopPropagation(),navigator.userAgent.indexOf("Chrome")>-1){var e=b.dataTransfer.effectAllowed;b.dataTransfer.dropEffect="move"===e||"linkMove"===e?"move":"copy"}g.cancel(t),s||(s="C",o(a,d,b,function(d){s=d,c.addClass(s),r("ngfDrag",a,{$isDragging:!0,$class:s,$event:b})}))}},!1),c[0].addEventListener("dragenter",function(b){!l()&&i.shouldUpdateOn("drop",d,a)&&(b.preventDefault(),u(a)&&b.stopPropagation())},!1),c[0].addEventListener("dragleave",function(b){!l()&&i.shouldUpdateOn("drop",d,a)&&(b.preventDefault(),u(a)&&b.stopPropagation(),t=g(function(){s&&c.removeClass(s),s=null,r("ngfDrag",a,{$isDragging:!1,$event:b})},v||100))},!1),c[0].addEventListener("drop",function(b){if(!l()&&i.shouldUpdateOn("drop",d,a)){b.preventDefault(),u(a)&&b.stopPropagation(),s&&c.removeClass(s),s=null;var e,f=b.dataTransfer.items;try{e=b.dataTransfer&&b.dataTransfer.getData&&b.dataTransfer.getData("text/html")}catch(g){}p(f,b.dataTransfer.files,r("ngfAllowDir",a)!==!1,r("multiple")||r("ngfMultiple",a)).then(function(a){a.length?m(a,b):n("dropUrl",e).then(function(a){m(a,b)})})}},!1),c[0].addEventListener("paste",function(b){if(navigator.userAgent.toLowerCase().indexOf("firefox")>-1&&r("ngfEnableFirefoxPaste",a)&&b.preventDefault(),!l()&&i.shouldUpdateOn("paste",d,a)){var c=[],e=b.clipboardData||b.originalEvent.clipboardData;if(e&&e.items)for(var f=0;f<e.items.length;f++)-1!==e.items[f].type.indexOf("image")&&c.push(e.items[f].getAsFile());c.length?m(c,b):n("pasteUrl",e).then(function(a){m(a,b)})}},!1),navigator.userAgent.toLowerCase().indexOf("firefox")>-1&&r("ngfEnableFirefoxPaste",a)&&(c.attr("contenteditable",!0),c.on("keypress",function(a){a.metaKey||a.ctrlKey||a.preventDefault()}))}function b(){var a=document.createElement("div");return"draggable"in a&&"ondrop"in a&&!/Edge\/12./i.test(navigator.userAgent)}ngFileUpload.directive("ngfDrop",["$parse","$timeout","$location","Upload","$http","$q",function(b,c,d,e,f,g){
3
+ return{restrict:"AEC",require:"?ngModel",link:function(h,i,j,k){a(h,i,j,k,b,c,d,e,f,g)}}}]),ngFileUpload.directive("ngfNoFileDrop",function(){return function(a,c){b()&&c.css("display","none")}}),ngFileUpload.directive("ngfDropAvailable",["$parse","$timeout","Upload",function(a,c,d){return function(e,f,g){if(b()){var h=a(d.attrGetter("ngfDropAvailable",g));c(function(){h(e),h.assign&&h.assign(e,!0)})}}}])}(),ngFileUpload.service("UploadExif",["UploadResize","$q",function(a,b){function c(a,b,c,d){switch(b){case 2:return a.transform(-1,0,0,1,c,0);case 3:return a.transform(-1,0,0,-1,c,d);case 4:return a.transform(1,0,0,-1,0,d);case 5:return a.transform(0,1,1,0,0,0);case 6:return a.transform(0,1,-1,0,d,0);case 7:return a.transform(0,-1,-1,0,d,c);case 8:return a.transform(0,-1,1,0,0,c)}}function d(a){for(var b="",c=new Uint8Array(a),d=c.byteLength,e=0;d>e;e++)b+=String.fromCharCode(c[e]);return window.btoa(b)}var e=a;return e.isExifSupported=function(){return window.FileReader&&(new FileReader).readAsArrayBuffer&&e.isResizeSupported()},e.readOrientation=function(a){var c=b.defer(),d=new FileReader,e=a.slice?a.slice(0,65536):a;return d.readAsArrayBuffer(e),d.onerror=function(a){return c.reject(a)},d.onload=function(a){var b={orientation:1},d=new DataView(this.result);if(65496!==d.getUint16(0,!1))return c.resolve(b);for(var e=d.byteLength,f=2;e>f;){var g=d.getUint16(f,!1);if(f+=2,65505===g){if(1165519206!==d.getUint32(f+=2,!1))return c.resolve(b);var h=18761===d.getUint16(f+=6,!1);f+=d.getUint32(f+4,h);var i=d.getUint16(f,h);f+=2;for(var j=0;i>j;j++)if(274===d.getUint16(f+12*j,h)){var k=d.getUint16(f+12*j+8,h);return k>=2&&8>=k&&(d.setUint16(f+12*j+8,1,h),b.fixedArrayBuffer=a.target.result),b.orientation=k,c.resolve(b)}}else{if(65280!==(65280&g))break;f+=d.getUint16(f,!1)}}return c.resolve(b)},c.promise},e.applyExifRotation=function(a){if(0!==a.type.indexOf("image/jpeg"))return e.emptyPromise(a);var f=b.defer();return e.readOrientation(a).then(function(b){return b.orientation<2||b.orientation>8?f.resolve(a):void e.dataUrl(a,!0).then(function(g){var h=document.createElement("canvas"),i=document.createElement("img");i.onload=function(){try{h.width=b.orientation>4?i.height:i.width,h.height=b.orientation>4?i.width:i.height;var g=h.getContext("2d");c(g,b.orientation,i.width,i.height),g.drawImage(i,0,0);var j=h.toDataURL(a.type||"image/WebP",.934);j=e.restoreExif(d(b.fixedArrayBuffer),j);var k=e.dataUrltoBlob(j,a.name);f.resolve(k)}catch(l){return f.reject(l)}},i.onerror=function(){f.reject()},i.src=g},function(a){f.reject(a)})},function(a){f.reject(a)}),f.promise},e.restoreExif=function(a,b){var c={};return c.KEY_STR="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",c.encode64=function(a){var b,c,d,e,f,g="",h="",i="",j=0;do b=a[j++],c=a[j++],h=a[j++],d=b>>2,e=(3&b)<<4|c>>4,f=(15&c)<<2|h>>6,i=63&h,isNaN(c)?f=i=64:isNaN(h)&&(i=64),g=g+this.KEY_STR.charAt(d)+this.KEY_STR.charAt(e)+this.KEY_STR.charAt(f)+this.KEY_STR.charAt(i),b=c=h="",d=e=f=i="";while(j<a.length);return g},c.restore=function(a,b){a.match("data:image/jpeg;base64,")&&(a=a.replace("data:image/jpeg;base64,",""));var c=this.decode64(a),d=this.slice2Segments(c),e=this.exifManipulation(b,d);return"data:image/jpeg;base64,"+this.encode64(e)},c.exifManipulation=function(a,b){var c=this.getExifArray(b),d=this.insertExif(a,c);return new Uint8Array(d)},c.getExifArray=function(a){for(var b,c=0;c<a.length;c++)if(b=a[c],255===b[0]&225===b[1])return b;return[]},c.insertExif=function(a,b){var c=a.replace("data:image/jpeg;base64,",""),d=this.decode64(c),e=d.indexOf(255,3),f=d.slice(0,e),g=d.slice(e),h=f;return h=h.concat(b),h=h.concat(g)},c.slice2Segments=function(a){for(var b=0,c=[];;){if(255===a[b]&218===a[b+1])break;if(255===a[b]&216===a[b+1])b+=2;else{var d=256*a[b+2]+a[b+3],e=b+d+2,f=a.slice(b,e);c.push(f),b=e}if(b>a.length)break}return c},c.decode64=function(a){var b,c,d,e,f,g="",h="",i=0,j=[],k=/[^A-Za-z0-9\+\/\=]/g;k.exec(a)&&console.log("There were invalid base64 characters in the input text.\nValid base64 characters are A-Z, a-z, 0-9, NaNExpect errors in decoding."),a=a.replace(/[^A-Za-z0-9\+\/\=]/g,"");do d=this.KEY_STR.indexOf(a.charAt(i++)),e=this.KEY_STR.indexOf(a.charAt(i++)),f=this.KEY_STR.indexOf(a.charAt(i++)),h=this.KEY_STR.indexOf(a.charAt(i++)),b=d<<2|e>>4,c=(15&e)<<4|f>>2,g=(3&f)<<6|h,j.push(b),64!==f&&j.push(c),64!==h&&j.push(g),b=c=g="",d=e=f=h="";while(i<a.length);return j},c.restore(a,b)},e}]);
@@ -0,0 +1,3 @@
1
+ 'use strict'
2
+ angular.module('app', ['Engine2'])
3
+ .controller 'AppController', ($scope, $parse, $compile, $http) ->
@@ -0,0 +1,557 @@
1
+ 'use strict'
2
+ _.templateSettings.interpolate = /{{([\s\S]+?)}}/g;
3
+
4
+ angular.module('Engine2', ['ngRoute', 'ngSanitize', 'ngAnimate', 'ngCookies', 'mgcrea.ngStrap', 'ngFileUpload', 'ui.tree', 'LocalStorageModule']) # 'draggabilly'
5
+ .factory 'E2Snippets', ->
6
+ icon = (name) -> "<span class='glyphicon glyphicon-#{name}'></span>"
7
+ aicon = (name) -> "<i class='fa fa-#{name}'></i>"
8
+ icon: icon
9
+ aicon: aicon
10
+ boolean_true_value: icon('check')
11
+ boolean_false_value: icon('unchecked')
12
+
13
+ .config ($httpProvider, $routeProvider, $compileProvider, localStorageServiceProvider, $logProvider) ->
14
+ loaderOn = -> angular.element(document.querySelectorAll('.loader')).eq(-1).css("visibility", 'visible')
15
+ $httpProvider.interceptors.push 'e2HttpInterceptor'
16
+ $httpProvider.defaults.transformRequest.push (data, headersGetter) ->
17
+ loaderOn()
18
+ data
19
+ # $httpProvider.defaults.headers.common['Cache-Control'] = 'no-cache'
20
+ # $httpProvider.defaults.cache = false;
21
+ $httpProvider.defaults.headers.get ||= {} # if !$httpProvider.defaults.headers.get
22
+ $httpProvider.defaults.headers.get['If-Modified-Since'] = '0'
23
+ # localStorageServiceProvider.setStorageType('sessionStorage')
24
+ localStorageServiceProvider.setPrefix('E2')
25
+ $compileProvider.debugInfoEnabled(false)
26
+ $logProvider.debugEnabled(true)
27
+ $httpProvider.useApplyAsync(true)
28
+ # $locationProvider.html5Mode(true);
29
+
30
+ .factory 'e2HttpInterceptor', ($q, $injector, E2Snippets) ->
31
+ loaderOff = -> angular.element(document.querySelectorAll('.loader')).eq(-1).css("visibility", 'hidden')
32
+ response: (response) ->
33
+ loaderOff()
34
+ response
35
+
36
+ responseError: (response) ->
37
+ loaderOff()
38
+ if response.status != 401
39
+ response = (status: response.status, statusText: "Connection refused", data: (message: "Connection refused")) if response.status in [-1, 0]
40
+ if response.constructor == SyntaxError
41
+ message = response.message
42
+ cause = response.stack
43
+ else
44
+ message = response.data.message
45
+ cause = if _.isString(response.data) then response.data else response.data.cause || response.data.message
46
+ $injector.get('$e2Modal').error("#{E2Snippets.icon('bell')} #{response.status}: #{message}", cause)
47
+ $q.reject(response)
48
+
49
+ .factory 'E2', ($templateCache, $http, E2Snippets, $e2Modal, $q, $injector, e2HttpInterceptor, $route, $dateFormatter) ->
50
+ compact: (o) ->
51
+ _.each o, (v, k) =>
52
+ if (v == null || (_.isString(v) && !v)) || (!_.isDate(v) && _.isObject(v) && @compact(v) && _.isEmpty(v))
53
+ delete o[k]
54
+
55
+ clean: (o) ->
56
+ _.each o, (v, k) =>
57
+ if _.isArray(v)
58
+ v.length = 0 # o[k] = []
59
+ else if _.isObject(v) && !_.isDate(v)
60
+ @clean(v)
61
+ else
62
+ # delete o[k]
63
+ o[k] = null
64
+ merge: (o1, o2) ->
65
+ for p of o2
66
+ try # if o1 and no try ?
67
+ if _.isObject(o2[p]) && !_.isArray(o2[p])
68
+ o1[p] = @merge(o1[p] ? {}, o2[p])
69
+ else
70
+ o1[p] = o2[p]
71
+ catch
72
+ o1[p] = o2[p]
73
+ o1
74
+
75
+ transpose: (a) ->
76
+ _.keys(a[0]).map((c) -> a.map (r) -> r[c])
77
+
78
+ join_keys: (keys) -> keys.join('|')
79
+ split_keys: (key) -> key.split('|')
80
+ id_for: (rec, meta) -> @join_keys(meta.primary_fields.map((e) -> rec[e]))
81
+ from_id: (id, meta) -> _.zipObject(meta.primary_fields, id) # _.zip(meta.primary_fields, id).reduce(((rec, [k, v]) -> rec[k] = v; rec), {})
82
+
83
+ icon: E2Snippets.icon
84
+ aicon: E2Snippets.aicon
85
+
86
+ fetch_template: (template) ->
87
+ $q.when($templateCache.get(template) || $http.get(template)).then (res) ->
88
+ if angular.isObject(res)
89
+ $templateCache.put(template, res.data)
90
+ res.data
91
+ else res
92
+
93
+ fetch_panel: (panel, modal) ->
94
+ $q.when(panel.template_string || @fetch_template(panel.template)).then (template) =>
95
+ if panel.panel_template
96
+ prefix = if modal then 'modals' else 'panels'
97
+ @fetch_template("#{prefix}/#{panel.panel_template}").then (panel_template) -> panel_template.replace("modal-content-to-replace", template)
98
+ else template
99
+
100
+ each_menu: (menu, fun) ->
101
+ _.each menu, (m) =>
102
+ if m.menu
103
+ @each_menu(m.menu.entries, fun)
104
+ else if !m.divider
105
+ fun(m)
106
+
107
+ process_menu: (action, menu_name) ->
108
+ processor = @menu_processors[menu_name]
109
+ @each_menu action.meta.menus[menu_name].entries, (m) ->
110
+ menu_fun_name = "#{menu_name}_#{m.name}"
111
+ menu_fun_invoke = "action['#{menu_fun_name}'](#{processor.arg_name})"
112
+
113
+ click = m.click
114
+ m.click = menu_fun_invoke
115
+ action[menu_fun_name] ?= (args...) ->
116
+ processor.arg_fun(action, args...)
117
+ if click
118
+ action.scope().$eval(click)
119
+ else
120
+ action.invoke_action(m.name, processor.arg_ret(action))
121
+
122
+ if action.find_action_info(m.name, false)?
123
+ show = if m.show then " && " + m.show else ""
124
+ m.show = "action.find_action_info('#{m.name}').access" + show
125
+
126
+ menu_processors:
127
+ menu:
128
+ arg_name: ''
129
+ arg_fun: (action) -> undefined
130
+ arg_ret: (action) -> undefined
131
+ panel_menu:
132
+ arg_name: ''
133
+ arg_fun: (action) -> undefined
134
+ arg_ret: (action) -> undefined
135
+ item_menu:
136
+ arg_name: '$index'
137
+ arg_ret: (action) -> id: action.current_id
138
+ arg_fun: (action, index) ->
139
+ action.current_id = $injector.get('E2').id_for(action.entries[index], action.meta)
140
+
141
+
142
+
143
+ renderers:
144
+ boolean: (value, render) =>
145
+ switch value
146
+ when render.true_value then E2Snippets.boolean_true_value
147
+ when render.false_value then E2Snippets.boolean_false_value
148
+ else "?"
149
+ list_select: (value, render) ->
150
+ render.list_hash ||= render.list.reduce(((h, [a, b]) -> h[a] = b; h), {})
151
+ render.list_hash[value] ? value
152
+ datetime: (value, render) ->
153
+ value.split('\.')[0]
154
+ # $dateFormatter.formatDate(value, "yyyy-MM-dd", $dateFormatter.getDefaultLocale())
155
+ integer: (value, render) -> # ?
156
+ value.toString()
157
+ decimal_date: (value, render) ->
158
+ value = value.toString()
159
+ if value.length == 8 && match = value.match(/^(\d{4})(\d{2})(\d{2})$/) then match.slice(1, 4).join('-') else value
160
+ # if value.length == 8 then $dateFormatter.formatDate(value, "yyyy-MM-dd", $dateFormatter.getDefaultLocale()) else value
161
+ decimal_time: (value, render) ->
162
+ value = value.toString()
163
+ if match = value.match(/^(\d{1,2}?)(\d{2})(\d{2})$/) then match.slice(1, 4).join(':') else value
164
+ string: (value, render) ->
165
+ value.toString()
166
+
167
+
168
+ render_field: (entry, name, meta) ->
169
+ value = entry[name]
170
+ if value? && info = meta.info
171
+ f_info = info[name]
172
+ if f_info? && type = f_info.type
173
+ @renderers[type](value, f_info.render)
174
+ else
175
+ (value + "").replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;")
176
+ else
177
+ value
178
+
179
+ parsers:
180
+ integer: (value, info) ->
181
+ parseInt(value)
182
+
183
+ parse_entry: (value, info) ->
184
+ parser = @parsers[info.type]
185
+ if parser then parser(value, info) else value
186
+
187
+ .provider '$e2Modal', ->
188
+ $get: ($rootScope, $modal, $timeout, $window, $injector) ->
189
+ class MManager
190
+ @Z_INDEX: 1050
191
+ @index: 0
192
+ constructor: () ->
193
+ backdrop_z_index: (num, index) -> angular.element(document.querySelectorAll('.modal-backdrop')).eq(num).css('z-index', index)
194
+ modal_num: (num) -> angular.element(document.querySelectorAll('.modal')).eq(num)
195
+ backdrop: -> 'static'
196
+ show_before: ->
197
+ @z_index = MManager.Z_INDEX + MManager.index * 2
198
+ @modal.css('z-index', @z_index + 1)
199
+ hide_before: ->
200
+ @z_index = MManager.Z_INDEX + ((MManager.index - 1) * 2)
201
+ show: ->
202
+ hide: -> angular.element($window.document.body).addClass('modal-open modal-with-am-fade') if MManager.index > 0
203
+
204
+ class DefaultMManager extends MManager
205
+ show_before: ->
206
+ super()
207
+ @backdrop.css('z-index', @z_index) # @backdrop_z_index(-MManager.index - 1, z_index)
208
+
209
+ class FirstMManager extends MManager
210
+ constructor: () ->
211
+ super()
212
+ @threshold = 2
213
+ backdrop: -> if MManager.index > @threshold then false else super()
214
+ show_before: ->
215
+ super()
216
+ if MManager.index > @threshold
217
+ @modal_num((MManager.index - 1) - @threshold).css('display', 'none')
218
+ @backdrop_z_index(0, @z_index)
219
+ else
220
+ @backdrop.css('z-index', @z_index) # @backdrop_z_index(-MManager.index - 1, z_index)
221
+
222
+ hide_before: ->
223
+ super()
224
+ if MManager.index > @threshold
225
+ @backdrop_z_index(0, @z_index)
226
+ @modal_num((MManager.index - 1) - @threshold).css('display', 'block')
227
+
228
+ class SingleBackdropMManager extends MManager
229
+ backdrop: -> if MManager.index > 0 then false else super()
230
+ show_before: ->
231
+ super()
232
+ @backdrop_z_index(0, @z_index)
233
+ hide_before: ->
234
+ super()
235
+ @backdrop_z_index(0, @z_index)
236
+
237
+ is_modal: -> MManager.index > 0
238
+
239
+ show: (action) ->
240
+ scope = if action.scope then action.scope().$new(true) else $rootScope.$new()
241
+ scope.action = action
242
+ manager = new SingleBackdropMManager()
243
+
244
+ scope.$on 'modal.show.before', (e, m) ->
245
+ e.stopPropagation()
246
+ manager.modal = m.$element
247
+ manager.backdrop = m.$backdrop
248
+ throw "Modal has element" if scope.action.element?()
249
+ scope.action.element = -> m.$element
250
+ scope.action.panel_show?()
251
+ manager.show_before()
252
+ MManager.index++
253
+
254
+ scope.$on 'modal.show', (e, m) ->
255
+ e.stopPropagation()
256
+ manager.show()
257
+ scope.action.panel_shown?()
258
+
259
+ scope.$on 'modal.hide.before', (e) ->
260
+ e.stopPropagation()
261
+ MManager.index--
262
+ manager.hide_before()
263
+ scope.action.panel_hide?()
264
+
265
+ scope.$on 'modal.hide', (e) ->
266
+ e.stopPropagation()
267
+ manager.hide()
268
+ scope.action.panel_hidden?()
269
+ scope.$destroy()
270
+
271
+ $injector.get('E2').fetch_panel(scope.action.meta.panel, true).then (template) ->
272
+ # template = "<div class='modal' ng-class='action.meta.panel.class'>#{template}</div>"
273
+ modal = $modal(scope: scope, template: template, backdrop: manager.backdrop(), animation: 'am-fade', show: false)
274
+ scope.action.modal_hide = -> modal.$scope.$hide()
275
+ modal.$promise.then ->
276
+ modal.show()
277
+ modal
278
+
279
+ error: (title, msg, html) ->
280
+ body = if html then msg else "<div class='alert alert-danger'>#{msg}</div>"
281
+ clazz = if html then "modal-huge" else "modal-large"
282
+ @show meta: panel: (panel_template: "close_m", template_string: body, title: title, class: clazz) # message: msg,
283
+
284
+ confirm: (title, msg, action) ->
285
+ body = "<div class='alert alert-warning'>#{msg}</div>"
286
+ clazz = "modal-large"
287
+ @show
288
+ confirm: action,
289
+ meta: panel: (panel_template: "confirm_m", template_string: body, title: title, class: clazz) # message: msg,
290
+
291
+ .directive 'e2Modal', ($e2Modal) ->
292
+ restrict: 'E'
293
+ # replace: true
294
+ # transclude: true
295
+ scope: true
296
+ compile: (celem, cattr) ->
297
+ obody = celem[0].children[0]
298
+ celem.empty() if obody
299
+ (scope, elem, attrs) ->
300
+ scope.$on attrs.name, (ev, args) ->
301
+ return if ev.defaultPrevented
302
+ ev.preventDefault()
303
+
304
+ panel = panel_template: attrs.panelTemplate, title: attrs.title, class: attrs.clazz
305
+ if obody then panel.template_string = obody.outerHTML else panel.template = attrs.template
306
+ action = meta: (panel: panel), scope: -> scope
307
+ _.assign(action, args)
308
+
309
+ modal = $e2Modal.show(action)
310
+ hide_off = scope.$on "#{attrs.name}_close", ->
311
+ hide_off()
312
+ modal.then (m) -> m.$scope.$hide()
313
+
314
+ .directive 'e2Field', ($timeout, $filter) ->
315
+ require: 'ngModel'
316
+ restrict: 'A'
317
+ scope: false
318
+ link: (scope, elem, attrs, controller) ->
319
+ scope.$on "$destroy", -> elem.off()
320
+
321
+ name = attrs.e2Field || scope.f
322
+ meta = scope.action.meta
323
+ info = meta.info[name]
324
+ scope.$on "focus_field", (event, n, mode) ->
325
+ if n == name
326
+ elem[0].focus()
327
+
328
+ if info.onfocus
329
+ elem.on 'focus', ->
330
+ # scope.$apply(-> scope.$eval(info.onfocus))
331
+ $timeout -> scope.$apply(info.onfocus)
332
+
333
+ if elem[0].type in ['text', 'password']
334
+ elem.on 'keypress', (ev) ->
335
+ scope.$apply ->
336
+ # scope.action.panel_menu_save() if ev.keyCode == 13 # && elem[0].type != 'textarea'
337
+ scope.$emit "return_pressed" if ev.keyCode == 13 # && elem[0].type != 'textarea'
338
+ ev.stopPropagation()
339
+
340
+ if info.filter
341
+ filter = $filter(info.filter)
342
+ controller.$parsers.push (value) ->
343
+ filtered = filter(value)
344
+ controller.$setViewValue(filtered)
345
+ controller.$render()
346
+ filtered
347
+ scope.action.record[name] = filter(scope.action.record[name])
348
+
349
+ .directive 'e2SearchField', ($timeout, $filter) ->
350
+ require: 'ngModel'
351
+ restrict: 'A'
352
+ scope: false
353
+ link: (scope, elem, attrs, controller) ->
354
+ name = attrs.e2Field || scope.f
355
+ meta = scope.action.meta
356
+ info = meta.info[name]
357
+ if info.filter
358
+ filter = $filter(info.filter)
359
+ controller.$parsers.push (value) ->
360
+ filtered = filter(value)
361
+ controller.$setViewValue(filtered)
362
+ controller.$render()
363
+ filtered
364
+ scope.action.query.search[name] = filter(scope.action.query.search[name])
365
+
366
+ .directive 'e2Include', ($parse, $compile, $http, $templateCache) ->
367
+ restrict: 'E'
368
+ # replace: true
369
+ # terminal: true
370
+ scope: false
371
+ link: (scope, elem, attrs) ->
372
+ name = $parse(attrs.template)(scope)
373
+ $http.get(name, cache: $templateCache).success (body) ->
374
+ # elem.html($compile(body)(scope))
375
+ # elem.replaceWith($compile(body)(scope))
376
+ elem.empty()
377
+ elem.after($compile(body)(scope))
378
+
379
+ .directive 'e2TableBody', ($parse, $compile) ->
380
+ scope: false
381
+ restrict: 'A'
382
+ link: (scope, elem, attrs) ->
383
+ scope.$on 'render_table', (a, ev) ->
384
+ # ev.stopPropagation()
385
+ meta = scope.action.meta
386
+ selection = scope.action.selection
387
+ out = ''
388
+ _.each scope.action.entries, (e, i) ->
389
+ out += if selection then "<tr ng-class='action.selected_class(#{i})' class='tr_hover' ng-click='action.select(#{i}, $event)'>" else "<tr>"
390
+ out += "<td>"
391
+ out += "<div e2-button-set='action.meta.menus.item_menu' index='#{i}'></div>" if meta.config.show_item_menu # data='action.entries[#{i}]'></div>
392
+ out += "</td>"
393
+ # out += "<td><div e2-button-set='item_menu' index='#{i}' ng-if='action.meta.config.show_item_menu'></div></td>"
394
+ _.each meta.fields, (f) -> out += "<td>#{scope.action.list_cell(e, f) ? ''}</td>"
395
+ out += "</tr>"
396
+
397
+ elem.empty()
398
+ elem.append($compile(out)(scope)) unless out.length == 0 # leak ?
399
+
400
+ .directive 'e2DropDown', ($parse, $dropdown, $timeout, E2Snippets) ->
401
+ event_num = 0
402
+ dropdown_sub_tmpl = _.template("<li class='dropdown-submenu'><a href=''> {{icon}}{{aicon}} {{loc}}</a>{{sub}}</li>")
403
+ dropdown_tmpl = _.template("<li {{show}} {{hide}} {{disabled}} {{enabled}}> <a href='{{href}}' {{click}}> {{icon}}{{aicon}} {{loc}}</a></li>")
404
+ render = (menu, level) ->
405
+ out = menu.map (m) ->
406
+ switch
407
+ when m.divider
408
+ "<li class='divider'></li>"
409
+ when m.menu
410
+ dropdown_sub_tmpl
411
+ icon: m.menu.icon && E2Snippets.icon(m.menu.icon) || ''
412
+ aicon: m.menu.aicon && E2Snippets.aicon(m.menu.aicon) || ''
413
+ loc: m.menu.loc
414
+ sub: render(m.menu.entries)
415
+ else
416
+ dropdown_tmpl
417
+ show: m.show && "ng-show=\"#{m.show}\"" || ''
418
+ hide: m.hide && "ng-hide=\"#{m.hide}\"" || ''
419
+ disabled: m.disabled && "ng-class=\"#{m.disabled} && 'disabled'\"" || ''
420
+ enabled: m.enabled && "ng-class=\"#{m.enabled} || 'disabled'\"" || ''
421
+ # active: m.active && "ng-class='#{m.active}' || \"active\"'" || ''
422
+ href: m.href || ''
423
+ click: m.click && "ng-click=\"#{m.disabled && m.disabled + " ||" || ''} #{m.enabled && m.enabled + " &&" || ''} #{m.click}\""
424
+ icon: m.icon && E2Snippets.icon(m.icon) || ''
425
+ aicon: m.aicon && E2Snippets.aicon(m.aicon) || ''
426
+ loc: m.loc
427
+ "<ul class='dropdown-menu'>#{out.join('')}</ul>"
428
+
429
+ scope: false
430
+ link: (scope, elem, attrs) ->
431
+ scope.$on "$destroy", -> elem.off()
432
+ hook = (event) ->
433
+ event_num++
434
+ elem.addClass "active"
435
+ elem.off "mousedown"
436
+ # event.preventDefault()
437
+ # event.stopPropagation()
438
+ dropdown = $dropdown(elem, (scope: scope, template: render($parse(attrs.e2DropDown)(scope), 0), animation: 'am-flip-x', prefixEvent: "#{event_num}.tooltip")) # , delay: 1
439
+ dropdown.$promise.then ->
440
+ event_hide = scope.$on "#{event_num}.tooltip.hide", (e) ->
441
+ e.stopPropagation()
442
+ event_hide()
443
+ dropdown.destroy()
444
+ elem.on "mousedown", hook
445
+
446
+ event_before = scope.$on "#{event_num}.tooltip.hide.before", (e) ->
447
+ e.stopPropagation()
448
+ event_before()
449
+ elem.removeClass "active"
450
+
451
+ elem.on "mousedown", hook
452
+
453
+ .directive 'e2ButtonSet', ($parse, $compile, E2Snippets) ->
454
+ button_set_tmpl = _.template("<div class='btn btn-default' {{clazz}} {{click}} {{show}} {{hide}} {{disabled}} {{enabled}} {{title}}> {{icon}}{{aicon}} {{loc}}</div>")
455
+ button_set_arr_tmpl = _.template("<div class='btn btn-default' e2-drop-down='{{dropdown}}'>{{icon}}{{aicon}}<span class='caret'></span></div>")
456
+ scope: true # because $index
457
+ link: (scope, elem, attrs) ->
458
+ menu = $parse(attrs.e2ButtonSet)(scope)
459
+ unless _.isEmpty(menu.entries)
460
+ group_class = menu.properties.group_class || ''
461
+ brk = menu.properties.break
462
+ out = ""
463
+ for m, i in menu.entries
464
+ if i >= brk
465
+ break
466
+ else if m.menu
467
+ out += button_set_arr_tmpl
468
+ dropdown: "#{attrs.e2ButtonSet}.entries[#{i}].menu.entries"
469
+ icon: m.menu.icon && "#{E2Snippets.icon(m.menu.icon)}&nbsp;" || ''
470
+ aicon: m.menu.aicon && "#{E2Snippets.aicon(m.menu.aicon)}&nbsp;" || ''
471
+ else if m.divider
472
+ else
473
+ out += button_set_tmpl
474
+ clazz: m.class && "ng-class=\"#{m.class}\"" || ''
475
+ click: m.click && "ng-click=\"#{m.click}\"" || ''
476
+ show: m.show && "ng-show=\"#{m.show}\"" || ''
477
+ hide: m.hide && "ng-hide=\"#{m.hide}\"" || ''
478
+ disabled: m.disabled && "ng-class=\"#{m.disabled} && 'disabled'\"" || ''
479
+ enabled: m.enabled && "ng-class=\"#{m.enabled} || 'disabled'\"" || ''
480
+ icon: m.icon && E2Snippets.icon(m.icon) || ''
481
+ aicon: m.aicon && E2Snippets.aicon(m.aicon) || ''
482
+ loc: !(m.button_loc == false) && m.loc || ''
483
+ title: (m.button_loc == false) && "title=\"#{m.loc}\"" || ''
484
+
485
+ out += button_set_arr_tmpl dropdown: "#{attrs.e2ButtonSet}.entries.slice(#{brk})", icon: '', aicon: '' if menu.entries.length > brk
486
+ out = "<div class='btn-group #{group_class}'>#{out}</div>"
487
+ out = $compile(angular.element(out))(scope)
488
+ if attrs.index && !scope.$index?
489
+ scope.$index = attrs.index | 0
490
+ # scope.data = attrs.data
491
+ elem.after(out) # elem.append(out) # elem.replaceWith(out)
492
+
493
+ .directive 'e2InputCols', ($parse) ->
494
+ clazz_cache = {}
495
+ get_class = (len) ->
496
+ if clazz = clazz_cache[len] then clazz else
497
+ tab = switch # lg md sm sx
498
+ when len <= 2 then [2,2,4,6]
499
+ when len <= 8 then [4,4,4,6]
500
+ when len <= 20 then [6,7,7,7]
501
+ when len <= 50 then [10,12,12,12]
502
+ else [12,12,12,12] # ?
503
+ clazz_cache[len] = _.zip(["lg", "md", "sm", "xs"], tab).map(([k, v]) -> "col-#{k}-#{v}").join(" ")
504
+
505
+ scope: false
506
+ link: (scope, elem, attrs, controller) ->
507
+ elem.addClass get_class($parse(attrs.e2InputCols)(scope) | 0)
508
+
509
+ .directive 'e2Datepicker', ($parse, $dateFormatter) ->
510
+ format = (value, fmt) -> # inline ?
511
+ date = $dateFormatter.formatDate(value, fmt, $dateFormatter.getDefaultLocale())
512
+ date = if date == undefined then "invalid" else date
513
+
514
+ parse = (value, info) ->
515
+ return unless value?
516
+ value = value.toString()
517
+ switch info.type
518
+ when "decimal_time"
519
+ if match = value.match(/^(\d{1,2}?)(\d{2}?)(\d{2}?)$/)
520
+ [h, m, s] = match.slice(1, 4) # .join(':')
521
+ date = new Date(); date.setHours(h); date.setMinutes(m); date.setSeconds(s)
522
+ date
523
+ else value
524
+ when "decimal_date"
525
+ match = value.match(/^(\d{4}|\d{2})(\d{2})(\d{2})$/)
526
+ if match then match.slice(1, 4).join('-') else value
527
+ else value
528
+
529
+ scope: true
530
+ require: 'ngModel'
531
+ link: (scope, element, attr, controller) ->
532
+ action = scope.action
533
+ mode = attr.e2Datepicker
534
+ field = scope.other_date ? scope.other_time ? scope.f
535
+ info = action.meta.info[field]
536
+
537
+ if action.query
538
+ scope.value[mode] = parse(action.query.search[scope.f][mode], info)
539
+ scope.$on "search_reset", -> scope.value[mode] = null
540
+ else
541
+ value = parse(action.record[field], info)
542
+ if mode then scope.value[mode] = value else scope.value = value
543
+
544
+ scope.$watch attr.ngModel, (model, o) -> if model != o
545
+ date = format(model, attr.e2ModelFormat)
546
+ if action.query
547
+ action.query.search[scope.f][mode] = date
548
+ scope.action.search_live(scope.f) if date?
549
+ else
550
+ action.record[field] = date
551
+
552
+ .directive 'e2Integer', ->
553
+ require: 'ngModel'
554
+ link: (scope, elem, attr, controller) ->
555
+ controller.$parsers.unshift (v) ->
556
+ vs = v.toString()
557
+ if vs.match(/^\-?\d+$/) then parseInt(vs) else null