lodash-rails 3.6.0 → 3.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,93 +1,145 @@
1
1
  /**
2
2
  * @license
3
- * lodash 3.6.0 (Custom Build) lodash.com/license | Underscore.js 1.8.2 underscorejs.org/LICENSE
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||typeof n=="undefined"&&e)return 1;if(n<t||!e||typeof t=="undefined"&&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)););return r
7
- }function f(n,t){for(var r=n.length;r--&&-1<t.indexOf(n.charAt(r)););return r}function a(t,r){return n(t.a,r.a)||t.b-r.b}function c(n){return Ut[n]}function l(n){return Ft[n]}function s(n){return"\\"+Lt[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)}function g(n,t){for(var r=-1,e=n.length,u=-1,o=[];++r<e;)n[r]===t&&(n[r]=P,o[++u]=r);
8
- return o}function v(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 Wt[n]}function m(_){function Ut(n){if(h(n)&&!(yi(n)||n instanceof Nt)){if(n instanceof Wt)return n;if(Pu.call(n,"__chain__")&&Pu.call(n,"__wrapped__"))return ke(n)}return new Wt(n)}function Ft(){}function Wt(n,t,r){this.__wrapped__=n,this.__actions__=r||[],this.__chain__=!!t}function Nt(n){this.__wrapped__=n,this.__actions__=null,this.__dir__=1,this.__filtered__=false,this.__iteratees__=null,this.__takeCount__=go,this.__views__=null
9
- }function Lt(){this.__data__={}}function $t(n){var t=n?n.length:0;for(this.data={hash:oo(null),set:new Hu};t--;)this.push(n[t])}function Pt(n,t){var r=n.data;return(typeof t=="string"||nu(t)?r.set.has(t):r.hash[t])?0:-1}function Bt(n,t){var r=-1,e=n.length;for(t||(t=xu(e));++r<e;)t[r]=n[r];return t}function zt(n,t){for(var r=-1,e=n.length;++r<e&&false!==t(n[r],r,n););return n}function Kt(n,t){for(var r=-1,e=n.length;++r<e;)if(!t(n[r],r,n))return false;return true}function Vt(n,t){for(var r=-1,e=n.length,u=-1,o=[];++r<e;){var i=n[r];
10
- t(i,r,n)&&(o[++u]=i)}return o}function Yt(n,t){for(var r=-1,e=n.length,u=xu(e);++r<e;)u[r]=t(n[r],r,n);return u}function Zt(n){for(var t=-1,r=n.length,e=_o;++t<r;){var u=n[t];u>e&&(e=u)}return e}function Gt(n,t){for(var r=-1,e=n.length;++r<e;)if(t(n[r],r,n))return true;return false}function Jt(n,t){return typeof n=="undefined"?t:n}function Xt(n,t,r,e){return typeof n!="undefined"&&Pu.call(e,r)?n:t}function Ht(n,t,r){var e=Ri(t);if(!r)return nr(t,n,e);for(var u=-1,o=e.length;++u<o;){var i=e[u],f=n[i],a=r(f,t[i],i,n,t);
11
- (a===a?a===f:f!==f)&&(typeof f!="undefined"||i in n)||(n[i]=a)}return n}function Qt(n,t){for(var r=-1,e=n.length,u=we(e),o=t.length,i=xu(o);++r<o;){var f=t[r];u?(f=parseFloat(f),i[r]=ye(f,e)?n[f]:w):i[r]=n[f]}return i}function nr(n,t,r){r||(r=t,t={});for(var e=-1,u=r.length;++e<u;){var o=r[e];t[o]=n[o]}return t}function tr(n,t,r){var e=typeof n;return"function"==e?typeof t=="undefined"?n:Fr(n,t,r):null==n?du:"object"==e?yr(n):typeof t=="undefined"?wr(n+""):dr(n+"",t)}function rr(n,t,r,e,u,o,i){var f;
12
- if(r&&(f=u?r(n,e,u):r(n)),typeof f!="undefined")return f;if(!nu(n))return n;if(e=yi(n)){if(f=_e(n),!t)return Bt(n,f)}else{var a=zu.call(n),c=a==K;if(a!=Y&&a!=B&&(!c||u))return Ct[a]?ve(n,a,t):u?n:{};if(Dt(n))return u?n:{};if(f=ge(c?{}:n),!t)return nr(n,f,Ri(n))}for(o||(o=[]),i||(i=[]),u=o.length;u--;)if(o[u]==n)return i[u];return o.push(n),i.push(f),(e?zt:lr)(n,function(e,u){f[u]=rr(e,t,r,u,n,o,i)}),f}function er(n,t,r){if(typeof n!="function")throw new Cu($);return Qu(function(){n.apply(w,r)},t)
13
- }function ur(n,t){var e=n?n.length:0,u=[];if(!e)return u;var o=-1,i=he(),f=i==r,a=f&&200<=t.length?Uo(t):null,c=t.length;a&&(i=Pt,f=false,t=a);n:for(;++o<e;)if(a=n[o],f&&a===a){for(var l=c;l--;)if(t[l]===a)continue n;u.push(a)}else 0>i(t,a,0)&&u.push(a);return u}function or(n,t){var r=true;return ko(n,function(n,e,u){return r=!!t(n,e,u)}),r}function ir(n,t){var r=[];return ko(n,function(n,e,u){t(n,e,u)&&r.push(n)}),r}function fr(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
14
- }),u}function ar(n,t,r){for(var e=-1,u=n.length,o=-1,i=[];++e<u;){var f=n[e];if(h(f)&&we(f.length)&&(yi(f)||Xe(f))){t&&(f=ar(f,t,r));var a=-1,c=f.length;for(i.length+=c;++a<c;)i[++o]=f[a]}else r||(i[++o]=f)}return i}function cr(n,t){So(n,t,au)}function lr(n,t){return So(n,t,Ri)}function sr(n,t){return Co(n,t,Ri)}function pr(n,t){for(var r=-1,e=t.length,u=-1,o=[];++r<e;){var i=t[r];mi(n[i])&&(o[++u]=i)}return o}function hr(n,t,r,e,u,o){if(n===t)return 0!==n||1/n==1/t;var i=typeof n,f=typeof t;return"function"!=i&&"object"!=i&&"function"!=f&&"object"!=f||null==n||null==t?n!==n&&t!==t:_r(n,t,hr,r,e,u,o)
15
- }function _r(n,t,r,e,u,o,i){var f=yi(n),a=yi(t),c=z,l=z;f||(c=zu.call(n),c==B?c=Y:c!=Y&&(f=ou(n))),a||(l=zu.call(t),l==B?l=Y:l!=Y&&ou(t));var s=(c==Y||u&&c==K)&&!Dt(n),a=(l==Y||u&&l==K)&&!Dt(t);if((l=c==l)&&!f&&!s)return ce(n,t,c);if(u){if(!(l||s&&a))return false}else{if(c=s&&Pu.call(n,"__wrapped__"),a=a&&Pu.call(t,"__wrapped__"),c||a)return r(c?n.value():n,a?t.value():t,e,u,o,i);if(!l)return false}for(o||(o=[]),i||(i=[]),c=o.length;c--;)if(o[c]==n)return i[c]==t;return o.push(n),i.push(t),n=(f?ae:le)(n,t,r,e,u,o,i),o.pop(),i.pop(),n
16
- }function gr(n,t,r,e,u){for(var o=-1,i=t.length,f=!u;++o<i;)if(f&&e[o]?r[o]!==n[t[o]]:!(t[o]in n))return false;for(o=-1;++o<i;){var a=t[o],c=n[a],l=r[o];if(f&&e[o]?a=typeof c!="undefined"||a in n:(a=u?u(c,l,a):w,typeof a=="undefined"&&(a=hr(l,c,u,true))),!a)return false}return true}function vr(n,t){var r=[];return ko(n,function(n,e,u){r.push(t(n,e,u))}),r}function yr(n){var t=Ri(n),r=t.length;if(!r)return yu(true);if(1==r){var e=t[0],u=n[e];if(be(u))return function(n){return null!=n&&n[e]===u&&(typeof u!="undefined"||e in Ie(n))
17
- }}for(var o=xu(r),i=xu(r);r--;)u=n[t[r]],o[r]=u,i[r]=be(u);return function(n){return null!=n&&gr(Ie(n),t,o,i)}}function dr(n,t){return be(t)?function(r){return null!=r&&r[n]===t&&(typeof t!="undefined"||n in Ie(r))}:function(r){return null!=r&&hr(t,r[n],null,true)}}function mr(n,t,r,e,u){if(!nu(n))return n;var o=we(t.length)&&(yi(t)||ou(t));return(o?zt:lr)(t,function(t,i,f){if(h(t)){e||(e=[]),u||(u=[]);n:{t=e;for(var a=u,c=t.length,l=f[i];c--;)if(t[c]==l){n[i]=a[c],i=void 0;break n}c=n[i],f=r?r(c,l,i,n,f):w;
18
- var s=typeof f=="undefined";s&&(f=l,we(l.length)&&(yi(l)||ou(l))?f=yi(c)?c:c&&c.length?Bt(c):[]:wi(l)||Xe(l)?f=Xe(c)?iu(c):wi(c)?c:{}:s=false),t.push(l),a.push(f),s?n[i]=mr(f,l,r,t,a):(f===f?f!==c:c===c)&&(n[i]=f),i=void 0}return i}a=n[i],f=r?r(a,t,i,n,f):w,(l=typeof f=="undefined")&&(f=t),!o&&typeof f=="undefined"||!l&&(f===f?f===a:a!==a)||(n[i]=f)}),n}function wr(n){return function(t){return null==t?w:t[n]}}function br(n,t){return n+Zu(ho()*(t-n+1))}function xr(n,t,r,e,u){return u(n,function(n,u,o){r=e?(e=false,n):t(r,n,u,o)
19
- }),r}function Ar(n,t,r){var e=-1,u=n.length;for(t=null==t?0:+t||0,0>t&&(t=-t>u?0:u+t),r=typeof r=="undefined"||r>u?u:+r||0,0>r&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0,r=xu(u);++e<u;)r[e]=n[e+t];return r}function jr(n,t){var r;return ko(n,function(n,e,u){return r=t(n,e,u),!r}),!!r}function Or(n,t){var r=n.length;for(n.sort(t);r--;)n[r]=n[r].c;return n}function Er(t,r,e){var u=-1,o=t.length,i=we(o)?xu(o):[];return ko(t,function(n){for(var t=r.length,e=xu(t);t--;)e[t]=null==n?w:n[r[t]];i[++u]={a:e,b:u,c:n}}),Or(i,function(t,r){var u;
20
- n:{u=-1;for(var o=t.a,i=r.a,f=o.length,a=e.length;++u<f;){var c=n(o[u],i[u]);if(c){u=u<a?c*(e[u]?1:-1):c;break n}}u=t.b-r.b}return u})}function Ir(n,t){var r=0;return ko(n,function(n,e,u){r+=+t(n,e,u)||0}),r}function kr(n,t){var e=-1,u=he(),o=n.length,i=u==r,f=i&&200<=o,a=f?Uo():null,c=[];a?(u=Pt,i=false):(f=false,a=t?[]:c);n:for(;++e<o;){var l=n[e],s=t?t(l,e,n):l;if(i&&l===l){for(var p=a.length;p--;)if(a[p]===s)continue n;t&&a.push(s),c.push(l)}else 0>u(a,s,0)&&((t||f)&&a.push(s),c.push(l))}return c}function Rr(n,t){for(var r=-1,e=t.length,u=xu(e);++r<e;)u[r]=n[t[r]];
21
- return u}function Sr(n,t,r,e){for(var u=n.length,o=e?u:-1;(e?o--:++o<u)&&t(n[o],o,n););return r?Ar(n,e?0:o,e?o+1:u):Ar(n,e?o+1:0,e?u:o)}function Cr(n,t){var r=n;r instanceof Nt&&(r=r.value());for(var e=-1,u=t.length;++e<u;){var r=[r],o=t[e];Ju.apply(r,o.args),r=o.func.apply(o.thisArg,r)}return r}function Tr(n,t,r){var e=0,u=n?n.length:e;if(typeof t=="number"&&t===t&&u<=mo){for(;e<u;){var o=e+u>>>1,i=n[o];(r?i<=t:i<t)?e=o+1:u=o}return u}return Ur(n,t,du,r)}function Ur(n,t,r,e){t=r(t);for(var u=0,o=n?n.length:0,i=t!==t,f=typeof t=="undefined";u<o;){var a=Zu((u+o)/2),c=r(n[a]),l=c===c;
22
- (i?l||e:f?l&&(e||typeof c!="undefined"):e?c<=t:c<t)?u=a+1:o=a}return co(o,yo)}function Fr(n,t,r){if(typeof n!="function")return du;if(typeof t=="undefined")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 Wr(n){return Ku.call(n,0)}function Nr(n,t,r){for(var e=r.length,u=-1,o=ao(n.length-e,0),i=-1,f=t.length,a=xu(o+f);++i<f;)a[i]=t[i];
23
- for(;++u<e;)a[r[u]]=n[u];for(;o--;)a[i++]=n[u++];return a}function Lr(n,t,r){for(var e=-1,u=r.length,o=-1,i=ao(n.length-u,0),f=-1,a=t.length,c=xu(i+a);++o<i;)c[o]=n[o];for(i=o;++f<a;)c[i+f]=t[f];for(;++e<u;)c[i+r[e]]=n[o++];return c}function $r(n,t){return function(r,e,u){var o=t?t():{};if(e=pe(e,u,3),yi(r)){u=-1;for(var i=r.length;++u<i;){var f=r[u];n(o,f,e(f,u,r),r)}}else ko(r,function(t,r,u){n(o,t,e(t,r,u),u)});return o}}function Pr(n){return function(){var t=arguments,r=t.length,e=t[0];if(2>r||null==e)return e;
24
- var u=t[r-2],o=t[r-1],i=t[3];for(3<r&&typeof u=="function"?(u=Fr(u,o,5),r-=2):(u=2<r&&typeof o=="function"?o:null,r-=u?1:0),i&&de(t[1],t[2],i)&&(u=3==r?null:u,r=2),o=0;++o<r;)(i=t[o])&&n(e,i,u);return e}}function Br(n,t){return function(r,e){var u=r?r.length:0;if(!we(u))return n(r,e);for(var o=t?u:-1,i=Ie(r);(t?o--:++o<u)&&false!==e(i[o],o,i););return r}}function zr(n){return function(t,r,e){var u=Ie(t);e=e(t);for(var o=e.length,i=n?o:-1;n?i--:++i<o;){var f=e[i];if(false===r(u[f],f,u))break}return t}}function Mr(n,t){function r(){return(this&&this!==Mt&&this instanceof r?e:n).apply(t,arguments)
25
- }var e=qr(n);return r}function Dr(n){return function(t){var r=-1;t=gu(lu(t));for(var e=t.length,u="";++r<e;)u=n(u,t[r],r);return u}}function qr(n){return function(){var t=Io(n.prototype),r=n.apply(t,arguments);return nu(r)?r:t}}function Kr(n){function t(r,e,u){return u&&de(r,e,u)&&(e=null),r=fe(r,n,null,null,null,null,null,e),r.placeholder=t.placeholder,r}return t}function Vr(n,t){return function(r,e,u){u&&de(r,e,u)&&(e=null);var i=pe(),f=null==e;if(i===tr&&f||(f=false,e=i(e,u,3)),f){if(e=yi(r),e||!uu(r))return n(e?r:Ee(r));
26
- e=o}return se(r,e,t)}}function Yr(n,r){return function(e,u,o){return u=pe(u,o,3),yi(e)?(u=t(e,u,r),-1<u?e[u]:w):fr(e,u,n)}}function Zr(n){return function(r,e,u){return r&&r.length?(e=pe(e,u,3),t(r,e,n)):-1}}function Gr(n){return function(t,r,e){return r=pe(r,e,3),fr(t,r,n,true)}}function Jr(n){return function(){var t=arguments.length;if(!t)return function(){return arguments[0]};for(var r,e=n?t:-1,u=0,o=xu(t);n?e--:++e<t;){var i=o[u++]=arguments[e];if(typeof i!="function")throw new Cu($);var f=r?"":Wo(i);
27
- r="wrapper"==f?new Wt([]):r}for(e=r?-1:t;++e<t;)i=o[e],f=Wo(i),r=(u="wrapper"==f?Fo(i):null)&&me(u[0])?r[Wo(u[0])].apply(r,u[3]):1==i.length&&me(i)?r[f]():r.thru(i);return function(){var n=arguments;if(r&&1==n.length&&yi(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 Xr(n,t){return function(r,e,u){return typeof e=="function"&&typeof u=="undefined"&&yi(r)?n(r,e):t(r,Fr(e,u,3))}}function Hr(n){return function(t,r,e){return(typeof r!="function"||typeof e!="undefined")&&(r=Fr(r,e,3)),n(t,r,au)
28
- }}function Qr(n){return function(t,r,e){return(typeof r!="function"||typeof e!="undefined")&&(r=Fr(r,e,3)),n(t,r)}}function ne(n){return function(t,r,e){return(t=u(t))&&(n?t:"")+ue(t,r,e)+(n?"":t)}}function te(n){var t=Je(function(r,e){var u=g(e,t.placeholder);return fe(r,n,null,e,u)});return t}function re(n,t){return function(r,e,u,o){var i=3>arguments.length;return typeof e=="function"&&typeof o=="undefined"&&yi(r)?n(r,e,u,i):xr(r,pe(e,o,4),u,i,t)}}function ee(n,t,r,e,u,o,i,f,a,c){function l(){for(var b=arguments.length,j=b,O=xu(b);j--;)O[j]=arguments[j];
29
- if(e&&(O=Nr(O,e,u)),o&&(O=Lr(O,o,i)),_||y){var j=l.placeholder,E=g(O,j),b=b-E.length;if(b<c){var R=f?Bt(f):null,b=ao(c-b,0),S=_?E:null,E=_?null:E,C=_?O:null,O=_?null:O;return t|=_?I:k,t&=~(_?k:I),v||(t&=~(x|A)),O=[n,t,r,C,S,O,E,R,a,b],R=ee.apply(w,O),me(n)&&No(R,O),R.placeholder=j,R}}if(j=p?r:this,h&&(n=j[m]),f)for(R=O.length,b=co(f.length,R),S=Bt(O);b--;)E=f[b],O[b]=ye(E,R)?S[E]:w;return s&&a<O.length&&(O.length=a),(this&&this!==Mt&&this instanceof l?d||qr(n):n).apply(j,O)}var s=t&R,p=t&x,h=t&A,_=t&O,v=t&j,y=t&E,d=!h&&qr(n),m=n;
30
- return l}function ue(n,t,r){return n=n.length,t=+t,n<t&&io(t)?(t-=n,r=null==r?" ":r+"",hu(r,Vu(t/r.length)).slice(0,t)):""}function oe(n,t,r,e){function u(){for(var t=-1,f=arguments.length,a=-1,c=e.length,l=xu(f+c);++a<c;)l[a]=e[a];for(;f--;)l[a++]=arguments[++t];return(this&&this!==Mt&&this instanceof u?i:n).apply(o?r:this,l)}var o=t&x,i=qr(n);return u}function ie(n){return function(t,r,e,u){var o=pe(e);return o===tr&&null==e?Tr(t,r,n):Ur(t,r,o(e,u,1),n)}}function fe(n,t,r,e,u,o,i,f){var a=t&A;if(!a&&typeof n!="function")throw new Cu($);
31
- var c=e?e.length:0;if(c||(t&=~(I|k),e=u=null),c-=u?u.length:0,t&k){var l=e,s=u;e=u=null}var p=a?null:Fo(n);return r=[n,t,r,e,u,l,s,o,i,f],p&&(e=r[1],t=p[1],f=e|t,u=t==R&&e==O||t==R&&e==S&&r[7].length<=p[8]||t==(R|S)&&e==O,(f<R||u)&&(t&x&&(r[2]=p[2],f|=e&x?0:j),(e=p[3])&&(u=r[3],r[3]=u?Nr(u,e,p[4]):Bt(e),r[4]=u?g(r[3],P):Bt(p[4])),(e=p[5])&&(u=r[5],r[5]=u?Lr(u,e,p[6]):Bt(e),r[6]=u?g(r[5],P):Bt(p[6])),(e=p[7])&&(r[7]=Bt(e)),t&R&&(r[8]=null==r[8]?p[8]:co(r[8],p[8])),null==r[9]&&(r[9]=p[9]),r[0]=p[0],r[1]=f),t=r[1],f=r[9]),r[9]=null==f?a?0:n.length:ao(f-c,0)||0,(p?To:No)(t==x?Mr(r[0],r[2]):t!=I&&t!=(x|I)||r[4].length?ee.apply(w,r):oe.apply(w,r),r)
32
- }function ae(n,t,r,e,u,o,i){var f=-1,a=n.length,c=t.length,l=true;if(a!=c&&(!u||c<=a))return false;for(;l&&++f<a;){var s=n[f],p=t[f],l=w;if(e&&(l=u?e(p,s,f):e(s,p,f)),typeof l=="undefined")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 ce(n,t,r){switch(r){case M:case D:return+n==+t;case q:return n.name==t.name&&n.message==t.message;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 le(n,t,r,e,u,o,i){var f=Ri(n),a=f.length,c=Ri(t).length;
33
- if(a!=c&&!u)return false;for(var c=u,l=-1;++l<a;){var s=f[l],p=u?s in t:Pu.call(t,s);if(p){var h=n[s],_=t[s],p=w;e&&(p=u?e(_,h,s):e(h,_,s)),typeof p=="undefined"&&(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}function se(n,t,r){var e=r?go:_o,u=e,o=u;return ko(n,function(n,i,f){i=t(n,i,f),((r?i<u:i>u)||i===e&&i===o)&&(u=i,o=n)
34
- }),o}function pe(n,t,r){var e=Ut.callback||vu,e=e===vu?tr:e;return r?e(n,t,r):e}function he(n,t,e){var u=Ut.indexOf||Te,u=u===Te?r:u;return n?u(n,t,e):u}function _e(n){var t=n.length,r=new n.constructor(t);return t&&"string"==typeof n[0]&&Pu.call(n,"index")&&(r.index=n.index,r.input=n.input),r}function ge(n){return n=n.constructor,typeof n=="function"&&n instanceof n||(n=ku),new n}function ve(n,t,r){var e=n.constructor;switch(t){case J:return Wr(n);case M:case D:return new e(+n);case X:case H:case Q:case nt:case tt:case rt:case et:case ut:case ot:return e instanceof e&&(e=jo[t]),t=n.buffer,new e(r?Wr(t):t,n.byteOffset,n.length);
35
- case V:case G:return new e(n);case Z:var u=new e(n.source,dt.exec(n));u.lastIndex=n.lastIndex}return u}function ye(n,t){return n=+n,t=null==t?bo:t,-1<n&&0==n%1&&n<t}function de(n,t,r){if(!nu(r))return false;var e=typeof t;return"number"==e?(e=r.length,e=we(e)&&ye(t,e)):e="string"==e&&t in r,e?(t=r[t],n===n?n===t:t!==t):false}function me(n){var t=Wo(n);return!!t&&n===Ut[t]&&t in Nt.prototype}function we(n){return typeof n=="number"&&-1<n&&0==n%1&&n<=bo}function be(n){return n===n&&(0===n?0<1/n:!nu(n))}function xe(n,t){n=Ie(n);
36
- for(var r=-1,e=t.length,u={};++r<e;){var o=t[r];o in n&&(u[o]=n[o])}return u}function Ae(n,t){var r={};return cr(n,function(n,e,u){t(n,e,u)&&(r[e]=n)}),r}function je(n){var t,r=Ut.support;if(!h(n)||zu.call(n)!=Y||Dt(n)||!(Pu.call(n,"constructor")||(t=n.constructor,typeof t!="function"||t instanceof t))||!r.argsTag&&Xe(n))return false;var e;return r.ownLast?(cr(n,function(n,t,r){return e=Pu.call(r,t),false}),false!==e):(cr(n,function(n,t){e=t}),typeof e=="undefined"||Pu.call(n,e))}function Oe(n){for(var t=au(n),r=t.length,e=r&&n.length,u=Ut.support,u=e&&we(e)&&(yi(n)||u.nonEnumStrings&&uu(n)||u.nonEnumArgs&&Xe(n)),o=-1,i=[];++o<r;){var f=t[o];
37
- (u&&ye(f,e)||Pu.call(n,f))&&i.push(f)}return i}function Ee(n){return null==n?[]:we(n.length)?Ut.support.unindexedChars&&uu(n)?n.split(""):nu(n)?n:ku(n):cu(n)}function Ie(n){if(Ut.support.unindexedChars&&uu(n)){for(var t=-1,r=n.length,e=ku(n);++t<r;)e[t]=n.charAt(t);return e}return nu(n)?n:ku(n)}function ke(n){return n instanceof Nt?n.clone():new Wt(n.__wrapped__,n.__chain__,Bt(n.__actions__))}function Re(n,t,r){return n&&n.length?((r?de(n,t,r):null==t)&&(t=1),Ar(n,0>t?0:t)):[]}function Se(n,t,r){var e=n?n.length:0;
38
- return e?((r?de(n,t,r):null==t)&&(t=1),t=e-(+t||0),Ar(n,0,0>t?0:t)):[]}function Ce(n){return n?n[0]:w}function Te(n,t,e){var u=n?n.length:0;if(!u)return-1;if(typeof e=="number")e=0>e?ao(u+e,0):e;else if(e)return e=Tr(n,t),n=n[e],(t===t?t===n:n!==n)?e:-1;return r(n,t,e||0)}function Ue(n){var t=n?n.length:0;return t?n[t-1]:w}function Fe(n){return Re(n,1)}function We(n,t,e,u){if(!n||!n.length)return[];null!=t&&typeof t!="boolean"&&(u=e,e=de(n,t,u)?null:t,t=false);var o=pe();if((o!==tr||null!=e)&&(e=o(e,u,3)),t&&he()==r){t=e;
39
- var i;e=-1,u=n.length;for(var o=-1,f=[];++e<u;){var a=n[e],c=t?t(a,e,n):a;e&&i===c||(i=c,f[++o]=a)}n=f}else n=kr(n,e);return n}function Ne(n){for(var t=-1,r=(n&&n.length&&Zt(Yt(n,$u)))>>>0,e=xu(r);++t<r;)e[t]=Yt(n,wr(t));return e}function Le(n,t){var r=-1,e=n?n.length:0,u={};for(!e||t||yi(n[0])||(t=[]);++r<e;){var o=n[r];t?u[o]=t[r]:o&&(u[o[0]]=o[1])}return u}function $e(n){return n=Ut(n),n.__chain__=true,n}function Pe(n,t,r){return t.call(r,n)}function Be(n,t,r){var e=yi(n)?Kt:or;return r&&de(n,t,r)&&(t=null),(typeof t!="function"||typeof r!="undefined")&&(t=pe(t,r,3)),e(n,t)
40
- }function ze(n,t,r){var e=yi(n)?Vt:ir;return t=pe(t,r,3),e(n,t)}function Me(n,t,r,e){var u=n?n.length:0;return we(u)||(n=cu(n),u=n.length),u?(r=typeof r!="number"||e&&de(t,r,e)?0:0>r?ao(u+r,0):r||0,typeof n=="string"||!yi(n)&&uu(n)?r<u&&-1<n.indexOf(t,r):-1<he(n,t,r)):false}function De(n,t,r){var e=yi(n)?Yt:vr;return t=pe(t,r,3),e(n,t)}function qe(n,t,r){return(r?de(n,t,r):null==t)?(n=Ee(n),t=n.length,0<t?n[br(0,t-1)]:w):(n=Ke(n),n.length=co(0>t?0:+t||0,n.length),n)}function Ke(n){n=Ee(n);for(var t=-1,r=n.length,e=xu(r);++t<r;){var u=br(0,t);
41
- t!=u&&(e[t]=e[u]),e[u]=n[t]}return e}function Ve(n,t,r){var e=yi(n)?Gt:jr;return r&&de(n,t,r)&&(t=null),(typeof t!="function"||typeof r!="undefined")&&(t=pe(t,r,3)),e(n,t)}function Ye(n,t){var r;if(typeof t!="function"){if(typeof n!="function")throw new Cu($);var e=n;n=t,t=e}return function(){return 0<--n?r=t.apply(this,arguments):t=null,r}}function Ze(n,t,r){function e(){var r=t-(ui()-c);0>=r||r>t?(f&&Yu(f),r=p,f=s=p=w,r&&(h=ui(),a=n.apply(l,i),s||f||(i=l=null))):s=Qu(e,r)}function u(){s&&Yu(s),f=s=p=w,(g||_!==t)&&(h=ui(),a=n.apply(l,i),s||f||(i=l=null))
42
- }function o(){if(i=arguments,c=ui(),l=this,p=g&&(s||!v),false===_)var r=v&&!s;else{f||v||(h=c);var o=_-(c-h),y=0>=o||o>_;y?(f&&(f=Yu(f)),h=c,a=n.apply(l,i)):f||(f=Qu(u,o))}return y&&s?s=Yu(s):s||t===_||(s=Qu(e,t)),r&&(y=true,a=n.apply(l,i)),!y||s||f||(i=l=null),a}var i,f,a,c,l,s,p,h=0,_=false,g=true;if(typeof n!="function")throw new Cu($);if(t=0>t?0:+t||0,true===r)var v=true,g=false;else nu(r)&&(v=r.leading,_="maxWait"in r&&ao(+r.maxWait||0,t),g="trailing"in r?r.trailing:g);return o.cancel=function(){s&&Yu(s),f&&Yu(f),f=s=p=w
43
- },o}function Ge(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 Cu($);return r.cache=new Ge.Cache,r}function Je(n,t){if(typeof n!="function")throw new Cu($);return t=ao(typeof t=="undefined"?n.length-1:+t||0,0),function(){for(var r=arguments,e=-1,u=ao(r.length-t,0),o=xu(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);
44
- case 2:return n.call(this,r[0],r[1],o)}for(u=xu(t+1),e=-1;++e<t;)u[e]=r[e];return u[t]=o,n.apply(this,u)}}function Xe(n){return we(h(n)?n.length:w)&&zu.call(n)==B}function He(n){return!!n&&1===n.nodeType&&h(n)&&(Ut.support.nodeTag?-1<zu.call(n).indexOf("Element"):Dt(n))}function Qe(n){return h(n)&&typeof n.message=="string"&&zu.call(n)==q}function nu(n){var t=typeof n;return"function"==t||!!n&&"object"==t}function tu(n){return null==n?false:zu.call(n)==K?Du.test(Lu.call(n)):h(n)&&(Dt(n)?Du:wt).test(n)
45
- }function ru(n){return typeof n=="number"||h(n)&&zu.call(n)==V}function eu(n){return nu(n)&&zu.call(n)==Z}function uu(n){return typeof n=="string"||h(n)&&zu.call(n)==G}function ou(n){return h(n)&&we(n.length)&&!!St[zu.call(n)]}function iu(n){return nr(n,au(n))}function fu(n){return pr(n,au(n))}function au(n){if(null==n)return[];nu(n)||(n=ku(n));for(var t=n.length,r=Ut.support,t=t&&we(t)&&(yi(n)||r.nonEnumStrings&&uu(n)||r.nonEnumArgs&&Xe(n))&&t||0,e=n.constructor,u=-1,e=mi(e)&&e.prototype||Fu,o=e===n,i=xu(t),f=0<t,a=r.enumErrorProps&&(n===Uu||n instanceof ju),c=r.enumPrototypes&&mi(n);++u<t;)i[u]=u+"";
46
- for(var l in n)c&&"prototype"==l||a&&("message"==l||"name"==l)||f&&ye(l,t)||"constructor"==l&&(o||!Pu.call(n,l))||i.push(l);if(r.nonEnumShadows&&n!==Fu)for(t=n===Wu?G:n===Uu?q:zu.call(n),r=Oo[t]||Oo[Y],t==Y&&(e=Fu),t=Rt.length;t--;)l=Rt[t],u=r[l],o&&u||(u?!Pu.call(n,l):n[l]===e[l])||i.push(l);return i}function cu(n){return Rr(n,Ri(n))}function lu(n){return(n=u(n))&&n.replace(bt,c).replace(vt,"")}function su(n){return(n=u(n))&&jt.test(n)?n.replace(At,"\\$&"):n}function pu(n,t,r){return r&&de(n,t,r)&&(t=0),po(n,t)
47
- }function hu(n,t){var r="";if(n=u(n),t=+t,1>t||!n||!io(t))return r;do t%2&&(r+=n),t=Zu(t/2),n+=n;while(t);return r}function _u(n,t,r){var e=n;return(n=u(n))?(r?de(e,t,r):null==t)?n.slice(v(n),y(n)+1):(t+="",n.slice(i(n,t),f(n,t)+1)):n}function gu(n,t,r){return r&&de(n,t,r)&&(t=null),n=u(n),n.match(t||Et)||[]}function vu(n,t,r){return r&&de(n,t,r)&&(t=null),h(n)?mu(n):tr(n,t)}function yu(n){return function(){return n}}function du(n){return n}function mu(n){return yr(rr(n,true))}function wu(n,t,r){if(null==r){var e=nu(t),u=e&&Ri(t);
48
- ((u=u&&u.length&&pr(t,u))?u.length:e)||(u=false,r=t,t=n,n=this)}u||(u=pr(t,Ri(t)));var o=true,e=-1,i=mi(n),f=u.length;false===r?o=false:nu(r)&&"chain"in r&&(o=r.chain);for(;++e<f;){r=u[e];var a=t[r];n[r]=a,i&&(n.prototype[r]=function(t){return function(){var r=this.__chain__;if(o||r){var e=n(this.__wrapped__);return(e.__actions__=Bt(this.__actions__)).push({func:t,args:arguments,thisArg:n}),e.__chain__=r,e}return r=[this.value()],Ju.apply(r,arguments),t.apply(n,r)}}(a))}return n}function bu(){}_=_?qt.defaults(Mt.Object(),_,qt.pick(Mt,kt)):Mt;
49
- var xu=_.Array,Au=_.Date,ju=_.Error,Ou=_.Function,Eu=_.Math,Iu=_.Number,ku=_.Object,Ru=_.RegExp,Su=_.String,Cu=_.TypeError,Tu=xu.prototype,Uu=ju.prototype,Fu=ku.prototype,Wu=Su.prototype,Nu=(Nu=_.window)&&Nu.document,Lu=Ou.prototype.toString,$u=wr("length"),Pu=Fu.hasOwnProperty,Bu=0,zu=Fu.toString,Mu=_._,Du=Ru("^"+su(zu).replace(/toString|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),qu=tu(qu=_.ArrayBuffer)&&qu,Ku=tu(Ku=qu&&new qu(0).slice)&&Ku,Vu=Eu.ceil,Yu=_.clearTimeout,Zu=Eu.floor,Gu=tu(Gu=ku.getPrototypeOf)&&Gu,Ju=Tu.push,Xu=Fu.propertyIsEnumerable,Hu=tu(Hu=_.Set)&&Hu,Qu=_.setTimeout,no=Tu.splice,to=tu(to=_.Uint8Array)&&to,ro=tu(ro=_.WeakMap)&&ro,eo=function(){try{var n=tu(n=_.Float64Array)&&n,t=new n(new qu(10),0,1)&&n
50
- }catch(r){}return t}(),uo=tu(uo=xu.isArray)&&uo,oo=tu(oo=ku.create)&&oo,io=_.isFinite,fo=tu(fo=ku.keys)&&fo,ao=Eu.max,co=Eu.min,lo=tu(lo=Au.now)&&lo,so=tu(so=Iu.isFinite)&&so,po=_.parseInt,ho=Eu.random,_o=Iu.NEGATIVE_INFINITY,go=Iu.POSITIVE_INFINITY,vo=Eu.pow(2,32)-1,yo=vo-1,mo=vo>>>1,wo=eo?eo.BYTES_PER_ELEMENT:0,bo=Eu.pow(2,53)-1,xo=ro&&new ro,Ao={},jo={};jo[X]=_.Float32Array,jo[H]=_.Float64Array,jo[Q]=_.Int8Array,jo[nt]=_.Int16Array,jo[tt]=_.Int32Array,jo[rt]=_.Uint8Array,jo[et]=_.Uint8ClampedArray,jo[ut]=_.Uint16Array,jo[ot]=_.Uint32Array;
51
- var Oo={};Oo[z]=Oo[D]=Oo[V]={constructor:true,toLocaleString:true,toString:true,valueOf:true},Oo[M]=Oo[G]={constructor:true,toString:true,valueOf:true},Oo[q]=Oo[K]=Oo[Z]={constructor:true,toString:true},Oo[Y]={constructor:true},zt(Rt,function(n){for(var t in Oo)if(Pu.call(Oo,t)){var r=Oo[t];r[n]=Pu.call(r,n)}});var Eo=Ut.support={};!function(n){function t(){this.x=1}var r={0:1,length:1},e=[];t.prototype={valueOf:1,y:1};for(var u in new t)e.push(u);Eo.argsTag=zu.call(arguments)==B,Eo.enumErrorProps=Xu.call(Uu,"message")||Xu.call(Uu,"name"),Eo.enumPrototypes=Xu.call(t,"prototype"),Eo.funcDecomp=/\bthis\b/.test(function(){return this
52
- }),Eo.funcNames=typeof Ou.name=="string",Eo.nodeTag=zu.call(Nu)!=Y,Eo.nonEnumStrings=!Xu.call("x",0),Eo.nonEnumShadows=!/valueOf/.test(e),Eo.ownLast="x"!=e[0],Eo.spliceObjects=(no.call(r,0,1),!r[0]),Eo.unindexedChars="xx"!="x"[0]+ku("x")[0];try{Eo.dom=11===Nu.createDocumentFragment().nodeType}catch(o){Eo.dom=false}try{Eo.nonEnumArgs=!Xu.call(arguments,1)}catch(i){Eo.nonEnumArgs=true}}(0,0),Ut.templateSettings={escape:ht,evaluate:_t,interpolate:gt,variable:"",imports:{_:Ut}};var Io=function(){function n(){}return function(t){if(nu(t)){n.prototype=t;
53
- var r=new n;n.prototype=null}return r||_.Object()}}(),ko=Br(lr),Ro=Br(sr,true),So=zr(),Co=zr(true),To=xo?function(n,t){return xo.set(n,t),n}:du;Ku||(Wr=qu&&to?function(n){var t=n.byteLength,r=eo?Zu(t/wo):0,e=r*wo,u=new qu(t);if(r){var o=new eo(u,0,r);o.set(new eo(n,0,r))}return t!=e&&(o=new to(u,e),o.set(new to(n,e))),u}:yu(null));var Uo=oo&&Hu?function(n){return new $t(n)}:yu(null),Fo=xo?function(n){return xo.get(n)}:bu,Wo=function(){return Eo.funcNames?"constant"==yu.name?wr("name"):function(n){for(var t=n.name,r=Ao[t],e=r?r.length:0;e--;){var u=r[e],o=u.func;
54
- if(null==o||o==n)return u.name}return t}:yu("")}(),No=function(){var n=0,t=0;return function(r,e){var u=ui(),o=F-(u-t);if(t=u,0<o){if(++n>=U)return r}else n=0;return To(r,e)}}(),Lo=Je(function(n,t){return yi(n)||Xe(n)?ur(n,ar(t,false,true)):[]}),$o=Zr(),Po=Zr(true),Bo=Je(function(t,r){t||(t=[]),r=ar(r);var e=r.length,u=Qt(t,r);for(r.sort(n);e--;){var o=parseFloat(r[e]);if(o!=i&&ye(o)){var i=o;no.call(t,o,1)}}return u}),zo=ie(),Mo=ie(true),Do=Je(function(n){return kr(ar(n,false,true))}),qo=Je(function(n,t){return yi(n)||Xe(n)?ur(n,t):[]
55
- }),Ko=Je(Ne),Vo=Je(function(n,t){return we(n?n.length:0)&&(n=Ee(n)),Qt(n,ar(t))}),Yo=$r(function(n,t,r){Pu.call(n,r)?++n[r]:n[r]=1}),Zo=Yr(ko),Go=Yr(Ro,true),Jo=Xr(zt,ko),Xo=Xr(function(n,t){for(var r=n.length;r--&&false!==t(n[r],r,n););return n},Ro),Ho=$r(function(n,t,r){Pu.call(n,r)?n[r].push(t):n[r]=[t]}),Qo=$r(function(n,t,r){n[r]=t}),ni=Je(function(n,t,r){var e=-1,u=typeof t=="function",o=n?n.length:0,i=we(o)?xu(o):[];return ko(n,function(n){var o=u?t:null!=n&&n[t];i[++e]=o?o.apply(n,r):w}),i}),ti=$r(function(n,t,r){n[r?0:1].push(t)
56
- },function(){return[[],[]]}),ri=re(function(n,t,r,e){var u=-1,o=n.length;for(e&&o&&(r=n[++u]);++u<o;)r=t(r,n[u],u,n);return r},ko),ei=re(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},Ro),ui=lo||function(){return(new Au).getTime()},oi=Je(function(n,t,r){var e=x;if(r.length)var u=g(r,oi.placeholder),e=e|I;return fe(n,e,t,r,u)}),ii=Je(function(n,t){t=t.length?ar(t):fu(n);for(var r=-1,e=t.length;++r<e;){var u=t[r];n[u]=fe(n[u],x,n)}return n}),fi=Je(function(n,t,r){var e=x|A;
57
- if(r.length)var u=g(r,fi.placeholder),e=e|I;return fe(t,e,n,r,u)}),ai=Kr(O),ci=Kr(E),li=Je(function(n,t){return er(n,1,t)}),si=Je(function(n,t,r){return er(n,t,r)}),pi=Jr(),hi=Jr(true),_i=te(I),gi=te(k),vi=Je(function(n,t){return fe(n,S,null,null,null,ar(t))});Eo.argsTag||(Xe=function(n){return we(h(n)?n.length:w)&&Pu.call(n,"callee")&&!Xu.call(n,"callee")});var yi=uo||function(n){return h(n)&&we(n.length)&&zu.call(n)==z};Eo.dom||(He=function(n){return!!n&&1===n.nodeType&&h(n)&&!wi(n)});var di=so||function(n){return typeof n=="number"&&io(n)
58
- },mi=e(/x/)||to&&!e(to)?function(n){return zu.call(n)==K}:e,wi=Gu?function(n){if(!n||zu.call(n)!=Y||!Ut.support.argsTag&&Xe(n))return false;var t=n.valueOf,r=tu(t)&&(r=Gu(t))&&Gu(r);return r?n==r||Gu(n)==r:je(n)}:je,bi=Pr(Ht),xi=Je(function(n){var t=n[0];return null==t?t:(n.push(Jt),bi.apply(w,n))}),Ai=Gr(lr),ji=Gr(sr),Oi=Hr(So),Ei=Hr(Co),Ii=Qr(lr),ki=Qr(sr),Ri=fo?function(n){if(n)var t=n.constructor,r=n.length;return typeof t=="function"&&t.prototype===n||(typeof n=="function"?Ut.support.enumPrototypes:r&&we(r))?Oe(n):nu(n)?fo(n):[]
59
- }:Oe,Si=Pr(mr),Ci=Je(function(n,t){if(null==n)return{};if("function"!=typeof t[0])return t=Yt(ar(t),Su),xe(n,ur(au(n),t));var r=Fr(t[0],t[1],3);return Ae(n,function(n,t,e){return!r(n,t,e)})}),Ti=Je(function(n,t){return null==n?{}:"function"==typeof t[0]?Ae(n,Fr(t[0],t[1],3)):xe(n,ar(t))}),Ui=Dr(function(n,t,r){return t=t.toLowerCase(),n+(r?t.charAt(0).toUpperCase()+t.slice(1):t)}),Fi=Dr(function(n,t,r){return n+(r?"-":"")+t.toLowerCase()}),Wi=ne(),Ni=ne(true);8!=po(It+"08")&&(pu=function(n,t,r){return(r?de(n,t,r):null==t)?t=0:t&&(t=+t),n=_u(n),po(n,t||(mt.test(n)?16:10))
60
- });var Li=Dr(function(n,t,r){return n+(r?"_":"")+t.toLowerCase()}),$i=Dr(function(n,t,r){return n+(r?" ":"")+(t.charAt(0).toUpperCase()+t.slice(1))}),Pi=Je(function(n,t){try{return n.apply(w,t)}catch(r){return Qe(r)?r:new ju(r)}}),Bi=Vr(Zt),zi=Vr(function(n){for(var t=-1,r=n.length,e=go;++t<r;){var u=n[t];u<e&&(e=u)}return e},true);return Ut.prototype=Ft.prototype,Wt.prototype=Io(Ft.prototype),Wt.prototype.constructor=Wt,Nt.prototype=Io(Ft.prototype),Nt.prototype.constructor=Nt,Lt.prototype["delete"]=function(n){return this.has(n)&&delete this.__data__[n]
61
- },Lt.prototype.get=function(n){return"__proto__"==n?w:this.__data__[n]},Lt.prototype.has=function(n){return"__proto__"!=n&&Pu.call(this.__data__,n)},Lt.prototype.set=function(n,t){return"__proto__"!=n&&(this.__data__[n]=t),this},$t.prototype.push=function(n){var t=this.data;typeof n=="string"||nu(n)?t.set.add(n):t.hash[n]=true},Ge.Cache=Lt,Ut.after=function(n,t){if(typeof t!="function"){if(typeof n!="function")throw new Cu($);var r=n;n=t,t=r}return n=io(n=+n)?n:0,function(){return 1>--n?t.apply(this,arguments):void 0
62
- }},Ut.ary=function(n,t,r){return r&&de(n,t,r)&&(t=null),t=n&&null==t?n.length:ao(+t||0,0),fe(n,R,null,null,null,null,t)},Ut.assign=bi,Ut.at=Vo,Ut.before=Ye,Ut.bind=oi,Ut.bindAll=ii,Ut.bindKey=fi,Ut.callback=vu,Ut.chain=$e,Ut.chunk=function(n,t,r){t=(r?de(n,t,r):null==t)?1:ao(+t||1,1),r=0;for(var e=n?n.length:0,u=-1,o=xu(Vu(e/t));r<e;)o[++u]=Ar(n,r,r+=t);return o},Ut.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},Ut.constant=yu,Ut.countBy=Yo,Ut.create=function(n,t,r){var e=Io(n);
63
- return r&&de(n,t,r)&&(t=null),t?nr(t,e,Ri(t)):e},Ut.curry=ai,Ut.curryRight=ci,Ut.debounce=Ze,Ut.defaults=xi,Ut.defer=li,Ut.delay=si,Ut.difference=Lo,Ut.drop=Re,Ut.dropRight=Se,Ut.dropRightWhile=function(n,t,r){return n&&n.length?Sr(n,pe(t,r,3),true,true):[]},Ut.dropWhile=function(n,t,r){return n&&n.length?Sr(n,pe(t,r,3),true):[]},Ut.fill=function(n,t,r,e){var u=n?n.length:0;if(!u)return[];for(r&&typeof r!="number"&&de(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=typeof e=="undefined"||e>u?u:+e||0,0>e&&(e+=u),u=r>e?0:e>>>0,r>>>=0;r<u;)n[r++]=t;
64
- return n},Ut.filter=ze,Ut.flatten=function(n,t,r){var e=n?n.length:0;return r&&de(n,t,r)&&(t=false),e?ar(n,t):[]},Ut.flattenDeep=function(n){return n&&n.length?ar(n,true):[]},Ut.flow=pi,Ut.flowRight=hi,Ut.forEach=Jo,Ut.forEachRight=Xo,Ut.forIn=Oi,Ut.forInRight=Ei,Ut.forOwn=Ii,Ut.forOwnRight=ki,Ut.functions=fu,Ut.groupBy=Ho,Ut.indexBy=Qo,Ut.initial=function(n){return Se(n,1)},Ut.intersection=function(){for(var n=[],t=-1,e=arguments.length,u=[],o=he(),i=o==r;++t<e;){var f=arguments[t];(yi(f)||Xe(f))&&(n.push(f),u.push(i&&120<=f.length?Uo(t&&f):null))
65
- }var e=n.length,i=n[0],a=-1,c=i?i.length:0,l=[],s=u[0];n:for(;++a<c;)if(f=i[a],0>(s?Pt(s,f):o(l,f,0))){for(t=e;--t;){var p=u[t];if(0>(p?Pt(p,f):o(n[t],f,0)))continue n}s&&s.push(f),l.push(f)}return l},Ut.invert=function(n,t,r){r&&de(n,t,r)&&(t=null),r=-1;for(var e=Ri(n),u=e.length,o={};++r<u;){var i=e[r],f=n[i];t?Pu.call(o,f)?o[f].push(i):o[f]=[i]:o[f]=i}return o},Ut.invoke=ni,Ut.keys=Ri,Ut.keysIn=au,Ut.map=De,Ut.mapValues=function(n,t,r){var e={};return t=pe(t,r,3),lr(n,function(n,r,u){e[r]=t(n,r,u)
66
- }),e},Ut.matches=mu,Ut.matchesProperty=function(n,t){return dr(n+"",rr(t,true))},Ut.memoize=Ge,Ut.merge=Si,Ut.mixin=wu,Ut.negate=function(n){if(typeof n!="function")throw new Cu($);return function(){return!n.apply(this,arguments)}},Ut.omit=Ci,Ut.once=function(n){return Ye(n,2)},Ut.pairs=function(n){for(var t=-1,r=Ri(n),e=r.length,u=xu(e);++t<e;){var o=r[t];u[t]=[o,n[o]]}return u},Ut.partial=_i,Ut.partialRight=gi,Ut.partition=ti,Ut.pick=Ti,Ut.pluck=function(n,t){return De(n,wr(t))},Ut.property=function(n){return wr(n+"")
67
- },Ut.propertyOf=function(n){return function(t){return null==n?w:n[t]}},Ut.pull=function(){var n=arguments,t=n[0];if(!t||!t.length)return t;for(var r=0,e=he(),u=n.length;++r<u;)for(var o=0,i=n[r];-1<(o=e(t,i,o));)no.call(t,o,1);return t},Ut.pullAt=Bo,Ut.range=function(n,t,r){r&&de(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=ao(Vu((t-n)/(r||1)),0);for(var u=xu(t);++e<t;)u[e]=n,n+=r;return u},Ut.rearg=vi,Ut.reject=function(n,t,r){var e=yi(n)?Vt:ir;return t=pe(t,r,3),e(n,function(n,r,e){return!t(n,r,e)
68
- })},Ut.remove=function(n,t,r){var e=-1,u=n?n.length:0,o=[];for(t=pe(t,r,3);++e<u;)r=n[e],t(r,e,n)&&(o.push(r),no.call(n,e--,1),u--);return o},Ut.rest=Fe,Ut.restParam=Je,Ut.shuffle=Ke,Ut.slice=function(n,t,r){var e=n?n.length:0;return e?(r&&typeof r!="number"&&de(n,t,r)&&(t=0,r=e),Ar(n,t,r)):[]},Ut.sortBy=function(n,t,r){if(null==n)return[];var e=-1,u=n.length,o=we(u)?xu(u):[];return r&&de(n,t,r)&&(t=null),t=pe(t,r,3),ko(n,function(n,r,u){o[++e]={a:t(n,r,u),b:e,c:n}}),Or(o,a)},Ut.sortByAll=function(){var n=arguments,t=n[0],r=n[3],e=0,u=n.length-1;
69
- if(null==t)return[];for(var o=xu(u);e<u;)o[e]=n[++e];return r&&de(n[1],n[2],r)&&(o=n[1]),Er(t,ar(o),[])},Ut.sortByOrder=function(n,t,r,e){return null==n?[]:(e&&de(t,r,e)&&(r=null),yi(t)||(t=null==t?[]:[t]),yi(r)||(r=null==r?[]:[r]),Er(n,t,r))},Ut.spread=function(n){if(typeof n!="function")throw new Cu($);return function(t){return n.apply(this,t)}},Ut.take=function(n,t,r){return n&&n.length?((r?de(n,t,r):null==t)&&(t=1),Ar(n,0,0>t?0:t)):[]},Ut.takeRight=function(n,t,r){var e=n?n.length:0;return e?((r?de(n,t,r):null==t)&&(t=1),t=e-(+t||0),Ar(n,0>t?0:t)):[]
70
- },Ut.takeRightWhile=function(n,t,r){return n&&n.length?Sr(n,pe(t,r,3),false,true):[]},Ut.takeWhile=function(n,t,r){return n&&n.length?Sr(n,pe(t,r,3)):[]},Ut.tap=function(n,t,r){return t.call(r,n),n},Ut.throttle=function(n,t,r){var e=true,u=true;if(typeof n!="function")throw new Cu($);return false===r?e=false:nu(r)&&(e="leading"in r?!!r.leading:e,u="trailing"in r?!!r.trailing:u),Tt.leading=e,Tt.maxWait=+t,Tt.trailing=u,Ze(n,t,Tt)},Ut.thru=Pe,Ut.times=function(n,t,r){if(n=+n,1>n||!io(n))return[];var e=-1,u=xu(co(n,vo));
71
- for(t=Fr(t,r,1);++e<n;)e<vo?u[e]=t(e):t(e);return u},Ut.toArray=function(n){var t=n?n.length:0;return we(t)?t?Ut.support.unindexedChars&&uu(n)?n.split(""):Bt(n):[]:cu(n)},Ut.toPlainObject=iu,Ut.transform=function(n,t,r,e){var u=yi(n)||ou(n);return t=pe(t,e,4),null==r&&(u||nu(n)?(e=n.constructor,r=u?yi(n)?new e:[]:Io(mi(e)&&e.prototype)):r={}),(u?zt:lr)(n,function(n,e,u){return t(r,n,e,u)}),r},Ut.union=Do,Ut.uniq=We,Ut.unzip=Ne,Ut.values=cu,Ut.valuesIn=function(n){return Rr(n,au(n))},Ut.where=function(n,t){return ze(n,yr(t))
72
- },Ut.without=qo,Ut.wrap=function(n,t){return t=null==t?du:t,fe(t,I,null,[n],[])},Ut.xor=function(){for(var n=-1,t=arguments.length;++n<t;){var r=arguments[n];if(yi(r)||Xe(r))var e=e?ur(e,r).concat(ur(r,e)):r}return e?kr(e):[]},Ut.zip=Ko,Ut.zipObject=Le,Ut.backflow=hi,Ut.collect=De,Ut.compose=hi,Ut.each=Jo,Ut.eachRight=Xo,Ut.extend=bi,Ut.iteratee=vu,Ut.methods=fu,Ut.object=Le,Ut.select=ze,Ut.tail=Fe,Ut.unique=We,wu(Ut,Ut),Ut.add=function(n,t){return n+t},Ut.attempt=Pi,Ut.camelCase=Ui,Ut.capitalize=function(n){return(n=u(n))&&n.charAt(0).toUpperCase()+n.slice(1)
73
- },Ut.clone=function(n,t,r,e){return t&&typeof t!="boolean"&&de(n,t,r)?t=false:typeof t=="function"&&(e=r,r=t,t=false),r=typeof r=="function"&&Fr(r,e,1),rr(n,t,r)},Ut.cloneDeep=function(n,t,r){return t=typeof t=="function"&&Fr(t,r,1),rr(n,true,t)},Ut.deburr=lu,Ut.endsWith=function(n,t,r){n=u(n),t+="";var e=n.length;return r=typeof r=="undefined"?e:co(0>r?0:+r||0,e),r-=t.length,0<=r&&n.indexOf(t,r)==r},Ut.escape=function(n){return(n=u(n))&&pt.test(n)?n.replace(lt,l):n},Ut.escapeRegExp=su,Ut.every=Be,Ut.find=Zo,Ut.findIndex=$o,Ut.findKey=Ai,Ut.findLast=Go,Ut.findLastIndex=Po,Ut.findLastKey=ji,Ut.findWhere=function(n,t){return Zo(n,yr(t))
74
- },Ut.first=Ce,Ut.has=function(n,t){return n?Pu.call(n,t):false},Ut.identity=du,Ut.includes=Me,Ut.indexOf=Te,Ut.inRange=function(n,t,r){return t=+t||0,"undefined"===typeof r?(r=t,t=0):r=+r||0,n>=t&&n<r},Ut.isArguments=Xe,Ut.isArray=yi,Ut.isBoolean=function(n){return true===n||false===n||h(n)&&zu.call(n)==M},Ut.isDate=function(n){return h(n)&&zu.call(n)==D},Ut.isElement=He,Ut.isEmpty=function(n){if(null==n)return true;var t=n.length;return we(t)&&(yi(n)||uu(n)||Xe(n)||h(n)&&mi(n.splice))?!t:!Ri(n).length},Ut.isEqual=function(n,t,r,e){return r=typeof r=="function"&&Fr(r,e,3),!r&&be(n)&&be(t)?n===t:(e=r?r(n,t):w,typeof e=="undefined"?hr(n,t,r):!!e)
75
- },Ut.isError=Qe,Ut.isFinite=di,Ut.isFunction=mi,Ut.isMatch=function(n,t,r,e){var u=Ri(t),o=u.length;if(!o)return true;if(null==n)return false;if(r=typeof r=="function"&&Fr(r,e,3),!r&&1==o){var i=u[0];if(e=t[i],be(e))return e===n[i]&&(typeof e!="undefined"||i in Ie(n))}for(var i=xu(o),f=xu(o);o--;)e=i[o]=t[u[o]],f[o]=be(e);return gr(Ie(n),u,i,f,r)},Ut.isNaN=function(n){return ru(n)&&n!=+n},Ut.isNative=tu,Ut.isNull=function(n){return null===n},Ut.isNumber=ru,Ut.isObject=nu,Ut.isPlainObject=wi,Ut.isRegExp=eu,Ut.isString=uu,Ut.isTypedArray=ou,Ut.isUndefined=function(n){return typeof n=="undefined"
76
- },Ut.kebabCase=Fi,Ut.last=Ue,Ut.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?ao(e+r,0):co(r||0,e-1))+1;else if(r)return u=Tr(n,t,true)-1,n=n[u],(t===t?t===n:n!==n)?u:-1;if(t!==t)return p(n,u,true);for(;u--;)if(n[u]===t)return u;return-1},Ut.max=Bi,Ut.min=zi,Ut.noConflict=function(){return _._=Mu,this},Ut.noop=bu,Ut.now=ui,Ut.pad=function(n,t,r){n=u(n),t=+t;var e=n.length;return e<t&&io(t)?(e=(t-e)/2,t=Zu(e),e=Vu(e),r=ue("",e,r),r.slice(0,t)+n+r):n
77
- },Ut.padLeft=Wi,Ut.padRight=Ni,Ut.parseInt=pu,Ut.random=function(n,t,r){r&&de(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,r||n%1||t%1?(r=ho(),co(n+r*(t-n+parseFloat("1e-"+((r+"").length-1))),t)):br(n,t)},Ut.reduce=ri,Ut.reduceRight=ei,Ut.repeat=hu,Ut.result=function(n,t,r){return t=null==n?w:n[t],typeof t=="undefined"&&(t=r),mi(t)?t.call(n):t},Ut.runInContext=m,Ut.size=function(n){var t=n?n.length:0;
78
- return we(t)?t:Ri(n).length},Ut.snakeCase=Li,Ut.some=Ve,Ut.sortedIndex=zo,Ut.sortedLastIndex=Mo,Ut.startCase=$i,Ut.startsWith=function(n,t,r){return n=u(n),r=null==r?0:co(0>r?0:+r||0,n.length),n.lastIndexOf(t,r)==r},Ut.sum=function(n,t,r){r&&de(n,t,r)&&(t=null);var e=pe(),u=null==t;if(e===tr&&u||(u=false,t=e(t,r,3)),u){for(n=yi(n)?n:Ee(n),t=n.length,r=0;t--;)r+=+n[t]||0;n=r}else n=Ir(n,t);return n},Ut.template=function(n,t,r){var e=Ut.templateSettings;r&&de(n,t,r)&&(t=r=null),n=u(n),t=Ht(Ht({},r||t),e,Xt),r=Ht(Ht({},t.imports),e.imports,Xt);
79
- var o,i,f=Ri(r),a=Rr(r,f),c=0;r=t.interpolate||xt;var l="__p+='";r=Ru((t.escape||xt).source+"|"+r.source+"|"+(r===gt?yt:xt).source+"|"+(t.evaluate||xt).source+"|$","g");var p="sourceURL"in t?"//# sourceURL="+t.sourceURL+"\n":"";if(n.replace(r,function(t,r,e,u,f,a){return e||(e=u),l+=n.slice(c,a).replace(Ot,s),r&&(o=true,l+="'+__e("+r+")+'"),f&&(i=true,l+="';"+f+";\n__p+='"),e&&(l+="'+((__t=("+e+"))==null?'':__t)+'"),c=a+t.length,t}),l+="';",(t=t.variable)||(l="with(obj){"+l+"}"),l=(i?l.replace(it,""):l).replace(ft,"$1").replace(at,"$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}",t=Pi(function(){return Ou(f,p+"return "+l).apply(w,a)
80
- }),t.source=l,Qe(t))throw t;return t},Ut.trim=_u,Ut.trimLeft=function(n,t,r){var e=n;return(n=u(n))?n.slice((r?de(e,t,r):null==t)?v(n):i(n,t+"")):n},Ut.trimRight=function(n,t,r){var e=n;return(n=u(n))?(r?de(e,t,r):null==t)?n.slice(0,y(n)+1):n.slice(0,f(n,t+"")+1):n},Ut.trunc=function(n,t,r){r&&de(n,t,r)&&(t=null);var e=C;if(r=T,null!=t)if(nu(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;if(n=u(n),e>=n.length)return n;if(e-=r.length,1>e)return r;
81
- if(t=n.slice(0,e),null==o)return t+r;if(eu(o)){if(n.slice(e).search(o)){var i,f=n.slice(0,e);for(o.global||(o=Ru(o.source,(dt.exec(o)||"")+"g")),o.lastIndex=0;n=o.exec(f);)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},Ut.unescape=function(n){return(n=u(n))&&st.test(n)?n.replace(ct,d):n},Ut.uniqueId=function(n){var t=++Bu;return u(n)+t},Ut.words=gu,Ut.all=Be,Ut.any=Ve,Ut.contains=Me,Ut.detect=Zo,Ut.foldl=ri,Ut.foldr=ei,Ut.head=Ce,Ut.include=Me,Ut.inject=ri,wu(Ut,function(){var n={};
82
- return lr(Ut,function(t,r){Ut.prototype[r]||(n[r]=t)}),n}(),false),Ut.sample=qe,Ut.prototype.sample=function(n){return this.__chain__||null!=n?this.thru(function(t){return qe(t,n)}):qe(this.value())},Ut.VERSION=b,zt("bind bindKey curry curryRight partial partialRight".split(" "),function(n){Ut[n].placeholder=Ut}),zt(["dropWhile","filter","map","takeWhile"],function(n,t){var r=t!=L,e=t==W;Nt.prototype[n]=function(n,u){var o=this.__filtered__,i=o&&e?new Nt(this):this.clone();return(i.__iteratees__||(i.__iteratees__=[])).push({done:false,count:0,index:0,iteratee:pe(n,u,1),limit:-1,type:t}),i.__filtered__=o||r,i
83
- }}),zt(["drop","take"],function(n,t){var r=n+"While";Nt.prototype[n]=function(r){var e=this.__filtered__,u=e&&!t?this.dropWhile():this.clone();return r=null==r?1:ao(Zu(r)||0,0),e?t?u.__takeCount__=co(u.__takeCount__,r):Ue(u.__iteratees__).limit=r:(u.__views__||(u.__views__=[])).push({size:r,type:n+(0>u.__dir__?"Right":"")}),u},Nt.prototype[n+"Right"]=function(t){return this.reverse()[n](t).reverse()},Nt.prototype[n+"RightWhile"]=function(n,t){return this.reverse()[r](n,t).reverse()}}),zt(["first","last"],function(n,t){var r="take"+(t?"Right":"");
84
- Nt.prototype[n]=function(){return this[r](1).value()[0]}}),zt(["initial","rest"],function(n,t){var r="drop"+(t?"":"Right");Nt.prototype[n]=function(){return this[r](1)}}),zt(["pluck","where"],function(n,t){var r=t?"filter":"map",e=t?yr:wr;Nt.prototype[n]=function(n){return this[r](e(n))}}),Nt.prototype.compact=function(){return this.filter(du)},Nt.prototype.reject=function(n,t){return n=pe(n,t,1),this.filter(function(t){return!n(t)})},Nt.prototype.slice=function(n,t){n=null==n?0:+n||0;var r=0>n?this.takeRight(-n):this.drop(n);
85
- return typeof t!="undefined"&&(t=+t||0,r=0>t?r.dropRight(-t):r.take(t-n)),r},Nt.prototype.toArray=function(){return this.drop(0)},lr(Nt.prototype,function(n,t){var r=Ut[t];if(r){var e=/^(?:filter|map|reject)|While$/.test(t),u=/^(?:first|last)$/.test(t);Ut.prototype[t]=function(){function t(n){return n=[n],Ju.apply(n,o),r.apply(Ut,n)}var o=arguments,i=this.__chain__,f=this.__wrapped__,a=!!this.__actions__.length,c=f instanceof Nt,l=o[0],s=c||yi(f);return s&&e&&typeof l=="function"&&1!=l.length&&(c=s=false),c=c&&!a,u&&!i?c?n.call(f):r.call(Ut,this.value()):s?(f=n.apply(c?f:new Nt(this),o),u||!a&&!f.__actions__||(f.__actions__||(f.__actions__=[])).push({func:Pe,args:[t],thisArg:Ut}),new Wt(f,i)):this.thru(t)
86
- }}}),zt("concat join pop push replace shift sort splice split unshift".split(" "),function(n){var t=(/^(?:replace|split)$/.test(n)?Wu:Tu)[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:join|pop|replace|shift)$/.test(n),u=Eo.spliceObjects||!/^(?:pop|shift|splice)$/.test(n)?t:function(){var n=t.apply(this,arguments);return 0===this.length&&delete this[0],n};Ut.prototype[n]=function(){var n=arguments;return e&&!this.__chain__?u.apply(this.value(),n):this[r](function(t){return u.apply(t,n)
87
- })}}),lr(Nt.prototype,function(n,t){var r=Ut[t];if(r){var e=r.name;(Ao[e]||(Ao[e]=[])).push({name:t,func:r})}}),Ao[ee(null,A).name]=[{name:"wrapper",func:null}],Nt.prototype.clone=function(){var n=this.__actions__,t=this.__iteratees__,r=this.__views__,e=new Nt(this.__wrapped__);return e.__actions__=n?Bt(n):null,e.__dir__=this.__dir__,e.__filtered__=this.__filtered__,e.__iteratees__=t?Bt(t):null,e.__takeCount__=this.__takeCount__,e.__views__=r?Bt(r):null,e},Nt.prototype.reverse=function(){if(this.__filtered__){var n=new Nt(this);
88
- n.__dir__=-1,n.__filtered__=true}else n=this.clone(),n.__dir__*=-1;return n},Nt.prototype.value=function(){var n=this.__wrapped__.value();if(!yi(n))return Cr(n,this.__actions__);var t,r=this.__dir__,e=0>r;t=n.length;for(var u=this.__views__,o=0,i=-1,f=u?u.length:0;++i<f;){var a=u[i],c=a.size;switch(a.type){case"drop":o+=c;break;case"dropRight":t-=c;break;case"take":t=co(t,o+c);break;case"takeRight":o=ao(o,t-c)}}t={start:o,end:t},u=t.start,o=t.end,t=o-u,u=e?o:u-1,o=co(t,this.__takeCount__),f=(i=this.__iteratees__)?i.length:0,a=0,c=[];
89
- n:for(;t--&&a<o;){for(var u=u+r,l=-1,s=n[u];++l<f;){var p=i[l],h=p.iteratee,_=p.type;if(_==W){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),_==L)s=p;else if(!p){if(_==N)continue n;break n}}c[a++]=s}return c},Ut.prototype.chain=function(){return $e(this)},Ut.prototype.commit=function(){return new Wt(this.value(),this.__chain__)},Ut.prototype.plant=function(n){for(var t,r=this;r instanceof Ft;){var e=ke(r);
90
- t?u.__wrapped__=e:t=e;var u=e,r=r.__wrapped__}return u.__wrapped__=n,t},Ut.prototype.reverse=function(){var n=this.__wrapped__;return n instanceof Nt?(this.__actions__.length&&(n=new Nt(this)),new Wt(n.reverse(),this.__chain__)):this.thru(function(n){return n.reverse()})},Ut.prototype.toString=function(){return this.value()+""},Ut.prototype.run=Ut.prototype.toJSON=Ut.prototype.valueOf=Ut.prototype.value=function(){return Cr(this.__wrapped__,this.__actions__)},Ut.prototype.collect=Ut.prototype.map,Ut.prototype.head=Ut.prototype.first,Ut.prototype.select=Ut.prototype.filter,Ut.prototype.tail=Ut.prototype.rest,Ut
91
- }var w,b="3.6.0",x=1,A=2,j=4,O=8,E=16,I=32,k=64,R=128,S=256,C=30,T="...",U=150,F=16,W=0,N=1,L=2,$="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]",nt="[object Int16Array]",tt="[object Int32Array]",rt="[object Uint8Array]",et="[object Uint8ClampedArray]",ut="[object Uint16Array]",ot="[object Uint32Array]",it=/\b__p\+='';/g,ft=/\b(__p\+=)''\+/g,at=/(__e\(.*?\)|\b__t\))\+'';/g,ct=/&(?:amp|lt|gt|quot|#39|#96);/g,lt=/[&<>"'`]/g,st=RegExp(ct.source),pt=RegExp(lt.source),ht=/<%-([\s\S]+?)%>/g,_t=/<%([\s\S]+?)%>/g,gt=/<%=([\s\S]+?)%>/g,vt=/[\u0300-\u036f\ufe20-\ufe23]/g,yt=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,dt=/\w*$/,mt=/^0[xX]/,wt=/^\[object .+?Constructor\]$/,bt=/[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g,xt=/($^)/,At=/[.*+?^${}()|[\]\/\\]/g,jt=RegExp(At.source),Ot=/['\n\r\u2028\u2029\\]/g,Et=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"),It=" \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",kt="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(" "),Rt="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" "),St={};
92
- St[X]=St[H]=St[Q]=St[nt]=St[tt]=St[rt]=St[et]=St[ut]=St[ot]=true,St[B]=St[z]=St[J]=St[M]=St[D]=St[q]=St[K]=St["[object Map]"]=St[V]=St[Y]=St[Z]=St["[object Set]"]=St[G]=St["[object WeakMap]"]=false;var Ct={};Ct[B]=Ct[z]=Ct[J]=Ct[M]=Ct[D]=Ct[X]=Ct[H]=Ct[Q]=Ct[nt]=Ct[tt]=Ct[V]=Ct[Y]=Ct[Z]=Ct[G]=Ct[rt]=Ct[et]=Ct[ut]=Ct[ot]=true,Ct[q]=Ct[K]=Ct["[object Map]"]=Ct["[object Set]"]=Ct["[object WeakMap]"]=false;var Tt={leading:false,maxWait:0,trailing:false},Ut={"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\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","\xfb":"u","\xfc":"u","\xdd":"Y","\xfd":"y","\xff":"y","\xc6":"Ae","\xe6":"ae","\xde":"Th","\xfe":"th","\xdf":"ss"},Ft={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","`":"&#96;"},Wt={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'","&#96;":"`"},Nt={"function":true,object:true},Lt={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},$t=Nt[typeof exports]&&exports&&!exports.nodeType&&exports,Pt=Nt[typeof module]&&module&&!module.nodeType&&module,Bt=Nt[typeof self]&&self&&self.Object&&self,Nt=Nt[typeof window]&&window&&window.Object&&window,zt=Pt&&Pt.exports===$t&&$t,Mt=$t&&Pt&&typeof global=="object"&&global||Nt!==(this&&this.window)&&Nt||Bt||this,Dt=function(){try{Object({toString:0}+"")
93
- }catch(n){return function(){return false}}return function(n){return typeof n.toString!="function"&&typeof(n+"")=="string"}}(),qt=m();typeof define=="function"&&typeof define.amd=="object"&&define.amd?(Mt._=qt, define(function(){return qt})):$t&&Pt?zt?(Pt.exports=qt)._=qt:$t._=qt:Mt._=qt}).call(this);
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={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","`":"&#96;"},Bn={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'","&#96;":"`"},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.6.0 (Custom Build) <https://lodash.com/>
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.2 <http://underscorejs.org/LICENSE>
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.6.0';
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
- * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).
92
- */
93
- var reComboMarks = /[\u0300-\u036f\ufe20-\ufe23]/g;
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 [ES template delimiters](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-template-literal-lexical-components).
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 reHexPrefix = /^0[xX]/;
116
+ var reHasHexPrefix = /^0[xX]/;
105
117
 
106
118
  /** Used to detect host constructors (Safari > 5). */
107
- var reHostCtor = /^\[object .+?Constructor\]$/;
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 || (typeof value == 'undefined' && othIsReflexive)) {
299
+ if (value > other || !valIsReflexive || (value === undefined && othIsReflexive)) {
296
300
  return 1;
297
301
  }
298
- if (value < other || !othIsReflexive || (typeof other == 'undefined' && valIsReflexive)) {
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 reNative = RegExp('^' +
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`, `merge`,
847
- * `mixin`, `negate`, `noop`, `omit`, `once`, `pairs`, `partial`, `partialRight`,
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
- * `isFinite`,`isFunction`, `isMatch`, `isNative`, `isNaN`, `isNull`, `isNumber`,
863
- * `isObject`, `isPlainObject`, `isRegExp`, `isString`, `isUndefined`,
864
- * `isTypedArray`, `join`, `kebabCase`, `last`, `lastIndexOf`, `max`, `min`,
865
- * `noConflict`, `now`, `pad`, `padLeft`, `padRight`, `parseInt`, `pop`,
866
- * `random`, `reduce`, `reduceRight`, `repeat`, `result`, `runInContext`,
867
- * `shift`, `size`, `snakeCase`, `some`, `sortedIndex`, `sortedLastIndex`,
868
- * `startCase`, `startsWith`, `sum`, `template`, `trim`, `trimLeft`,
869
- * `trimRight`, `trunc`, `unescape`, `uniqueId`, `value`, and `words`
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(sum, n) {
885
- * return sum + n;
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 their function's formal parameters with
983
- * associated values of `0`.
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
- }(0, 0));
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
- * Adds `value` to `key` of the cache.
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 typeof objectValue == 'undefined' ? sourceValue : objectValue;
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 method is like `assignDefaults` except that it ignores
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 (typeof objectValue == 'undefined' || !hasOwnProperty.call(object, key))
1615
+ return (objectValue === undefined || !hasOwnProperty.call(object, key))
1591
1616
  ? sourceValue
1592
1617
  : objectValue;
1593
1618
  }
1594
1619
 
1595
1620
  /**
1596
- * The base implementation of `_.assign` without support for argument juggling,
1597
- * multiple sources, and `this` binding `customizer` functions.
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} [customizer] The function to customize assigning values.
1603
- * @returns {Object} Returns the destination object.
1628
+ * @param {Function} customizer The function to customize assigned values.
1629
+ * @returns {Object} Returns `object`.
1604
1630
  */
1605
- function baseAssign(object, source, customizer) {
1631
+ function assignWith(object, source, customizer) {
1606
1632
  var props = keys(source);
1607
- if (!customizer) {
1608
- return baseCopy(source, object, props);
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
- (typeof value == 'undefined' && !(key in object))) {
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 `_.at` without support for strings and individual
1628
- * key arguments.
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[]} [props] The property names or indexes of elements to pick.
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 the properties of `source` to `object`.
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, object, props) {
1664
- if (!props) {
1665
- props = object;
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 typeof thisArg == 'undefined'
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 typeof thisArg == 'undefined'
1702
- ? baseProperty(func + '')
1703
- : baseMatchesProperty(func + '', thisArg);
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 (typeof result != 'undefined') {
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 baseCopy(value, result, keys(value));
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 = (typeof end == 'undefined' || end > length) ? length : (+end || 0);
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. Iterator functions may exit iteration early by explicitly
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 = (objTag == objectTag || (isLoose && objTag == funcTag)),
2167
- othIsObj = (othTag == objectTag || (isLoose && othTag == funcTag)),
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
- if (!isSameTag) {
2185
- return false;
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 = typeof objValue != 'undefined' || (key in object);
2302
+ var result = objValue !== undefined || (key in object);
2244
2303
  } else {
2245
2304
  result = customizer ? customizer(objValue, srcValue, key) : undefined;
2246
- if (typeof result == 'undefined') {
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 result = [];
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.push(iteratee(value, key, collection));
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
- return object != null && object[key] === value &&
2295
- (typeof value != 'undefined' || (key in toObject(object)));
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 coerce `key`
2314
- * to a string.
2377
+ * The base implementation of `_.matchesProperty` which does not which does
2378
+ * not clone `value`.
2315
2379
  *
2316
2380
  * @private
2317
- * @param {string} key The key of the property to get.
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(key, value) {
2322
- if (isStrictComparable(value)) {
2323
- return function(object) {
2324
- return object != null && object[key] === value &&
2325
- (typeof value != 'undefined' || (key in toObject(object)));
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
- return object != null && baseIsEqual(value, object[key], null, true);
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 the destination object.
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 ? arrayEach : baseForOwn)(source, function(srcValue, key, source) {
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
- return baseMergeDeep(object, source, key, baseMerge, customizer, stackA, stackB);
2440
+ baseMergeDeep(object, source, key, baseMerge, customizer, stackA, stackB);
2355
2441
  }
2356
- var value = object[key],
2357
- result = customizer ? customizer(value, srcValue, key, object, source) : undefined,
2358
- isCommon = typeof result == 'undefined';
2442
+ else {
2443
+ var value = object[key],
2444
+ result = customizer ? customizer(value, srcValue, key, object, source) : undefined,
2445
+ isCommon = result === undefined;
2359
2446
 
2360
- if (isCommon) {
2361
- result = srcValue;
2362
- }
2363
- if ((isSrcArr || typeof result != 'undefined') &&
2364
- (isCommon || (result === result ? (result !== value) : (value === value)))) {
2365
- object[key] = result;
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 = typeof result == 'undefined';
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 && value.length) ? arrayCopy(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` which does not coerce `key` to a string.
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 = (typeof end == 'undefined' || end > length) ? length : (+end || 0);
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[]} props The property names to sort by.
2568
- * @param {boolean[]} orders The sort orders of `props`.
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, props, orders) {
2572
- var index = -1,
2573
- length = collection.length,
2574
- result = isLength(length) ? Array(length) : [];
2695
+ function baseSortByOrder(collection, iteratees, orders) {
2696
+ var callback = getCallback(),
2697
+ index = -1;
2575
2698
 
2576
- baseEach(collection, function(value) {
2577
- var length = props.length,
2578
- criteria = Array(length);
2699
+ iteratees = arrayMap(iteratees, function(iteratee) { return callback(iteratee); });
2579
2700
 
2580
- while (length--) {
2581
- criteria[length] = value == null ? undefined : value[props[length]];
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
- * returned by `keysFunc`.
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 = typeof value == 'undefined';
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 || typeof computed != 'undefined');
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 (typeof thisArg == 'undefined') {
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 args = arguments,
2979
- length = args.length,
2980
- object = args[0];
2981
-
2982
- if (length < 2 || object == null) {
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 (length > 3 && typeof customizer == 'function') {
3104
+ if (typeof customizer == 'function') {
2990
3105
  customizer = bindCallback(customizer, thisArg, 5);
2991
3106
  length -= 2;
2992
3107
  } else {
2993
- customizer = (length > 2 && typeof thisArg == 'function') ? thisArg : null;
3108
+ customizer = typeof thisArg == 'function' ? thisArg : null;
2994
3109
  length -= (customizer ? 1 : 0);
2995
3110
  }
2996
- if (guard && isIterateeCall(args[1], args[2], guard)) {
2997
- customizer = length == 3 ? null : customizer;
2998
- length = 2;
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 = args[index];
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.length : 0;
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' && typeof thisArg == 'undefined' && isArray(collection))
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' || typeof thisArg != 'undefined') {
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' || typeof thisArg != 'undefined') {
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' && typeof thisArg == 'undefined' && isArray(collection))
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 (typeof result == 'undefined') {
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 (typeof result == 'undefined') {
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.length,
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 the `props` array.
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 typeof result == 'undefined' || hasOwnProperty.call(value, result);
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 inspect.
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.length)) {
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 length = indexes.length,
5073
- result = baseAt(array, indexes);
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
- length = array ? array.length : 0,
5128
- result = [];
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
- splice.call(array, index--, 1);
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 function is used instead of `Array#slice` to support node
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-value-free version of an array using `SameValueZero`
5463
- * for equality comparisons. Providing `true` for `isSorted` performs a faster
5464
- * search algorithm for sorted arrays. If an iteratee function is provided it
5465
- * is invoked for each value in the array to generate the criterion by which
5466
- * uniqueness is computed. The `iteratee` is bound to `thisArg` and invoked
5467
- * with three arguments: (value, index, array).
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, 1]);
5496
- * // => [1, 2]
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.length : 0;
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' || typeof thisArg != 'undefined') {
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). Iterator functions may exit iteration early
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 `length` property
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.length : 0;
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 named by `methodName` on each element in `collection`,
6424
- * returning an array of the results of each invoked method. Any additional
6425
- * arguments are provided to each invoked method. If `methodName` is a function
6426
- * it is invoked for, and `this` bound to, each element in `collection`.
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} methodName The name of the method to invoke or
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, methodName, args) {
6636
+ var invoke = restParam(function(collection, path, args) {
6445
6637
  var index = -1,
6446
- isFunc = typeof methodName == 'function',
6447
- length = collection ? collection.length : 0,
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 ? methodName : (value != null && value[methodName]);
6452
- result[++index] = func ? func.apply(value, args) : undefined;
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 `key` from all elements in `collection`.
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} key The key of the property to pluck.
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, key) {
6606
- return map(collection, baseProperty(key));
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(sum, n) {
6635
- * return sum + n;
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.length : 0;
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' || typeof thisArg != 'undefined') {
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 {Array|Function|Object|string} [iteratee=_.identity] The function
6894
- * invoked per iteration. If a property name or an object is provided it is
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
- baseEach(collection, function(value, key, collection) {
6933
- result[++index] = { 'criteria': iteratee(value, key, collection), 'index': index, 'value': value };
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 sorts by property names
6940
- * instead of an iteratee function.
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[])} props The property names to sort by,
6947
- * specified as individual property names or arrays of property names.
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': 40 },
6954
- * { 'user': 'barney', 'age': 26 },
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', 26], ['barney', 36], ['fred', 30], ['fred', 40]]
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
- function sortByAll() {
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 props = Array(length);
6972
- while (index < length) {
6973
- props[index] = args[++index];
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(props), []);
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 property names to sort by. A truthy value in `orders`
6984
- * will sort the corresponding property name in ascending order while a
6985
- * falsey value will sort it in descending order.
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[]} props The property names to sort by.
6992
- * @param {boolean[]} orders The sort orders of `props`.
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': 'barney', 'age': 26 },
6999
- * { 'user': 'fred', 'age': 40 },
7000
- * { 'user': 'barney', 'age': 36 },
7001
- * { 'user': 'fred', 'age': 30 }
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', 26], ['fred', 40], ['fred', 30]]
7205
+ * // => [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 42]]
7007
7206
  */
7008
- function sortByOrder(collection, props, orders, guard) {
7207
+ function sortByOrder(collection, iteratees, orders, guard) {
7009
7208
  if (collection == null) {
7010
7209
  return [];
7011
7210
  }
7012
- if (guard && isIterateeCall(props, orders, guard)) {
7211
+ if (guard && isIterateeCall(iteratees, orders, guard)) {
7013
7212
  orders = null;
7014
7213
  }
7015
- if (!isArray(props)) {
7016
- props = props == null ? [] : [props];
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, props, orders);
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
- } else {
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 `length`
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 `length` property of bound functions.
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 `length` property of curried functions.
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 `length` property of curried functions.
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(func, 2);
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 `length` property of partially
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 `length` property of partially
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(typeof start == 'undefined' ? (func.length - 1) : (+start || 0), 0);
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.length;
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 comparing values.
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 typeof result == 'undefined' ? baseIsEqual(value, other, customizer) : !!result;
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 comparing values.
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] && (typeof value != 'undefined' || (key in toObject(object)));
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(toObject(object), props, values, strictCompareFlags, customizer);
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 reNative.test(fnToString.call(value));
8795
+ return reIsNative.test(fnToString.call(value));
8595
8796
  }
8596
- return isObjectLike(value) && reHostCtor.test(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 typeof value == 'undefined';
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.length : 0;
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 assigning values.
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 typeof value == 'undefined' ? other : value;
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(baseAssign);
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 ? baseCopy(properties, result, keys(properties)) : result;
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). Iterator functions may exit
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). Iterator functions may exit iteration
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
- * Checks if `key` exists as a direct property of `object` instead of an
9153
- * inherited property.
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 inspect.
9159
- * @param {string} key The key to check.
9160
- * @returns {boolean} Returns `true` if `key` is a direct property, else `false`.
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': 1, 'b': 2, 'c': 3 };
9375
+ * var object = { 'a': [{ 'b': { 'c': 3 } }] };
9164
9376
  *
9165
- * _.has(object, 'b');
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, key) {
9169
- return object ? hasOwnProperty.call(object, key) : false;
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 inspect.
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' && (length && isLength(length)))) {
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 inspect.
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 merging properties.
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 inspect.
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
- * Resolves the value of property `key` on `object`. If the value of `key` is
9519
- * a function it is invoked with the `this` binding of `object` and its result
9520
- * is returned, else the property value is returned. If the property value is
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} key The key of the property to resolve.
9528
- * @param {*} [defaultValue] The value returned if the property value
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 = { 'user': 'fred', 'age': _.constant(40) };
9786
+ * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };
9534
9787
  *
9535
- * _.result(object, 'user');
9536
- * // => 'fred'
9788
+ * _.result(object, 'a[0].b.c1');
9789
+ * // => 3
9537
9790
  *
9538
- * _.result(object, 'age');
9539
- * // => 40
9791
+ * _.result(object, 'a[0].b.c2');
9792
+ * // => 4
9540
9793
  *
9541
- * _.result(object, 'status', 'busy');
9542
- * // => 'busy'
9794
+ * _.result(object, 'a.b.c', 'default');
9795
+ * // => 'default'
9543
9796
  *
9544
- * _.result(object, 'status', _.constant('busy'));
9545
- * // => 'busy'
9797
+ * _.result(object, 'a.b.c', _.constant('default'));
9798
+ * // => 'default'
9546
9799
  */
9547
- function result(object, key, defaultValue) {
9548
- var value = object == null ? undefined : object[key];
9549
- if (typeof value == 'undefined') {
9550
- value = defaultValue;
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(value) ? value.call(object) : value;
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). Iterator functions
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(reComboMarks, '');
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 = typeof position == 'undefined'
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 [#102](https://html5sec.org/#102),
9880
- * [#108](https://html5sec.org/#108), and [#133](https://html5sec.org/#133) of
9881
- * the [HTML5 Security Cheatsheet](https://html5sec.org/) for more details.
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 || (reHexPrefix.test(string) ? 16 : 10));
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 = baseAssign(baseAssign({}, otherOptions || options), settings, assignOwnDefaults);
10608
+ options = assignWith(baseAssign({}, otherOptions || options), settings, assignOwnDefaults);
10301
10609
 
10302
- var imports = baseAssign(baseAssign({}, options.imports), settings.imports, assignOwnDefaults),
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 isObjectLike(func)
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 `key` on a given
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} key The key of the property to get.
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(key, value) {
10806
- return baseMatchesProperty(key + '', baseClone(value, true));
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
- * for mixins to avoid conflicts caused by modifying the original.
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=this] object The destination 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 of `key` on a given object.
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} key The key of the property to get.
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 users = [
10947
- * { 'user': 'fred' },
10948
- * { 'user': 'barney' }
11306
+ * var objects = [
11307
+ * { 'a': { 'b': { 'c': 2 } } },
11308
+ * { 'a': { 'b': { 'c': 1 } } }
10949
11309
  * ];
10950
11310
  *
10951
- * var getName = _.property('user');
10952
- *
10953
- * _.map(users, getName);
10954
- * // => ['fred', 'barney']
11311
+ * _.map(objects, _.property('a.b.c'));
11312
+ * // => [2, 1]
10955
11313
  *
10956
- * _.pluck(_.sortBy(users, getName), 'user');
10957
- * // => ['barney', 'fred']
11314
+ * _.pluck(_.sortBy(objects, _.property(['a', 'b', 'c'])), 'a.b.c');
11315
+ * // => [1, 2]
10958
11316
  */
10959
- function property(key) {
10960
- return baseProperty(key + '');
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 of a given key on `object`.
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 inspect.
11328
+ * @param {Object} object The object to query.
10971
11329
  * @returns {Function} Returns the new function.
10972
11330
  * @example
10973
11331
  *
10974
- * var object = { 'a': 3, 'b': 1, 'c': 2 };
11332
+ * var array = [0, 1, 2],
11333
+ * object = { 'a': array, 'b': array, 'c': array };
10975
11334
  *
10976
- * _.map(['a', 'c'], _.propertyOf(object));
10977
- * // => [3, 2]
11335
+ * _.map(['a[2]', 'c[0]'], _.propertyOf(object));
11336
+ * // => [2, 0]
10978
11337
  *
10979
- * _.sortBy(['a', 'b', 'c'], _.propertyOf(object));
10980
- * // => ['b', 'c', 'a']
11338
+ * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));
11339
+ * // => [2, 0]
10981
11340
  */
10982
11341
  function propertyOf(object) {
10983
- return function(key) {
10984
- return object == null ? undefined : object[key];
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 `start` is less than `end`
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` respectively
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 : baseProperty;
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 (typeof end != 'undefined') {
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 `length` other than `1`
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;