lodash-rails 3.6.0 → 3.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/lodash/rails/version.rb +1 -1
- data/vendor/assets/javascripts/lodash.compat.js +743 -386
- data/vendor/assets/javascripts/lodash.compat.min.js +141 -89
- data/vendor/assets/javascripts/lodash.js +735 -372
- data/vendor/assets/javascripts/lodash.min.js +137 -85
- metadata +2 -2
@@ -1,93 +1,145 @@
|
|
1
1
|
/**
|
2
2
|
* @license
|
3
|
-
* lodash 3.
|
3
|
+
* lodash 3.7.0 (Custom Build) lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE
|
4
4
|
* Build: `lodash compat -o ./lodash.js`
|
5
5
|
*/
|
6
|
-
;(function(){function n(n,t){if(n!==t){var r=n===n,e=t===t;if(n>t||!r||
|
7
|
-
}function
|
8
|
-
|
9
|
-
}function
|
10
|
-
t(
|
11
|
-
(
|
12
|
-
|
13
|
-
}function
|
14
|
-
|
15
|
-
}function
|
16
|
-
|
17
|
-
}}
|
18
|
-
|
19
|
-
}),
|
20
|
-
|
21
|
-
return u}function
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
}
|
26
|
-
|
27
|
-
r=
|
28
|
-
|
29
|
-
|
30
|
-
return
|
31
|
-
|
32
|
-
}function
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
for(
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
}function
|
48
|
-
|
49
|
-
var
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
}
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
}
|
62
|
-
|
63
|
-
return
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
},
|
68
|
-
}
|
69
|
-
|
70
|
-
}
|
71
|
-
|
72
|
-
|
73
|
-
}
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
return
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
n
|
89
|
-
n
|
90
|
-
|
91
|
-
}
|
92
|
-
|
93
|
-
|
6
|
+
;(function(){function n(n,t){if(n!==t){var r=n===n,e=t===t;if(n>t||!r||n===w&&e)return 1;if(n<t||!e||t===w&&r)return-1}return 0}function t(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 r(n,t,r){if(t!==t)return p(n,r);r-=1;for(var e=n.length;++r<e;)if(n[r]===t)return r;return-1}function e(n){return typeof n=="function"||false}function u(n){return typeof n=="string"?n:null==n?"":n+""}function o(n){return n.charCodeAt(0)}function i(n,t){for(var r=-1,e=n.length;++r<e&&-1<t.indexOf(n.charAt(r)););
|
7
|
+
return r}function a(n,t){for(var r=n.length;r--&&-1<t.indexOf(n.charAt(r)););return r}function f(t,r){return n(t.a,r.a)||t.b-r.b}function c(n){return Ln[n]}function l(n){return Pn[n]}function s(n){return"\\"+Mn[n]}function p(n,t,r){var e=n.length;for(t+=r?0:-1;r?t--:++t<e;){var u=n[t];if(u!==u)return t}return-1}function h(n){return!!n&&typeof n=="object"}function _(n){return 160>=n&&9<=n&&13>=n||32==n||160==n||5760==n||6158==n||8192<=n&&(8202>=n||8232==n||8233==n||8239==n||8287==n||12288==n||65279==n);
|
8
|
+
|
9
|
+
}function v(n,t){for(var r=-1,e=n.length,u=-1,o=[];++r<e;)n[r]===t&&(n[r]=P,o[++u]=r);return o}function g(n){for(var t=-1,r=n.length;++t<r&&_(n.charCodeAt(t)););return t}function y(n){for(var t=n.length;t--&&_(n.charCodeAt(t)););return t}function d(n){return Bn[n]}function m(_){function Ln(n){if(h(n)&&!(Uo(n)||n instanceof zn)){if(n instanceof Bn)return n;if(Ze.call(n,"__chain__")&&Ze.call(n,"__wrapped__"))return Lr(n)}return new Bn(n)}function Pn(){}function Bn(n,t,r){this.__wrapped__=n,this.__actions__=r||[],
|
10
|
+
this.__chain__=!!t}function zn(n){this.__wrapped__=n,this.__actions__=null,this.__dir__=1,this.__filtered__=false,this.__iteratees__=null,this.__takeCount__=ku,this.__views__=null}function Mn(){this.__data__={}}function Dn(n){var t=n?n.length:0;for(this.data={hash:yu(null),set:new cu};t--;)this.push(n[t])}function qn(n,t){var r=n.data;return(typeof t=="string"||le(t)?r.set.has(t):r.hash[t])?0:-1}function Kn(n,t){var r=-1,e=n.length;for(t||(t=Te(e));++r<e;)t[r]=n[r];return t}function Vn(n,t){for(var r=-1,e=n.length;++r<e&&false!==t(n[r],r,n););
|
11
|
+
return n}function Yn(n,t){for(var r=-1,e=n.length;++r<e;)if(!t(n[r],r,n))return false;return true}function Xn(n,t){for(var r=-1,e=n.length,u=-1,o=[];++r<e;){var i=n[r];t(i,r,n)&&(o[++u]=i)}return o}function Hn(n,t){for(var r=-1,e=n.length,u=Te(e);++r<e;)u[r]=t(n[r],r,n);return u}function Qn(n){for(var t=-1,r=n.length,e=Eu;++t<r;){var u=n[t];u>e&&(e=u)}return e}function nt(n,t){for(var r=-1,e=n.length;++r<e;)if(t(n[r],r,n))return true;return false}function tt(n,t){return n===w?t:n}function rt(n,t,r,e){return n!==w&&Ze.call(e,r)?n:t;
|
12
|
+
|
13
|
+
}function et(n,t,r){var e=Ko(t);iu.apply(e,Gu(t));for(var u=-1,o=e.length;++u<o;){var i=e[u],a=n[i],f=r(a,t[i],i,n,t);(f===f?f===a:a!==a)&&(a!==w||i in n)||(n[i]=f)}return n}function ut(n,t){for(var r=-1,e=n.length,u=Rr(e),o=t.length,i=Te(o);++r<o;){var a=t[r];i[r]=u?Or(a,e)?n[a]:w:n[a]}return i}function ot(n,t,r){r||(r={});for(var e=-1,u=t.length;++e<u;){var o=t[e];r[o]=n[o]}return r}function it(n,t,r){var e=typeof n;return"function"==e?t===w?n:zt(n,t,r):null==n?Ie:"object"==e?xt(n):t===w?Ce(n):At(n,t);
|
14
|
+
|
15
|
+
}function at(n,t,r,e,u,o,i){var a;if(r&&(a=u?r(n,e,u):r(n)),a!==w)return a;if(!le(n))return n;if(e=Uo(n)){if(a=br(n),!t)return Kn(n,a)}else{var f=Je.call(n),c=f==K;if(f!=Y&&f!=B&&(!c||u))return Nn[f]?Ar(n,f,t):u?n:{};if(Gn(n))return u?n:{};if(a=xr(c?{}:n),!t)return Lu(a,n)}for(o||(o=[]),i||(i=[]),u=o.length;u--;)if(o[u]==n)return i[u];return o.push(n),i.push(a),(e?Vn:vt)(n,function(e,u){a[u]=at(e,t,r,u,n,o,i)}),a}function ft(n,t,r){if(typeof n!="function")throw new ze(L);return lu(function(){n.apply(w,r);
|
16
|
+
|
17
|
+
},t)}function ct(n,t){var e=n?n.length:0,u=[];if(!e)return u;var o=-1,i=wr(),a=i==r,f=a&&200<=t.length?Ku(t):null,c=t.length;f&&(i=qn,a=false,t=f);n:for(;++o<e;)if(f=n[o],a&&f===f){for(var l=c;l--;)if(t[l]===f)continue n;u.push(f)}else 0>i(t,f,0)&&u.push(f);return u}function lt(n,t){var r=true;return Bu(n,function(n,e,u){return r=!!t(n,e,u)}),r}function st(n,t){var r=[];return Bu(n,function(n,e,u){t(n,e,u)&&r.push(n)}),r}function pt(n,t,r,e){var u;return r(n,function(n,r,o){return t(n,r,o)?(u=e?r:n,false):void 0;
|
18
|
+
|
19
|
+
}),u}function ht(n,t,r){for(var e=-1,u=n.length,o=-1,i=[];++e<u;){var a=n[e];if(h(a)&&Rr(a.length)&&(Uo(a)||ae(a))){t&&(a=ht(a,t,r));var f=-1,c=a.length;for(i.length+=c;++f<c;)i[++o]=a[f]}else r||(i[++o]=a)}return i}function _t(n,t){Mu(n,t,de)}function vt(n,t){return Mu(n,t,Ko)}function gt(n,t){return Du(n,t,Ko)}function yt(n,t){for(var r=-1,e=t.length,u=-1,o=[];++r<e;){var i=t[r];Fo(n[i])&&(o[++u]=i)}return o}function dt(n,t,r){if(null!=n){n=Nr(n),r!==w&&r in n&&(t=[r]),r=-1;for(var e=t.length;null!=n&&++r<e;)var u=n=Nr(n)[t[r]];
|
20
|
+
|
21
|
+
return u}}function mt(n,t,r,e,u,o){if(n===t)return 0!==n||1/n==1/t;var i=typeof n,a=typeof t;if("function"!=i&&"object"!=i&&"function"!=a&&"object"!=a||null==n||null==t)n=n!==n&&t!==t;else n:{var i=mt,a=Uo(n),f=Uo(t),c=z,l=z;a||(c=Je.call(n),c==B?c=Y:c!=Y&&(a=ve(n))),f||(l=Je.call(t),l==B?l=Y:l!=Y&&ve(t));var s=c==Y&&!Gn(n),f=l==Y&&!Gn(t),l=c==l;if(!l||a||s){if(!e&&(c=s&&Ze.call(n,"__wrapped__"),f=f&&Ze.call(t,"__wrapped__"),c||f)){n=i(c?n.value():n,f?t.value():t,r,e,u,o);break n}if(l){for(u||(u=[]),
|
22
|
+
o||(o=[]),c=u.length;c--;)if(u[c]==n){n=o[c]==t;break n}u.push(n),o.push(t),n=(a?vr:yr)(n,t,i,r,e,u,o),u.pop(),o.pop()}else n=false}else n=gr(n,t,c)}return n}function wt(n,t,r,e,u){for(var o=-1,i=t.length,a=!u;++o<i;)if(a&&e[o]?r[o]!==n[t[o]]:!(t[o]in n))return false;for(o=-1;++o<i;){var f=t[o],c=n[f],l=r[o];if(a&&e[o]?f=c!==w||f in n:(f=u?u(c,l,f):w,f===w&&(f=mt(l,c,u,true))),!f)return false}return true}function bt(n,t){var r=-1,e=Zu(n),u=Rr(e)?Te(e):[];return Bu(n,function(n,e,o){u[++r]=t(n,e,o)}),u}function xt(n){
|
23
|
+
var t=Ko(n),r=t.length;if(!r)return ke(true);if(1==r){var e=t[0],u=n[e];if(Sr(u))return function(n){return null==n?false:(n=Nr(n),n[e]===u&&(u!==w||e in n))}}for(var o=Te(r),i=Te(r);r--;)u=n[t[r]],o[r]=u,i[r]=Sr(u);return function(n){return null!=n&&wt(Nr(n),t,o,i)}}function At(n,t){var r=Uo(n),e=kr(n)&&Sr(t),u=n+"";return n=$r(n),function(o){if(null==o)return false;var i=u;if(o=Nr(o),!(!r&&e||i in o)){if(o=1==n.length?o:dt(o,St(n,0,-1)),null==o)return false;i=Dr(n),o=Nr(o)}return o[i]===t?t!==w||i in o:mt(t,o[i],null,true);
|
24
|
+
|
25
|
+
}}function jt(n,t,r,e,u){if(!le(n))return n;var o=Rr(t.length)&&(Uo(t)||ve(t));if(!o){var i=Ko(t);iu.apply(i,Gu(t))}return Vn(i||t,function(a,f){if(i&&(f=a,a=t[f]),h(a)){e||(e=[]),u||(u=[]);n:{for(var c=f,l=e,s=u,p=l.length,_=t[c];p--;)if(l[p]==_){n[c]=s[p];break n}var p=n[c],v=r?r(p,_,c,n,t):w,g=v===w;g&&(v=_,Rr(_.length)&&(Uo(_)||ve(_))?v=Uo(p)?p:Zu(p)?Kn(p):[]:No(_)||ae(_)?v=ae(p)?ge(p):No(p)?p:{}:g=false),l.push(_),s.push(v),g?n[c]=jt(v,_,r,l,s):(v===v?v!==p:p===p)&&(n[c]=v)}}else c=n[f],l=r?r(c,a,f,n,t):w,
|
26
|
+
(s=l===w)&&(l=a),!o&&l===w||!s&&(l===l?l===c:c!==c)||(n[f]=l)}),n}function Ot(n){return function(t){return null==t?w:Nr(t)[n]}}function Et(n){var t=n+"";return n=$r(n),function(r){return dt(r,n,t)}}function kt(n,t){for(var r=t.length;r--;){var e=parseFloat(t[r]);if(e!=u&&Or(e)){var u=e;su.call(n,e,1)}}}function It(n,t){return n+eu(Ou()*(t-n+1))}function Rt(n,t,r,e,u){return u(n,function(n,u,o){r=e?(e=false,n):t(r,n,u,o)}),r}function St(n,t,r){var e=-1,u=n.length;for(t=null==t?0:+t||0,0>t&&(t=-t>u?0:u+t),
|
27
|
+
r=r===w||r>u?u:+r||0,0>r&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0,r=Te(u);++e<u;)r[e]=n[e+t];return r}function Ct(n,t){var r;return Bu(n,function(n,e,u){return r=t(n,e,u),!r}),!!r}function Tt(n,t){var r=n.length;for(n.sort(t);r--;)n[r]=n[r].c;return n}function Ut(t,r,e){var u=mr(),o=-1;return r=Hn(r,function(n){return u(n)}),t=bt(t,function(n){return{a:Hn(r,function(t){return t(n)}),b:++o,c:n}}),Tt(t,function(t,r){var u;n:{u=-1;for(var o=t.a,i=r.a,a=o.length,f=e.length;++u<a;){var c=n(o[u],i[u]);if(c){u=u<f?c*(e[u]?1:-1):c;
|
28
|
+
|
29
|
+
break n}}u=t.b-r.b}return u})}function Wt(n,t){var r=0;return Bu(n,function(n,e,u){r+=+t(n,e,u)||0}),r}function Ft(n,t){var e=-1,u=wr(),o=n.length,i=u==r,a=i&&200<=o,f=a?Ku():null,c=[];f?(u=qn,i=false):(a=false,f=t?[]:c);n:for(;++e<o;){var l=n[e],s=t?t(l,e,n):l;if(i&&l===l){for(var p=f.length;p--;)if(f[p]===s)continue n;t&&f.push(s),c.push(l)}else 0>u(f,s,0)&&((t||a)&&f.push(s),c.push(l))}return c}function Nt(n,t){for(var r=-1,e=t.length,u=Te(e);++r<e;)u[r]=n[t[r]];return u}function $t(n,t,r,e){for(var u=n.length,o=e?u:-1;(e?o--:++o<u)&&t(n[o],o,n););
|
30
|
+
return r?St(n,e?0:o,e?o+1:u):St(n,e?o+1:0,e?u:o)}function Lt(n,t){var r=n;r instanceof zn&&(r=r.value());for(var e=-1,u=t.length;++e<u;){var r=[r],o=t[e];iu.apply(r,o.args),r=o.func.apply(o.thisArg,r)}return r}function Pt(n,t,r){var e=0,u=n?n.length:e;if(typeof t=="number"&&t===t&&u<=Su){for(;e<u;){var o=e+u>>>1,i=n[o];(r?i<=t:i<t)?e=o+1:u=o}return u}return Bt(n,t,Ie,r)}function Bt(n,t,r,e){t=r(t);for(var u=0,o=n?n.length:0,i=t!==t,a=t===w;u<o;){var f=eu((u+o)/2),c=r(n[f]),l=c===c;(i?l||e:a?l&&(e||c!==w):e?c<=t:c<t)?u=f+1:o=f;
|
31
|
+
|
32
|
+
}return bu(o,Ru)}function zt(n,t,r){if(typeof n!="function")return Ie;if(t===w)return n;switch(r){case 1:return function(r){return n.call(t,r)};case 3:return function(r,e,u){return n.call(t,r,e,u)};case 4:return function(r,e,u,o){return n.call(t,r,e,u,o)};case 5:return function(r,e,u,o,i){return n.call(t,r,e,u,o,i)}}return function(){return n.apply(t,arguments)}}function Mt(n){return nu.call(n,0)}function Dt(n,t,r){for(var e=r.length,u=-1,o=wu(n.length-e,0),i=-1,a=t.length,f=Te(o+a);++i<a;)f[i]=t[i];
|
33
|
+
|
34
|
+
for(;++u<e;)f[r[u]]=n[u];for(;o--;)f[i++]=n[u++];return f}function qt(n,t,r){for(var e=-1,u=r.length,o=-1,i=wu(n.length-u,0),a=-1,f=t.length,c=Te(i+f);++o<i;)c[o]=n[o];for(i=o;++a<f;)c[i+a]=t[a];for(;++e<u;)c[i+r[e]]=n[o++];return c}function Kt(n,t){return function(r,e,u){var o=t?t():{};if(e=mr(e,u,3),Uo(r)){u=-1;for(var i=r.length;++u<i;){var a=r[u];n(o,a,e(a,u,r),r)}}else Bu(r,function(t,r,u){n(o,t,e(t,r,u),u)});return o}}function Vt(n){return ie(function(t,r){var e=-1,u=null==t?0:r.length,o=2<u&&r[u-2],i=2<u&&r[2],a=1<u&&r[u-1];
|
35
|
+
|
36
|
+
for(typeof o=="function"?(o=zt(o,a,5),u-=2):(o=typeof a=="function"?a:null,u-=o?1:0),i&&Er(r[0],r[1],i)&&(o=3>u?null:o,u=1);++e<u;)(i=r[e])&&n(t,i,o);return t})}function Yt(n,t){return function(r,e){var u=r?Zu(r):0;if(!Rr(u))return n(r,e);for(var o=t?u:-1,i=Nr(r);(t?o--:++o<u)&&false!==e(i[o],o,i););return r}}function Zt(n){return function(t,r,e){var u=Nr(t);e=e(t);for(var o=e.length,i=n?o:-1;n?i--:++i<o;){var a=e[i];if(false===r(u[a],a,u))break}return t}}function Gt(n,t){function r(){return(this&&this!==Zn&&this instanceof r?e:n).apply(t,arguments);
|
37
|
+
|
38
|
+
}var e=Xt(n);return r}function Jt(n){return function(t){var r=-1;t=Oe(we(t));for(var e=t.length,u="";++r<e;)u=n(u,t[r],r);return u}}function Xt(n){return function(){var t=Pu(n.prototype),r=n.apply(t,arguments);return le(r)?r:t}}function Ht(n){function t(r,e,u){return u&&Er(r,e,u)&&(e=null),r=_r(r,n,null,null,null,null,null,e),r.placeholder=t.placeholder,r}return t}function Qt(n,t){return function(r,e,u){u&&Er(r,e,u)&&(e=null);var i=mr(),a=null==e;if(i===it&&a||(a=false,e=i(e,u,3)),a){if(e=Uo(r),e||!_e(r))return n(e?r:Fr(r));
|
39
|
+
|
40
|
+
e=o}return dr(r,e,t)}}function nr(n,r){return function(e,u,o){return u=mr(u,o,3),Uo(e)?(u=t(e,u,r),-1<u?e[u]:w):pt(e,u,n)}}function tr(n){return function(r,e,u){return r&&r.length?(e=mr(e,u,3),t(r,e,n)):-1}}function rr(n){return function(t,r,e){return r=mr(r,e,3),pt(t,r,n,true)}}function er(n){return function(){var t=arguments.length;if(!t)return function(){return arguments[0]};for(var r,e=n?t:-1,u=0,o=Te(t);n?e--:++e<t;){var i=o[u++]=arguments[e];if(typeof i!="function")throw new ze(L);var a=r?"":Yu(i);
|
41
|
+
|
42
|
+
r="wrapper"==a?new Bn([]):r}for(e=r?-1:t;++e<t;)i=o[e],a=Yu(i),r=(u="wrapper"==a?Vu(i):null)&&Ir(u[0])?r[Yu(u[0])].apply(r,u[3]):1==i.length&&Ir(i)?r[a]():r.thru(i);return function(){var n=arguments;if(r&&1==n.length&&Uo(n[0]))return r.plant(n[0]).value();for(var e=0,n=o[e].apply(this,n);++e<t;)n=o[e].call(this,n);return n}}}function ur(n,t){return function(r,e,u){return typeof e=="function"&&u===w&&Uo(r)?n(r,e):t(r,zt(e,u,3))}}function or(n){return function(t,r,e){return(typeof r!="function"||e!==w)&&(r=zt(r,e,3)),
|
43
|
+
n(t,r,de)}}function ir(n){return function(t,r,e){return(typeof r!="function"||e!==w)&&(r=zt(r,e,3)),n(t,r)}}function ar(n){return function(t,r,e){return(t=u(t))&&(n?t:"")+sr(t,r,e)+(n?"":t)}}function fr(n){var t=ie(function(r,e){var u=v(e,t.placeholder);return _r(r,n,null,e,u)});return t}function cr(n,t){return function(r,e,u,o){var i=3>arguments.length;return typeof e=="function"&&o===w&&Uo(r)?n(r,e,u,i):Rt(r,mr(e,o,4),u,i,t)}}function lr(n,t,r,e,u,o,i,a,f,c){function l(){for(var b=arguments.length,j=b,O=Te(b);j--;)O[j]=arguments[j];
|
44
|
+
|
45
|
+
if(e&&(O=Dt(O,e,u)),o&&(O=qt(O,o,i)),_||y){var j=l.placeholder,E=v(O,j),b=b-E.length;if(b<c){var R=a?Kn(a):null,b=wu(c-b,0),S=_?E:null,E=_?null:E,C=_?O:null,O=_?null:O;return t|=_?k:I,t&=~(_?I:k),g||(t&=~(x|A)),O=[n,t,r,C,S,O,E,R,f,b],R=lr.apply(w,O),Ir(n)&&Ju(R,O),R.placeholder=j,R}}if(j=p?r:this,h&&(n=j[m]),a)for(R=O.length,b=bu(a.length,R),S=Kn(O);b--;)E=a[b],O[b]=Or(E,R)?S[E]:w;return s&&f<O.length&&(O.length=f),(this&&this!==Zn&&this instanceof l?d||Xt(n):n).apply(j,O)}var s=t&R,p=t&x,h=t&A,_=t&O,g=t&j,y=t&E,d=!h&&Xt(n),m=n;
|
46
|
+
|
47
|
+
return l}function sr(n,t,r){return n=n.length,t=+t,n<t&&du(t)?(t-=n,r=null==r?" ":r+"",Ae(r,tu(t/r.length)).slice(0,t)):""}function pr(n,t,r,e){function u(){for(var t=-1,a=arguments.length,f=-1,c=e.length,l=Te(a+c);++f<c;)l[f]=e[f];for(;a--;)l[f++]=arguments[++t];return(this&&this!==Zn&&this instanceof u?i:n).apply(o?r:this,l)}var o=t&x,i=Xt(n);return u}function hr(n){return function(t,r,e,u){var o=mr(e);return o===it&&null==e?Pt(t,r,n):Bt(t,r,o(e,u,1),n)}}function _r(n,t,r,e,u,o,i,a){var f=t&A;if(!f&&typeof n!="function")throw new ze(L);
|
48
|
+
|
49
|
+
var c=e?e.length:0;if(c||(t&=~(k|I),e=u=null),c-=u?u.length:0,t&I){var l=e,s=u;e=u=null}var p=f?null:Vu(n);return r=[n,t,r,e,u,l,s,o,i,a],p&&(e=r[1],t=p[1],a=e|t,u=t==R&&e==O||t==R&&e==S&&r[7].length<=p[8]||t==(R|S)&&e==O,(a<R||u)&&(t&x&&(r[2]=p[2],a|=e&x?0:j),(e=p[3])&&(u=r[3],r[3]=u?Dt(u,e,p[4]):Kn(e),r[4]=u?v(r[3],P):Kn(p[4])),(e=p[5])&&(u=r[5],r[5]=u?qt(u,e,p[6]):Kn(e),r[6]=u?v(r[5],P):Kn(p[6])),(e=p[7])&&(r[7]=Kn(e)),t&R&&(r[8]=null==r[8]?p[8]:bu(r[8],p[8])),null==r[9]&&(r[9]=p[9]),r[0]=p[0],
|
50
|
+
r[1]=a),t=r[1],a=r[9]),r[9]=null==a?f?0:n.length:wu(a-c,0)||0,(p?qu:Ju)(t==x?Gt(r[0],r[2]):t!=k&&t!=(x|k)||r[4].length?lr.apply(w,r):pr.apply(w,r),r)}function vr(n,t,r,e,u,o,i){var a=-1,f=n.length,c=t.length,l=true;if(f!=c&&(!u||c<=f))return false;for(;l&&++a<f;){var s=n[a],p=t[a],l=w;if(e&&(l=u?e(p,s,a):e(s,p,a)),l===w)if(u)for(var h=c;h--&&(p=t[h],!(l=s&&s===p||r(s,p,e,u,o,i))););else l=s&&s===p||r(s,p,e,u,o,i)}return!!l}function gr(n,t,r){switch(r){case M:case D:return+n==+t;case q:return n.name==t.name&&n.message==t.message;
|
51
|
+
|
52
|
+
case V:return n!=+n?t!=+t:0==n?1/n==1/t:n==+t;case Z:case G:return n==t+""}return false}function yr(n,t,r,e,u,o,i){var a=Ko(n),f=a.length,c=Ko(t).length;if(f!=c&&!u)return false;for(var c=u,l=-1;++l<f;){var s=a[l],p=u?s in t:Ze.call(t,s);if(p){var h=n[s],_=t[s],p=w;e&&(p=u?e(_,h,s):e(h,_,s)),p===w&&(p=h&&h===_||r(h,_,e,u,o,i))}if(!p)return false;c||(c="constructor"==s)}return c||(r=n.constructor,e=t.constructor,!(r!=e&&"constructor"in n&&"constructor"in t)||typeof r=="function"&&r instanceof r&&typeof e=="function"&&e instanceof e)?true:false;
|
53
|
+
|
54
|
+
}function dr(n,t,r){var e=r?ku:Eu,u=e,o=u;return Bu(n,function(n,i,a){i=t(n,i,a),((r?i<u:i>u)||i===e&&i===o)&&(u=i,o=n)}),o}function mr(n,t,r){var e=Ln.callback||Ee,e=e===Ee?it:e;return r?e(n,t,r):e}function wr(n,t,e){var u=Ln.indexOf||Mr,u=u===Mr?r:u;return n?u(n,t,e):u}function br(n){var t=n.length,r=new n.constructor(t);return t&&"string"==typeof n[0]&&Ze.call(n,"index")&&(r.index=n.index,r.input=n.input),r}function xr(n){return n=n.constructor,typeof n=="function"&&n instanceof n||(n=Le),new n;
|
55
|
+
|
56
|
+
}function Ar(n,t,r){var e=n.constructor;switch(t){case J:return Mt(n);case M:case D:return new e(+n);case X:case H:case Q:case nn:case tn:case rn:case en:case un:case on:return e instanceof e&&(e=Fu[t]),t=n.buffer,new e(r?Mt(t):t,n.byteOffset,n.length);case V:case G:return new e(n);case Z:var u=new e(n.source,On.exec(n));u.lastIndex=n.lastIndex}return u}function jr(n,t,r){return null==n||kr(t,n)||(t=$r(t),n=1==t.length?n:dt(n,St(t,0,-1)),t=Dr(t)),t=null==n?n:n[t],null==t?w:t.apply(n,r)}function Or(n,t){
|
57
|
+
return n=+n,t=null==t?Tu:t,-1<n&&0==n%1&&n<t}function Er(n,t,r){if(!le(r))return false;var e=typeof t;return"number"==e?(e=Zu(r),e=Rr(e)&&Or(t,e)):e="string"==e&&t in r,e?(t=r[t],n===n?n===t:t!==t):false}function kr(n,t){var r=typeof n;return"string"==r&&dn.test(n)||"number"==r?true:Uo(n)?false:!yn.test(n)||null!=t&&n in Nr(t)}function Ir(n){var t=Yu(n);return!!t&&n===Ln[t]&&t in zn.prototype}function Rr(n){return typeof n=="number"&&-1<n&&0==n%1&&n<=Tu}function Sr(n){return n===n&&(0===n?0<1/n:!le(n))}function Cr(n,t){
|
58
|
+
n=Nr(n);for(var r=-1,e=t.length,u={};++r<e;){var o=t[r];o in n&&(u[o]=n[o])}return u}function Tr(n,t){var r={};return _t(n,function(n,e,u){t(n,e,u)&&(r[e]=n)}),r}function Ur(n){var t,r=Ln.support;if(!h(n)||Je.call(n)!=Y||Gn(n)||!(Ze.call(n,"constructor")||(t=n.constructor,typeof t!="function"||t instanceof t))||!r.argsTag&&ae(n))return false;var e;return r.ownLast?(_t(n,function(n,t,r){return e=Ze.call(r,t),false}),false!==e):(_t(n,function(n,t){e=t}),e===w||Ze.call(n,e))}function Wr(n){for(var t=de(n),r=t.length,e=r&&n.length,u=Ln.support,u=e&&Rr(e)&&(Uo(n)||u.nonEnumStrings&&_e(n)||u.nonEnumArgs&&ae(n)),o=-1,i=[];++o<r;){
|
59
|
+
var a=t[o];(u&&Or(a,e)||Ze.call(n,a))&&i.push(a)}return i}function Fr(n){return null==n?[]:Rr(Zu(n))?Ln.support.unindexedChars&&_e(n)?n.split(""):le(n)?n:Le(n):me(n)}function Nr(n){if(Ln.support.unindexedChars&&_e(n)){for(var t=-1,r=n.length,e=Le(n);++t<r;)e[t]=n.charAt(t);return e}return le(n)?n:Le(n)}function $r(n){if(Uo(n))return n;var t=[];return u(n).replace(mn,function(n,r,e,u){t.push(e?u.replace(An,"$1"):r||n)}),t}function Lr(n){return n instanceof zn?n.clone():new Bn(n.__wrapped__,n.__chain__,Kn(n.__actions__));
|
60
|
+
|
61
|
+
}function Pr(n,t,r){return n&&n.length?((r?Er(n,t,r):null==t)&&(t=1),St(n,0>t?0:t)):[]}function Br(n,t,r){var e=n?n.length:0;return e?((r?Er(n,t,r):null==t)&&(t=1),t=e-(+t||0),St(n,0,0>t?0:t)):[]}function zr(n){return n?n[0]:w}function Mr(n,t,e){var u=n?n.length:0;if(!u)return-1;if(typeof e=="number")e=0>e?wu(u+e,0):e;else if(e)return e=Pt(n,t),n=n[e],(t===t?t===n:n!==n)?e:-1;return r(n,t,e||0)}function Dr(n){var t=n?n.length:0;return t?n[t-1]:w}function qr(n){return Pr(n,1)}function Kr(n,t,e,u){
|
62
|
+
if(!n||!n.length)return[];null!=t&&typeof t!="boolean"&&(u=e,e=Er(n,t,u)?null:t,t=false);var o=mr();if((o!==it||null!=e)&&(e=o(e,u,3)),t&&wr()==r){t=e;var i;e=-1,u=n.length;for(var o=-1,a=[];++e<u;){var f=n[e],c=t?t(f,e,n):f;e&&i===c||(i=c,a[++o]=f)}n=a}else n=Ft(n,e);return n}function Vr(n){for(var t=-1,r=(n&&n.length&&Qn(Hn(n,Zu)))>>>0,e=Te(r);++t<r;)e[t]=Hn(n,Ot(t));return e}function Yr(n,t){var r=-1,e=n?n.length:0,u={};for(!e||t||Uo(n[0])||(t=[]);++r<e;){var o=n[r];t?u[o]=t[r]:o&&(u[o[0]]=o[1])}
|
63
|
+
return u}function Zr(n){return n=Ln(n),n.__chain__=true,n}function Gr(n,t,r){return t.call(r,n)}function Jr(n,t,r){var e=Uo(n)?Yn:lt;return r&&Er(n,t,r)&&(t=null),(typeof t!="function"||r!==w)&&(t=mr(t,r,3)),e(n,t)}function Xr(n,t,r){var e=Uo(n)?Xn:st;return t=mr(t,r,3),e(n,t)}function Hr(n,t,r,e){var u=n?Zu(n):0;return Rr(u)||(n=me(n),u=n.length),u?(r=typeof r!="number"||e&&Er(t,r,e)?0:0>r?wu(u+r,0):r||0,typeof n=="string"||!Uo(n)&&_e(n)?r<u&&-1<n.indexOf(t,r):-1<wr(n,t,r)):false}function Qr(n,t,r){var e=Uo(n)?Hn:bt;
|
64
|
+
|
65
|
+
return t=mr(t,r,3),e(n,t)}function ne(n,t,r){return(r?Er(n,t,r):null==t)?(n=Fr(n),t=n.length,0<t?n[It(0,t-1)]:w):(n=te(n),n.length=bu(0>t?0:+t||0,n.length),n)}function te(n){n=Fr(n);for(var t=-1,r=n.length,e=Te(r);++t<r;){var u=It(0,t);t!=u&&(e[t]=e[u]),e[u]=n[t]}return e}function re(n,t,r){var e=Uo(n)?nt:Ct;return r&&Er(n,t,r)&&(t=null),(typeof t!="function"||r!==w)&&(t=mr(t,r,3)),e(n,t)}function ee(n,t){var r;if(typeof t!="function"){if(typeof n!="function")throw new ze(L);var e=n;n=t,t=e}return function(){
|
66
|
+
return 0<--n&&(r=t.apply(this,arguments)),1>=n&&(t=null),r}}function ue(n,t,r){function e(){var r=t-(wo()-c);0>=r||r>t?(a&&ru(a),r=p,a=s=p=w,r&&(h=wo(),f=n.apply(l,i),s||a||(i=l=null))):s=lu(e,r)}function u(){s&&ru(s),a=s=p=w,(v||_!==t)&&(h=wo(),f=n.apply(l,i),s||a||(i=l=null))}function o(){if(i=arguments,c=wo(),l=this,p=v&&(s||!g),false===_)var r=g&&!s;else{a||g||(h=c);var o=_-(c-h),y=0>=o||o>_;y?(a&&(a=ru(a)),h=c,f=n.apply(l,i)):a||(a=lu(u,o))}return y&&s?s=ru(s):s||t===_||(s=lu(e,t)),r&&(y=true,f=n.apply(l,i)),
|
67
|
+
!y||s||a||(i=l=null),f}var i,a,f,c,l,s,p,h=0,_=false,v=true;if(typeof n!="function")throw new ze(L);if(t=0>t?0:+t||0,true===r)var g=true,v=false;else le(r)&&(g=r.leading,_="maxWait"in r&&wu(+r.maxWait||0,t),v="trailing"in r?r.trailing:v);return o.cancel=function(){s&&ru(s),a&&ru(a),a=s=p=w},o}function oe(n,t){function r(){var e=arguments,u=r.cache,o=t?t.apply(this,e):e[0];return u.has(o)?u.get(o):(e=n.apply(this,e),u.set(o,e),e)}if(typeof n!="function"||t&&typeof t!="function")throw new ze(L);return r.cache=new oe.Cache,
|
68
|
+
r}function ie(n,t){if(typeof n!="function")throw new ze(L);return t=wu(t===w?n.length-1:+t||0,0),function(){for(var r=arguments,e=-1,u=wu(r.length-t,0),o=Te(u);++e<u;)o[e]=r[t+e];switch(t){case 0:return n.call(this,o);case 1:return n.call(this,r[0],o);case 2:return n.call(this,r[0],r[1],o)}for(u=Te(t+1),e=-1;++e<t;)u[e]=r[e];return u[t]=o,n.apply(this,u)}}function ae(n){return Rr(h(n)?n.length:w)&&Je.call(n)==B}function fe(n){return!!n&&1===n.nodeType&&h(n)&&(Ln.support.nodeTag?-1<Je.call(n).indexOf("Element"):Gn(n));
|
69
|
+
|
70
|
+
}function ce(n){return h(n)&&typeof n.message=="string"&&Je.call(n)==q}function le(n){var t=typeof n;return"function"==t||!!n&&"object"==t}function se(n){return null==n?false:Je.call(n)==K?He.test(Ye.call(n)):h(n)&&(Gn(n)?He:kn).test(n)}function pe(n){return typeof n=="number"||h(n)&&Je.call(n)==V}function he(n){return le(n)&&Je.call(n)==Z}function _e(n){return typeof n=="string"||h(n)&&Je.call(n)==G}function ve(n){return h(n)&&Rr(n.length)&&!!Fn[Je.call(n)]}function ge(n){return ot(n,de(n))}function ye(n){
|
71
|
+
return yt(n,de(n))}function de(n){if(null==n)return[];le(n)||(n=Le(n));for(var t=n.length,r=Ln.support,t=t&&Rr(t)&&(Uo(n)||r.nonEnumStrings&&_e(n)||r.nonEnumArgs&&ae(n))&&t||0,e=n.constructor,u=-1,e=Fo(e)&&e.prototype||qe,o=e===n,i=Te(t),a=0<t,f=r.enumErrorProps&&(n===De||n instanceof We),c=r.enumPrototypes&&Fo(n);++u<t;)i[u]=u+"";for(var l in n)c&&"prototype"==l||f&&("message"==l||"name"==l)||a&&Or(l,t)||"constructor"==l&&(o||!Ze.call(n,l))||i.push(l);if(r.nonEnumShadows&&n!==qe)for(t=n===Ke?G:n===De?q:Je.call(n),
|
72
|
+
r=Nu[t]||Nu[Y],t==Y&&(e=qe),t=Wn.length;t--;)l=Wn[t],u=r[l],o&&u||(u?!Ze.call(n,l):n[l]===e[l])||i.push(l);return i}function me(n){return Nt(n,Ko(n))}function we(n){return(n=u(n))&&n.replace(In,c).replace(xn,"")}function be(n){return(n=u(n))&&bn.test(n)?n.replace(wn,"\\$&"):n}function xe(n,t,r){return r&&Er(n,t,r)&&(t=0),ju(n,t)}function Ae(n,t){var r="";if(n=u(n),t=+t,1>t||!n||!du(t))return r;do t%2&&(r+=n),t=eu(t/2),n+=n;while(t);return r}function je(n,t,r){var e=n;return(n=u(n))?(r?Er(e,t,r):null==t)?n.slice(g(n),y(n)+1):(t+="",
|
73
|
+
n.slice(i(n,t),a(n,t)+1)):n}function Oe(n,t,r){return r&&Er(n,t,r)&&(t=null),n=u(n),n.match(t||Cn)||[]}function Ee(n,t,r){return r&&Er(n,t,r)&&(t=null),it(n,t)}function ke(n){return function(){return n}}function Ie(n){return n}function Re(n,t,r){if(null==r){var e=le(t),u=e&&Ko(t);((u=u&&u.length&&yt(t,u))?u.length:e)||(u=false,r=t,t=n,n=this)}u||(u=yt(t,Ko(t)));var o=true,e=-1,i=Fo(n),a=u.length;false===r?o=false:le(r)&&"chain"in r&&(o=r.chain);for(;++e<a;){r=u[e];var f=t[r];n[r]=f,i&&(n.prototype[r]=function(t){
|
74
|
+
return function(){var r=this.__chain__;if(o||r){var e=n(this.__wrapped__);return(e.__actions__=Kn(this.__actions__)).push({func:t,args:arguments,thisArg:n}),e.__chain__=r,e}return r=[this.value()],iu.apply(r,arguments),t.apply(n,r)}}(f))}return n}function Se(){}function Ce(n){return kr(n)?Ot(n):Et(n)}_=_?Jn.defaults(Zn.Object(),_,Jn.pick(Zn,Un)):Zn;var Te=_.Array,Ue=_.Date,We=_.Error,Fe=_.Function,Ne=_.Math,$e=_.Number,Le=_.Object,Pe=_.RegExp,Be=_.String,ze=_.TypeError,Me=Te.prototype,De=We.prototype,qe=Le.prototype,Ke=Be.prototype,Ve=(Ve=_.window)&&Ve.document,Ye=Fe.prototype.toString,Ze=qe.hasOwnProperty,Ge=0,Je=qe.toString,Xe=_._,He=Pe("^"+be(Je).replace(/toString|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Qe=se(Qe=_.ArrayBuffer)&&Qe,nu=se(nu=Qe&&new Qe(0).slice)&&nu,tu=Ne.ceil,ru=_.clearTimeout,eu=Ne.floor,uu=se(uu=Le.getOwnPropertySymbols)&&uu,ou=se(ou=Le.getPrototypeOf)&&ou,iu=Me.push,au=se(Le.preventExtensions=Le.preventExtensions)&&au,fu=qe.propertyIsEnumerable,cu=se(cu=_.Set)&&cu,lu=_.setTimeout,su=Me.splice,pu=se(pu=_.Uint8Array)&&pu,hu=se(hu=_.WeakMap)&&hu,_u=function(){
|
75
|
+
try{var n=se(n=_.Float64Array)&&n,t=new n(new Qe(10),0,1)&&n}catch(r){}return t}(),vu=function(){var n={1:0},t=au&&se(t=Le.assign)&&t;try{t(au(n),"xo")}catch(r){}return!n[1]&&t}(),gu=se(gu=Te.isArray)&&gu,yu=se(yu=Le.create)&&yu,du=_.isFinite,mu=se(mu=Le.keys)&&mu,wu=Ne.max,bu=Ne.min,xu=se(xu=Ue.now)&&xu,Au=se(Au=$e.isFinite)&&Au,ju=_.parseInt,Ou=Ne.random,Eu=$e.NEGATIVE_INFINITY,ku=$e.POSITIVE_INFINITY,Iu=Ne.pow(2,32)-1,Ru=Iu-1,Su=Iu>>>1,Cu=_u?_u.BYTES_PER_ELEMENT:0,Tu=Ne.pow(2,53)-1,Uu=hu&&new hu,Wu={},Fu={};
|
76
|
+
|
77
|
+
Fu[X]=_.Float32Array,Fu[H]=_.Float64Array,Fu[Q]=_.Int8Array,Fu[nn]=_.Int16Array,Fu[tn]=_.Int32Array,Fu[rn]=_.Uint8Array,Fu[en]=_.Uint8ClampedArray,Fu[un]=_.Uint16Array,Fu[on]=_.Uint32Array;var Nu={};Nu[z]=Nu[D]=Nu[V]={constructor:true,toLocaleString:true,toString:true,valueOf:true},Nu[M]=Nu[G]={constructor:true,toString:true,valueOf:true},Nu[q]=Nu[K]=Nu[Z]={constructor:true,toString:true},Nu[Y]={constructor:true},Vn(Wn,function(n){for(var t in Nu)if(Ze.call(Nu,t)){var r=Nu[t];r[n]=Ze.call(r,n)}});var $u=Ln.support={};
|
78
|
+
|
79
|
+
!function(n){function t(){this.x=n}var r={0:n,length:n},e=[];t.prototype={valueOf:n,y:n};for(var u in new t)e.push(u);$u.argsTag=Je.call(arguments)==B,$u.enumErrorProps=fu.call(De,"message")||fu.call(De,"name"),$u.enumPrototypes=fu.call(t,"prototype"),$u.funcDecomp=/\bthis\b/.test(function(){return this}),$u.funcNames=typeof Fe.name=="string",$u.nodeTag=Je.call(Ve)!=Y,$u.nonEnumStrings=!fu.call("x",0),$u.nonEnumShadows=!/valueOf/.test(e),$u.ownLast="x"!=e[0],$u.spliceObjects=(su.call(r,0,1),!r[0]),
|
80
|
+
$u.unindexedChars="xx"!="x"[0]+Le("x")[0];try{$u.dom=11===Ve.createDocumentFragment().nodeType}catch(o){$u.dom=false}try{$u.nonEnumArgs=!fu.call(arguments,1)}catch(i){$u.nonEnumArgs=true}}(1,0),Ln.templateSettings={escape:_n,evaluate:vn,interpolate:gn,variable:"",imports:{_:Ln}};var Lu=vu||function(n,t){return null==t?n:ot(t,Gu(t),ot(t,Ko(t),n))},Pu=function(){function n(){}return function(t){if(le(t)){n.prototype=t;var r=new n;n.prototype=null}return r||_.Object()}}(),Bu=Yt(vt),zu=Yt(gt,true),Mu=Zt(),Du=Zt(true),qu=Uu?function(n,t){
|
81
|
+
return Uu.set(n,t),n}:Ie;nu||(Mt=Qe&&pu?function(n){var t=n.byteLength,r=_u?eu(t/Cu):0,e=r*Cu,u=new Qe(t);if(r){var o=new _u(u,0,r);o.set(new _u(n,0,r))}return t!=e&&(o=new pu(u,e),o.set(new pu(n,e))),u}:ke(null));var Ku=yu&&cu?function(n){return new Dn(n)}:ke(null),Vu=Uu?function(n){return Uu.get(n)}:Se,Yu=function(){return $u.funcNames?"constant"==ke.name?Ot("name"):function(n){for(var t=n.name,r=Wu[t],e=r?r.length:0;e--;){var u=r[e],o=u.func;if(null==o||o==n)return u.name}return t}:ke("")}(),Zu=Ot("length"),Gu=uu?function(n){
|
82
|
+
return uu(Nr(n))}:ke([]),Ju=function(){var n=0,t=0;return function(r,e){var u=wo(),o=W-(u-t);if(t=u,0<o){if(++n>=U)return r}else n=0;return qu(r,e)}}(),Xu=ie(function(n,t){return Uo(n)||ae(n)?ct(n,ht(t,false,true)):[]}),Hu=tr(),Qu=tr(true),no=ie(function(t,r){t||(t=[]),r=ht(r);var e=ut(t,r);return kt(t,r.sort(n)),e}),to=hr(),ro=hr(true),eo=ie(function(n){return Ft(ht(n,false,true))}),uo=ie(function(n,t){return Uo(n)||ae(n)?ct(n,t):[]}),oo=ie(Vr),io=ie(function(n,t){var r=n?Zu(n):0;return Rr(r)&&(n=Fr(n)),ut(n,ht(t));
|
83
|
+
|
84
|
+
}),ao=Kt(function(n,t,r){Ze.call(n,r)?++n[r]:n[r]=1}),fo=nr(Bu),co=nr(zu,true),lo=ur(Vn,Bu),so=ur(function(n,t){for(var r=n.length;r--&&false!==t(n[r],r,n););return n},zu),po=Kt(function(n,t,r){Ze.call(n,r)?n[r].push(t):n[r]=[t]}),ho=Kt(function(n,t,r){n[r]=t}),_o=ie(function(n,t,r){var e=-1,u=typeof t=="function",o=kr(t),i=Zu(n),a=Rr(i)?Te(i):[];return Bu(n,function(n){var i=u?t:o&&null!=n&&n[t];a[++e]=i?i.apply(n,r):jr(n,t,r)}),a}),vo=Kt(function(n,t,r){n[r?0:1].push(t)},function(){return[[],[]]}),go=cr(function(n,t,r,e){
|
85
|
+
var u=-1,o=n.length;for(e&&o&&(r=n[++u]);++u<o;)r=t(r,n[u],u,n);return r},Bu),yo=cr(function(n,t,r,e){var u=n.length;for(e&&u&&(r=n[--u]);u--;)r=t(r,n[u],u,n);return r},zu),mo=ie(function(n,t){if(null==n)return[];var r=t[2];return r&&Er(t[0],t[1],r)&&(t.length=1),Ut(n,ht(t),[])}),wo=xu||function(){return(new Ue).getTime()},bo=ie(function(n,t,r){var e=x;if(r.length)var u=v(r,bo.placeholder),e=e|k;return _r(n,e,t,r,u)}),xo=ie(function(n,t){t=t.length?ht(t):ye(n);for(var r=-1,e=t.length;++r<e;){var u=t[r];
|
86
|
+
|
87
|
+
n[u]=_r(n[u],x,n)}return n}),Ao=ie(function(n,t,r){var e=x|A;if(r.length)var u=v(r,Ao.placeholder),e=e|k;return _r(t,e,n,r,u)}),jo=Ht(O),Oo=Ht(E),Eo=ie(function(n,t){return ft(n,1,t)}),ko=ie(function(n,t,r){return ft(n,t,r)}),Io=er(),Ro=er(true),So=fr(k),Co=fr(I),To=ie(function(n,t){return _r(n,S,null,null,null,ht(t))});$u.argsTag||(ae=function(n){return Rr(h(n)?n.length:w)&&Ze.call(n,"callee")&&!fu.call(n,"callee")});var Uo=gu||function(n){return h(n)&&Rr(n.length)&&Je.call(n)==z};$u.dom||(fe=function(n){
|
88
|
+
return!!n&&1===n.nodeType&&h(n)&&!No(n)});var Wo=Au||function(n){return typeof n=="number"&&du(n)},Fo=e(/x/)||pu&&!e(pu)?function(n){return Je.call(n)==K}:e,No=ou?function(n){if(!n||Je.call(n)!=Y||!Ln.support.argsTag&&ae(n))return false;var t=n.valueOf,r=se(t)&&(r=ou(t))&&ou(r);return r?n==r||ou(n)==r:Ur(n)}:Ur,$o=Vt(function(n,t,r){return r?et(n,t,r):Lu(n,t)}),Lo=ie(function(n){var t=n[0];return null==t?t:(n.push(tt),$o.apply(w,n))}),Po=rr(vt),Bo=rr(gt),zo=or(Mu),Mo=or(Du),Do=ir(vt),qo=ir(gt),Ko=mu?function(n){
|
89
|
+
if(n)var t=n.constructor,r=n.length;return typeof t=="function"&&t.prototype===n||(typeof n=="function"?Ln.support.enumPrototypes:Rr(r))?Wr(n):le(n)?mu(n):[]}:Wr,Vo=Vt(jt),Yo=ie(function(n,t){if(null==n)return{};if("function"!=typeof t[0])return t=Hn(ht(t),Be),Cr(n,ct(de(n),t));var r=zt(t[0],t[1],3);return Tr(n,function(n,t,e){return!r(n,t,e)})}),Zo=ie(function(n,t){return null==n?{}:"function"==typeof t[0]?Tr(n,zt(t[0],t[1],3)):Cr(n,ht(t))}),Go=Jt(function(n,t,r){return t=t.toLowerCase(),n+(r?t.charAt(0).toUpperCase()+t.slice(1):t);
|
90
|
+
|
91
|
+
}),Jo=Jt(function(n,t,r){return n+(r?"-":"")+t.toLowerCase()}),Xo=ar(),Ho=ar(true);8!=ju(Tn+"08")&&(xe=function(n,t,r){return(r?Er(n,t,r):null==t)?t=0:t&&(t=+t),n=je(n),ju(n,t||(En.test(n)?16:10))});var Qo=Jt(function(n,t,r){return n+(r?"_":"")+t.toLowerCase()}),ni=Jt(function(n,t,r){return n+(r?" ":"")+(t.charAt(0).toUpperCase()+t.slice(1))}),ti=ie(function(n,t){try{return n.apply(w,t)}catch(r){return ce(r)?r:new We(r)}}),ri=ie(function(n,t){return function(r){return jr(r,n,t)}}),ei=ie(function(n,t){
|
92
|
+
return function(r){return jr(n,r,t)}}),ui=Qt(Qn),oi=Qt(function(n){for(var t=-1,r=n.length,e=ku;++t<r;){var u=n[t];u<e&&(e=u)}return e},true);return Ln.prototype=Pn.prototype,Bn.prototype=Pu(Pn.prototype),Bn.prototype.constructor=Bn,zn.prototype=Pu(Pn.prototype),zn.prototype.constructor=zn,Mn.prototype["delete"]=function(n){return this.has(n)&&delete this.__data__[n]},Mn.prototype.get=function(n){return"__proto__"==n?w:this.__data__[n]},Mn.prototype.has=function(n){return"__proto__"!=n&&Ze.call(this.__data__,n);
|
93
|
+
|
94
|
+
},Mn.prototype.set=function(n,t){return"__proto__"!=n&&(this.__data__[n]=t),this},Dn.prototype.push=function(n){var t=this.data;typeof n=="string"||le(n)?t.set.add(n):t.hash[n]=true},oe.Cache=Mn,Ln.after=function(n,t){if(typeof t!="function"){if(typeof n!="function")throw new ze(L);var r=n;n=t,t=r}return n=du(n=+n)?n:0,function(){return 1>--n?t.apply(this,arguments):void 0}},Ln.ary=function(n,t,r){return r&&Er(n,t,r)&&(t=null),t=n&&null==t?n.length:wu(+t||0,0),_r(n,R,null,null,null,null,t)},Ln.assign=$o,
|
95
|
+
Ln.at=io,Ln.before=ee,Ln.bind=bo,Ln.bindAll=xo,Ln.bindKey=Ao,Ln.callback=Ee,Ln.chain=Zr,Ln.chunk=function(n,t,r){t=(r?Er(n,t,r):null==t)?1:wu(+t||1,1),r=0;for(var e=n?n.length:0,u=-1,o=Te(tu(e/t));r<e;)o[++u]=St(n,r,r+=t);return o},Ln.compact=function(n){for(var t=-1,r=n?n.length:0,e=-1,u=[];++t<r;){var o=n[t];o&&(u[++e]=o)}return u},Ln.constant=ke,Ln.countBy=ao,Ln.create=function(n,t,r){var e=Pu(n);return r&&Er(n,t,r)&&(t=null),t?Lu(e,t):e},Ln.curry=jo,Ln.curryRight=Oo,Ln.debounce=ue,Ln.defaults=Lo,
|
96
|
+
Ln.defer=Eo,Ln.delay=ko,Ln.difference=Xu,Ln.drop=Pr,Ln.dropRight=Br,Ln.dropRightWhile=function(n,t,r){return n&&n.length?$t(n,mr(t,r,3),true,true):[]},Ln.dropWhile=function(n,t,r){return n&&n.length?$t(n,mr(t,r,3),true):[]},Ln.fill=function(n,t,r,e){var u=n?n.length:0;if(!u)return[];for(r&&typeof r!="number"&&Er(n,t,r)&&(r=0,e=u),u=n.length,r=null==r?0:+r||0,0>r&&(r=-r>u?0:u+r),e=e===w||e>u?u:+e||0,0>e&&(e+=u),u=r>e?0:e>>>0,r>>>=0;r<u;)n[r++]=t;return n},Ln.filter=Xr,Ln.flatten=function(n,t,r){var e=n?n.length:0;
|
97
|
+
|
98
|
+
return r&&Er(n,t,r)&&(t=false),e?ht(n,t):[]},Ln.flattenDeep=function(n){return n&&n.length?ht(n,true):[]},Ln.flow=Io,Ln.flowRight=Ro,Ln.forEach=lo,Ln.forEachRight=so,Ln.forIn=zo,Ln.forInRight=Mo,Ln.forOwn=Do,Ln.forOwnRight=qo,Ln.functions=ye,Ln.groupBy=po,Ln.indexBy=ho,Ln.initial=function(n){return Br(n,1)},Ln.intersection=function(){for(var n=[],t=-1,e=arguments.length,u=[],o=wr(),i=o==r,a=[];++t<e;){var f=arguments[t];(Uo(f)||ae(f))&&(n.push(f),u.push(i&&120<=f.length?Ku(t&&f):null))}if(e=n.length,2>e)return a;
|
99
|
+
|
100
|
+
var i=n[0],c=-1,l=i?i.length:0,s=u[0];n:for(;++c<l;)if(f=i[c],0>(s?qn(s,f):o(a,f,0))){for(t=e;--t;){var p=u[t];if(0>(p?qn(p,f):o(n[t],f,0)))continue n}s&&s.push(f),a.push(f)}return a},Ln.invert=function(n,t,r){r&&Er(n,t,r)&&(t=null),r=-1;for(var e=Ko(n),u=e.length,o={};++r<u;){var i=e[r],a=n[i];t?Ze.call(o,a)?o[a].push(i):o[a]=[i]:o[a]=i}return o},Ln.invoke=_o,Ln.keys=Ko,Ln.keysIn=de,Ln.map=Qr,Ln.mapValues=function(n,t,r){var e={};return t=mr(t,r,3),vt(n,function(n,r,u){e[r]=t(n,r,u)}),e},Ln.matches=function(n){
|
101
|
+
return xt(at(n,true))},Ln.matchesProperty=function(n,t){return At(n,at(t,true))},Ln.memoize=oe,Ln.merge=Vo,Ln.method=ri,Ln.methodOf=ei,Ln.mixin=Re,Ln.negate=function(n){if(typeof n!="function")throw new ze(L);return function(){return!n.apply(this,arguments)}},Ln.omit=Yo,Ln.once=function(n){return ee(2,n)},Ln.pairs=function(n){for(var t=-1,r=Ko(n),e=r.length,u=Te(e);++t<e;){var o=r[t];u[t]=[o,n[o]]}return u},Ln.partial=So,Ln.partialRight=Co,Ln.partition=vo,Ln.pick=Zo,Ln.pluck=function(n,t){return Qr(n,Ce(t));
|
102
|
+
|
103
|
+
},Ln.property=Ce,Ln.propertyOf=function(n){return function(t){return dt(n,$r(t),t+"")}},Ln.pull=function(){var n=arguments,t=n[0];if(!t||!t.length)return t;for(var r=0,e=wr(),u=n.length;++r<u;)for(var o=0,i=n[r];-1<(o=e(t,i,o));)su.call(t,o,1);return t},Ln.pullAt=no,Ln.range=function(n,t,r){r&&Er(n,t,r)&&(t=r=null),n=+n||0,r=null==r?1:+r||0,null==t?(t=n,n=0):t=+t||0;var e=-1;t=wu(tu((t-n)/(r||1)),0);for(var u=Te(t);++e<t;)u[e]=n,n+=r;return u},Ln.rearg=To,Ln.reject=function(n,t,r){var e=Uo(n)?Xn:st;
|
104
|
+
|
105
|
+
return t=mr(t,r,3),e(n,function(n,r,e){return!t(n,r,e)})},Ln.remove=function(n,t,r){var e=[];if(!n||!n.length)return e;var u=-1,o=[],i=n.length;for(t=mr(t,r,3);++u<i;)r=n[u],t(r,u,n)&&(e.push(r),o.push(u));return kt(n,o),e},Ln.rest=qr,Ln.restParam=ie,Ln.set=function(n,t,r){if(null==n)return n;var e=t+"";t=null!=n[e]||kr(t,n)?[e]:$r(t);for(var e=-1,u=t.length,o=u-1,i=n;null!=i&&++e<u;){var a=t[e];le(i)&&(e==o?i[a]=r:null==i[a]&&(i[a]=Or(t[e+1])?[]:{})),i=i[a]}return n},Ln.shuffle=te,Ln.slice=function(n,t,r){
|
106
|
+
var e=n?n.length:0;return e?(r&&typeof r!="number"&&Er(n,t,r)&&(t=0,r=e),St(n,t,r)):[]},Ln.sortBy=function(n,t,r){if(null==n)return[];r&&Er(n,t,r)&&(t=null);var e=-1;return t=mr(t,r,3),n=bt(n,function(n,r,u){return{a:t(n,r,u),b:++e,c:n}}),Tt(n,f)},Ln.sortByAll=mo,Ln.sortByOrder=function(n,t,r,e){return null==n?[]:(e&&Er(t,r,e)&&(r=null),Uo(t)||(t=null==t?[]:[t]),Uo(r)||(r=null==r?[]:[r]),Ut(n,t,r))},Ln.spread=function(n){if(typeof n!="function")throw new ze(L);return function(t){return n.apply(this,t);
|
107
|
+
|
108
|
+
}},Ln.take=function(n,t,r){return n&&n.length?((r?Er(n,t,r):null==t)&&(t=1),St(n,0,0>t?0:t)):[]},Ln.takeRight=function(n,t,r){var e=n?n.length:0;return e?((r?Er(n,t,r):null==t)&&(t=1),t=e-(+t||0),St(n,0>t?0:t)):[]},Ln.takeRightWhile=function(n,t,r){return n&&n.length?$t(n,mr(t,r,3),false,true):[]},Ln.takeWhile=function(n,t,r){return n&&n.length?$t(n,mr(t,r,3)):[]},Ln.tap=function(n,t,r){return t.call(r,n),n},Ln.throttle=function(n,t,r){var e=true,u=true;if(typeof n!="function")throw new ze(L);return false===r?e=false:le(r)&&(e="leading"in r?!!r.leading:e,
|
109
|
+
u="trailing"in r?!!r.trailing:u),$n.leading=e,$n.maxWait=+t,$n.trailing=u,ue(n,t,$n)},Ln.thru=Gr,Ln.times=function(n,t,r){if(n=eu(n),1>n||!du(n))return[];var e=-1,u=Te(bu(n,Iu));for(t=zt(t,r,1);++e<n;)e<Iu?u[e]=t(e):t(e);return u},Ln.toArray=function(n){var t=n?Zu(n):0;return Rr(t)?t?Ln.support.unindexedChars&&_e(n)?n.split(""):Kn(n):[]:me(n)},Ln.toPlainObject=ge,Ln.transform=function(n,t,r,e){var u=Uo(n)||ve(n);return t=mr(t,e,4),null==r&&(u||le(n)?(e=n.constructor,r=u?Uo(n)?new e:[]:Pu(Fo(e)&&e.prototype)):r={}),
|
110
|
+
(u?Vn:vt)(n,function(n,e,u){return t(r,n,e,u)}),r},Ln.union=eo,Ln.uniq=Kr,Ln.unzip=Vr,Ln.values=me,Ln.valuesIn=function(n){return Nt(n,de(n))},Ln.where=function(n,t){return Xr(n,xt(t))},Ln.without=uo,Ln.wrap=function(n,t){return t=null==t?Ie:t,_r(t,k,null,[n],[])},Ln.xor=function(){for(var n=-1,t=arguments.length;++n<t;){var r=arguments[n];if(Uo(r)||ae(r))var e=e?ct(e,r).concat(ct(r,e)):r}return e?Ft(e):[]},Ln.zip=oo,Ln.zipObject=Yr,Ln.backflow=Ro,Ln.collect=Qr,Ln.compose=Ro,Ln.each=lo,Ln.eachRight=so,
|
111
|
+
Ln.extend=$o,Ln.iteratee=Ee,Ln.methods=ye,Ln.object=Yr,Ln.select=Xr,Ln.tail=qr,Ln.unique=Kr,Re(Ln,Ln),Ln.add=function(n,t){return(+n||0)+(+t||0)},Ln.attempt=ti,Ln.camelCase=Go,Ln.capitalize=function(n){return(n=u(n))&&n.charAt(0).toUpperCase()+n.slice(1)},Ln.clone=function(n,t,r,e){return t&&typeof t!="boolean"&&Er(n,t,r)?t=false:typeof t=="function"&&(e=r,r=t,t=false),r=typeof r=="function"&&zt(r,e,1),at(n,t,r)},Ln.cloneDeep=function(n,t,r){return t=typeof t=="function"&&zt(t,r,1),at(n,true,t)},Ln.deburr=we,
|
112
|
+
Ln.endsWith=function(n,t,r){n=u(n),t+="";var e=n.length;return r=r===w?e:bu(0>r?0:+r||0,e),r-=t.length,0<=r&&n.indexOf(t,r)==r},Ln.escape=function(n){return(n=u(n))&&hn.test(n)?n.replace(sn,l):n},Ln.escapeRegExp=be,Ln.every=Jr,Ln.find=fo,Ln.findIndex=Hu,Ln.findKey=Po,Ln.findLast=co,Ln.findLastIndex=Qu,Ln.findLastKey=Bo,Ln.findWhere=function(n,t){return fo(n,xt(t))},Ln.first=zr,Ln.get=function(n,t,r){return n=null==n?w:dt(n,$r(t),t+""),n===w?r:n},Ln.has=function(n,t){if(null==n)return false;var r=Ze.call(n,t);
|
113
|
+
|
114
|
+
return r||kr(t)||(t=$r(t),n=1==t.length?n:dt(n,St(t,0,-1)),t=Dr(t),r=null!=n&&Ze.call(n,t)),r||Ln.support.nonEnumStrings&&_e(n)&&Or(t,n.length)},Ln.identity=Ie,Ln.includes=Hr,Ln.indexOf=Mr,Ln.inRange=function(n,t,r){return t=+t||0,"undefined"===typeof r?(r=t,t=0):r=+r||0,n>=bu(t,r)&&n<wu(t,r)},Ln.isArguments=ae,Ln.isArray=Uo,Ln.isBoolean=function(n){return true===n||false===n||h(n)&&Je.call(n)==M},Ln.isDate=function(n){return h(n)&&Je.call(n)==D},Ln.isElement=fe,Ln.isEmpty=function(n){if(null==n)return true;
|
115
|
+
|
116
|
+
var t=Zu(n);return Rr(t)&&(Uo(n)||_e(n)||ae(n)||h(n)&&Fo(n.splice))?!t:!Ko(n).length},Ln.isEqual=function(n,t,r,e){return r=typeof r=="function"&&zt(r,e,3),!r&&Sr(n)&&Sr(t)?n===t:(e=r?r(n,t):w,e===w?mt(n,t,r):!!e)},Ln.isError=ce,Ln.isFinite=Wo,Ln.isFunction=Fo,Ln.isMatch=function(n,t,r,e){var u=Ko(t),o=u.length;if(!o)return true;if(null==n)return false;if(r=typeof r=="function"&&zt(r,e,3),n=Nr(n),!r&&1==o){var i=u[0];if(e=t[i],Sr(e))return e===n[i]&&(e!==w||i in n)}for(var i=Te(o),a=Te(o);o--;)e=i[o]=t[u[o]],
|
117
|
+
a[o]=Sr(e);return wt(n,u,i,a,r)},Ln.isNaN=function(n){return pe(n)&&n!=+n},Ln.isNative=se,Ln.isNull=function(n){return null===n},Ln.isNumber=pe,Ln.isObject=le,Ln.isPlainObject=No,Ln.isRegExp=he,Ln.isString=_e,Ln.isTypedArray=ve,Ln.isUndefined=function(n){return n===w},Ln.kebabCase=Jo,Ln.last=Dr,Ln.lastIndexOf=function(n,t,r){var e=n?n.length:0;if(!e)return-1;var u=e;if(typeof r=="number")u=(0>r?wu(e+r,0):bu(r||0,e-1))+1;else if(r)return u=Pt(n,t,true)-1,n=n[u],(t===t?t===n:n!==n)?u:-1;if(t!==t)return p(n,u,true);
|
118
|
+
|
119
|
+
for(;u--;)if(n[u]===t)return u;return-1},Ln.max=ui,Ln.min=oi,Ln.noConflict=function(){return _._=Xe,this},Ln.noop=Se,Ln.now=wo,Ln.pad=function(n,t,r){n=u(n),t=+t;var e=n.length;return e<t&&du(t)?(e=(t-e)/2,t=eu(e),e=tu(e),r=sr("",e,r),r.slice(0,t)+n+r):n},Ln.padLeft=Xo,Ln.padRight=Ho,Ln.parseInt=xe,Ln.random=function(n,t,r){r&&Er(n,t,r)&&(t=r=null);var e=null==n,u=null==t;return null==r&&(u&&typeof n=="boolean"?(r=n,n=1):typeof t=="boolean"&&(r=t,u=true)),e&&u&&(t=1,u=false),n=+n||0,u?(t=n,n=0):t=+t||0,
|
120
|
+
r||n%1||t%1?(r=Ou(),bu(n+r*(t-n+parseFloat("1e-"+((r+"").length-1))),t)):It(n,t)},Ln.reduce=go,Ln.reduceRight=yo,Ln.repeat=Ae,Ln.result=function(n,t,r){var e=null==n?w:Nr(n)[t];return e===w&&(null==n||kr(t,n)||(t=$r(t),n=1==t.length?n:dt(n,St(t,0,-1)),e=null==n?w:Nr(n)[Dr(t)]),e=e===w?r:e),Fo(e)?e.call(n):e},Ln.runInContext=m,Ln.size=function(n){var t=n?Zu(n):0;return Rr(t)?t:Ko(n).length},Ln.snakeCase=Qo,Ln.some=re,Ln.sortedIndex=to,Ln.sortedLastIndex=ro,Ln.startCase=ni,Ln.startsWith=function(n,t,r){
|
121
|
+
return n=u(n),r=null==r?0:bu(0>r?0:+r||0,n.length),n.lastIndexOf(t,r)==r},Ln.sum=function(n,t,r){r&&Er(n,t,r)&&(t=null);var e=mr(),u=null==t;if(e===it&&u||(u=false,t=e(t,r,3)),u){for(n=Uo(n)?n:Fr(n),t=n.length,r=0;t--;)r+=+n[t]||0;n=r}else n=Wt(n,t);return n},Ln.template=function(n,t,r){var e=Ln.templateSettings;r&&Er(n,t,r)&&(t=r=null),n=u(n),t=et(Lu({},r||t),e,rt),r=et(Lu({},t.imports),e.imports,rt);var o,i,a=Ko(r),f=Nt(r,a),c=0;r=t.interpolate||Rn;var l="__p+='";r=Pe((t.escape||Rn).source+"|"+r.source+"|"+(r===gn?jn:Rn).source+"|"+(t.evaluate||Rn).source+"|$","g");
|
122
|
+
|
123
|
+
var p="sourceURL"in t?"//# sourceURL="+t.sourceURL+"\n":"";if(n.replace(r,function(t,r,e,u,a,f){return e||(e=u),l+=n.slice(c,f).replace(Sn,s),r&&(o=true,l+="'+__e("+r+")+'"),a&&(i=true,l+="';"+a+";\n__p+='"),e&&(l+="'+((__t=("+e+"))==null?'':__t)+'"),c=f+t.length,t}),l+="';",(t=t.variable)||(l="with(obj){"+l+"}"),l=(i?l.replace(an,""):l).replace(fn,"$1").replace(cn,"$1;"),l="function("+(t||"obj")+"){"+(t?"":"obj||(obj={});")+"var __t,__p=''"+(o?",__e=_.escape":"")+(i?",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}":";")+l+"return __p}",
|
124
|
+
t=ti(function(){return Fe(a,p+"return "+l).apply(w,f)}),t.source=l,ce(t))throw t;return t},Ln.trim=je,Ln.trimLeft=function(n,t,r){var e=n;return(n=u(n))?n.slice((r?Er(e,t,r):null==t)?g(n):i(n,t+"")):n},Ln.trimRight=function(n,t,r){var e=n;return(n=u(n))?(r?Er(e,t,r):null==t)?n.slice(0,y(n)+1):n.slice(0,a(n,t+"")+1):n},Ln.trunc=function(n,t,r){r&&Er(n,t,r)&&(t=null);var e=C;if(r=T,null!=t)if(le(t)){var o="separator"in t?t.separator:o,e="length"in t?+t.length||0:e;r="omission"in t?u(t.omission):r}else e=+t||0;
|
125
|
+
|
126
|
+
if(n=u(n),e>=n.length)return n;if(e-=r.length,1>e)return r;if(t=n.slice(0,e),null==o)return t+r;if(he(o)){if(n.slice(e).search(o)){var i,a=n.slice(0,e);for(o.global||(o=Pe(o.source,(On.exec(o)||"")+"g")),o.lastIndex=0;n=o.exec(a);)i=n.index;t=t.slice(0,null==i?e:i)}}else n.indexOf(o,e)!=e&&(o=t.lastIndexOf(o),-1<o&&(t=t.slice(0,o)));return t+r},Ln.unescape=function(n){return(n=u(n))&&pn.test(n)?n.replace(ln,d):n},Ln.uniqueId=function(n){var t=++Ge;return u(n)+t},Ln.words=Oe,Ln.all=Jr,Ln.any=re,Ln.contains=Hr,
|
127
|
+
Ln.detect=fo,Ln.foldl=go,Ln.foldr=yo,Ln.head=zr,Ln.include=Hr,Ln.inject=go,Re(Ln,function(){var n={};return vt(Ln,function(t,r){Ln.prototype[r]||(n[r]=t)}),n}(),false),Ln.sample=ne,Ln.prototype.sample=function(n){return this.__chain__||null!=n?this.thru(function(t){return ne(t,n)}):ne(this.value())},Ln.VERSION=b,Vn("bind bindKey curry curryRight partial partialRight".split(" "),function(n){Ln[n].placeholder=Ln}),Vn(["dropWhile","filter","map","takeWhile"],function(n,t){var r=t!=$,e=t==F;zn.prototype[n]=function(n,u){
|
128
|
+
var o=this.__filtered__,i=o&&e?new zn(this):this.clone();return(i.__iteratees__||(i.__iteratees__=[])).push({done:false,count:0,index:0,iteratee:mr(n,u,1),limit:-1,type:t}),i.__filtered__=o||r,i}}),Vn(["drop","take"],function(n,t){var r=n+"While";zn.prototype[n]=function(r){var e=this.__filtered__,u=e&&!t?this.dropWhile():this.clone();return r=null==r?1:wu(eu(r)||0,0),e?t?u.__takeCount__=bu(u.__takeCount__,r):Dr(u.__iteratees__).limit=r:(u.__views__||(u.__views__=[])).push({size:r,type:n+(0>u.__dir__?"Right":"")
|
129
|
+
}),u},zn.prototype[n+"Right"]=function(t){return this.reverse()[n](t).reverse()},zn.prototype[n+"RightWhile"]=function(n,t){return this.reverse()[r](n,t).reverse()}}),Vn(["first","last"],function(n,t){var r="take"+(t?"Right":"");zn.prototype[n]=function(){return this[r](1).value()[0]}}),Vn(["initial","rest"],function(n,t){var r="drop"+(t?"":"Right");zn.prototype[n]=function(){return this[r](1)}}),Vn(["pluck","where"],function(n,t){var r=t?"filter":"map",e=t?xt:Ce;zn.prototype[n]=function(n){return this[r](e(n));
|
130
|
+
|
131
|
+
}}),zn.prototype.compact=function(){return this.filter(Ie)},zn.prototype.reject=function(n,t){return n=mr(n,t,1),this.filter(function(t){return!n(t)})},zn.prototype.slice=function(n,t){n=null==n?0:+n||0;var r=0>n?this.takeRight(-n):this.drop(n);return t!==w&&(t=+t||0,r=0>t?r.dropRight(-t):r.take(t-n)),r},zn.prototype.toArray=function(){return this.drop(0)},vt(zn.prototype,function(n,t){var r=Ln[t];if(r){var e=/^(?:filter|map|reject)|While$/.test(t),u=/^(?:first|last)$/.test(t);Ln.prototype[t]=function(){
|
132
|
+
function t(n){return n=[n],iu.apply(n,o),r.apply(Ln,n)}var o=arguments,i=this.__chain__,a=this.__wrapped__,f=!!this.__actions__.length,c=a instanceof zn,l=o[0],s=c||Uo(a);return s&&e&&typeof l=="function"&&1!=l.length&&(c=s=false),c=c&&!f,u&&!i?c?n.call(a):r.call(Ln,this.value()):s?(a=n.apply(c?a:new zn(this),o),u||!f&&!a.__actions__||(a.__actions__||(a.__actions__=[])).push({func:Gr,args:[t],thisArg:Ln}),new Bn(a,i)):this.thru(t)}}}),Vn("concat join pop push replace shift sort splice split unshift".split(" "),function(n){
|
133
|
+
var t=(/^(?:replace|split)$/.test(n)?Ke:Me)[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:join|pop|replace|shift)$/.test(n),u=$u.spliceObjects||!/^(?:pop|shift|splice)$/.test(n)?t:function(){var n=t.apply(this,arguments);return 0===this.length&&delete this[0],n};Ln.prototype[n]=function(){var n=arguments;return e&&!this.__chain__?u.apply(this.value(),n):this[r](function(t){return u.apply(t,n)})}}),vt(zn.prototype,function(n,t){var r=Ln[t];if(r){var e=r.name;(Wu[e]||(Wu[e]=[])).push({
|
134
|
+
name:t,func:r})}}),Wu[lr(null,A).name]=[{name:"wrapper",func:null}],zn.prototype.clone=function(){var n=this.__actions__,t=this.__iteratees__,r=this.__views__,e=new zn(this.__wrapped__);return e.__actions__=n?Kn(n):null,e.__dir__=this.__dir__,e.__filtered__=this.__filtered__,e.__iteratees__=t?Kn(t):null,e.__takeCount__=this.__takeCount__,e.__views__=r?Kn(r):null,e},zn.prototype.reverse=function(){if(this.__filtered__){var n=new zn(this);n.__dir__=-1,n.__filtered__=true}else n=this.clone(),n.__dir__*=-1;
|
135
|
+
|
136
|
+
return n},zn.prototype.value=function(){var n=this.__wrapped__.value();if(!Uo(n))return Lt(n,this.__actions__);var t,r=this.__dir__,e=0>r;t=n.length;for(var u=this.__views__,o=0,i=-1,a=u?u.length:0;++i<a;){var f=u[i],c=f.size;switch(f.type){case"drop":o+=c;break;case"dropRight":t-=c;break;case"take":t=bu(t,o+c);break;case"takeRight":o=wu(o,t-c)}}t={start:o,end:t},u=t.start,o=t.end,t=o-u,u=e?o:u-1,o=bu(t,this.__takeCount__),a=(i=this.__iteratees__)?i.length:0,f=0,c=[];n:for(;t--&&f<o;){for(var u=u+r,l=-1,s=n[u];++l<a;){
|
137
|
+
var p=i[l],h=p.iteratee,_=p.type;if(_==F){if(p.done&&(e?u>p.index:u<p.index)&&(p.count=0,p.done=false),p.index=u,!(p.done||(_=p.limit,p.done=-1<_?p.count++>=_:!h(s))))continue n}else if(p=h(s),_==$)s=p;else if(!p){if(_==N)continue n;break n}}c[f++]=s}return c},Ln.prototype.chain=function(){return Zr(this)},Ln.prototype.commit=function(){return new Bn(this.value(),this.__chain__)},Ln.prototype.plant=function(n){for(var t,r=this;r instanceof Pn;){var e=Lr(r);t?u.__wrapped__=e:t=e;var u=e,r=r.__wrapped__;
|
138
|
+
|
139
|
+
}return u.__wrapped__=n,t},Ln.prototype.reverse=function(){var n=this.__wrapped__;return n instanceof zn?(this.__actions__.length&&(n=new zn(this)),new Bn(n.reverse(),this.__chain__)):this.thru(function(n){return n.reverse()})},Ln.prototype.toString=function(){return this.value()+""},Ln.prototype.run=Ln.prototype.toJSON=Ln.prototype.valueOf=Ln.prototype.value=function(){return Lt(this.__wrapped__,this.__actions__)},Ln.prototype.collect=Ln.prototype.map,Ln.prototype.head=Ln.prototype.first,Ln.prototype.select=Ln.prototype.filter,
|
140
|
+
Ln.prototype.tail=Ln.prototype.rest,Ln}var w,b="3.7.0",x=1,A=2,j=4,O=8,E=16,k=32,I=64,R=128,S=256,C=30,T="...",U=150,W=16,F=0,N=1,$=2,L="Expected a function",P="__lodash_placeholder__",B="[object Arguments]",z="[object Array]",M="[object Boolean]",D="[object Date]",q="[object Error]",K="[object Function]",V="[object Number]",Y="[object Object]",Z="[object RegExp]",G="[object String]",J="[object ArrayBuffer]",X="[object Float32Array]",H="[object Float64Array]",Q="[object Int8Array]",nn="[object Int16Array]",tn="[object Int32Array]",rn="[object Uint8Array]",en="[object Uint8ClampedArray]",un="[object Uint16Array]",on="[object Uint32Array]",an=/\b__p\+='';/g,fn=/\b(__p\+=)''\+/g,cn=/(__e\(.*?\)|\b__t\))\+'';/g,ln=/&(?:amp|lt|gt|quot|#39|#96);/g,sn=/[&<>"'`]/g,pn=RegExp(ln.source),hn=RegExp(sn.source),_n=/<%-([\s\S]+?)%>/g,vn=/<%([\s\S]+?)%>/g,gn=/<%=([\s\S]+?)%>/g,yn=/\.|\[(?:[^[\]]+|(["'])(?:(?!\1)[^\n\\]|\\.)*?)\1\]/,dn=/^\w*$/,mn=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g,wn=/[.*+?^${}()|[\]\/\\]/g,bn=RegExp(wn.source),xn=/[\u0300-\u036f\ufe20-\ufe23]/g,An=/\\(\\)?/g,jn=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,On=/\w*$/,En=/^0[xX]/,kn=/^\[object .+?Constructor\]$/,In=/[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g,Rn=/($^)/,Sn=/['\n\r\u2028\u2029\\]/g,Cn=RegExp("[A-Z\\xc0-\\xd6\\xd8-\\xde]+(?=[A-Z\\xc0-\\xd6\\xd8-\\xde][a-z\\xdf-\\xf6\\xf8-\\xff]+)|[A-Z\\xc0-\\xd6\\xd8-\\xde]?[a-z\\xdf-\\xf6\\xf8-\\xff]+|[A-Z\\xc0-\\xd6\\xd8-\\xde]+|[0-9]+","g"),Tn=" \t\x0b\f\xa0\ufeff\n\r\u2028\u2029\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000",Un="Array ArrayBuffer Date Error Float32Array Float64Array Function Int8Array Int16Array Int32Array Math Number Object RegExp Set String _ clearTimeout document isFinite parseInt setTimeout TypeError Uint8Array Uint8ClampedArray Uint16Array Uint32Array WeakMap window".split(" "),Wn="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" "),Fn={};
|
141
|
+
|
142
|
+
Fn[X]=Fn[H]=Fn[Q]=Fn[nn]=Fn[tn]=Fn[rn]=Fn[en]=Fn[un]=Fn[on]=true,Fn[B]=Fn[z]=Fn[J]=Fn[M]=Fn[D]=Fn[q]=Fn[K]=Fn["[object Map]"]=Fn[V]=Fn[Y]=Fn[Z]=Fn["[object Set]"]=Fn[G]=Fn["[object WeakMap]"]=false;var Nn={};Nn[B]=Nn[z]=Nn[J]=Nn[M]=Nn[D]=Nn[X]=Nn[H]=Nn[Q]=Nn[nn]=Nn[tn]=Nn[V]=Nn[Y]=Nn[Z]=Nn[G]=Nn[rn]=Nn[en]=Nn[un]=Nn[on]=true,Nn[q]=Nn[K]=Nn["[object Map]"]=Nn["[object Set]"]=Nn["[object WeakMap]"]=false;var $n={leading:false,maxWait:0,trailing:false},Ln={"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A",
|
143
|
+
"\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a","\xc7":"C","\xe7":"c","\xd0":"D","\xf0":"d","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xcc":"I","\xcd":"I","\xce":"I","\xcf":"I","\xec":"i","\xed":"i","\xee":"i","\xef":"i","\xd1":"N","\xf1":"n","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xf9":"u","\xfa":"u",
|
144
|
+
"\xfb":"u","\xfc":"u","\xdd":"Y","\xfd":"y","\xff":"y","\xc6":"Ae","\xe6":"ae","\xde":"Th","\xfe":"th","\xdf":"ss"},Pn={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},Bn={"&":"&","<":"<",">":">",""":'"',"'":"'","`":"`"},zn={"function":true,object:true},Mn={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Dn=zn[typeof exports]&&exports&&!exports.nodeType&&exports,qn=zn[typeof module]&&module&&!module.nodeType&&module,Kn=zn[typeof self]&&self&&self.Object&&self,Vn=zn[typeof window]&&window&&window.Object&&window,Yn=qn&&qn.exports===Dn&&Dn,Zn=Dn&&qn&&typeof global=="object"&&global&&global.Object&&global||Vn!==(this&&this.window)&&Vn||Kn||this,Gn=function(){
|
145
|
+
try{Object({toString:0}+"")}catch(n){return function(){return false}}return function(n){return typeof n.toString!="function"&&typeof(n+"")=="string"}}(),Jn=m();typeof define=="function"&&typeof define.amd=="object"&&define.amd?(Zn._=Jn, define(function(){return Jn})):Dn&&qn?Yn?(qn.exports=Jn)._=Jn:Dn._=Jn:Zn._=Jn}).call(this);
|
@@ -1,9 +1,9 @@
|
|
1
1
|
/**
|
2
2
|
* @license
|
3
|
-
* lodash 3.
|
3
|
+
* lodash 3.7.0 (Custom Build) <https://lodash.com/>
|
4
4
|
* Build: `lodash modern -o ./lodash.js`
|
5
5
|
* Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
|
6
|
-
* Based on Underscore.js 1.8.
|
6
|
+
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
|
7
7
|
* Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
|
8
8
|
* Available under MIT license <https://lodash.com/license>
|
9
9
|
*/
|
@@ -13,7 +13,7 @@
|
|
13
13
|
var undefined;
|
14
14
|
|
15
15
|
/** Used as the semantic version number. */
|
16
|
-
var VERSION = '3.
|
16
|
+
var VERSION = '3.7.0';
|
17
17
|
|
18
18
|
/** Used to compose bitmasks for wrapper metadata. */
|
19
19
|
var BIND_FLAG = 1,
|
@@ -87,24 +87,36 @@
|
|
87
87
|
reEvaluate = /<%([\s\S]+?)%>/g,
|
88
88
|
reInterpolate = /<%=([\s\S]+?)%>/g;
|
89
89
|
|
90
|
-
/**
|
91
|
-
|
92
|
-
|
93
|
-
|
90
|
+
/** Used to match property names within property paths. */
|
91
|
+
var reIsDeepProp = /\.|\[(?:[^[\]]+|(["'])(?:(?!\1)[^\n\\]|\\.)*?)\1\]/,
|
92
|
+
reIsPlainProp = /^\w*$/,
|
93
|
+
rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g;
|
94
94
|
|
95
95
|
/**
|
96
|
-
* Used to match [
|
96
|
+
* Used to match `RegExp` [special characters](http://www.regular-expressions.info/characters.html#special).
|
97
|
+
* In addition to special characters the forward slash is escaped to allow for
|
98
|
+
* easier `eval` use and `Function` compilation.
|
97
99
|
*/
|
100
|
+
var reRegExpChars = /[.*+?^${}()|[\]\/\\]/g,
|
101
|
+
reHasRegExpChars = RegExp(reRegExpChars.source);
|
102
|
+
|
103
|
+
/** Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks). */
|
104
|
+
var reComboMark = /[\u0300-\u036f\ufe20-\ufe23]/g;
|
105
|
+
|
106
|
+
/** Used to match backslashes in property paths. */
|
107
|
+
var reEscapeChar = /\\(\\)?/g;
|
108
|
+
|
109
|
+
/** Used to match [ES template delimiters](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-template-literal-lexical-components). */
|
98
110
|
var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g;
|
99
111
|
|
100
112
|
/** Used to match `RegExp` flags from their coerced string values. */
|
101
113
|
var reFlags = /\w*$/;
|
102
114
|
|
103
115
|
/** Used to detect hexadecimal string values. */
|
104
|
-
var
|
116
|
+
var reHasHexPrefix = /^0[xX]/;
|
105
117
|
|
106
118
|
/** Used to detect host constructors (Safari > 5). */
|
107
|
-
var
|
119
|
+
var reIsHostCtor = /^\[object .+?Constructor\]$/;
|
108
120
|
|
109
121
|
/** Used to match latin-1 supplementary letters (excluding mathematical operators). */
|
110
122
|
var reLatin1 = /[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g;
|
@@ -112,14 +124,6 @@
|
|
112
124
|
/** Used to ensure capturing order of template delimiters. */
|
113
125
|
var reNoMatch = /($^)/;
|
114
126
|
|
115
|
-
/**
|
116
|
-
* Used to match `RegExp` [special characters](http://www.regular-expressions.info/characters.html#special).
|
117
|
-
* In addition to special characters the forward slash is escaped to allow for
|
118
|
-
* easier `eval` use and `Function` compilation.
|
119
|
-
*/
|
120
|
-
var reRegExpChars = /[.*+?^${}()|[\]\/\\]/g,
|
121
|
-
reHasRegExpChars = RegExp(reRegExpChars.source);
|
122
|
-
|
123
127
|
/** Used to match unescaped characters in compiled string literals. */
|
124
128
|
var reUnescapedString = /['\n\r\u2028\u2029\\]/g;
|
125
129
|
|
@@ -257,7 +261,7 @@
|
|
257
261
|
var freeModule = objectTypes[typeof module] && module && !module.nodeType && module;
|
258
262
|
|
259
263
|
/** Detect free variable `global` from Node.js. */
|
260
|
-
var freeGlobal = freeExports && freeModule && typeof global == 'object' && global;
|
264
|
+
var freeGlobal = freeExports && freeModule && typeof global == 'object' && global && global.Object && global;
|
261
265
|
|
262
266
|
/** Detect free variable `self`. */
|
263
267
|
var freeSelf = objectTypes[typeof self] && self && self.Object && self;
|
@@ -292,10 +296,10 @@
|
|
292
296
|
var valIsReflexive = value === value,
|
293
297
|
othIsReflexive = other === other;
|
294
298
|
|
295
|
-
if (value > other || !valIsReflexive || (
|
299
|
+
if (value > other || !valIsReflexive || (value === undefined && othIsReflexive)) {
|
296
300
|
return 1;
|
297
301
|
}
|
298
|
-
if (value < other || !othIsReflexive || (
|
302
|
+
if (value < other || !othIsReflexive || (other === undefined && valIsReflexive)) {
|
299
303
|
return -1;
|
300
304
|
}
|
301
305
|
}
|
@@ -438,7 +442,7 @@
|
|
438
442
|
* Used by `_.sortByOrder` to compare multiple properties of each element
|
439
443
|
* in a collection and stable sort them in the following order:
|
440
444
|
*
|
441
|
-
* If orders is unspecified, sort in ascending order for all properties.
|
445
|
+
* If `orders` is unspecified, sort in ascending order for all properties.
|
442
446
|
* Otherwise, for each property, sort in ascending order if its corresponding value in
|
443
447
|
* orders is true, and descending order if false.
|
444
448
|
*
|
@@ -715,9 +719,6 @@
|
|
715
719
|
/** Used to resolve the decompiled source of functions. */
|
716
720
|
var fnToString = Function.prototype.toString;
|
717
721
|
|
718
|
-
/** Used to the length of n-tuples for `_.unzip`. */
|
719
|
-
var getLength = baseProperty('length');
|
720
|
-
|
721
722
|
/** Used to check objects for own properties. */
|
722
723
|
var hasOwnProperty = objectProto.hasOwnProperty;
|
723
724
|
|
@@ -734,7 +735,7 @@
|
|
734
735
|
var oldDash = context._;
|
735
736
|
|
736
737
|
/** Used to detect if a method is native. */
|
737
|
-
var
|
738
|
+
var reIsNative = RegExp('^' +
|
738
739
|
escapeRegExp(objToString)
|
739
740
|
.replace(/toString|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
|
740
741
|
);
|
@@ -745,8 +746,10 @@
|
|
745
746
|
ceil = Math.ceil,
|
746
747
|
clearTimeout = context.clearTimeout,
|
747
748
|
floor = Math.floor,
|
749
|
+
getOwnPropertySymbols = isNative(getOwnPropertySymbols = Object.getOwnPropertySymbols) && getOwnPropertySymbols,
|
748
750
|
getPrototypeOf = isNative(getPrototypeOf = Object.getPrototypeOf) && getPrototypeOf,
|
749
751
|
push = arrayProto.push,
|
752
|
+
preventExtensions = isNative(Object.preventExtensions = Object.preventExtensions) && preventExtensions,
|
750
753
|
propertyIsEnumerable = objectProto.propertyIsEnumerable,
|
751
754
|
Set = isNative(Set = context.Set) && Set,
|
752
755
|
setTimeout = context.setTimeout,
|
@@ -766,6 +769,22 @@
|
|
766
769
|
return result;
|
767
770
|
}());
|
768
771
|
|
772
|
+
/** Used as `baseAssign`. */
|
773
|
+
var nativeAssign = (function() {
|
774
|
+
// Avoid `Object.assign` in Firefox 34-37 which have an early implementation
|
775
|
+
// with a now defunct try/catch behavior. See https://bugzilla.mozilla.org/show_bug.cgi?id=1103344
|
776
|
+
// for more details.
|
777
|
+
//
|
778
|
+
// Use `Object.preventExtensions` on a plain object instead of simply using
|
779
|
+
// `Object('x')` because Chrome and IE fail to throw an error when attempting
|
780
|
+
// to assign values to readonly indexes of strings in strict mode.
|
781
|
+
var object = { '1': 0 },
|
782
|
+
func = preventExtensions && isNative(func = Object.assign) && func;
|
783
|
+
|
784
|
+
try { func(preventExtensions(object), 'xo'); } catch(e) {}
|
785
|
+
return !object[1] && func;
|
786
|
+
}());
|
787
|
+
|
769
788
|
/* Native method references for those with the same name as other `lodash` methods. */
|
770
789
|
var nativeIsArray = isNative(nativeIsArray = Array.isArray) && nativeIsArray,
|
771
790
|
nativeCreate = isNative(nativeCreate = Object.create) && nativeCreate,
|
@@ -843,8 +862,8 @@
|
|
843
862
|
* `filter`, `flatten`, `flattenDeep`, `flow`, `flowRight`, `forEach`,
|
844
863
|
* `forEachRight`, `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `functions`,
|
845
864
|
* `groupBy`, `indexBy`, `initial`, `intersection`, `invert`, `invoke`, `keys`,
|
846
|
-
* `keysIn`, `map`, `mapValues`, `matches`, `matchesProperty`, `memoize`,
|
847
|
-
* `
|
865
|
+
* `keysIn`, `map`, `mapValues`, `matches`, `matchesProperty`, `memoize`,
|
866
|
+
* `merge`, `mixin`, `negate`, `omit`, `once`, `pairs`, `partial`, `partialRight`,
|
848
867
|
* `partition`, `pick`, `plant`, `pluck`, `property`, `propertyOf`, `pull`,
|
849
868
|
* `pullAt`, `push`, `range`, `rearg`, `reject`, `remove`, `rest`, `reverse`,
|
850
869
|
* `shuffle`, `slice`, `sort`, `sortBy`, `sortByAll`, `sortByOrder`, `splice`,
|
@@ -858,15 +877,15 @@
|
|
858
877
|
* `endsWith`, `escape`, `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`,
|
859
878
|
* `findLast`, `findLastIndex`, `findLastKey`, `findWhere`, `first`, `has`,
|
860
879
|
* `identity`, `includes`, `indexOf`, `inRange`, `isArguments`, `isArray`,
|
861
|
-
* `isBoolean`, `isDate`, `isElement`, `isEmpty`, `isEqual`, `isError`,
|
862
|
-
* `
|
863
|
-
* `
|
864
|
-
* `
|
865
|
-
* `
|
866
|
-
* `
|
867
|
-
* `
|
868
|
-
* `
|
869
|
-
* `
|
880
|
+
* `isBoolean`, `isDate`, `isElement`, `isEmpty`, `isEqual`, `isError`, `isFinite`
|
881
|
+
* `isFunction`, `isMatch`, `isNative`, `isNaN`, `isNull`, `isNumber`, `isObject`,
|
882
|
+
* `isPlainObject`, `isRegExp`, `isString`, `isUndefined`, `isTypedArray`,
|
883
|
+
* `join`, `kebabCase`, `last`, `lastIndexOf`, `max`, `min`, `noConflict`,
|
884
|
+
* `noop`, `now`, `pad`, `padLeft`, `padRight`, `parseInt`, `pop`, `random`,
|
885
|
+
* `reduce`, `reduceRight`, `repeat`, `result`, `runInContext`, `shift`, `size`,
|
886
|
+
* `snakeCase`, `some`, `sortedIndex`, `sortedLastIndex`, `startCase`, `startsWith`,
|
887
|
+
* `sum`, `template`, `trim`, `trimLeft`, `trimRight`, `trunc`, `unescape`,
|
888
|
+
* `uniqueId`, `value`, and `words`
|
870
889
|
*
|
871
890
|
* The wrapper method `sample` will return a wrapped value when `n` is provided,
|
872
891
|
* otherwise an unwrapped value is returned.
|
@@ -881,8 +900,8 @@
|
|
881
900
|
* var wrapped = _([1, 2, 3]);
|
882
901
|
*
|
883
902
|
* // returns an unwrapped value
|
884
|
-
* wrapped.reduce(function(
|
885
|
-
* return
|
903
|
+
* wrapped.reduce(function(total, n) {
|
904
|
+
* return total + n;
|
886
905
|
* });
|
887
906
|
* // => 6
|
888
907
|
*
|
@@ -942,6 +961,12 @@
|
|
942
961
|
var support = lodash.support = {};
|
943
962
|
|
944
963
|
(function(x) {
|
964
|
+
var Ctor = function() { this.x = x; },
|
965
|
+
object = { '0': x, 'length': x },
|
966
|
+
props = [];
|
967
|
+
|
968
|
+
Ctor.prototype = { 'valueOf': x, 'y': x };
|
969
|
+
for (var key in new Ctor) { props.push(key); }
|
945
970
|
|
946
971
|
/**
|
947
972
|
* Detect if functions can be decompiled by `Function#toString`
|
@@ -979,8 +1004,8 @@
|
|
979
1004
|
* In Firefox < 4, IE < 9, PhantomJS, and Safari < 5.1 `arguments` object
|
980
1005
|
* indexes are non-enumerable. Chrome < 25 and Node.js < 0.11.0 treat
|
981
1006
|
* `arguments` object indexes as non-enumerable and fail `hasOwnProperty`
|
982
|
-
* checks for indexes that exceed
|
983
|
-
* associated values
|
1007
|
+
* checks for indexes that exceed the number of function parameters and
|
1008
|
+
* whose associated argument values are `0`.
|
984
1009
|
*
|
985
1010
|
* @memberOf _.support
|
986
1011
|
* @type boolean
|
@@ -990,7 +1015,7 @@
|
|
990
1015
|
} catch(e) {
|
991
1016
|
support.nonEnumArgs = true;
|
992
1017
|
}
|
993
|
-
}(
|
1018
|
+
}(1, 0));
|
994
1019
|
|
995
1020
|
/**
|
996
1021
|
* By default, the template delimiters used by lodash are like those in
|
@@ -1237,7 +1262,7 @@
|
|
1237
1262
|
}
|
1238
1263
|
|
1239
1264
|
/**
|
1240
|
-
*
|
1265
|
+
* Sets `value` to `key` of the cache.
|
1241
1266
|
*
|
1242
1267
|
* @private
|
1243
1268
|
* @name set
|
@@ -1570,13 +1595,13 @@
|
|
1570
1595
|
* @returns {*} Returns the value to assign to the destination object.
|
1571
1596
|
*/
|
1572
1597
|
function assignDefaults(objectValue, sourceValue) {
|
1573
|
-
return
|
1598
|
+
return objectValue === undefined ? sourceValue : objectValue;
|
1574
1599
|
}
|
1575
1600
|
|
1576
1601
|
/**
|
1577
1602
|
* Used by `_.template` to customize its `_.assign` use.
|
1578
1603
|
*
|
1579
|
-
* **Note:** This
|
1604
|
+
* **Note:** This function is like `assignDefaults` except that it ignores
|
1580
1605
|
* inherited property values when checking if a property is `undefined`.
|
1581
1606
|
*
|
1582
1607
|
* @private
|
@@ -1587,26 +1612,26 @@
|
|
1587
1612
|
* @returns {*} Returns the value to assign to the destination object.
|
1588
1613
|
*/
|
1589
1614
|
function assignOwnDefaults(objectValue, sourceValue, key, object) {
|
1590
|
-
return (
|
1615
|
+
return (objectValue === undefined || !hasOwnProperty.call(object, key))
|
1591
1616
|
? sourceValue
|
1592
1617
|
: objectValue;
|
1593
1618
|
}
|
1594
1619
|
|
1595
1620
|
/**
|
1596
|
-
*
|
1597
|
-
* multiple sources, and `this` binding `customizer`
|
1621
|
+
* A specialized version of `_.assign` for customizing assigned values without
|
1622
|
+
* support for argument juggling, multiple sources, and `this` binding `customizer`
|
1623
|
+
* functions.
|
1598
1624
|
*
|
1599
1625
|
* @private
|
1600
1626
|
* @param {Object} object The destination object.
|
1601
1627
|
* @param {Object} source The source object.
|
1602
|
-
* @param {Function}
|
1603
|
-
* @returns {Object} Returns
|
1628
|
+
* @param {Function} customizer The function to customize assigned values.
|
1629
|
+
* @returns {Object} Returns `object`.
|
1604
1630
|
*/
|
1605
|
-
function
|
1631
|
+
function assignWith(object, source, customizer) {
|
1606
1632
|
var props = keys(source);
|
1607
|
-
|
1608
|
-
|
1609
|
-
}
|
1633
|
+
push.apply(props, getSymbols(source));
|
1634
|
+
|
1610
1635
|
var index = -1,
|
1611
1636
|
length = props.length;
|
1612
1637
|
|
@@ -1616,7 +1641,7 @@
|
|
1616
1641
|
result = customizer(value, source[key], key, object, source);
|
1617
1642
|
|
1618
1643
|
if ((result === result ? (result !== value) : (value === value)) ||
|
1619
|
-
(
|
1644
|
+
(value === undefined && !(key in object))) {
|
1620
1645
|
object[key] = result;
|
1621
1646
|
}
|
1622
1647
|
}
|
@@ -1624,12 +1649,27 @@
|
|
1624
1649
|
}
|
1625
1650
|
|
1626
1651
|
/**
|
1627
|
-
* The base implementation of `_.
|
1628
|
-
*
|
1652
|
+
* The base implementation of `_.assign` without support for argument juggling,
|
1653
|
+
* multiple sources, and `customizer` functions.
|
1654
|
+
*
|
1655
|
+
* @private
|
1656
|
+
* @param {Object} object The destination object.
|
1657
|
+
* @param {Object} source The source object.
|
1658
|
+
* @returns {Object} Returns `object`.
|
1659
|
+
*/
|
1660
|
+
var baseAssign = nativeAssign || function(object, source) {
|
1661
|
+
return source == null
|
1662
|
+
? object
|
1663
|
+
: baseCopy(source, getSymbols(source), baseCopy(source, keys(source), object));
|
1664
|
+
};
|
1665
|
+
|
1666
|
+
/**
|
1667
|
+
* The base implementation of `_.at` without support for string collections
|
1668
|
+
* and individual key arguments.
|
1629
1669
|
*
|
1630
1670
|
* @private
|
1631
1671
|
* @param {Array|Object} collection The collection to iterate over.
|
1632
|
-
* @param {number[]|string[]}
|
1672
|
+
* @param {number[]|string[]} props The property names or indexes of elements to pick.
|
1633
1673
|
* @returns {Array} Returns the new array of picked elements.
|
1634
1674
|
*/
|
1635
1675
|
function baseAt(collection, props) {
|
@@ -1642,7 +1682,6 @@
|
|
1642
1682
|
while(++index < propsLength) {
|
1643
1683
|
var key = props[index];
|
1644
1684
|
if (isArr) {
|
1645
|
-
key = parseFloat(key);
|
1646
1685
|
result[index] = isIndex(key, length) ? collection[key] : undefined;
|
1647
1686
|
} else {
|
1648
1687
|
result[index] = collection[key];
|
@@ -1652,19 +1691,17 @@
|
|
1652
1691
|
}
|
1653
1692
|
|
1654
1693
|
/**
|
1655
|
-
* Copies
|
1694
|
+
* Copies properties of `source` to `object`.
|
1656
1695
|
*
|
1657
1696
|
* @private
|
1658
1697
|
* @param {Object} source The object to copy properties from.
|
1659
|
-
* @param {Object} [object={}] The object to copy properties to.
|
1660
1698
|
* @param {Array} props The property names to copy.
|
1699
|
+
* @param {Object} [object={}] The object to copy properties to.
|
1661
1700
|
* @returns {Object} Returns `object`.
|
1662
1701
|
*/
|
1663
|
-
function baseCopy(source,
|
1664
|
-
|
1665
|
-
|
1666
|
-
object = {};
|
1667
|
-
}
|
1702
|
+
function baseCopy(source, props, object) {
|
1703
|
+
object || (object = {});
|
1704
|
+
|
1668
1705
|
var index = -1,
|
1669
1706
|
length = props.length;
|
1670
1707
|
|
@@ -1688,7 +1725,7 @@
|
|
1688
1725
|
function baseCallback(func, thisArg, argCount) {
|
1689
1726
|
var type = typeof func;
|
1690
1727
|
if (type == 'function') {
|
1691
|
-
return
|
1728
|
+
return thisArg === undefined
|
1692
1729
|
? func
|
1693
1730
|
: bindCallback(func, thisArg, argCount);
|
1694
1731
|
}
|
@@ -1698,9 +1735,9 @@
|
|
1698
1735
|
if (type == 'object') {
|
1699
1736
|
return baseMatches(func);
|
1700
1737
|
}
|
1701
|
-
return
|
1702
|
-
?
|
1703
|
-
: baseMatchesProperty(func
|
1738
|
+
return thisArg === undefined
|
1739
|
+
? property(func)
|
1740
|
+
: baseMatchesProperty(func, thisArg);
|
1704
1741
|
}
|
1705
1742
|
|
1706
1743
|
/**
|
@@ -1722,7 +1759,7 @@
|
|
1722
1759
|
if (customizer) {
|
1723
1760
|
result = object ? customizer(value, key, object) : customizer(value);
|
1724
1761
|
}
|
1725
|
-
if (
|
1762
|
+
if (result !== undefined) {
|
1726
1763
|
return result;
|
1727
1764
|
}
|
1728
1765
|
if (!isObject(value)) {
|
@@ -1741,7 +1778,7 @@
|
|
1741
1778
|
if (tag == objectTag || tag == argsTag || (isFunc && !object)) {
|
1742
1779
|
result = initCloneObject(isFunc ? {} : value);
|
1743
1780
|
if (!isDeep) {
|
1744
|
-
return
|
1781
|
+
return baseAssign(result, value);
|
1745
1782
|
}
|
1746
1783
|
} else {
|
1747
1784
|
return cloneableTags[tag]
|
@@ -1912,7 +1949,7 @@
|
|
1912
1949
|
if (start < 0) {
|
1913
1950
|
start = -start > length ? 0 : (length + start);
|
1914
1951
|
}
|
1915
|
-
end = (
|
1952
|
+
end = (end === undefined || end > length) ? length : (+end || 0);
|
1916
1953
|
if (end < 0) {
|
1917
1954
|
end += length;
|
1918
1955
|
}
|
@@ -2009,7 +2046,7 @@
|
|
2009
2046
|
/**
|
2010
2047
|
* The base implementation of `baseForIn` and `baseForOwn` which iterates
|
2011
2048
|
* over `object` properties returned by `keysFunc` invoking `iteratee` for
|
2012
|
-
* each property.
|
2049
|
+
* each property. Iteratee functions may exit iteration early by explicitly
|
2013
2050
|
* returning `false`.
|
2014
2051
|
*
|
2015
2052
|
* @private
|
@@ -2095,6 +2132,32 @@
|
|
2095
2132
|
return result;
|
2096
2133
|
}
|
2097
2134
|
|
2135
|
+
/**
|
2136
|
+
* The base implementation of `get` without support for string paths
|
2137
|
+
* and default values.
|
2138
|
+
*
|
2139
|
+
* @private
|
2140
|
+
* @param {Object} object The object to query.
|
2141
|
+
* @param {Array} path The path of the property to get.
|
2142
|
+
* @param {string} [pathKey] The key representation of path.
|
2143
|
+
* @returns {*} Returns the resolved value.
|
2144
|
+
*/
|
2145
|
+
function baseGet(object, path, pathKey) {
|
2146
|
+
if (object == null) {
|
2147
|
+
return;
|
2148
|
+
}
|
2149
|
+
if (pathKey !== undefined && pathKey in toObject(object)) {
|
2150
|
+
path = [pathKey];
|
2151
|
+
}
|
2152
|
+
var index = -1,
|
2153
|
+
length = path.length;
|
2154
|
+
|
2155
|
+
while (object != null && ++index < length) {
|
2156
|
+
var result = object = object[path[index]];
|
2157
|
+
}
|
2158
|
+
return result;
|
2159
|
+
}
|
2160
|
+
|
2098
2161
|
/**
|
2099
2162
|
* The base implementation of `_.isEqual` without support for `this` binding
|
2100
2163
|
* `customizer` functions.
|
@@ -2163,27 +2226,23 @@
|
|
2163
2226
|
othIsArr = isTypedArray(other);
|
2164
2227
|
}
|
2165
2228
|
}
|
2166
|
-
var objIsObj =
|
2167
|
-
othIsObj =
|
2229
|
+
var objIsObj = objTag == objectTag,
|
2230
|
+
othIsObj = othTag == objectTag,
|
2168
2231
|
isSameTag = objTag == othTag;
|
2169
2232
|
|
2170
2233
|
if (isSameTag && !(objIsArr || objIsObj)) {
|
2171
2234
|
return equalByTag(object, other, objTag);
|
2172
2235
|
}
|
2173
|
-
if (isLoose) {
|
2174
|
-
if (!isSameTag && !(objIsObj && othIsObj)) {
|
2175
|
-
return false;
|
2176
|
-
}
|
2177
|
-
} else {
|
2236
|
+
if (!isLoose) {
|
2178
2237
|
var valWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
|
2179
2238
|
othWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
|
2180
2239
|
|
2181
2240
|
if (valWrapped || othWrapped) {
|
2182
2241
|
return equalFunc(valWrapped ? object.value() : object, othWrapped ? other.value() : other, customizer, isLoose, stackA, stackB);
|
2183
2242
|
}
|
2184
|
-
|
2185
|
-
|
2186
|
-
|
2243
|
+
}
|
2244
|
+
if (!isSameTag) {
|
2245
|
+
return false;
|
2187
2246
|
}
|
2188
2247
|
// Assume cyclic values are equal.
|
2189
2248
|
// For more information on detecting circular references see https://es5.github.io/#JO.
|
@@ -2240,10 +2299,10 @@
|
|
2240
2299
|
srcValue = values[index];
|
2241
2300
|
|
2242
2301
|
if (noCustomizer && strictCompareFlags[index]) {
|
2243
|
-
var result =
|
2302
|
+
var result = objValue !== undefined || (key in object);
|
2244
2303
|
} else {
|
2245
2304
|
result = customizer ? customizer(objValue, srcValue, key) : undefined;
|
2246
|
-
if (
|
2305
|
+
if (result === undefined) {
|
2247
2306
|
result = baseIsEqual(srcValue, objValue, customizer, true);
|
2248
2307
|
}
|
2249
2308
|
}
|
@@ -2264,9 +2323,12 @@
|
|
2264
2323
|
* @returns {Array} Returns the new mapped array.
|
2265
2324
|
*/
|
2266
2325
|
function baseMap(collection, iteratee) {
|
2267
|
-
var
|
2326
|
+
var index = -1,
|
2327
|
+
length = getLength(collection),
|
2328
|
+
result = isLength(length) ? Array(length) : [];
|
2329
|
+
|
2268
2330
|
baseEach(collection, function(value, key, collection) {
|
2269
|
-
result
|
2331
|
+
result[++index] = iteratee(value, key, collection);
|
2270
2332
|
});
|
2271
2333
|
return result;
|
2272
2334
|
}
|
@@ -2291,8 +2353,10 @@
|
|
2291
2353
|
|
2292
2354
|
if (isStrictComparable(value)) {
|
2293
2355
|
return function(object) {
|
2294
|
-
|
2295
|
-
|
2356
|
+
if (object == null) {
|
2357
|
+
return false;
|
2358
|
+
}
|
2359
|
+
return object[key] === value && (value !== undefined || (key in toObject(object)));
|
2296
2360
|
};
|
2297
2361
|
}
|
2298
2362
|
}
|
@@ -2310,23 +2374,37 @@
|
|
2310
2374
|
}
|
2311
2375
|
|
2312
2376
|
/**
|
2313
|
-
* The base implementation of `_.matchesProperty` which does not
|
2314
|
-
*
|
2377
|
+
* The base implementation of `_.matchesProperty` which does not which does
|
2378
|
+
* not clone `value`.
|
2315
2379
|
*
|
2316
2380
|
* @private
|
2317
|
-
* @param {string}
|
2381
|
+
* @param {string} path The path of the property to get.
|
2318
2382
|
* @param {*} value The value to compare.
|
2319
2383
|
* @returns {Function} Returns the new function.
|
2320
2384
|
*/
|
2321
|
-
function baseMatchesProperty(
|
2322
|
-
|
2323
|
-
|
2324
|
-
|
2325
|
-
|
2326
|
-
|
2327
|
-
}
|
2385
|
+
function baseMatchesProperty(path, value) {
|
2386
|
+
var isArr = isArray(path),
|
2387
|
+
isCommon = isKey(path) && isStrictComparable(value),
|
2388
|
+
pathKey = (path + '');
|
2389
|
+
|
2390
|
+
path = toPath(path);
|
2328
2391
|
return function(object) {
|
2329
|
-
|
2392
|
+
if (object == null) {
|
2393
|
+
return false;
|
2394
|
+
}
|
2395
|
+
var key = pathKey;
|
2396
|
+
object = toObject(object);
|
2397
|
+
if ((isArr || !isCommon) && !(key in object)) {
|
2398
|
+
object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1));
|
2399
|
+
if (object == null) {
|
2400
|
+
return false;
|
2401
|
+
}
|
2402
|
+
key = last(path);
|
2403
|
+
object = toObject(object);
|
2404
|
+
}
|
2405
|
+
return object[key] === value
|
2406
|
+
? (value !== undefined || (key in object))
|
2407
|
+
: baseIsEqual(value, object[key], null, true);
|
2330
2408
|
};
|
2331
2409
|
}
|
2332
2410
|
|
@@ -2340,29 +2418,39 @@
|
|
2340
2418
|
* @param {Function} [customizer] The function to customize merging properties.
|
2341
2419
|
* @param {Array} [stackA=[]] Tracks traversed source objects.
|
2342
2420
|
* @param {Array} [stackB=[]] Associates values with source counterparts.
|
2343
|
-
* @returns {Object} Returns
|
2421
|
+
* @returns {Object} Returns `object`.
|
2344
2422
|
*/
|
2345
2423
|
function baseMerge(object, source, customizer, stackA, stackB) {
|
2346
2424
|
if (!isObject(object)) {
|
2347
2425
|
return object;
|
2348
2426
|
}
|
2349
2427
|
var isSrcArr = isLength(source.length) && (isArray(source) || isTypedArray(source));
|
2350
|
-
(isSrcArr
|
2428
|
+
if (!isSrcArr) {
|
2429
|
+
var props = keys(source);
|
2430
|
+
push.apply(props, getSymbols(source));
|
2431
|
+
}
|
2432
|
+
arrayEach(props || source, function(srcValue, key) {
|
2433
|
+
if (props) {
|
2434
|
+
key = srcValue;
|
2435
|
+
srcValue = source[key];
|
2436
|
+
}
|
2351
2437
|
if (isObjectLike(srcValue)) {
|
2352
2438
|
stackA || (stackA = []);
|
2353
2439
|
stackB || (stackB = []);
|
2354
|
-
|
2440
|
+
baseMergeDeep(object, source, key, baseMerge, customizer, stackA, stackB);
|
2355
2441
|
}
|
2356
|
-
|
2357
|
-
|
2358
|
-
|
2442
|
+
else {
|
2443
|
+
var value = object[key],
|
2444
|
+
result = customizer ? customizer(value, srcValue, key, object, source) : undefined,
|
2445
|
+
isCommon = result === undefined;
|
2359
2446
|
|
2360
|
-
|
2361
|
-
|
2362
|
-
|
2363
|
-
|
2364
|
-
|
2365
|
-
|
2447
|
+
if (isCommon) {
|
2448
|
+
result = srcValue;
|
2449
|
+
}
|
2450
|
+
if ((isSrcArr || result !== undefined) &&
|
2451
|
+
(isCommon || (result === result ? (result !== value) : (value === value)))) {
|
2452
|
+
object[key] = result;
|
2453
|
+
}
|
2366
2454
|
}
|
2367
2455
|
});
|
2368
2456
|
return object;
|
@@ -2395,14 +2483,14 @@
|
|
2395
2483
|
}
|
2396
2484
|
var value = object[key],
|
2397
2485
|
result = customizer ? customizer(value, srcValue, key, object, source) : undefined,
|
2398
|
-
isCommon =
|
2486
|
+
isCommon = result === undefined;
|
2399
2487
|
|
2400
2488
|
if (isCommon) {
|
2401
2489
|
result = srcValue;
|
2402
2490
|
if (isLength(srcValue.length) && (isArray(srcValue) || isTypedArray(srcValue))) {
|
2403
2491
|
result = isArray(value)
|
2404
2492
|
? value
|
2405
|
-
: ((value
|
2493
|
+
: (getLength(value) ? arrayCopy(value) : []);
|
2406
2494
|
}
|
2407
2495
|
else if (isPlainObject(srcValue) || isArguments(srcValue)) {
|
2408
2496
|
result = isArguments(value)
|
@@ -2427,7 +2515,7 @@
|
|
2427
2515
|
}
|
2428
2516
|
|
2429
2517
|
/**
|
2430
|
-
* The base implementation of `_.property`
|
2518
|
+
* The base implementation of `_.property` without support for deep paths.
|
2431
2519
|
*
|
2432
2520
|
* @private
|
2433
2521
|
* @param {string} key The key of the property to get.
|
@@ -2439,6 +2527,42 @@
|
|
2439
2527
|
};
|
2440
2528
|
}
|
2441
2529
|
|
2530
|
+
/**
|
2531
|
+
* A specialized version of `baseProperty` which supports deep paths.
|
2532
|
+
*
|
2533
|
+
* @private
|
2534
|
+
* @param {Array|string} path The path of the property to get.
|
2535
|
+
* @returns {Function} Returns the new function.
|
2536
|
+
*/
|
2537
|
+
function basePropertyDeep(path) {
|
2538
|
+
var pathKey = (path + '');
|
2539
|
+
path = toPath(path);
|
2540
|
+
return function(object) {
|
2541
|
+
return baseGet(object, path, pathKey);
|
2542
|
+
};
|
2543
|
+
}
|
2544
|
+
|
2545
|
+
/**
|
2546
|
+
* The base implementation of `_.pullAt` without support for individual
|
2547
|
+
* index arguments and capturing the removed elements.
|
2548
|
+
*
|
2549
|
+
* @private
|
2550
|
+
* @param {Array} array The array to modify.
|
2551
|
+
* @param {number[]} indexes The indexes of elements to remove.
|
2552
|
+
* @returns {Array} Returns `array`.
|
2553
|
+
*/
|
2554
|
+
function basePullAt(array, indexes) {
|
2555
|
+
var length = indexes.length;
|
2556
|
+
while (length--) {
|
2557
|
+
var index = parseFloat(indexes[length]);
|
2558
|
+
if (index != previous && isIndex(index)) {
|
2559
|
+
var previous = index;
|
2560
|
+
splice.call(array, index, 1);
|
2561
|
+
}
|
2562
|
+
}
|
2563
|
+
return array;
|
2564
|
+
}
|
2565
|
+
|
2442
2566
|
/**
|
2443
2567
|
* The base implementation of `_.random` without support for argument juggling
|
2444
2568
|
* and returning floating-point numbers.
|
@@ -2505,7 +2629,7 @@
|
|
2505
2629
|
if (start < 0) {
|
2506
2630
|
start = -start > length ? 0 : (length + start);
|
2507
2631
|
}
|
2508
|
-
end = (
|
2632
|
+
end = (end === undefined || end > length) ? length : (+end || 0);
|
2509
2633
|
if (end < 0) {
|
2510
2634
|
end += length;
|
2511
2635
|
}
|
@@ -2564,23 +2688,19 @@
|
|
2564
2688
|
*
|
2565
2689
|
* @private
|
2566
2690
|
* @param {Array|Object|string} collection The collection to iterate over.
|
2567
|
-
* @param {string[]}
|
2568
|
-
* @param {boolean[]} orders The sort orders of `
|
2691
|
+
* @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.
|
2692
|
+
* @param {boolean[]} orders The sort orders of `iteratees`.
|
2569
2693
|
* @returns {Array} Returns the new sorted array.
|
2570
2694
|
*/
|
2571
|
-
function baseSortByOrder(collection,
|
2572
|
-
var
|
2573
|
-
|
2574
|
-
result = isLength(length) ? Array(length) : [];
|
2695
|
+
function baseSortByOrder(collection, iteratees, orders) {
|
2696
|
+
var callback = getCallback(),
|
2697
|
+
index = -1;
|
2575
2698
|
|
2576
|
-
|
2577
|
-
var length = props.length,
|
2578
|
-
criteria = Array(length);
|
2699
|
+
iteratees = arrayMap(iteratees, function(iteratee) { return callback(iteratee); });
|
2579
2700
|
|
2580
|
-
|
2581
|
-
|
2582
|
-
}
|
2583
|
-
result[++index] = { 'criteria': criteria, 'index': index, 'value': value };
|
2701
|
+
var result = baseMap(collection, function(value) {
|
2702
|
+
var criteria = arrayMap(iteratees, function(iteratee) { return iteratee(value); });
|
2703
|
+
return { 'criteria': criteria, 'index': ++index, 'value': value };
|
2584
2704
|
});
|
2585
2705
|
|
2586
2706
|
return baseSortBy(result, function(object, other) {
|
@@ -2660,7 +2780,7 @@
|
|
2660
2780
|
/**
|
2661
2781
|
* The base implementation of `_.values` and `_.valuesIn` which creates an
|
2662
2782
|
* array of `object` property values corresponding to the property names
|
2663
|
-
*
|
2783
|
+
* of `props`.
|
2664
2784
|
*
|
2665
2785
|
* @private
|
2666
2786
|
* @param {Object} object The object to query.
|
@@ -2777,7 +2897,7 @@
|
|
2777
2897
|
var low = 0,
|
2778
2898
|
high = array ? array.length : 0,
|
2779
2899
|
valIsNaN = value !== value,
|
2780
|
-
valIsUndef =
|
2900
|
+
valIsUndef = value === undefined;
|
2781
2901
|
|
2782
2902
|
while (low < high) {
|
2783
2903
|
var mid = floor((low + high) / 2),
|
@@ -2787,7 +2907,7 @@
|
|
2787
2907
|
if (valIsNaN) {
|
2788
2908
|
var setLow = isReflexive || retHighest;
|
2789
2909
|
} else if (valIsUndef) {
|
2790
|
-
setLow = isReflexive && (retHighest ||
|
2910
|
+
setLow = isReflexive && (retHighest || computed !== undefined);
|
2791
2911
|
} else {
|
2792
2912
|
setLow = retHighest ? (computed <= value) : (computed < value);
|
2793
2913
|
}
|
@@ -2814,7 +2934,7 @@
|
|
2814
2934
|
if (typeof func != 'function') {
|
2815
2935
|
return identity;
|
2816
2936
|
}
|
2817
|
-
if (
|
2937
|
+
if (thisArg === undefined) {
|
2818
2938
|
return func;
|
2819
2939
|
}
|
2820
2940
|
switch (argCount) {
|
@@ -2974,38 +3094,32 @@
|
|
2974
3094
|
* @returns {Function} Returns the new assigner function.
|
2975
3095
|
*/
|
2976
3096
|
function createAssigner(assigner) {
|
2977
|
-
return function() {
|
2978
|
-
var
|
2979
|
-
length =
|
2980
|
-
|
2981
|
-
|
2982
|
-
|
2983
|
-
return object;
|
2984
|
-
}
|
2985
|
-
var customizer = args[length - 2],
|
2986
|
-
thisArg = args[length - 1],
|
2987
|
-
guard = args[3];
|
3097
|
+
return restParam(function(object, sources) {
|
3098
|
+
var index = -1,
|
3099
|
+
length = object == null ? 0 : sources.length,
|
3100
|
+
customizer = length > 2 && sources[length - 2],
|
3101
|
+
guard = length > 2 && sources[2],
|
3102
|
+
thisArg = length > 1 && sources[length - 1];
|
2988
3103
|
|
2989
|
-
if (
|
3104
|
+
if (typeof customizer == 'function') {
|
2990
3105
|
customizer = bindCallback(customizer, thisArg, 5);
|
2991
3106
|
length -= 2;
|
2992
3107
|
} else {
|
2993
|
-
customizer =
|
3108
|
+
customizer = typeof thisArg == 'function' ? thisArg : null;
|
2994
3109
|
length -= (customizer ? 1 : 0);
|
2995
3110
|
}
|
2996
|
-
if (guard && isIterateeCall(
|
2997
|
-
customizer = length
|
2998
|
-
length =
|
3111
|
+
if (guard && isIterateeCall(sources[0], sources[1], guard)) {
|
3112
|
+
customizer = length < 3 ? null : customizer;
|
3113
|
+
length = 1;
|
2999
3114
|
}
|
3000
|
-
var index = 0;
|
3001
3115
|
while (++index < length) {
|
3002
|
-
var source =
|
3116
|
+
var source = sources[index];
|
3003
3117
|
if (source) {
|
3004
3118
|
assigner(object, source, customizer);
|
3005
3119
|
}
|
3006
3120
|
}
|
3007
3121
|
return object;
|
3008
|
-
};
|
3122
|
+
});
|
3009
3123
|
}
|
3010
3124
|
|
3011
3125
|
/**
|
@@ -3018,7 +3132,7 @@
|
|
3018
3132
|
*/
|
3019
3133
|
function createBaseEach(eachFunc, fromRight) {
|
3020
3134
|
return function(collection, iteratee) {
|
3021
|
-
var length = collection ? collection
|
3135
|
+
var length = collection ? getLength(collection) : 0;
|
3022
3136
|
if (!isLength(length)) {
|
3023
3137
|
return eachFunc(collection, iteratee);
|
3024
3138
|
}
|
@@ -3295,7 +3409,7 @@
|
|
3295
3409
|
*/
|
3296
3410
|
function createForEach(arrayFunc, eachFunc) {
|
3297
3411
|
return function(collection, iteratee, thisArg) {
|
3298
|
-
return (typeof iteratee == 'function' &&
|
3412
|
+
return (typeof iteratee == 'function' && thisArg === undefined && isArray(collection))
|
3299
3413
|
? arrayFunc(collection, iteratee)
|
3300
3414
|
: eachFunc(collection, bindCallback(iteratee, thisArg, 3));
|
3301
3415
|
};
|
@@ -3310,7 +3424,7 @@
|
|
3310
3424
|
*/
|
3311
3425
|
function createForIn(objectFunc) {
|
3312
3426
|
return function(object, iteratee, thisArg) {
|
3313
|
-
if (typeof iteratee != 'function' ||
|
3427
|
+
if (typeof iteratee != 'function' || thisArg !== undefined) {
|
3314
3428
|
iteratee = bindCallback(iteratee, thisArg, 3);
|
3315
3429
|
}
|
3316
3430
|
return objectFunc(object, iteratee, keysIn);
|
@@ -3326,7 +3440,7 @@
|
|
3326
3440
|
*/
|
3327
3441
|
function createForOwn(objectFunc) {
|
3328
3442
|
return function(object, iteratee, thisArg) {
|
3329
|
-
if (typeof iteratee != 'function' ||
|
3443
|
+
if (typeof iteratee != 'function' || thisArg !== undefined) {
|
3330
3444
|
iteratee = bindCallback(iteratee, thisArg, 3);
|
3331
3445
|
}
|
3332
3446
|
return objectFunc(object, iteratee);
|
@@ -3373,7 +3487,7 @@
|
|
3373
3487
|
function createReduce(arrayFunc, eachFunc) {
|
3374
3488
|
return function(collection, iteratee, accumulator, thisArg) {
|
3375
3489
|
var initFromArray = arguments.length < 3;
|
3376
|
-
return (typeof iteratee == 'function' &&
|
3490
|
+
return (typeof iteratee == 'function' && thisArg === undefined && isArray(collection))
|
3377
3491
|
? arrayFunc(collection, iteratee, accumulator, initFromArray)
|
3378
3492
|
: baseReduce(collection, getCallback(iteratee, thisArg, 4), accumulator, initFromArray, eachFunc);
|
3379
3493
|
};
|
@@ -3642,7 +3756,7 @@
|
|
3642
3756
|
? customizer(othValue, arrValue, index)
|
3643
3757
|
: customizer(arrValue, othValue, index);
|
3644
3758
|
}
|
3645
|
-
if (
|
3759
|
+
if (result === undefined) {
|
3646
3760
|
// Recursively compare arrays (susceptible to call stack limits).
|
3647
3761
|
if (isLoose) {
|
3648
3762
|
var othIndex = othLength;
|
@@ -3741,7 +3855,7 @@
|
|
3741
3855
|
? customizer(othValue, objValue, key)
|
3742
3856
|
: customizer(objValue, othValue, key);
|
3743
3857
|
}
|
3744
|
-
if (
|
3858
|
+
if (result === undefined) {
|
3745
3859
|
// Recursively compare objects (susceptible to call stack limits).
|
3746
3860
|
result = (objValue && objValue === othValue) || equalFunc(objValue, othValue, customizer, isLoose, stackA, stackB);
|
3747
3861
|
}
|
@@ -3866,6 +3980,29 @@
|
|
3866
3980
|
return collection ? result(collection, target, fromIndex) : result;
|
3867
3981
|
}
|
3868
3982
|
|
3983
|
+
/**
|
3984
|
+
* Gets the "length" property value of `object`.
|
3985
|
+
*
|
3986
|
+
* **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)
|
3987
|
+
* in Safari on iOS 8.1 ARM64.
|
3988
|
+
*
|
3989
|
+
* @private
|
3990
|
+
* @param {Object} object The object to query.
|
3991
|
+
* @returns {*} Returns the "length" value.
|
3992
|
+
*/
|
3993
|
+
var getLength = baseProperty('length');
|
3994
|
+
|
3995
|
+
/**
|
3996
|
+
* Creates an array of the own symbols of `object`.
|
3997
|
+
*
|
3998
|
+
* @private
|
3999
|
+
* @param {Object} object The object to query.
|
4000
|
+
* @returns {Array} Returns the array of symbols.
|
4001
|
+
*/
|
4002
|
+
var getSymbols = !getOwnPropertySymbols ? constant([]) : function(object) {
|
4003
|
+
return getOwnPropertySymbols(toObject(object));
|
4004
|
+
};
|
4005
|
+
|
3869
4006
|
/**
|
3870
4007
|
* Gets the view, applying any `transforms` to the `start` and `end` positions.
|
3871
4008
|
*
|
@@ -3934,7 +4071,6 @@
|
|
3934
4071
|
* **Note:** This function only supports cloning values with tags of
|
3935
4072
|
* `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
|
3936
4073
|
*
|
3937
|
-
*
|
3938
4074
|
* @private
|
3939
4075
|
* @param {Object} object The object to clone.
|
3940
4076
|
* @param {string} tag The `toStringTag` of the object to clone.
|
@@ -3968,6 +4104,25 @@
|
|
3968
4104
|
return result;
|
3969
4105
|
}
|
3970
4106
|
|
4107
|
+
/**
|
4108
|
+
* Invokes the method at `path` on `object`.
|
4109
|
+
*
|
4110
|
+
* @private
|
4111
|
+
* @param {Object} object The object to query.
|
4112
|
+
* @param {Array|string} path The path of the method to invoke.
|
4113
|
+
* @param {Array} args The arguments to invoke the method with.
|
4114
|
+
* @returns {*} Returns the result of the invoked method.
|
4115
|
+
*/
|
4116
|
+
function invokePath(object, path, args) {
|
4117
|
+
if (object != null && !isKey(path, object)) {
|
4118
|
+
path = toPath(path);
|
4119
|
+
object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1));
|
4120
|
+
path = last(path);
|
4121
|
+
}
|
4122
|
+
var func = object == null ? object : object[path];
|
4123
|
+
return func == null ? undefined : func.apply(object, args);
|
4124
|
+
}
|
4125
|
+
|
3971
4126
|
/**
|
3972
4127
|
* Checks if `value` is a valid array-like index.
|
3973
4128
|
*
|
@@ -3997,7 +4152,7 @@
|
|
3997
4152
|
}
|
3998
4153
|
var type = typeof index;
|
3999
4154
|
if (type == 'number') {
|
4000
|
-
var length = object
|
4155
|
+
var length = getLength(object),
|
4001
4156
|
prereq = isLength(length) && isIndex(index, length);
|
4002
4157
|
} else {
|
4003
4158
|
prereq = type == 'string' && index in object;
|
@@ -4009,6 +4164,26 @@
|
|
4009
4164
|
return false;
|
4010
4165
|
}
|
4011
4166
|
|
4167
|
+
/**
|
4168
|
+
* Checks if `value` is a property name and not a property path.
|
4169
|
+
*
|
4170
|
+
* @private
|
4171
|
+
* @param {*} value The value to check.
|
4172
|
+
* @param {Object} [object] The object to query keys on.
|
4173
|
+
* @returns {boolean} Returns `true` if `value` is a property name, else `false`.
|
4174
|
+
*/
|
4175
|
+
function isKey(value, object) {
|
4176
|
+
var type = typeof value;
|
4177
|
+
if ((type == 'string' && reIsPlainProp.test(value)) || type == 'number') {
|
4178
|
+
return true;
|
4179
|
+
}
|
4180
|
+
if (isArray(value)) {
|
4181
|
+
return false;
|
4182
|
+
}
|
4183
|
+
var result = !reIsDeepProp.test(value);
|
4184
|
+
return result || (object != null && value in toObject(object));
|
4185
|
+
}
|
4186
|
+
|
4012
4187
|
/**
|
4013
4188
|
* Checks if `func` has a lazy counterpart.
|
4014
4189
|
*
|
@@ -4118,7 +4293,7 @@
|
|
4118
4293
|
|
4119
4294
|
/**
|
4120
4295
|
* A specialized version of `_.pick` that picks `object` properties specified
|
4121
|
-
* by
|
4296
|
+
* by `props`.
|
4122
4297
|
*
|
4123
4298
|
* @private
|
4124
4299
|
* @param {Object} object The source object.
|
@@ -4244,7 +4419,7 @@
|
|
4244
4419
|
baseForIn(value, function(subValue, key) {
|
4245
4420
|
result = key;
|
4246
4421
|
});
|
4247
|
-
return
|
4422
|
+
return result === undefined || hasOwnProperty.call(value, result);
|
4248
4423
|
}
|
4249
4424
|
|
4250
4425
|
/**
|
@@ -4252,7 +4427,7 @@
|
|
4252
4427
|
* own enumerable property names of `object`.
|
4253
4428
|
*
|
4254
4429
|
* @private
|
4255
|
-
* @param {Object} object The object to
|
4430
|
+
* @param {Object} object The object to query.
|
4256
4431
|
* @returns {Array} Returns the array of property names.
|
4257
4432
|
*/
|
4258
4433
|
function shimKeys(object) {
|
@@ -4287,7 +4462,7 @@
|
|
4287
4462
|
if (value == null) {
|
4288
4463
|
return [];
|
4289
4464
|
}
|
4290
|
-
if (!isLength(value
|
4465
|
+
if (!isLength(getLength(value))) {
|
4291
4466
|
return values(value);
|
4292
4467
|
}
|
4293
4468
|
return isObject(value) ? value : Object(value);
|
@@ -4304,6 +4479,24 @@
|
|
4304
4479
|
return isObject(value) ? value : Object(value);
|
4305
4480
|
}
|
4306
4481
|
|
4482
|
+
/**
|
4483
|
+
* Converts `value` to property path array if it is not one.
|
4484
|
+
*
|
4485
|
+
* @private
|
4486
|
+
* @param {*} value The value to process.
|
4487
|
+
* @returns {Array} Returns the property path array.
|
4488
|
+
*/
|
4489
|
+
function toPath(value) {
|
4490
|
+
if (isArray(value)) {
|
4491
|
+
return value;
|
4492
|
+
}
|
4493
|
+
var result = [];
|
4494
|
+
baseToString(value).replace(rePropName, function(match, number, quote, string) {
|
4495
|
+
result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));
|
4496
|
+
});
|
4497
|
+
return result;
|
4498
|
+
}
|
4499
|
+
|
4307
4500
|
/**
|
4308
4501
|
* Creates a clone of `wrapper`.
|
4309
4502
|
*
|
@@ -4888,7 +5081,8 @@
|
|
4888
5081
|
argsLength = arguments.length,
|
4889
5082
|
caches = [],
|
4890
5083
|
indexOf = getIndexOf(),
|
4891
|
-
isCommon = indexOf == baseIndexOf
|
5084
|
+
isCommon = indexOf == baseIndexOf,
|
5085
|
+
result = [];
|
4892
5086
|
|
4893
5087
|
while (++argsIndex < argsLength) {
|
4894
5088
|
var value = arguments[argsIndex];
|
@@ -4898,10 +5092,12 @@
|
|
4898
5092
|
}
|
4899
5093
|
}
|
4900
5094
|
argsLength = args.length;
|
5095
|
+
if (argsLength < 2) {
|
5096
|
+
return result;
|
5097
|
+
}
|
4901
5098
|
var array = args[0],
|
4902
5099
|
index = -1,
|
4903
5100
|
length = array ? array.length : 0,
|
4904
|
-
result = [],
|
4905
5101
|
seen = caches[0];
|
4906
5102
|
|
4907
5103
|
outer:
|
@@ -5069,17 +5265,8 @@
|
|
5069
5265
|
array || (array = []);
|
5070
5266
|
indexes = baseFlatten(indexes);
|
5071
5267
|
|
5072
|
-
var
|
5073
|
-
|
5074
|
-
|
5075
|
-
indexes.sort(baseCompareAscending);
|
5076
|
-
while (length--) {
|
5077
|
-
var index = parseFloat(indexes[length]);
|
5078
|
-
if (index != previous && isIndex(index)) {
|
5079
|
-
var previous = index;
|
5080
|
-
splice.call(array, index, 1);
|
5081
|
-
}
|
5082
|
-
}
|
5268
|
+
var result = baseAt(array, indexes);
|
5269
|
+
basePullAt(array, indexes.sort(baseCompareAscending));
|
5083
5270
|
return result;
|
5084
5271
|
});
|
5085
5272
|
|
@@ -5123,19 +5310,23 @@
|
|
5123
5310
|
* // => [2, 4]
|
5124
5311
|
*/
|
5125
5312
|
function remove(array, predicate, thisArg) {
|
5313
|
+
var result = [];
|
5314
|
+
if (!(array && array.length)) {
|
5315
|
+
return result;
|
5316
|
+
}
|
5126
5317
|
var index = -1,
|
5127
|
-
|
5128
|
-
|
5318
|
+
indexes = [],
|
5319
|
+
length = array.length;
|
5129
5320
|
|
5130
5321
|
predicate = getCallback(predicate, thisArg, 3);
|
5131
5322
|
while (++index < length) {
|
5132
5323
|
var value = array[index];
|
5133
5324
|
if (predicate(value, index, array)) {
|
5134
5325
|
result.push(value);
|
5135
|
-
|
5136
|
-
length--;
|
5326
|
+
indexes.push(index);
|
5137
5327
|
}
|
5138
5328
|
}
|
5329
|
+
basePullAt(array, indexes);
|
5139
5330
|
return result;
|
5140
5331
|
}
|
5141
5332
|
|
@@ -5160,7 +5351,7 @@
|
|
5160
5351
|
/**
|
5161
5352
|
* Creates a slice of `array` from `start` up to, but not including, `end`.
|
5162
5353
|
*
|
5163
|
-
* **Note:** This
|
5354
|
+
* **Note:** This method is used instead of `Array#slice` to support node
|
5164
5355
|
* lists in IE < 9 and to ensure dense arrays are returned.
|
5165
5356
|
*
|
5166
5357
|
* @static
|
@@ -5459,12 +5650,13 @@
|
|
5459
5650
|
});
|
5460
5651
|
|
5461
5652
|
/**
|
5462
|
-
* Creates a duplicate-
|
5463
|
-
*
|
5464
|
-
*
|
5465
|
-
*
|
5466
|
-
*
|
5467
|
-
*
|
5653
|
+
* Creates a duplicate-free version of an array, using `SameValueZero` for
|
5654
|
+
* equality comparisons, in which only the first occurence of each element
|
5655
|
+
* is kept. Providing `true` for `isSorted` performs a faster search algorithm
|
5656
|
+
* for sorted arrays. If an iteratee function is provided it is invoked for
|
5657
|
+
* each element in the array to generate the criterion by which uniqueness
|
5658
|
+
* is computed. The `iteratee` is bound to `thisArg` and invoked with three
|
5659
|
+
* arguments: (value, index, array).
|
5468
5660
|
*
|
5469
5661
|
* If a property name is provided for `iteratee` the created `_.property`
|
5470
5662
|
* style callback returns the property value of the given element.
|
@@ -5492,8 +5684,8 @@
|
|
5492
5684
|
* @returns {Array} Returns the new duplicate-value-free array.
|
5493
5685
|
* @example
|
5494
5686
|
*
|
5495
|
-
* _.uniq([1, 2
|
5496
|
-
* // => [
|
5687
|
+
* _.uniq([2, 1, 2]);
|
5688
|
+
* // => [2, 1]
|
5497
5689
|
*
|
5498
5690
|
* // using `isSorted`
|
5499
5691
|
* _.uniq([1, 1, 2], true);
|
@@ -5943,7 +6135,7 @@
|
|
5943
6135
|
* // => ['barney', 'pebbles']
|
5944
6136
|
*/
|
5945
6137
|
var at = restParam(function(collection, props) {
|
5946
|
-
var length = collection ? collection
|
6138
|
+
var length = collection ? getLength(collection) : 0;
|
5947
6139
|
if (isLength(length)) {
|
5948
6140
|
collection = toIterable(collection);
|
5949
6141
|
}
|
@@ -6048,7 +6240,7 @@
|
|
6048
6240
|
if (thisArg && isIterateeCall(collection, predicate, thisArg)) {
|
6049
6241
|
predicate = null;
|
6050
6242
|
}
|
6051
|
-
if (typeof predicate != 'function' ||
|
6243
|
+
if (typeof predicate != 'function' || thisArg !== undefined) {
|
6052
6244
|
predicate = getCallback(predicate, thisArg, 3);
|
6053
6245
|
}
|
6054
6246
|
return func(collection, predicate);
|
@@ -6218,10 +6410,10 @@
|
|
6218
6410
|
/**
|
6219
6411
|
* Iterates over elements of `collection` invoking `iteratee` for each element.
|
6220
6412
|
* The `iteratee` is bound to `thisArg` and invoked with three arguments:
|
6221
|
-
* (value, index|key, collection).
|
6413
|
+
* (value, index|key, collection). Iteratee functions may exit iteration early
|
6222
6414
|
* by explicitly returning `false`.
|
6223
6415
|
*
|
6224
|
-
* **Note:** As with other "Collections" methods, objects with a
|
6416
|
+
* **Note:** As with other "Collections" methods, objects with a "length" property
|
6225
6417
|
* are iterated like arrays. To avoid this behavior `_.forIn` or `_.forOwn`
|
6226
6418
|
* may be used for object iteration.
|
6227
6419
|
*
|
@@ -6351,7 +6543,7 @@
|
|
6351
6543
|
* // => true
|
6352
6544
|
*/
|
6353
6545
|
function includes(collection, target, fromIndex, guard) {
|
6354
|
-
var length = collection ? collection
|
6546
|
+
var length = collection ? getLength(collection) : 0;
|
6355
6547
|
if (!isLength(length)) {
|
6356
6548
|
collection = values(collection);
|
6357
6549
|
length = collection.length;
|
@@ -6420,16 +6612,16 @@
|
|
6420
6612
|
});
|
6421
6613
|
|
6422
6614
|
/**
|
6423
|
-
* Invokes the method
|
6424
|
-
*
|
6425
|
-
*
|
6426
|
-
*
|
6615
|
+
* Invokes the method at `path` on each element in `collection`, returning
|
6616
|
+
* an array of the results of each invoked method. Any additional arguments
|
6617
|
+
* are provided to each invoked method. If `methodName` is a function it is
|
6618
|
+
* invoked for, and `this` bound to, each element in `collection`.
|
6427
6619
|
*
|
6428
6620
|
* @static
|
6429
6621
|
* @memberOf _
|
6430
6622
|
* @category Collection
|
6431
6623
|
* @param {Array|Object|string} collection The collection to iterate over.
|
6432
|
-
* @param {Function|string}
|
6624
|
+
* @param {Array|Function|string} path The path of the method to invoke or
|
6433
6625
|
* the function invoked per iteration.
|
6434
6626
|
* @param {...*} [args] The arguments to invoke the method with.
|
6435
6627
|
* @returns {Array} Returns the array of results.
|
@@ -6441,15 +6633,16 @@
|
|
6441
6633
|
* _.invoke([123, 456], String.prototype.split, '');
|
6442
6634
|
* // => [['1', '2', '3'], ['4', '5', '6']]
|
6443
6635
|
*/
|
6444
|
-
var invoke = restParam(function(collection,
|
6636
|
+
var invoke = restParam(function(collection, path, args) {
|
6445
6637
|
var index = -1,
|
6446
|
-
isFunc = typeof
|
6447
|
-
|
6638
|
+
isFunc = typeof path == 'function',
|
6639
|
+
isProp = isKey(path),
|
6640
|
+
length = getLength(collection),
|
6448
6641
|
result = isLength(length) ? Array(length) : [];
|
6449
6642
|
|
6450
6643
|
baseEach(collection, function(value) {
|
6451
|
-
var func = isFunc ?
|
6452
|
-
result[++index] = func ? func.apply(value, args) :
|
6644
|
+
var func = isFunc ? path : (isProp && value != null && value[path]);
|
6645
|
+
result[++index] = func ? func.apply(value, args) : invokePath(value, path, args);
|
6453
6646
|
});
|
6454
6647
|
return result;
|
6455
6648
|
});
|
@@ -6486,7 +6679,6 @@
|
|
6486
6679
|
* @param {Array|Object|string} collection The collection to iterate over.
|
6487
6680
|
* @param {Function|Object|string} [iteratee=_.identity] The function invoked
|
6488
6681
|
* per iteration.
|
6489
|
-
* create a `_.property` or `_.matches` style callback respectively.
|
6490
6682
|
* @param {*} [thisArg] The `this` binding of `iteratee`.
|
6491
6683
|
* @returns {Array} Returns the new mapped array.
|
6492
6684
|
* @example
|
@@ -6580,13 +6772,13 @@
|
|
6580
6772
|
}, function() { return [[], []]; });
|
6581
6773
|
|
6582
6774
|
/**
|
6583
|
-
* Gets the value of `
|
6775
|
+
* Gets the property value of `path` from all elements in `collection`.
|
6584
6776
|
*
|
6585
6777
|
* @static
|
6586
6778
|
* @memberOf _
|
6587
6779
|
* @category Collection
|
6588
6780
|
* @param {Array|Object|string} collection The collection to iterate over.
|
6589
|
-
* @param {string}
|
6781
|
+
* @param {Array|string} path The path of the property to pluck.
|
6590
6782
|
* @returns {Array} Returns the property values.
|
6591
6783
|
* @example
|
6592
6784
|
*
|
@@ -6602,8 +6794,8 @@
|
|
6602
6794
|
* _.pluck(userIndex, 'age');
|
6603
6795
|
* // => [36, 40] (iteration order is not guaranteed)
|
6604
6796
|
*/
|
6605
|
-
function pluck(collection,
|
6606
|
-
return map(collection,
|
6797
|
+
function pluck(collection, path) {
|
6798
|
+
return map(collection, property(path));
|
6607
6799
|
}
|
6608
6800
|
|
6609
6801
|
/**
|
@@ -6631,8 +6823,8 @@
|
|
6631
6823
|
* @returns {*} Returns the accumulated value.
|
6632
6824
|
* @example
|
6633
6825
|
*
|
6634
|
-
* _.reduce([1, 2], function(
|
6635
|
-
* return
|
6826
|
+
* _.reduce([1, 2], function(total, n) {
|
6827
|
+
* return total + n;
|
6636
6828
|
* });
|
6637
6829
|
* // => 3
|
6638
6830
|
*
|
@@ -6804,7 +6996,7 @@
|
|
6804
6996
|
* // => 7
|
6805
6997
|
*/
|
6806
6998
|
function size(collection) {
|
6807
|
-
var length = collection ? collection
|
6999
|
+
var length = collection ? getLength(collection) : 0;
|
6808
7000
|
return isLength(length) ? length : keys(collection).length;
|
6809
7001
|
}
|
6810
7002
|
|
@@ -6862,7 +7054,7 @@
|
|
6862
7054
|
if (thisArg && isIterateeCall(collection, predicate, thisArg)) {
|
6863
7055
|
predicate = null;
|
6864
7056
|
}
|
6865
|
-
if (typeof predicate != 'function' ||
|
7057
|
+
if (typeof predicate != 'function' || thisArg !== undefined) {
|
6866
7058
|
predicate = getCallback(predicate, thisArg, 3);
|
6867
7059
|
}
|
6868
7060
|
return func(collection, predicate);
|
@@ -6890,9 +7082,8 @@
|
|
6890
7082
|
* @memberOf _
|
6891
7083
|
* @category Collection
|
6892
7084
|
* @param {Array|Object|string} collection The collection to iterate over.
|
6893
|
-
* @param {
|
6894
|
-
*
|
6895
|
-
* used to create a `_.property` or `_.matches` style callback respectively.
|
7085
|
+
* @param {Function|Object|string} [iteratee=_.identity] The function invoked
|
7086
|
+
* per iteration.
|
6896
7087
|
* @param {*} [thisArg] The `this` binding of `iteratee`.
|
6897
7088
|
* @returns {Array} Returns the new sorted array.
|
6898
7089
|
* @example
|
@@ -6921,104 +7112,112 @@
|
|
6921
7112
|
if (collection == null) {
|
6922
7113
|
return [];
|
6923
7114
|
}
|
6924
|
-
var index = -1,
|
6925
|
-
length = collection.length,
|
6926
|
-
result = isLength(length) ? Array(length) : [];
|
6927
|
-
|
6928
7115
|
if (thisArg && isIterateeCall(collection, iteratee, thisArg)) {
|
6929
7116
|
iteratee = null;
|
6930
7117
|
}
|
7118
|
+
var index = -1;
|
6931
7119
|
iteratee = getCallback(iteratee, thisArg, 3);
|
6932
|
-
|
6933
|
-
|
7120
|
+
|
7121
|
+
var result = baseMap(collection, function(value, key, collection) {
|
7122
|
+
return { 'criteria': iteratee(value, key, collection), 'index': ++index, 'value': value };
|
6934
7123
|
});
|
6935
7124
|
return baseSortBy(result, compareAscending);
|
6936
7125
|
}
|
6937
7126
|
|
6938
7127
|
/**
|
6939
|
-
* This method is like `_.sortBy` except that it
|
6940
|
-
*
|
7128
|
+
* This method is like `_.sortBy` except that it can sort by multiple iteratees
|
7129
|
+
* or property names.
|
7130
|
+
*
|
7131
|
+
* If a property name is provided for an iteratee the created `_.property`
|
7132
|
+
* style callback returns the property value of the given element.
|
7133
|
+
*
|
7134
|
+
* If an object is provided for an iteratee the created `_.matches` style
|
7135
|
+
* callback returns `true` for elements that have the properties of the given
|
7136
|
+
* object, else `false`.
|
6941
7137
|
*
|
6942
7138
|
* @static
|
6943
7139
|
* @memberOf _
|
6944
7140
|
* @category Collection
|
6945
7141
|
* @param {Array|Object|string} collection The collection to iterate over.
|
6946
|
-
* @param {...(string|string[])}
|
6947
|
-
* specified as individual
|
7142
|
+
* @param {...(Function|Function[]|Object|Object[]|string|string[])} iteratees
|
7143
|
+
* The iteratees to sort by, specified as individual values or arrays of values.
|
6948
7144
|
* @returns {Array} Returns the new sorted array.
|
6949
7145
|
* @example
|
6950
7146
|
*
|
6951
7147
|
* var users = [
|
7148
|
+
* { 'user': 'fred', 'age': 48 },
|
6952
7149
|
* { 'user': 'barney', 'age': 36 },
|
6953
|
-
* { 'user': 'fred', 'age':
|
6954
|
-
* { 'user': 'barney', 'age':
|
6955
|
-
* { 'user': 'fred', 'age': 30 }
|
7150
|
+
* { 'user': 'fred', 'age': 42 },
|
7151
|
+
* { 'user': 'barney', 'age': 34 }
|
6956
7152
|
* ];
|
6957
7153
|
*
|
6958
7154
|
* _.map(_.sortByAll(users, ['user', 'age']), _.values);
|
6959
|
-
* // => [['barney',
|
7155
|
+
* // => [['barney', 34], ['barney', 36], ['fred', 42], ['fred', 48]]
|
7156
|
+
*
|
7157
|
+
* _.map(_.sortByAll(users, 'user', function(chr) {
|
7158
|
+
* return Math.floor(chr.age / 10);
|
7159
|
+
* }), _.values);
|
7160
|
+
* // => [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 42]]
|
6960
7161
|
*/
|
6961
|
-
|
6962
|
-
var args = arguments,
|
6963
|
-
collection = args[0],
|
6964
|
-
guard = args[3],
|
6965
|
-
index = 0,
|
6966
|
-
length = args.length - 1;
|
6967
|
-
|
7162
|
+
var sortByAll = restParam(function(collection, iteratees) {
|
6968
7163
|
if (collection == null) {
|
6969
7164
|
return [];
|
6970
7165
|
}
|
6971
|
-
var
|
6972
|
-
|
6973
|
-
|
6974
|
-
}
|
6975
|
-
if (guard && isIterateeCall(args[1], args[2], guard)) {
|
6976
|
-
props = args[1];
|
7166
|
+
var guard = iteratees[2];
|
7167
|
+
if (guard && isIterateeCall(iteratees[0], iteratees[1], guard)) {
|
7168
|
+
iteratees.length = 1;
|
6977
7169
|
}
|
6978
|
-
return baseSortByOrder(collection, baseFlatten(
|
6979
|
-
}
|
7170
|
+
return baseSortByOrder(collection, baseFlatten(iteratees), []);
|
7171
|
+
});
|
6980
7172
|
|
6981
7173
|
/**
|
6982
7174
|
* This method is like `_.sortByAll` except that it allows specifying the
|
6983
|
-
* sort orders of the
|
6984
|
-
*
|
6985
|
-
*
|
7175
|
+
* sort orders of the iteratees to sort by. A truthy value in `orders` will
|
7176
|
+
* sort the corresponding property name in ascending order while a falsey
|
7177
|
+
* value will sort it in descending order.
|
7178
|
+
*
|
7179
|
+
* If a property name is provided for an iteratee the created `_.property`
|
7180
|
+
* style callback returns the property value of the given element.
|
7181
|
+
*
|
7182
|
+
* If an object is provided for an iteratee the created `_.matches` style
|
7183
|
+
* callback returns `true` for elements that have the properties of the given
|
7184
|
+
* object, else `false`.
|
6986
7185
|
*
|
6987
7186
|
* @static
|
6988
7187
|
* @memberOf _
|
6989
7188
|
* @category Collection
|
6990
7189
|
* @param {Array|Object|string} collection The collection to iterate over.
|
6991
|
-
* @param {string[]}
|
6992
|
-
* @param {boolean[]} orders The sort orders of `
|
7190
|
+
* @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.
|
7191
|
+
* @param {boolean[]} orders The sort orders of `iteratees`.
|
6993
7192
|
* @param- {Object} [guard] Enables use as a callback for functions like `_.reduce`.
|
6994
7193
|
* @returns {Array} Returns the new sorted array.
|
6995
7194
|
* @example
|
6996
7195
|
*
|
6997
7196
|
* var users = [
|
6998
|
-
* { 'user': '
|
6999
|
-
* { 'user': '
|
7000
|
-
* { 'user': '
|
7001
|
-
* { 'user': '
|
7197
|
+
* { 'user': 'fred', 'age': 48 },
|
7198
|
+
* { 'user': 'barney', 'age': 34 },
|
7199
|
+
* { 'user': 'fred', 'age': 42 },
|
7200
|
+
* { 'user': 'barney', 'age': 36 }
|
7002
7201
|
* ];
|
7003
7202
|
*
|
7004
7203
|
* // sort by `user` in ascending order and by `age` in descending order
|
7005
7204
|
* _.map(_.sortByOrder(users, ['user', 'age'], [true, false]), _.values);
|
7006
|
-
* // => [['barney', 36], ['barney',
|
7205
|
+
* // => [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 42]]
|
7007
7206
|
*/
|
7008
|
-
function sortByOrder(collection,
|
7207
|
+
function sortByOrder(collection, iteratees, orders, guard) {
|
7009
7208
|
if (collection == null) {
|
7010
7209
|
return [];
|
7011
7210
|
}
|
7012
|
-
if (guard && isIterateeCall(
|
7211
|
+
if (guard && isIterateeCall(iteratees, orders, guard)) {
|
7013
7212
|
orders = null;
|
7014
7213
|
}
|
7015
|
-
if (!isArray(
|
7016
|
-
|
7214
|
+
if (!isArray(iteratees)) {
|
7215
|
+
iteratees = iteratees == null ? [] : [iteratees];
|
7017
7216
|
}
|
7018
7217
|
if (!isArray(orders)) {
|
7019
7218
|
orders = orders == null ? [] : [orders];
|
7020
7219
|
}
|
7021
|
-
return baseSortByOrder(collection,
|
7220
|
+
return baseSortByOrder(collection, iteratees, orders);
|
7022
7221
|
}
|
7023
7222
|
|
7024
7223
|
/**
|
@@ -7171,7 +7370,8 @@
|
|
7171
7370
|
return function() {
|
7172
7371
|
if (--n > 0) {
|
7173
7372
|
result = func.apply(this, arguments);
|
7174
|
-
}
|
7373
|
+
}
|
7374
|
+
if (n <= 1) {
|
7175
7375
|
func = null;
|
7176
7376
|
}
|
7177
7377
|
return result;
|
@@ -7186,7 +7386,7 @@
|
|
7186
7386
|
* The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,
|
7187
7387
|
* may be used as a placeholder for partially applied arguments.
|
7188
7388
|
*
|
7189
|
-
* **Note:** Unlike native `Function#bind` this method does not set the
|
7389
|
+
* **Note:** Unlike native `Function#bind` this method does not set the "length"
|
7190
7390
|
* property of bound functions.
|
7191
7391
|
*
|
7192
7392
|
* @static
|
@@ -7228,7 +7428,7 @@
|
|
7228
7428
|
* of method names. If no method names are provided all enumerable function
|
7229
7429
|
* properties, own and inherited, of `object` are bound.
|
7230
7430
|
*
|
7231
|
-
* **Note:** This method does not set the
|
7431
|
+
* **Note:** This method does not set the "length" property of bound functions.
|
7232
7432
|
*
|
7233
7433
|
* @static
|
7234
7434
|
* @memberOf _
|
@@ -7269,7 +7469,7 @@
|
|
7269
7469
|
*
|
7270
7470
|
* This method differs from `_.bind` by allowing bound functions to reference
|
7271
7471
|
* methods that may be redefined or don't yet exist.
|
7272
|
-
* See [Peter Michaux's article](http://michaux.ca/articles/lazy-function-definition-pattern)
|
7472
|
+
* See [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)
|
7273
7473
|
* for more details.
|
7274
7474
|
*
|
7275
7475
|
* The `_.bindKey.placeholder` value, which defaults to `_` in monolithic
|
@@ -7326,7 +7526,7 @@
|
|
7326
7526
|
* The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,
|
7327
7527
|
* may be used as a placeholder for provided arguments.
|
7328
7528
|
*
|
7329
|
-
* **Note:** This method does not set the
|
7529
|
+
* **Note:** This method does not set the "length" property of curried functions.
|
7330
7530
|
*
|
7331
7531
|
* @static
|
7332
7532
|
* @memberOf _
|
@@ -7365,7 +7565,7 @@
|
|
7365
7565
|
* The `_.curryRight.placeholder` value, which defaults to `_` in monolithic
|
7366
7566
|
* builds, may be used as a placeholder for provided arguments.
|
7367
7567
|
*
|
7368
|
-
* **Note:** This method does not set the
|
7568
|
+
* **Note:** This method does not set the "length" property of curried functions.
|
7369
7569
|
*
|
7370
7570
|
* @static
|
7371
7571
|
* @memberOf _
|
@@ -7777,7 +7977,7 @@
|
|
7777
7977
|
* // `initialize` invokes `createApplication` once
|
7778
7978
|
*/
|
7779
7979
|
function once(func) {
|
7780
|
-
return before(
|
7980
|
+
return before(2, func);
|
7781
7981
|
}
|
7782
7982
|
|
7783
7983
|
/**
|
@@ -7788,7 +7988,7 @@
|
|
7788
7988
|
* The `_.partial.placeholder` value, which defaults to `_` in monolithic
|
7789
7989
|
* builds, may be used as a placeholder for partially applied arguments.
|
7790
7990
|
*
|
7791
|
-
* **Note:** This method does not set the
|
7991
|
+
* **Note:** This method does not set the "length" property of partially
|
7792
7992
|
* applied functions.
|
7793
7993
|
*
|
7794
7994
|
* @static
|
@@ -7821,7 +8021,7 @@
|
|
7821
8021
|
* The `_.partialRight.placeholder` value, which defaults to `_` in monolithic
|
7822
8022
|
* builds, may be used as a placeholder for partially applied arguments.
|
7823
8023
|
*
|
7824
|
-
* **Note:** This method does not set the
|
8024
|
+
* **Note:** This method does not set the "length" property of partially
|
7825
8025
|
* applied functions.
|
7826
8026
|
*
|
7827
8027
|
* @static
|
@@ -7905,7 +8105,7 @@
|
|
7905
8105
|
if (typeof func != 'function') {
|
7906
8106
|
throw new TypeError(FUNC_ERROR_TEXT);
|
7907
8107
|
}
|
7908
|
-
start = nativeMax(
|
8108
|
+
start = nativeMax(start === undefined ? (func.length - 1) : (+start || 0), 0);
|
7909
8109
|
return function() {
|
7910
8110
|
var args = arguments,
|
7911
8111
|
index = -1,
|
@@ -8309,7 +8509,7 @@
|
|
8309
8509
|
if (value == null) {
|
8310
8510
|
return true;
|
8311
8511
|
}
|
8312
|
-
var length = value
|
8512
|
+
var length = getLength(value);
|
8313
8513
|
if (isLength(length) && (isArray(value) || isString(value) || isArguments(value) ||
|
8314
8514
|
(isObjectLike(value) && isFunction(value.splice)))) {
|
8315
8515
|
return !length;
|
@@ -8335,7 +8535,7 @@
|
|
8335
8535
|
* @category Lang
|
8336
8536
|
* @param {*} value The value to compare.
|
8337
8537
|
* @param {*} other The other value to compare.
|
8338
|
-
* @param {Function} [customizer] The function to customize
|
8538
|
+
* @param {Function} [customizer] The function to customize value comparisons.
|
8339
8539
|
* @param {*} [thisArg] The `this` binding of `customizer`.
|
8340
8540
|
* @returns {boolean} Returns `true` if the values are equivalent, else `false`.
|
8341
8541
|
* @example
|
@@ -8366,7 +8566,7 @@
|
|
8366
8566
|
return value === other;
|
8367
8567
|
}
|
8368
8568
|
var result = customizer ? customizer(value, other) : undefined;
|
8369
|
-
return
|
8569
|
+
return result === undefined ? baseIsEqual(value, other, customizer) : !!result;
|
8370
8570
|
}
|
8371
8571
|
|
8372
8572
|
/**
|
@@ -8488,7 +8688,7 @@
|
|
8488
8688
|
* @category Lang
|
8489
8689
|
* @param {Object} object The object to inspect.
|
8490
8690
|
* @param {Object} source The object of property values to match.
|
8491
|
-
* @param {Function} [customizer] The function to customize
|
8691
|
+
* @param {Function} [customizer] The function to customize value comparisons.
|
8492
8692
|
* @param {*} [thisArg] The `this` binding of `customizer`.
|
8493
8693
|
* @returns {boolean} Returns `true` if `object` is a match, else `false`.
|
8494
8694
|
* @example
|
@@ -8521,12 +8721,13 @@
|
|
8521
8721
|
return false;
|
8522
8722
|
}
|
8523
8723
|
customizer = typeof customizer == 'function' && bindCallback(customizer, thisArg, 3);
|
8724
|
+
object = toObject(object);
|
8524
8725
|
if (!customizer && length == 1) {
|
8525
8726
|
var key = props[0],
|
8526
8727
|
value = source[key];
|
8527
8728
|
|
8528
8729
|
if (isStrictComparable(value)) {
|
8529
|
-
return value === object[key] && (
|
8730
|
+
return value === object[key] && (value !== undefined || (key in object));
|
8530
8731
|
}
|
8531
8732
|
}
|
8532
8733
|
var values = Array(length),
|
@@ -8536,7 +8737,7 @@
|
|
8536
8737
|
value = values[length] = source[props[length]];
|
8537
8738
|
strictCompareFlags[length] = isStrictComparable(value);
|
8538
8739
|
}
|
8539
|
-
return baseIsMatch(
|
8740
|
+
return baseIsMatch(object, props, values, strictCompareFlags, customizer);
|
8540
8741
|
}
|
8541
8742
|
|
8542
8743
|
/**
|
@@ -8591,9 +8792,9 @@
|
|
8591
8792
|
return false;
|
8592
8793
|
}
|
8593
8794
|
if (objToString.call(value) == funcTag) {
|
8594
|
-
return
|
8795
|
+
return reIsNative.test(fnToString.call(value));
|
8595
8796
|
}
|
8596
|
-
return isObjectLike(value) &&
|
8797
|
+
return isObjectLike(value) && reIsHostCtor.test(value);
|
8597
8798
|
}
|
8598
8799
|
|
8599
8800
|
/**
|
@@ -8761,7 +8962,7 @@
|
|
8761
8962
|
* // => false
|
8762
8963
|
*/
|
8763
8964
|
function isUndefined(value) {
|
8764
|
-
return
|
8965
|
+
return value === undefined;
|
8765
8966
|
}
|
8766
8967
|
|
8767
8968
|
/**
|
@@ -8780,7 +8981,7 @@
|
|
8780
8981
|
* // => [2, 3]
|
8781
8982
|
*/
|
8782
8983
|
function toArray(value) {
|
8783
|
-
var length = value ? value
|
8984
|
+
var length = value ? getLength(value) : 0;
|
8784
8985
|
if (!isLength(length)) {
|
8785
8986
|
return values(value);
|
8786
8987
|
}
|
@@ -8826,13 +9027,17 @@
|
|
8826
9027
|
* The `customizer` is bound to `thisArg` and invoked with five arguments:
|
8827
9028
|
* (objectValue, sourceValue, key, object, source).
|
8828
9029
|
*
|
9030
|
+
* **Note:** This method mutates `object` and is based on
|
9031
|
+
* [`Object.assign`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.assign).
|
9032
|
+
*
|
9033
|
+
*
|
8829
9034
|
* @static
|
8830
9035
|
* @memberOf _
|
8831
9036
|
* @alias extend
|
8832
9037
|
* @category Object
|
8833
9038
|
* @param {Object} object The destination object.
|
8834
9039
|
* @param {...Object} [sources] The source objects.
|
8835
|
-
* @param {Function} [customizer] The function to customize
|
9040
|
+
* @param {Function} [customizer] The function to customize assigned values.
|
8836
9041
|
* @param {*} [thisArg] The `this` binding of `customizer`.
|
8837
9042
|
* @returns {Object} Returns `object`.
|
8838
9043
|
* @example
|
@@ -8842,13 +9047,17 @@
|
|
8842
9047
|
*
|
8843
9048
|
* // using a customizer callback
|
8844
9049
|
* var defaults = _.partialRight(_.assign, function(value, other) {
|
8845
|
-
* return
|
9050
|
+
* return _.isUndefined(value) ? other : value;
|
8846
9051
|
* });
|
8847
9052
|
*
|
8848
9053
|
* defaults({ 'user': 'barney' }, { 'age': 36 }, { 'user': 'fred' });
|
8849
9054
|
* // => { 'user': 'barney', 'age': 36 }
|
8850
9055
|
*/
|
8851
|
-
var assign = createAssigner(
|
9056
|
+
var assign = createAssigner(function(object, source, customizer) {
|
9057
|
+
return customizer
|
9058
|
+
? assignWith(object, source, customizer)
|
9059
|
+
: baseAssign(object, source);
|
9060
|
+
});
|
8852
9061
|
|
8853
9062
|
/**
|
8854
9063
|
* Creates an object that inherits from the given `prototype` object. If a
|
@@ -8889,7 +9098,7 @@
|
|
8889
9098
|
if (guard && isIterateeCall(prototype, properties, guard)) {
|
8890
9099
|
properties = null;
|
8891
9100
|
}
|
8892
|
-
return properties ?
|
9101
|
+
return properties ? baseAssign(result, properties) : result;
|
8893
9102
|
}
|
8894
9103
|
|
8895
9104
|
/**
|
@@ -8897,6 +9106,8 @@
|
|
8897
9106
|
* object for all destination properties that resolve to `undefined`. Once a
|
8898
9107
|
* property is set, additional values of the same property are ignored.
|
8899
9108
|
*
|
9109
|
+
* **Note:** This method mutates `object`.
|
9110
|
+
*
|
8900
9111
|
* @static
|
8901
9112
|
* @memberOf _
|
8902
9113
|
* @category Object
|
@@ -9020,7 +9231,7 @@
|
|
9020
9231
|
/**
|
9021
9232
|
* Iterates over own and inherited enumerable properties of an object invoking
|
9022
9233
|
* `iteratee` for each property. The `iteratee` is bound to `thisArg` and invoked
|
9023
|
-
* with three arguments: (value, key, object).
|
9234
|
+
* with three arguments: (value, key, object). Iteratee functions may exit
|
9024
9235
|
* iteration early by explicitly returning `false`.
|
9025
9236
|
*
|
9026
9237
|
* @static
|
@@ -9076,7 +9287,7 @@
|
|
9076
9287
|
/**
|
9077
9288
|
* Iterates over own enumerable properties of an object invoking `iteratee`
|
9078
9289
|
* for each property. The `iteratee` is bound to `thisArg` and invoked with
|
9079
|
-
* three arguments: (value, key, object).
|
9290
|
+
* three arguments: (value, key, object). Iteratee functions may exit iteration
|
9080
9291
|
* early by explicitly returning `false`.
|
9081
9292
|
*
|
9082
9293
|
* @static
|
@@ -9149,24 +9360,68 @@
|
|
9149
9360
|
}
|
9150
9361
|
|
9151
9362
|
/**
|
9152
|
-
*
|
9153
|
-
*
|
9363
|
+
* Gets the property value of `path` on `object`. If the resolved value is
|
9364
|
+
* `undefined` the `defaultValue` is used in its place.
|
9154
9365
|
*
|
9155
9366
|
* @static
|
9156
9367
|
* @memberOf _
|
9157
9368
|
* @category Object
|
9158
|
-
* @param {Object} object The object to
|
9159
|
-
* @param {string}
|
9160
|
-
* @
|
9369
|
+
* @param {Object} object The object to query.
|
9370
|
+
* @param {Array|string} path The path of the property to get.
|
9371
|
+
* @param {*} [defaultValue] The value returned if the resolved value is `undefined`.
|
9372
|
+
* @returns {*} Returns the resolved value.
|
9161
9373
|
* @example
|
9162
9374
|
*
|
9163
|
-
* var object = { 'a':
|
9375
|
+
* var object = { 'a': [{ 'b': { 'c': 3 } }] };
|
9164
9376
|
*
|
9165
|
-
* _.
|
9377
|
+
* _.get(object, 'a[0].b.c');
|
9378
|
+
* // => 3
|
9379
|
+
*
|
9380
|
+
* _.get(object, ['a', '0', 'b', 'c']);
|
9381
|
+
* // => 3
|
9382
|
+
*
|
9383
|
+
* _.get(object, 'a.b.c', 'default');
|
9384
|
+
* // => 'default'
|
9385
|
+
*/
|
9386
|
+
function get(object, path, defaultValue) {
|
9387
|
+
var result = object == null ? undefined : baseGet(object, toPath(path), path + '');
|
9388
|
+
return result === undefined ? defaultValue : result;
|
9389
|
+
}
|
9390
|
+
|
9391
|
+
/**
|
9392
|
+
* Checks if `path` is a direct property.
|
9393
|
+
*
|
9394
|
+
* @static
|
9395
|
+
* @memberOf _
|
9396
|
+
* @category Object
|
9397
|
+
* @param {Object} object The object to query.
|
9398
|
+
* @param {Array|string} path The path to check.
|
9399
|
+
* @returns {boolean} Returns `true` if `path` is a direct property, else `false`.
|
9400
|
+
* @example
|
9401
|
+
*
|
9402
|
+
* var object = { 'a': { 'b': { 'c': 3 } } };
|
9403
|
+
*
|
9404
|
+
* _.has(object, 'a');
|
9405
|
+
* // => true
|
9406
|
+
*
|
9407
|
+
* _.has(object, 'a.b.c');
|
9408
|
+
* // => true
|
9409
|
+
*
|
9410
|
+
* _.has(object, ['a', 'b', 'c']);
|
9166
9411
|
* // => true
|
9167
9412
|
*/
|
9168
|
-
function has(object,
|
9169
|
-
|
9413
|
+
function has(object, path) {
|
9414
|
+
if (object == null) {
|
9415
|
+
return false;
|
9416
|
+
}
|
9417
|
+
var result = hasOwnProperty.call(object, path);
|
9418
|
+
if (!result && !isKey(path)) {
|
9419
|
+
path = toPath(path);
|
9420
|
+
object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1));
|
9421
|
+
path = last(path);
|
9422
|
+
result = object != null && hasOwnProperty.call(object, path);
|
9423
|
+
}
|
9424
|
+
return result;
|
9170
9425
|
}
|
9171
9426
|
|
9172
9427
|
/**
|
@@ -9229,7 +9484,7 @@
|
|
9229
9484
|
* @static
|
9230
9485
|
* @memberOf _
|
9231
9486
|
* @category Object
|
9232
|
-
* @param {Object} object The object to
|
9487
|
+
* @param {Object} object The object to query.
|
9233
9488
|
* @returns {Array} Returns the array of property names.
|
9234
9489
|
* @example
|
9235
9490
|
*
|
@@ -9252,7 +9507,7 @@
|
|
9252
9507
|
length = object.length;
|
9253
9508
|
}
|
9254
9509
|
if ((typeof Ctor == 'function' && Ctor.prototype === object) ||
|
9255
|
-
(typeof object != 'function' &&
|
9510
|
+
(typeof object != 'function' && isLength(length))) {
|
9256
9511
|
return shimKeys(object);
|
9257
9512
|
}
|
9258
9513
|
return isObject(object) ? nativeKeys(object) : [];
|
@@ -9266,7 +9521,7 @@
|
|
9266
9521
|
* @static
|
9267
9522
|
* @memberOf _
|
9268
9523
|
* @category Object
|
9269
|
-
* @param {Object} object The object to
|
9524
|
+
* @param {Object} object The object to query.
|
9270
9525
|
* @returns {Array} Returns the array of property names.
|
9271
9526
|
* @example
|
9272
9527
|
*
|
@@ -9374,7 +9629,7 @@
|
|
9374
9629
|
* @category Object
|
9375
9630
|
* @param {Object} object The destination object.
|
9376
9631
|
* @param {...Object} [sources] The source objects.
|
9377
|
-
* @param {Function} [customizer] The function to customize
|
9632
|
+
* @param {Function} [customizer] The function to customize assigned values.
|
9378
9633
|
* @param {*} [thisArg] The `this` binding of `customizer`.
|
9379
9634
|
* @returns {Object} Returns `object`.
|
9380
9635
|
* @example
|
@@ -9459,7 +9714,7 @@
|
|
9459
9714
|
* @static
|
9460
9715
|
* @memberOf _
|
9461
9716
|
* @category Object
|
9462
|
-
* @param {Object} object The object to
|
9717
|
+
* @param {Object} object The object to query.
|
9463
9718
|
* @returns {Array} Returns the new array of key-value pairs.
|
9464
9719
|
* @example
|
9465
9720
|
*
|
@@ -9515,41 +9770,93 @@
|
|
9515
9770
|
});
|
9516
9771
|
|
9517
9772
|
/**
|
9518
|
-
*
|
9519
|
-
*
|
9520
|
-
* is returned
|
9521
|
-
* `undefined` the `defaultValue` is used in its place.
|
9773
|
+
* This method is like `_.get` except that if the resolved value is a function
|
9774
|
+
* it is invoked with the `this` binding of its parent object and its result
|
9775
|
+
* is returned.
|
9522
9776
|
*
|
9523
9777
|
* @static
|
9524
9778
|
* @memberOf _
|
9525
9779
|
* @category Object
|
9526
9780
|
* @param {Object} object The object to query.
|
9527
|
-
* @param {string}
|
9528
|
-
* @param {*} [defaultValue] The value returned if the
|
9529
|
-
* resolves to `undefined`.
|
9781
|
+
* @param {Array|string} path The path of the property to resolve.
|
9782
|
+
* @param {*} [defaultValue] The value returned if the resolved value is `undefined`.
|
9530
9783
|
* @returns {*} Returns the resolved value.
|
9531
9784
|
* @example
|
9532
9785
|
*
|
9533
|
-
* var object = { '
|
9786
|
+
* var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };
|
9534
9787
|
*
|
9535
|
-
* _.result(object, '
|
9536
|
-
* // =>
|
9788
|
+
* _.result(object, 'a[0].b.c1');
|
9789
|
+
* // => 3
|
9537
9790
|
*
|
9538
|
-
* _.result(object, '
|
9539
|
-
* // =>
|
9791
|
+
* _.result(object, 'a[0].b.c2');
|
9792
|
+
* // => 4
|
9540
9793
|
*
|
9541
|
-
* _.result(object, '
|
9542
|
-
* // => '
|
9794
|
+
* _.result(object, 'a.b.c', 'default');
|
9795
|
+
* // => 'default'
|
9543
9796
|
*
|
9544
|
-
* _.result(object, '
|
9545
|
-
* // => '
|
9797
|
+
* _.result(object, 'a.b.c', _.constant('default'));
|
9798
|
+
* // => 'default'
|
9546
9799
|
*/
|
9547
|
-
function result(object,
|
9548
|
-
var
|
9549
|
-
if (
|
9550
|
-
|
9800
|
+
function result(object, path, defaultValue) {
|
9801
|
+
var result = object == null ? undefined : object[path];
|
9802
|
+
if (result === undefined) {
|
9803
|
+
if (object != null && !isKey(path, object)) {
|
9804
|
+
path = toPath(path);
|
9805
|
+
object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1));
|
9806
|
+
result = object == null ? undefined : object[last(path)];
|
9807
|
+
}
|
9808
|
+
result = result === undefined ? defaultValue : result;
|
9551
9809
|
}
|
9552
|
-
return isFunction(
|
9810
|
+
return isFunction(result) ? result.call(object) : result;
|
9811
|
+
}
|
9812
|
+
|
9813
|
+
/**
|
9814
|
+
* Sets the property value of `path` on `object`. If a portion of `path`
|
9815
|
+
* does not exist it is created.
|
9816
|
+
*
|
9817
|
+
* @static
|
9818
|
+
* @memberOf _
|
9819
|
+
* @category Object
|
9820
|
+
* @param {Object} object The object to augment.
|
9821
|
+
* @param {Array|string} path The path of the property to set.
|
9822
|
+
* @param {*} value The value to set.
|
9823
|
+
* @returns {Object} Returns `object`.
|
9824
|
+
* @example
|
9825
|
+
*
|
9826
|
+
* var object = { 'a': [{ 'b': { 'c': 3 } }] };
|
9827
|
+
*
|
9828
|
+
* _.set(object, 'a[0].b.c', 4);
|
9829
|
+
* console.log(object.a[0].b.c);
|
9830
|
+
* // => 4
|
9831
|
+
*
|
9832
|
+
* _.set(object, 'x[0].y.z', 5);
|
9833
|
+
* console.log(object.x[0].y.z);
|
9834
|
+
* // => 5
|
9835
|
+
*/
|
9836
|
+
function set(object, path, value) {
|
9837
|
+
if (object == null) {
|
9838
|
+
return object;
|
9839
|
+
}
|
9840
|
+
var pathKey = (path + '');
|
9841
|
+
path = (object[pathKey] != null || isKey(path, object)) ? [pathKey] : toPath(path);
|
9842
|
+
|
9843
|
+
var index = -1,
|
9844
|
+
length = path.length,
|
9845
|
+
endIndex = length - 1,
|
9846
|
+
nested = object;
|
9847
|
+
|
9848
|
+
while (nested != null && ++index < length) {
|
9849
|
+
var key = path[index];
|
9850
|
+
if (isObject(nested)) {
|
9851
|
+
if (index == endIndex) {
|
9852
|
+
nested[key] = value;
|
9853
|
+
} else if (nested[key] == null) {
|
9854
|
+
nested[key] = isIndex(path[index + 1]) ? [] : {};
|
9855
|
+
}
|
9856
|
+
}
|
9857
|
+
nested = nested[key];
|
9858
|
+
}
|
9859
|
+
return object;
|
9553
9860
|
}
|
9554
9861
|
|
9555
9862
|
/**
|
@@ -9557,7 +9864,7 @@
|
|
9557
9864
|
* `accumulator` object which is the result of running each of its own enumerable
|
9558
9865
|
* properties through `iteratee`, with each invocation potentially mutating
|
9559
9866
|
* the `accumulator` object. The `iteratee` is bound to `thisArg` and invoked
|
9560
|
-
* with four arguments: (accumulator, value, key, object).
|
9867
|
+
* with four arguments: (accumulator, value, key, object). Iteratee functions
|
9561
9868
|
* may exit iteration early by explicitly returning `false`.
|
9562
9869
|
*
|
9563
9870
|
* @static
|
@@ -9700,7 +10007,7 @@
|
|
9700
10007
|
} else {
|
9701
10008
|
end = +end || 0;
|
9702
10009
|
}
|
9703
|
-
return value >= start && value < end;
|
10010
|
+
return value >= nativeMin(start, end) && value < nativeMax(start, end);
|
9704
10011
|
}
|
9705
10012
|
|
9706
10013
|
/**
|
@@ -9825,7 +10132,7 @@
|
|
9825
10132
|
*/
|
9826
10133
|
function deburr(string) {
|
9827
10134
|
string = baseToString(string);
|
9828
|
-
return string && string.replace(reLatin1, deburrLetter).replace(
|
10135
|
+
return string && string.replace(reLatin1, deburrLetter).replace(reComboMark, '');
|
9829
10136
|
}
|
9830
10137
|
|
9831
10138
|
/**
|
@@ -9854,7 +10161,7 @@
|
|
9854
10161
|
target = (target + '');
|
9855
10162
|
|
9856
10163
|
var length = string.length;
|
9857
|
-
position =
|
10164
|
+
position = position === undefined
|
9858
10165
|
? length
|
9859
10166
|
: nativeMin(position < 0 ? 0 : (+position || 0), length);
|
9860
10167
|
|
@@ -9876,9 +10183,10 @@
|
|
9876
10183
|
* (under "semi-related fun fact") for more details.
|
9877
10184
|
*
|
9878
10185
|
* Backticks are escaped because in Internet Explorer < 9, they can break out
|
9879
|
-
* of attribute values or HTML comments. See [#
|
9880
|
-
* [#
|
9881
|
-
* the [HTML5 Security Cheatsheet](https://html5sec.org/)
|
10186
|
+
* of attribute values or HTML comments. See [#59](https://html5sec.org/#59),
|
10187
|
+
* [#102](https://html5sec.org/#102), [#108](https://html5sec.org/#108), and
|
10188
|
+
* [#133](https://html5sec.org/#133) of the [HTML5 Security Cheatsheet](https://html5sec.org/)
|
10189
|
+
* for more details.
|
9882
10190
|
*
|
9883
10191
|
* When working with HTML you should always [quote attribute values](http://wonko.com/post/html-escaping)
|
9884
10192
|
* to reduce XSS vectors.
|
@@ -10072,7 +10380,7 @@
|
|
10072
10380
|
radix = +radix;
|
10073
10381
|
}
|
10074
10382
|
string = trim(string);
|
10075
|
-
return nativeParseInt(string, radix || (
|
10383
|
+
return nativeParseInt(string, radix || (reHasHexPrefix.test(string) ? 16 : 10));
|
10076
10384
|
};
|
10077
10385
|
}
|
10078
10386
|
|
@@ -10297,9 +10605,9 @@
|
|
10297
10605
|
options = otherOptions = null;
|
10298
10606
|
}
|
10299
10607
|
string = baseToString(string);
|
10300
|
-
options =
|
10608
|
+
options = assignWith(baseAssign({}, otherOptions || options), settings, assignOwnDefaults);
|
10301
10609
|
|
10302
|
-
var imports =
|
10610
|
+
var imports = assignWith(baseAssign({}, options.imports), settings.imports, assignOwnDefaults),
|
10303
10611
|
importsKeys = keys(imports),
|
10304
10612
|
importsValues = baseValues(imports, importsKeys);
|
10305
10613
|
|
@@ -10703,9 +11011,7 @@
|
|
10703
11011
|
if (guard && isIterateeCall(func, thisArg, guard)) {
|
10704
11012
|
thisArg = null;
|
10705
11013
|
}
|
10706
|
-
return
|
10707
|
-
? matches(func)
|
10708
|
-
: baseCallback(func, thisArg);
|
11014
|
+
return baseCallback(func, thisArg);
|
10709
11015
|
}
|
10710
11016
|
|
10711
11017
|
/**
|
@@ -10779,7 +11085,7 @@
|
|
10779
11085
|
}
|
10780
11086
|
|
10781
11087
|
/**
|
10782
|
-
* Creates a function which compares the property value of `
|
11088
|
+
* Creates a function which compares the property value of `path` on a given
|
10783
11089
|
* object to `value`.
|
10784
11090
|
*
|
10785
11091
|
* **Note:** This method supports comparing arrays, booleans, `Date` objects,
|
@@ -10789,7 +11095,7 @@
|
|
10789
11095
|
* @static
|
10790
11096
|
* @memberOf _
|
10791
11097
|
* @category Utility
|
10792
|
-
* @param {string}
|
11098
|
+
* @param {Array|string} path The path of the property to get.
|
10793
11099
|
* @param {*} value The value to compare.
|
10794
11100
|
* @returns {Function} Returns the new function.
|
10795
11101
|
* @example
|
@@ -10802,22 +11108,75 @@
|
|
10802
11108
|
* _.find(users, _.matchesProperty('user', 'fred'));
|
10803
11109
|
* // => { 'user': 'fred' }
|
10804
11110
|
*/
|
10805
|
-
function matchesProperty(
|
10806
|
-
return baseMatchesProperty(
|
11111
|
+
function matchesProperty(path, value) {
|
11112
|
+
return baseMatchesProperty(path, baseClone(value, true));
|
10807
11113
|
}
|
10808
11114
|
|
11115
|
+
/**
|
11116
|
+
* Creates a function which invokes the method at `path` on a given object.
|
11117
|
+
*
|
11118
|
+
* @static
|
11119
|
+
* @memberOf _
|
11120
|
+
* @category Utility
|
11121
|
+
* @param {Array|string} path The path of the method to invoke.
|
11122
|
+
* @returns {Function} Returns the new function.
|
11123
|
+
* @example
|
11124
|
+
*
|
11125
|
+
* var objects = [
|
11126
|
+
* { 'a': { 'b': { 'c': _.constant(2) } } },
|
11127
|
+
* { 'a': { 'b': { 'c': _.constant(1) } } }
|
11128
|
+
* ];
|
11129
|
+
*
|
11130
|
+
* _.map(objects, _.method('a.b.c'));
|
11131
|
+
* // => [2, 1]
|
11132
|
+
*
|
11133
|
+
* _.invoke(_.sortBy(objects, _.method(['a', 'b', 'c'])), 'a.b.c');
|
11134
|
+
* // => [1, 2]
|
11135
|
+
*/
|
11136
|
+
var method = restParam(function(path, args) {
|
11137
|
+
return function(object) {
|
11138
|
+
return invokePath(object, path, args);
|
11139
|
+
}
|
11140
|
+
});
|
11141
|
+
|
11142
|
+
/**
|
11143
|
+
* The opposite of `_.method`; this method creates a function which invokes
|
11144
|
+
* the method at a given path on `object`.
|
11145
|
+
*
|
11146
|
+
* @static
|
11147
|
+
* @memberOf _
|
11148
|
+
* @category Utility
|
11149
|
+
* @param {Object} object The object to query.
|
11150
|
+
* @returns {Function} Returns the new function.
|
11151
|
+
* @example
|
11152
|
+
*
|
11153
|
+
* var array = _.times(3, _.constant),
|
11154
|
+
* object = { 'a': array, 'b': array, 'c': array };
|
11155
|
+
*
|
11156
|
+
* _.map(['a[2]', 'c[0]'], _.methodOf(object));
|
11157
|
+
* // => [2, 0]
|
11158
|
+
*
|
11159
|
+
* _.map([['a', '2'], ['c', '0']], _.methodOf(object));
|
11160
|
+
* // => [2, 0]
|
11161
|
+
*/
|
11162
|
+
var methodOf = restParam(function(object, args) {
|
11163
|
+
return function(path) {
|
11164
|
+
return invokePath(object, path, args);
|
11165
|
+
};
|
11166
|
+
});
|
11167
|
+
|
10809
11168
|
/**
|
10810
11169
|
* Adds all own enumerable function properties of a source object to the
|
10811
11170
|
* destination object. If `object` is a function then methods are added to
|
10812
11171
|
* its prototype as well.
|
10813
11172
|
*
|
10814
|
-
* **Note:** Use `_.runInContext` to create a pristine `lodash` function
|
10815
|
-
*
|
11173
|
+
* **Note:** Use `_.runInContext` to create a pristine `lodash` function to
|
11174
|
+
* avoid conflicts caused by modifying the original.
|
10816
11175
|
*
|
10817
11176
|
* @static
|
10818
11177
|
* @memberOf _
|
10819
11178
|
* @category Utility
|
10820
|
-
* @param {Function|Object} [object=
|
11179
|
+
* @param {Function|Object} [object=lodash] The destination object.
|
10821
11180
|
* @param {Object} source The object of functions to add.
|
10822
11181
|
* @param {Object} [options] The options object.
|
10823
11182
|
* @param {boolean} [options.chain=true] Specify whether the functions added
|
@@ -10934,61 +11293,61 @@
|
|
10934
11293
|
}
|
10935
11294
|
|
10936
11295
|
/**
|
10937
|
-
* Creates a function which returns the property value
|
11296
|
+
* Creates a function which returns the property value at `path` on a
|
11297
|
+
* given object.
|
10938
11298
|
*
|
10939
11299
|
* @static
|
10940
11300
|
* @memberOf _
|
10941
11301
|
* @category Utility
|
10942
|
-
* @param {string}
|
11302
|
+
* @param {Array|string} path The path of the property to get.
|
10943
11303
|
* @returns {Function} Returns the new function.
|
10944
11304
|
* @example
|
10945
11305
|
*
|
10946
|
-
* var
|
10947
|
-
* { '
|
10948
|
-
* { '
|
11306
|
+
* var objects = [
|
11307
|
+
* { 'a': { 'b': { 'c': 2 } } },
|
11308
|
+
* { 'a': { 'b': { 'c': 1 } } }
|
10949
11309
|
* ];
|
10950
11310
|
*
|
10951
|
-
*
|
10952
|
-
*
|
10953
|
-
* _.map(users, getName);
|
10954
|
-
* // => ['fred', 'barney']
|
11311
|
+
* _.map(objects, _.property('a.b.c'));
|
11312
|
+
* // => [2, 1]
|
10955
11313
|
*
|
10956
|
-
* _.pluck(_.sortBy(
|
10957
|
-
* // => [
|
11314
|
+
* _.pluck(_.sortBy(objects, _.property(['a', 'b', 'c'])), 'a.b.c');
|
11315
|
+
* // => [1, 2]
|
10958
11316
|
*/
|
10959
|
-
function property(
|
10960
|
-
return baseProperty(
|
11317
|
+
function property(path) {
|
11318
|
+
return isKey(path) ? baseProperty(path) : basePropertyDeep(path);
|
10961
11319
|
}
|
10962
11320
|
|
10963
11321
|
/**
|
10964
11322
|
* The opposite of `_.property`; this method creates a function which returns
|
10965
|
-
* the property value
|
11323
|
+
* the property value at a given path on `object`.
|
10966
11324
|
*
|
10967
11325
|
* @static
|
10968
11326
|
* @memberOf _
|
10969
11327
|
* @category Utility
|
10970
|
-
* @param {Object} object The object to
|
11328
|
+
* @param {Object} object The object to query.
|
10971
11329
|
* @returns {Function} Returns the new function.
|
10972
11330
|
* @example
|
10973
11331
|
*
|
10974
|
-
* var
|
11332
|
+
* var array = [0, 1, 2],
|
11333
|
+
* object = { 'a': array, 'b': array, 'c': array };
|
10975
11334
|
*
|
10976
|
-
* _.map(['a', 'c'], _.propertyOf(object));
|
10977
|
-
* // => [
|
11335
|
+
* _.map(['a[2]', 'c[0]'], _.propertyOf(object));
|
11336
|
+
* // => [2, 0]
|
10978
11337
|
*
|
10979
|
-
* _.
|
10980
|
-
* // => [
|
11338
|
+
* _.map([['a', '2'], ['c', '0']], _.propertyOf(object));
|
11339
|
+
* // => [2, 0]
|
10981
11340
|
*/
|
10982
11341
|
function propertyOf(object) {
|
10983
|
-
return function(
|
10984
|
-
return object
|
11342
|
+
return function(path) {
|
11343
|
+
return baseGet(object, toPath(path), path + '');
|
10985
11344
|
};
|
10986
11345
|
}
|
10987
11346
|
|
10988
11347
|
/**
|
10989
11348
|
* Creates an array of numbers (positive and/or negative) progressing from
|
10990
11349
|
* `start` up to, but not including, `end`. If `end` is not specified it is
|
10991
|
-
* set to `start` with `start` then set to `0`. If `
|
11350
|
+
* set to `start` with `start` then set to `0`. If `end` is less than `start`
|
10992
11351
|
* a zero-length range is created unless a negative `step` is specified.
|
10993
11352
|
*
|
10994
11353
|
* @static
|
@@ -11064,7 +11423,7 @@
|
|
11064
11423
|
* _.times(3, function(n) {
|
11065
11424
|
* mage.castSpell(n);
|
11066
11425
|
* });
|
11067
|
-
* // => invokes `mage.castSpell(n)` three times with `n` of `0`, `1`, and `2`
|
11426
|
+
* // => invokes `mage.castSpell(n)` three times with `n` of `0`, `1`, and `2`
|
11068
11427
|
*
|
11069
11428
|
* _.times(3, function(n) {
|
11070
11429
|
* this.cast(n);
|
@@ -11131,7 +11490,7 @@
|
|
11131
11490
|
* // => 10
|
11132
11491
|
*/
|
11133
11492
|
function add(augend, addend) {
|
11134
|
-
return augend + addend;
|
11493
|
+
return (+augend || 0) + (+addend || 0);
|
11135
11494
|
}
|
11136
11495
|
|
11137
11496
|
/**
|
@@ -11357,6 +11716,8 @@
|
|
11357
11716
|
lodash.matchesProperty = matchesProperty;
|
11358
11717
|
lodash.memoize = memoize;
|
11359
11718
|
lodash.merge = merge;
|
11719
|
+
lodash.method = method;
|
11720
|
+
lodash.methodOf = methodOf;
|
11360
11721
|
lodash.mixin = mixin;
|
11361
11722
|
lodash.negate = negate;
|
11362
11723
|
lodash.omit = omit;
|
@@ -11377,6 +11738,7 @@
|
|
11377
11738
|
lodash.remove = remove;
|
11378
11739
|
lodash.rest = rest;
|
11379
11740
|
lodash.restParam = restParam;
|
11741
|
+
lodash.set = set;
|
11380
11742
|
lodash.shuffle = shuffle;
|
11381
11743
|
lodash.slice = slice;
|
11382
11744
|
lodash.sortBy = sortBy;
|
@@ -11445,6 +11807,7 @@
|
|
11445
11807
|
lodash.findLastKey = findLastKey;
|
11446
11808
|
lodash.findWhere = findWhere;
|
11447
11809
|
lodash.first = first;
|
11810
|
+
lodash.get = get;
|
11448
11811
|
lodash.has = has;
|
11449
11812
|
lodash.identity = identity;
|
11450
11813
|
lodash.includes = includes;
|
@@ -11633,7 +11996,7 @@
|
|
11633
11996
|
// Add `LazyWrapper` methods for `_.pluck` and `_.where`.
|
11634
11997
|
arrayEach(['pluck', 'where'], function(methodName, index) {
|
11635
11998
|
var operationName = index ? 'filter' : 'map',
|
11636
|
-
createCallback = index ? baseMatches :
|
11999
|
+
createCallback = index ? baseMatches : property;
|
11637
12000
|
|
11638
12001
|
LazyWrapper.prototype[methodName] = function(value) {
|
11639
12002
|
return this[operationName](createCallback(value));
|
@@ -11655,7 +12018,7 @@
|
|
11655
12018
|
start = start == null ? 0 : (+start || 0);
|
11656
12019
|
var result = start < 0 ? this.takeRight(-start) : this.drop(start);
|
11657
12020
|
|
11658
|
-
if (
|
12021
|
+
if (end !== undefined) {
|
11659
12022
|
end = (+end || 0);
|
11660
12023
|
result = end < 0 ? result.dropRight(-end) : result.take(end - start);
|
11661
12024
|
}
|
@@ -11686,7 +12049,7 @@
|
|
11686
12049
|
useLazy = isLazy || isArray(value);
|
11687
12050
|
|
11688
12051
|
if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {
|
11689
|
-
// avoid lazy use if the iteratee has a
|
12052
|
+
// avoid lazy use if the iteratee has a "length" value other than `1`
|
11690
12053
|
isLazy = useLazy = false;
|
11691
12054
|
}
|
11692
12055
|
var onlyLazy = isLazy && !isHybrid;
|