Compare commits
251 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
15841b191d | ||
|
|
65514d89ad | ||
|
|
c6f8896826 | ||
|
|
882d84f1e6 | ||
|
|
0eba3a3678 | ||
|
|
756b28c3ab | ||
|
|
d78ebc40ae | ||
|
|
58aea21b82 | ||
|
|
c2b1d61dd1 | ||
|
|
f4d72dba06 | ||
|
|
31e81d7be2 | ||
|
|
6c9123beee | ||
|
|
0fa0397da2 | ||
|
|
b652fc7e1a | ||
|
|
c42fea0d3d | ||
|
|
48a56a848a | ||
|
|
d6937baa8e | ||
|
|
3490f8acb5 | ||
|
|
46ace7e8e8 | ||
|
|
698956e130 | ||
|
|
b25cd39953 | ||
|
|
de4f5eb2ca | ||
|
|
ccc5fa3981 | ||
|
|
b899a19184 | ||
|
|
6af7fac344 | ||
|
|
49ef2b4d54 | ||
|
|
fcc09a7375 | ||
|
|
8e9ad4df97 | ||
|
|
4dfcfd2542 | ||
|
|
12081c9bd6 | ||
|
|
abee7fdfa2 | ||
|
|
ca0bc0632b | ||
|
|
e465750cd2 | ||
|
|
934b08f720 | ||
|
|
78cc98840b | ||
|
|
d4cd7a120f | ||
|
|
4b6c91bbf1 | ||
|
|
e3be2b4451 | ||
|
|
c6ff845ecb | ||
|
|
846bde35ff | ||
|
|
69990ae226 | ||
|
|
415fc81577 | ||
|
|
b675566e23 | ||
|
|
190da0dcd4 | ||
|
|
5c40f93ca3 | ||
|
|
879c1e4992 | ||
|
|
311334c9e1 | ||
|
|
dc5268b0c0 | ||
|
|
d77ace6dc3 | ||
|
|
f0b3c1a9ab | ||
|
|
9efb73f592 | ||
|
|
569b4b29aa | ||
|
|
a61bde5b78 | ||
|
|
542dd67892 | ||
|
|
172eca6081 | ||
|
|
004aaed783 | ||
|
|
a1b15df648 | ||
|
|
b5d5bef678 | ||
|
|
421df0dff3 | ||
|
|
5b5e29cb7b | ||
|
|
db67ae12ec | ||
|
|
7dfd7ad5b9 | ||
|
|
ca5fa9e84d | ||
|
|
1afcfa4406 | ||
|
|
95b1455b62 | ||
|
|
d825937411 | ||
|
|
ee182df533 | ||
|
|
14651d8ea8 | ||
|
|
7e4ed7c1a9 | ||
|
|
13fe88c03f | ||
|
|
7b80a780c7 | ||
|
|
2b465bdf82 | ||
|
|
6d52119597 | ||
|
|
b75041173c | ||
|
|
23eba0a029 | ||
|
|
566781cab2 | ||
|
|
0ea1fc5602 | ||
|
|
2ce9e09e8b | ||
|
|
6cab7ceb0f | ||
|
|
8ae7d8aa07 | ||
|
|
ce6ccef2d0 | ||
|
|
2c6d880542 | ||
|
|
bf89287c56 | ||
|
|
df176dfe8a | ||
|
|
141a32d388 | ||
|
|
37786b76ed | ||
|
|
02b920f259 | ||
|
|
31e25f88a0 | ||
|
|
231c8a468e | ||
|
|
ae346f564f | ||
|
|
fcc0608cf2 | ||
|
|
641cd63462 | ||
|
|
0b907a3efa | ||
|
|
ce180cf2bf | ||
|
|
d97276404c | ||
|
|
d5a9b4344b | ||
|
|
e317fdfa3d | ||
|
|
150ea2639a | ||
|
|
a551348b40 | ||
|
|
3429b5d661 | ||
|
|
c8314b215b | ||
|
|
5929f7d23b | ||
|
|
85a7df3d27 | ||
|
|
e6c5a0e848 | ||
|
|
92dee72b10 | ||
|
|
4d6e57a5e6 | ||
|
|
936a1c2764 | ||
|
|
a08a3c6096 | ||
|
|
82be40eace | ||
|
|
20ba0bd1dc | ||
|
|
75ce6b82e8 | ||
|
|
9749ac56ba | ||
|
|
746f9bb778 | ||
|
|
f2dae588aa | ||
|
|
9f3f0a76aa | ||
|
|
30f28a51ca | ||
|
|
3e22344782 | ||
|
|
0b20d89d62 | ||
|
|
80d892c744 | ||
|
|
53326bef33 | ||
|
|
f05a5a3abb | ||
|
|
8581be4977 | ||
|
|
0e8277ba9e | ||
|
|
3cc2f83912 | ||
|
|
177034a498 | ||
|
|
f4d06e5183 | ||
|
|
637a6b5f7e | ||
|
|
75445b8b98 | ||
|
|
f96de55ac7 | ||
|
|
c4d4af3b5a | ||
|
|
5dfee44340 | ||
|
|
99f5857d84 | ||
|
|
520f7c6812 | ||
|
|
63d493aa1f | ||
|
|
38ab42f855 | ||
|
|
bc3771f3af | ||
|
|
9d90af409b | ||
|
|
20183bbd57 | ||
|
|
1d8efe1cf8 | ||
|
|
23354d413f | ||
|
|
715f03f5f1 | ||
|
|
ff6bbaed19 | ||
|
|
f82cbbab1c | ||
|
|
5a1b526b6c | ||
|
|
1ef92c87fb | ||
|
|
0aef515522 | ||
|
|
9b5c97666a | ||
|
|
a55d822f9a | ||
|
|
5b2bde6e0d | ||
|
|
020c5b27dc | ||
|
|
65457208e5 | ||
|
|
6eb1b98975 | ||
|
|
a927bab6b3 | ||
|
|
48e3e3e8cb | ||
|
|
b5d095401d | ||
|
|
b3e58d4794 | ||
|
|
79b064320e | ||
|
|
335b8326ee | ||
|
|
e777020e44 | ||
|
|
745d97ebe1 | ||
|
|
bb06d98a43 | ||
|
|
3500b0016c | ||
|
|
7ec916b777 | ||
|
|
3c71f79929 | ||
|
|
a83e70104c | ||
|
|
85af554bac | ||
|
|
885722afde | ||
|
|
b2f094da01 | ||
|
|
1e85ec6758 | ||
|
|
c8974aac3e | ||
|
|
ad318c04e5 | ||
|
|
db73e48206 | ||
|
|
d13972e0b8 | ||
|
|
df74b2bfcb | ||
|
|
b94b75726d | ||
|
|
9a2d38acff | ||
|
|
537f8f401e | ||
|
|
04f1a799dc | ||
|
|
74adb2f540 | ||
|
|
a129a2509f | ||
|
|
cc0b8e9d10 | ||
|
|
af8fcf234f | ||
|
|
e0dc2daf54 | ||
|
|
c066e655dc | ||
|
|
2698e6f0ea | ||
|
|
63902bde9c | ||
|
|
c876004fb2 | ||
|
|
633f37bfb6 | ||
|
|
d70bc74dc8 | ||
|
|
d7a4524e70 | ||
|
|
fe1e27fd40 | ||
|
|
8a7a099073 | ||
|
|
1b53b5f9eb | ||
|
|
8b758ee25a | ||
|
|
81c24a8478 | ||
|
|
a6f3e0b6af | ||
|
|
6e9e8127b6 | ||
|
|
63d43275d3 | ||
|
|
cb2bf7f8fa | ||
|
|
1fae760ccd | ||
|
|
4195c4c4bf | ||
|
|
13e7a1ed93 | ||
|
|
ea4357ca98 | ||
|
|
5e8255d24d | ||
|
|
003d6ec43f | ||
|
|
9749ff7c67 | ||
|
|
c88589e0e5 | ||
|
|
32ef1bb7a5 | ||
|
|
206c65904f | ||
|
|
219d4688e4 | ||
|
|
adc687f0a0 | ||
|
|
88e59c9a5a | ||
|
|
71a89a575f | ||
|
|
e3dc8dfcf4 | ||
|
|
2dd77d5bc7 | ||
|
|
0192226bb3 | ||
|
|
faf2658da2 | ||
|
|
9a1c00d2dc | ||
|
|
4a8695caff | ||
|
|
b28016bfeb | ||
|
|
4758a9e66d | ||
|
|
97bd1ef4ec | ||
|
|
2adac8bdae | ||
|
|
3c56914822 | ||
|
|
c5cc907838 | ||
|
|
0907aabacd | ||
|
|
f4290bda7f | ||
|
|
4bdb82a7a2 | ||
|
|
6a696dde3a | ||
|
|
8481684a82 | ||
|
|
03aa8b3356 | ||
|
|
64bfed2640 | ||
|
|
2edcc89303 | ||
|
|
18313f2e90 | ||
|
|
0ff96418bd | ||
|
|
1480abf0e8 | ||
|
|
e7ba75d533 | ||
|
|
044291d940 | ||
|
|
ad62efcb9e | ||
|
|
0dc59d9481 | ||
|
|
11ab3034b1 | ||
|
|
c594bda77f | ||
|
|
8218b74fb3 | ||
|
|
3d0beb1a2e | ||
|
|
515cfd48d8 | ||
|
|
1448bab5b3 | ||
|
|
2884f8acb8 | ||
|
|
075cae4efb | ||
|
|
d2b98323dd | ||
|
|
b1a81a85b1 | ||
|
|
668384649a |
20
.travis.yml
@@ -3,6 +3,8 @@ node_js:
|
||||
- "0.12"
|
||||
env:
|
||||
global:
|
||||
- PATTERN1="s|^.+?!support\.funcNames\b[\s\S]+?\.name\b[\s\S]+?\}\n||m"
|
||||
- PATTERN2="s|\s*else\s*\{\s*iteratee\(index\);\s*\}||"
|
||||
- BIN="node" BUILD="compat" ISTANBUL=false OPTION=""
|
||||
- NPM_VERSION="^2.0.0" SAUCE_LABS=false SAUCE_USERNAME="lodash"
|
||||
- secure: "tg1JFsIFnxzLaTboFPOnm+aJCuMm5+JdhLlESlqg9x3fwro++7KCnwHKLNovhchaPe4otC43ZMB/nfWhDnDm11dKbm/V6HlTkED+dadTsaLxVDg6J+7yK41QhokBPJOxLV78iDaNaAQVYEirAgZ0yn8kFubxmNKV+bpCGQNc9yU="
|
||||
@@ -12,8 +14,8 @@ env:
|
||||
- BUILD="modern"
|
||||
- BUILD="modern" ISTANBUL=true
|
||||
- BIN="phantomjs"
|
||||
- BIN="rhino"
|
||||
- BIN="rhino" OPTION="-require"
|
||||
- BIN="rhino" OPTION="-opt -1"
|
||||
- BIN="rhino" OPTION="-opt -1 -require"
|
||||
- BIN="ringo"
|
||||
matrix:
|
||||
include:
|
||||
@@ -48,17 +50,19 @@ before_install:
|
||||
- "nvm use $TRAVIS_NODE_VERSION"
|
||||
- "npm config set loglevel error"
|
||||
- "npm i -g npm@\"$NPM_VERSION\""
|
||||
- "[ $SAUCE_LABS == false ] || npm i chalk@\"^1.0.0\" ecstatic@\"0.6.0\" request@\"^2.0.0\" sauce-tunnel@\"2.2.2\""
|
||||
- "[ $ISTANBUL == false ] || (npm i -g coveralls@\"^2.0.0\" && npm i istanbul@\"0.3.6\")"
|
||||
- "[ $BIN != 'rhino' ] || (sudo mkdir /opt/rhino-1.7R5 && sudo wget --no-check-certificate -O $_/js.jar https://lodash.com/_travis/rhino-1.7R5.jar)"
|
||||
- "[ $BIN != 'rhino' ] || (echo -e '#!/bin/sh\\njava -jar /opt/rhino-1.7R5/js.jar $@' | sudo tee /usr/local/bin/rhino && sudo chmod +x /usr/local/bin/rhino)"
|
||||
- "[ $SAUCE_LABS == false ] || npm i chalk@\"^1.0.0\" ecstatic@\"0.7.6\" request@\"^2.0.0\" sauce-tunnel@\"2.2.3\""
|
||||
- "[ $ISTANBUL == false ] || (npm i -g coveralls@\"^2.0.0\" && npm i istanbul@\"0.3.14\")"
|
||||
- "[ $BIN != 'rhino' ] || (sudo mkdir /opt/rhino-1.7.6 && sudo wget --no-check-certificate -O $_/js.jar https://lodash.com/_travis/rhino-1.7.6.jar)"
|
||||
- "[ $BIN != 'rhino' ] || (echo -e '#!/bin/sh\\njava -jar /opt/rhino-1.7.6/js.jar $@' | sudo tee /usr/local/bin/rhino && sudo chmod +x /usr/local/bin/rhino)"
|
||||
- "[ $BIN != 'ringo' ] || (wget --no-check-certificate https://lodash.com/_travis/ringojs-0.11.zip && sudo unzip ringojs-0.11 -d /opt && rm ringojs-0.11.zip)"
|
||||
- "[ $BIN != 'ringo' ] || (sudo ln -s /opt/ringojs-0.11/bin/ringo /usr/local/bin/ringo && sudo chmod +x $_)"
|
||||
- "sed -i'' 's|\"lodash\"|\"lodash-compat\"|' ./package.json"
|
||||
- "perl -pi -e 's|\"lodash\"|\"lodash-compat\"|' ./package.json"
|
||||
- "git clone --depth=10 --branch=master git://github.com/lodash/lodash-cli.git ./node_modules/lodash-cli && mkdir $_/node_modules && cd $_ && ln -s ../../../ ./lodash-compat && cd ../ && npm i && cd ../../"
|
||||
- "node ./node_modules/lodash-cli/bin/lodash $BUILD -o ./lodash.$BUILD.js"
|
||||
script:
|
||||
- "[ $ISTANBUL == false ] || (cp ./lodash.$BUILD.js ./lodash.js && sed -i'' 's|constant\\.name == '\\''constant'\\''|false|' $_ && node ./node_modules/istanbul/lib/cli.js cover -x \"**/vendor/**\" --report lcovonly ./test/test.js -- ./lodash.js)"
|
||||
- "[ $ISTANBUL == false ] || cp ./lodash.$BUILD.js ./lodash.js"
|
||||
- "[ $ISTANBUL == false ] || perl -0pi -e \"$PATTERN1\" ./lodash.js && perl -0pi -e \"$PATTERN2\" $_"
|
||||
- "[ $ISTANBUL == false ] || node ./node_modules/istanbul/lib/cli.js cover -x \"**/vendor/**\" --report lcovonly ./test/test.js -- ./lodash.js"
|
||||
- "[ $ISTANBUL == false ] || [ $TRAVIS_SECURE_ENV_VARS == false ] || (cat ./coverage/lcov.info | coveralls)"
|
||||
- "[ $SAUCE_LABS == true ] || [ $ISTANBUL == true ] || cd ./test"
|
||||
- "[ $SAUCE_LABS == true ] || [ $ISTANBUL == true ] || $BIN $OPTION ./test.js ../lodash.$BUILD.js"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# lodash v3.6.0
|
||||
# lodash v3.9.0
|
||||
|
||||
The [modern build](https://github.com/lodash/lodash/wiki/Build-Differences) of [lodash](https://lodash.com/) with packages for [Bower](http://bower.io/), [Component](http://component.github.io/), & [Volo](http://volojs.org/).
|
||||
|
||||
@@ -16,8 +16,8 @@ $ lodash modern -o ./lodash.js
|
||||
lodash is also available in a variety of other builds & module formats.
|
||||
|
||||
* npm packages for [modern](https://www.npmjs.com/package/lodash), [compatibility](https://www.npmjs.com/package/lodash-compat), & [per method](https://www.npmjs.com/browse/keyword/lodash-modularized) builds
|
||||
* AMD modules for [modern](https://github.com/lodash/lodash/tree/3.6.0-amd) & [compatibility](https://github.com/lodash/lodash-compat/tree/3.6.0-amd) builds
|
||||
* ES modules for the [modern](https://github.com/lodash/lodash/tree/3.6.0-es) build
|
||||
* AMD modules for [modern](https://github.com/lodash/lodash/tree/3.9.0-amd) & [compatibility](https://github.com/lodash/lodash-compat/tree/3.9.0-amd) builds
|
||||
* ES modules for the [modern](https://github.com/lodash/lodash/tree/3.9.0-es) build
|
||||
|
||||
## Further Reading
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "lodash",
|
||||
"version": "3.6.0",
|
||||
"version": "3.9.0",
|
||||
"main": "lodash.js",
|
||||
"ignore": [
|
||||
".*",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "lodash",
|
||||
"repo": "lodash/lodash",
|
||||
"version": "3.6.0",
|
||||
"version": "3.9.0",
|
||||
"description": "The modern build of lodash.",
|
||||
"license": "MIT",
|
||||
"main": "lodash.js",
|
||||
|
||||
1379
doc/README.md
179
lodash.min.js
vendored
@@ -1,89 +1,98 @@
|
||||
/**
|
||||
* @license
|
||||
* lodash 3.6.0 (Custom Build) lodash.com/license | Underscore.js 1.8.2 underscorejs.org/LICENSE
|
||||
* lodash 3.9.0 (Custom Build) lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE
|
||||
* Build: `lodash modern -o ./lodash.js`
|
||||
*/
|
||||
;(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 s(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
|
||||
}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 Wt[n]}function l(n){return Tt[n]}function p(n){return"\\"+Nt[n]}function s(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 v(n,t){for(var r=-1,e=n.length,u=-1,o=[];++r<e;)n[r]===t&&(n[r]=B,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 Ut[n]}function m(_){function Wt(n){if(h(n)&&!(si(n)||n instanceof Ft)){if(n instanceof Ut)return n;if(Nu.call(n,"__chain__")&&Nu.call(n,"__wrapped__"))return Ee(n)}return new Ut(n)}function Tt(){}function Ut(n,t,r){this.__wrapped__=n,this.__actions__=r||[],this.__chain__=!!t}function Ft(n){this.__wrapped__=n,this.__actions__=null,this.__dir__=1,this.__filtered__=false,this.__iteratees__=null,this.__takeCount__=so,this.__views__=null
|
||||
}function Nt(){this.__data__={}}function $t(n){var t=n?n.length:0;for(this.data={hash:ro(null),set:new Gu};t--;)this.push(n[t])}function Lt(n,t){var r=n.data;return(typeof t=="string"||He(t)?r.set.has(t):r.hash[t])?0:-1}function Bt(n,t){var r=-1,e=n.length;for(t||(t=wu(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 Pt(n,t){for(var r=-1,e=n.length;++r<e;)if(!t(n[r],r,n))return false;return true}function qt(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 Kt(n,t){for(var r=-1,e=n.length,u=wu(e);++r<e;)u[r]=t(n[r],r,n);return u}function Vt(n){for(var t=-1,r=n.length,e=po;++t<r;){var u=n[t];u>e&&(e=u)}return e}function Yt(n,t){for(var r=-1,e=n.length;++r<e;)if(t(n[r],r,n))return true;return false}function Zt(n,t){return typeof n=="undefined"?t:n}function Gt(n,t,r,e){return typeof n!="undefined"&&Nu.call(e,r)?n:t}function Jt(n,t,r){var e=ji(t);if(!r)return Ht(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);
|
||||
(a===a?a===f:f!==f)&&(typeof f!="undefined"||i in n)||(n[i]=a)}return n}function Xt(n,t){for(var r=-1,e=n.length,u=de(e),o=t.length,i=wu(o);++r<o;){var f=t[r];u?(f=parseFloat(f),i[r]=ve(f,e)?n[f]:w):i[r]=n[f]}return i}function Ht(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 Qt(n,t,r){var e=typeof n;return"function"==e?typeof t=="undefined"?n:Wr(n,t,r):null==n?gu:"object"==e?vr(n):typeof t=="undefined"?dr(n+""):gr(n+"",t)}function nr(n,t,r,e,u,o,i){var f;
|
||||
if(r&&(f=u?r(n,e,u):r(n)),typeof f!="undefined")return f;if(!He(n))return n;if(e=si(n)){if(f=se(n),!t)return Bt(n,f)}else{var a=Lu.call(n),c=a==K;if(a!=Y&&a!=z&&(!c||u))return Ct[a]?_e(n,a,t):u?n:{};if(f=he(c?{}:n),!t)return Ht(n,f,ji(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:ar)(n,function(e,u){f[u]=nr(e,t,r,u,n,o,i)}),f}function tr(n,t,r){if(typeof n!="function")throw new Ru(L);return Ju(function(){n.apply(w,r)},t)}function rr(n,t){var e=n?n.length:0,u=[];
|
||||
if(!e)return u;var o=-1,i=pe(),f=i==r,a=f&&200<=t.length?Oo(t):null,c=t.length;a&&(i=Lt,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 er(n,t){var r=true;return Ao(n,function(n,e,u){return r=!!t(n,e,u)}),r}function ur(n,t){var r=[];return Ao(n,function(n,e,u){t(n,e,u)&&r.push(n)}),r}function or(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}),u}function ir(n,t,r){for(var e=-1,u=n.length,o=-1,i=[];++e<u;){var f=n[e];
|
||||
if(h(f)&&de(f.length)&&(si(f)||Ge(f))){t&&(f=ir(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 fr(n,t){ko(n,t,iu)}function ar(n,t){return ko(n,t,ji)}function cr(n,t){return Eo(n,t,ji)}function lr(n,t){for(var r=-1,e=t.length,u=-1,o=[];++r<e;){var i=t[r];_i(n[i])&&(o[++u]=i)}return o}function pr(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:sr(n,t,pr,r,e,u,o)
|
||||
}function sr(n,t,r,e,u,o,i){var f=si(n),a=si(t),c=M,l=M;f||(c=Lu.call(n),c==z?c=Y:c!=Y&&(f=eu(n))),a||(l=Lu.call(t),l==z?l=Y:l!=Y&&eu(t));var p=c==Y||u&&c==K,a=l==Y||u&&l==K;if((l=c==l)&&!f&&!p)return fe(n,t,c);if(u){if(!(l||p&&a))return false}else{if(c=p&&Nu.call(n,"__wrapped__"),a=a&&Nu.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?ie:ae)(n,t,r,e,u,o,i),o.pop(),i.pop(),n
|
||||
}function hr(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=pr(l,c,u,true))),!a)return false}return true}function _r(n,t){var r=[];return Ao(n,function(n,e,u){r.push(t(n,e,u))}),r}function vr(n){var t=ji(n),r=t.length;if(!r)return vu(true);if(1==r){var e=t[0],u=n[e];if(me(u))return function(n){return null!=n&&n[e]===u&&(typeof u!="undefined"||e in ke(n))
|
||||
}}for(var o=wu(r),i=wu(r);r--;)u=n[t[r]],o[r]=u,i[r]=me(u);return function(n){return null!=n&&hr(ke(n),t,o,i)}}function gr(n,t){return me(t)?function(r){return null!=r&&r[n]===t&&(typeof t!="undefined"||n in ke(r))}:function(r){return null!=r&&pr(t,r[n],null,true)}}function yr(n,t,r,e,u){if(!He(n))return n;var o=de(t.length)&&(si(t)||eu(t));return(o?zt:ar)(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;
|
||||
var p=typeof f=="undefined";p&&(f=l,de(l.length)&&(si(l)||eu(l))?f=si(c)?c:c&&c.length?Bt(c):[]:vi(l)||Ge(l)?f=Ge(c)?uu(c):vi(c)?c:{}:p=false),t.push(l),a.push(f),p?n[i]=yr(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 dr(n){return function(t){return null==t?w:t[n]}}function mr(n,t){return n+Ku(lo()*(t-n+1))}function wr(n,t,r,e,u){return u(n,function(n,u,o){r=e?(e=false,n):t(r,n,u,o)
|
||||
}),r}function br(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=wu(u);++e<u;)r[e]=n[e+t];return r}function xr(n,t){var r;return Ao(n,function(n,e,u){return r=t(n,e,u),!r}),!!r}function Ar(n,t){var r=n.length;for(n.sort(t);r--;)n[r]=n[r].c;return n}function jr(t,r,e){var u=-1,o=t.length,i=de(o)?wu(o):[];return Ao(t,function(n){for(var t=r.length,e=wu(t);t--;)e[t]=null==n?w:n[r[t]];i[++u]={a:e,b:u,c:n}}),Ar(i,function(t,r){var u;
|
||||
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 kr(n,t){var r=0;return Ao(n,function(n,e,u){r+=+t(n,e,u)||0}),r}function Er(n,t){var e=-1,u=pe(),o=n.length,i=u==r,f=i&&200<=o,a=f?Oo():null,c=[];a?(u=Lt,i=false):(f=false,a=t?[]:c);n:for(;++e<o;){var l=n[e],p=t?t(l,e,n):l;if(i&&l===l){for(var s=a.length;s--;)if(a[s]===p)continue n;t&&a.push(p),c.push(l)}else 0>u(a,p,0)&&((t||f)&&a.push(p),c.push(l))}return c}function Ir(n,t){for(var r=-1,e=t.length,u=wu(e);++r<e;)u[r]=n[t[r]];
|
||||
return u}function Or(n,t,r,e){for(var u=n.length,o=e?u:-1;(e?o--:++o<u)&&t(n[o],o,n););return r?br(n,e?0:o,e?o+1:u):br(n,e?o+1:0,e?u:o)}function Rr(n,t){var r=n;r instanceof Ft&&(r=r.value());for(var e=-1,u=t.length;++e<u;){var r=[r],o=t[e];Yu.apply(r,o.args),r=o.func.apply(o.thisArg,r)}return r}function Cr(n,t,r){var e=0,u=n?n.length:e;if(typeof t=="number"&&t===t&&u<=vo){for(;e<u;){var o=e+u>>>1,i=n[o];(r?i<=t:i<t)?e=o+1:u=o}return u}return Sr(n,t,gu,r)}function Sr(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=Ku((u+o)/2),c=r(n[a]),l=c===c;
|
||||
(i?l||e:f?l&&(e||typeof c!="undefined"):e?c<=t:c<t)?u=a+1:o=a}return io(o,_o)}function Wr(n,t,r){if(typeof n!="function")return gu;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 Tr(n){return Du.call(n,0)}function Ur(n,t,r){for(var e=r.length,u=-1,o=oo(n.length-e,0),i=-1,f=t.length,a=wu(o+f);++i<f;)a[i]=t[i];
|
||||
for(;++u<e;)a[r[u]]=n[u];for(;o--;)a[i++]=n[u++];return a}function Fr(n,t,r){for(var e=-1,u=r.length,o=-1,i=oo(n.length-u,0),f=-1,a=t.length,c=wu(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 Nr(n,t){return function(r,e,u){var o=t?t():{};if(e=le(e,u,3),si(r)){u=-1;for(var i=r.length;++u<i;){var f=r[u];n(o,f,e(f,u,r),r)}}else Ao(r,function(t,r,u){n(o,t,e(t,r,u),u)});return o}}function $r(n){return function(){var t=arguments,r=t.length,e=t[0];if(2>r||null==e)return e;
|
||||
var u=t[r-2],o=t[r-1],i=t[3];for(3<r&&typeof u=="function"?(u=Wr(u,o,5),r-=2):(u=2<r&&typeof o=="function"?o:null,r-=u?1:0),i&&ge(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 Lr(n,t){return function(r,e){var u=r?r.length:0;if(!de(u))return n(r,e);for(var o=t?u:-1,i=ke(r);(t?o--:++o<u)&&false!==e(i[o],o,i););return r}}function Br(n){return function(t,r,e){var u=ke(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 zr(n,t){function r(){return(this&&this!==Mt&&this instanceof r?e:n).apply(t,arguments)
|
||||
}var e=Dr(n);return r}function Mr(n){return function(t){var r=-1;t=hu(au(t));for(var e=t.length,u="";++r<e;)u=n(u,t[r],r);return u}}function Dr(n){return function(){var t=xo(n.prototype),r=n.apply(t,arguments);return He(r)?r:t}}function Pr(n){function t(r,e,u){return u&&ge(r,e,u)&&(e=null),r=oe(r,n,null,null,null,null,null,e),r.placeholder=t.placeholder,r}return t}function qr(n,t){return function(r,e,u){u&&ge(r,e,u)&&(e=null);var i=le(),f=null==e;if(i===Qt&&f||(f=false,e=i(e,u,3)),f){if(e=si(r),e||!ru(r))return n(e?r:je(r));
|
||||
e=o}return ce(r,e,t)}}function Kr(n,r){return function(e,u,o){return u=le(u,o,3),si(e)?(u=t(e,u,r),-1<u?e[u]:w):or(e,u,n)}}function Vr(n){return function(r,e,u){return r&&r.length?(e=le(e,u,3),t(r,e,n)):-1}}function Yr(n){return function(t,r,e){return r=le(r,e,3),or(t,r,n,true)}}function Zr(n){return function(){var t=arguments.length;if(!t)return function(){return arguments[0]};for(var r,e=n?t:-1,u=0,o=wu(t);n?e--:++e<t;){var i=o[u++]=arguments[e];if(typeof i!="function")throw new Ru(L);var f=r?"":Co(i);
|
||||
r="wrapper"==f?new Ut([]):r}for(e=r?-1:t;++e<t;)i=o[e],f=Co(i),r=(u="wrapper"==f?Ro(i):null)&&ye(u[0])?r[Co(u[0])].apply(r,u[3]):1==i.length&&ye(i)?r[f]():r.thru(i);return function(){var n=arguments;if(r&&1==n.length&&si(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 Gr(n,t){return function(r,e,u){return typeof e=="function"&&typeof u=="undefined"&&si(r)?n(r,e):t(r,Wr(e,u,3))}}function Jr(n){return function(t,r,e){return(typeof r!="function"||typeof e!="undefined")&&(r=Wr(r,e,3)),n(t,r,iu)
|
||||
}}function Xr(n){return function(t,r,e){return(typeof r!="function"||typeof e!="undefined")&&(r=Wr(r,e,3)),n(t,r)}}function Hr(n){return function(t,r,e){return(t=u(t))&&(n?t:"")+re(t,r,e)+(n?"":t)}}function Qr(n){var t=Ze(function(r,e){var u=v(e,t.placeholder);return oe(r,n,null,e,u)});return t}function ne(n,t){return function(r,e,u,o){var i=3>arguments.length;return typeof e=="function"&&typeof o=="undefined"&&si(r)?n(r,e,u,i):wr(r,le(e,o,4),u,i,t)}}function te(n,t,r,e,u,o,i,f,a,c){function l(){for(var b=arguments.length,j=b,k=wu(b);j--;)k[j]=arguments[j];
|
||||
if(e&&(k=Ur(k,e,u)),o&&(k=Fr(k,o,i)),_||y){var j=l.placeholder,E=v(k,j),b=b-E.length;if(b<c){var R=f?Bt(f):null,b=oo(c-b,0),C=_?E:null,E=_?null:E,S=_?k:null,k=_?null:k;return t|=_?I:O,t&=~(_?O:I),g||(t&=~(x|A)),k=[n,t,r,S,C,k,E,R,a,b],R=te.apply(w,k),ye(n)&&So(R,k),R.placeholder=j,R}}if(j=s?r:this,h&&(n=j[m]),f)for(R=k.length,b=io(f.length,R),C=Bt(k);b--;)E=f[b],k[b]=ve(E,R)?C[E]:w;return p&&a<k.length&&(k.length=a),(this&&this!==Mt&&this instanceof l?d||Dr(n):n).apply(j,k)}var p=t&R,s=t&x,h=t&A,_=t&k,g=t&j,y=t&E,d=!h&&Dr(n),m=n;
|
||||
return l}function re(n,t,r){return n=n.length,t=+t,n<t&&eo(t)?(t-=n,r=null==r?" ":r+"",pu(r,Pu(t/r.length)).slice(0,t)):""}function ee(n,t,r,e){function u(){for(var t=-1,f=arguments.length,a=-1,c=e.length,l=wu(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=Dr(n);return u}function ue(n){return function(t,r,e,u){var o=le(e);return o===Qt&&null==e?Cr(t,r,n):Sr(t,r,o(e,u,1),n)}}function oe(n,t,r,e,u,o,i,f){var a=t&A;if(!a&&typeof n!="function")throw new Ru(L);
|
||||
var c=e?e.length:0;if(c||(t&=~(I|O),e=u=null),c-=u?u.length:0,t&O){var l=e,p=u;e=u=null}var s=a?null:Ro(n);return r=[n,t,r,e,u,l,p,o,i,f],s&&(e=r[1],t=s[1],f=e|t,u=t==R&&e==k||t==R&&e==C&&r[7].length<=s[8]||t==(R|C)&&e==k,(f<R||u)&&(t&x&&(r[2]=s[2],f|=e&x?0:j),(e=s[3])&&(u=r[3],r[3]=u?Ur(u,e,s[4]):Bt(e),r[4]=u?v(r[3],B):Bt(s[4])),(e=s[5])&&(u=r[5],r[5]=u?Fr(u,e,s[6]):Bt(e),r[6]=u?v(r[5],B):Bt(s[6])),(e=s[7])&&(r[7]=Bt(e)),t&R&&(r[8]=null==r[8]?s[8]:io(r[8],s[8])),null==r[9]&&(r[9]=s[9]),r[0]=s[0],r[1]=f),t=r[1],f=r[9]),r[9]=null==f?a?0:n.length:oo(f-c,0)||0,(s?Io:So)(t==x?zr(r[0],r[2]):t!=I&&t!=(x|I)||r[4].length?te.apply(w,r):ee.apply(w,r),r)
|
||||
}function ie(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 p=n[f],s=t[f],l=w;if(e&&(l=u?e(s,p,f):e(p,s,f)),typeof l=="undefined")if(u)for(var h=c;h--&&(s=t[h],!(l=p&&p===s||r(p,s,e,u,o,i))););else l=p&&p===s||r(p,s,e,u,o,i)}return!!l}function fe(n,t,r){switch(r){case D:case P: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 ae(n,t,r,e,u,o,i){var f=ji(n),a=f.length,c=ji(t).length;
|
||||
if(a!=c&&!u)return false;for(var c=u,l=-1;++l<a;){var p=f[l],s=u?p in t:Nu.call(t,p);if(s){var h=n[p],_=t[p],s=w;e&&(s=u?e(_,h,p):e(h,_,p)),typeof s=="undefined"&&(s=h&&h===_||r(h,_,e,u,o,i))}if(!s)return false;c||(c="constructor"==p)}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 ce(n,t,r){var e=r?so:po,u=e,o=u;return Ao(n,function(n,i,f){i=t(n,i,f),((r?i<u:i>u)||i===e&&i===o)&&(u=i,o=n)
|
||||
}),o}function le(n,t,r){var e=Wt.callback||_u,e=e===_u?Qt:e;return r?e(n,t,r):e}function pe(n,t,e){var u=Wt.indexOf||Ce,u=u===Ce?r:u;return n?u(n,t,e):u}function se(n){var t=n.length,r=new n.constructor(t);return t&&"string"==typeof n[0]&&Nu.call(n,"index")&&(r.index=n.index,r.input=n.input),r}function he(n){return n=n.constructor,typeof n=="function"&&n instanceof n||(n=Eu),new n}function _e(n,t,r){var e=n.constructor;switch(t){case J:return Tr(n);case D:case P:return new e(+n);case X:case H:case Q:case nt:case tt:case rt:case et:case ut:case ot:return t=n.buffer,new e(r?Tr(t):t,n.byteOffset,n.length);
|
||||
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 ve(n,t){return n=+n,t=null==t?yo:t,-1<n&&0==n%1&&n<t}function ge(n,t,r){if(!He(r))return false;var e=typeof t;return"number"==e?(e=r.length,e=de(e)&&ve(t,e)):e="string"==e&&t in r,e?(t=r[t],n===n?n===t:t!==t):false}function ye(n){var t=Co(n);return!!t&&n===Wt[t]&&t in Ft.prototype}function de(n){return typeof n=="number"&&-1<n&&0==n%1&&n<=yo}function me(n){return n===n&&(0===n?0<1/n:!He(n))}function we(n,t){n=ke(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 be(n,t){var r={};return fr(n,function(n,e,u){t(n,e,u)&&(r[e]=n)}),r}function xe(n){var t;if(!h(n)||Lu.call(n)!=Y||!(Nu.call(n,"constructor")||(t=n.constructor,typeof t!="function"||t instanceof t)))return false;var r;return fr(n,function(n,t){r=t}),typeof r=="undefined"||Nu.call(n,r)}function Ae(n){for(var t=iu(n),r=t.length,e=r&&n.length,u=Wt.support,u=e&&de(e)&&(si(n)||u.nonEnumArgs&&Ge(n)),o=-1,i=[];++o<r;){var f=t[o];
|
||||
(u&&ve(f,e)||Nu.call(n,f))&&i.push(f)}return i}function je(n){return null==n?[]:de(n.length)?He(n)?n:Eu(n):fu(n)}function ke(n){return He(n)?n:Eu(n)}function Ee(n){return n instanceof Ft?n.clone():new Ut(n.__wrapped__,n.__chain__,Bt(n.__actions__))}function Ie(n,t,r){return n&&n.length?((r?ge(n,t,r):null==t)&&(t=1),br(n,0>t?0:t)):[]}function Oe(n,t,r){var e=n?n.length:0;return e?((r?ge(n,t,r):null==t)&&(t=1),t=e-(+t||0),br(n,0,0>t?0:t)):[]}function Re(n){return n?n[0]:w}function Ce(n,t,e){var u=n?n.length:0;
|
||||
if(!u)return-1;if(typeof e=="number")e=0>e?oo(u+e,0):e;else if(e)return e=Cr(n,t),n=n[e],(t===t?t===n:n!==n)?e:-1;return r(n,t,e||0)}function Se(n){var t=n?n.length:0;return t?n[t-1]:w}function We(n){return Ie(n,1)}function Te(n,t,e,u){if(!n||!n.length)return[];null!=t&&typeof t!="boolean"&&(u=e,e=ge(n,t,u)?null:t,t=false);var o=le();if((o!==Qt||null!=e)&&(e=o(e,u,3)),t&&pe()==r){t=e;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=Er(n,e);
|
||||
return n}function Ue(n){for(var t=-1,r=(n&&n.length&&Vt(Kt(n,Fu)))>>>0,e=wu(r);++t<r;)e[t]=Kt(n,dr(t));return e}function Fe(n,t){var r=-1,e=n?n.length:0,u={};for(!e||t||si(n[0])||(t=[]);++r<e;){var o=n[r];t?u[o]=t[r]:o&&(u[o[0]]=o[1])}return u}function Ne(n){return n=Wt(n),n.__chain__=true,n}function $e(n,t,r){return t.call(r,n)}function Le(n,t,r){var e=si(n)?Pt:er;return r&&ge(n,t,r)&&(t=null),(typeof t!="function"||typeof r!="undefined")&&(t=le(t,r,3)),e(n,t)}function Be(n,t,r){var e=si(n)?qt:ur;
|
||||
return t=le(t,r,3),e(n,t)}function ze(n,t,r,e){var u=n?n.length:0;return de(u)||(n=fu(n),u=n.length),u?(r=typeof r!="number"||e&&ge(t,r,e)?0:0>r?oo(u+r,0):r||0,typeof n=="string"||!si(n)&&ru(n)?r<u&&-1<n.indexOf(t,r):-1<pe(n,t,r)):false}function Me(n,t,r){var e=si(n)?Kt:_r;return t=le(t,r,3),e(n,t)}function De(n,t,r){return(r?ge(n,t,r):null==t)?(n=je(n),t=n.length,0<t?n[mr(0,t-1)]:w):(n=Pe(n),n.length=io(0>t?0:+t||0,n.length),n)}function Pe(n){n=je(n);for(var t=-1,r=n.length,e=wu(r);++t<r;){var u=mr(0,t);
|
||||
t!=u&&(e[t]=e[u]),e[u]=n[t]}return e}function qe(n,t,r){var e=si(n)?Yt:xr;return r&&ge(n,t,r)&&(t=null),(typeof t!="function"||typeof r!="undefined")&&(t=le(t,r,3)),e(n,t)}function Ke(n,t){var r;if(typeof t!="function"){if(typeof n!="function")throw new Ru(L);var e=n;n=t,t=e}return function(){return 0<--n?r=t.apply(this,arguments):t=null,r}}function Ve(n,t,r){function e(){var r=t-(Qo()-c);0>=r||r>t?(f&&qu(f),r=s,f=p=s=w,r&&(h=Qo(),a=n.apply(l,i),p||f||(i=l=null))):p=Ju(e,r)}function u(){p&&qu(p),f=p=s=w,(v||_!==t)&&(h=Qo(),a=n.apply(l,i),p||f||(i=l=null))
|
||||
}function o(){if(i=arguments,c=Qo(),l=this,s=v&&(p||!g),false===_)var r=g&&!p;else{f||g||(h=c);var o=_-(c-h),y=0>=o||o>_;y?(f&&(f=qu(f)),h=c,a=n.apply(l,i)):f||(f=Ju(u,o))}return y&&p?p=qu(p):p||t===_||(p=Ju(e,t)),r&&(y=true,a=n.apply(l,i)),!y||p||f||(i=l=null),a}var i,f,a,c,l,p,s,h=0,_=false,v=true;if(typeof n!="function")throw new Ru(L);if(t=0>t?0:+t||0,true===r)var g=true,v=false;else He(r)&&(g=r.leading,_="maxWait"in r&&oo(+r.maxWait||0,t),v="trailing"in r?r.trailing:v);return o.cancel=function(){p&&qu(p),f&&qu(f),f=p=s=w
|
||||
},o}function Ye(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 Ru(L);return r.cache=new Ye.Cache,r}function Ze(n,t){if(typeof n!="function")throw new Ru(L);return t=oo(typeof t=="undefined"?n.length-1:+t||0,0),function(){for(var r=arguments,e=-1,u=oo(r.length-t,0),o=wu(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=wu(t+1),e=-1;++e<t;)u[e]=r[e];return u[t]=o,n.apply(this,u)}}function Ge(n){return de(h(n)?n.length:w)&&Lu.call(n)==z}function Je(n){return!!n&&1===n.nodeType&&h(n)&&-1<Lu.call(n).indexOf("Element")}function Xe(n){return h(n)&&typeof n.message=="string"&&Lu.call(n)==q}function He(n){var t=typeof n;return"function"==t||!!n&&"object"==t}function Qe(n){return null==n?false:Lu.call(n)==K?zu.test(Uu.call(n)):h(n)&&wt.test(n)}function nu(n){return typeof n=="number"||h(n)&&Lu.call(n)==V
|
||||
}function tu(n){return h(n)&&Lu.call(n)==Z||false}function ru(n){return typeof n=="string"||h(n)&&Lu.call(n)==G}function eu(n){return h(n)&&de(n.length)&&!!Rt[Lu.call(n)]}function uu(n){return Ht(n,iu(n))}function ou(n){return lr(n,iu(n))}function iu(n){if(null==n)return[];He(n)||(n=Eu(n));for(var t=n.length,t=t&&de(t)&&(si(n)||bo.nonEnumArgs&&Ge(n))&&t||0,r=n.constructor,e=-1,r=typeof r=="function"&&r.prototype===n,u=wu(t),o=0<t;++e<t;)u[e]=e+"";for(var i in n)o&&ve(i,t)||"constructor"==i&&(r||!Nu.call(n,i))||u.push(i);
|
||||
return u}function fu(n){return Ir(n,ji(n))}function au(n){return(n=u(n))&&n.replace(bt,c).replace(gt,"")}function cu(n){return(n=u(n))&&jt.test(n)?n.replace(At,"\\$&"):n}function lu(n,t,r){return r&&ge(n,t,r)&&(t=0),co(n,t)}function pu(n,t){var r="";if(n=u(n),t=+t,1>t||!n||!eo(t))return r;do t%2&&(r+=n),t=Ku(t/2),n+=n;while(t);return r}function su(n,t,r){var e=n;return(n=u(n))?(r?ge(e,t,r):null==t)?n.slice(g(n),y(n)+1):(t+="",n.slice(i(n,t),f(n,t)+1)):n}function hu(n,t,r){return r&&ge(n,t,r)&&(t=null),n=u(n),n.match(t||Et)||[]
|
||||
}function _u(n,t,r){return r&&ge(n,t,r)&&(t=null),h(n)?yu(n):Qt(n,t)}function vu(n){return function(){return n}}function gu(n){return n}function yu(n){return vr(nr(n,true))}function du(n,t,r){if(null==r){var e=He(t),u=e&&ji(t);((u=u&&u.length&&lr(t,u))?u.length:e)||(u=false,r=t,t=n,n=this)}u||(u=lr(t,ji(t)));var o=true,e=-1,i=_i(n),f=u.length;false===r?o=false:He(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()],Yu.apply(r,arguments),t.apply(n,r)}}(a))}return n}function mu(){}_=_?Dt.defaults(Mt.Object(),_,Dt.pick(Mt,Ot)):Mt;var wu=_.Array,bu=_.Date,xu=_.Error,Au=_.Function,ju=_.Math,ku=_.Number,Eu=_.Object,Iu=_.RegExp,Ou=_.String,Ru=_.TypeError,Cu=wu.prototype,Su=Eu.prototype,Wu=Ou.prototype,Tu=(Tu=_.window)&&Tu.document,Uu=Au.prototype.toString,Fu=dr("length"),Nu=Su.hasOwnProperty,$u=0,Lu=Su.toString,Bu=_._,zu=Iu("^"+cu(Lu).replace(/toString|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Mu=Qe(Mu=_.ArrayBuffer)&&Mu,Du=Qe(Du=Mu&&new Mu(0).slice)&&Du,Pu=ju.ceil,qu=_.clearTimeout,Ku=ju.floor,Vu=Qe(Vu=Eu.getPrototypeOf)&&Vu,Yu=Cu.push,Zu=Su.propertyIsEnumerable,Gu=Qe(Gu=_.Set)&&Gu,Ju=_.setTimeout,Xu=Cu.splice,Hu=Qe(Hu=_.Uint8Array)&&Hu,Qu=Qe(Qu=_.WeakMap)&&Qu,no=function(){try{var n=Qe(n=_.Float64Array)&&n,t=new n(new Mu(10),0,1)&&n
|
||||
}catch(r){}return t}(),to=Qe(to=wu.isArray)&&to,ro=Qe(ro=Eu.create)&&ro,eo=_.isFinite,uo=Qe(uo=Eu.keys)&&uo,oo=ju.max,io=ju.min,fo=Qe(fo=bu.now)&&fo,ao=Qe(ao=ku.isFinite)&&ao,co=_.parseInt,lo=ju.random,po=ku.NEGATIVE_INFINITY,so=ku.POSITIVE_INFINITY,ho=ju.pow(2,32)-1,_o=ho-1,vo=ho>>>1,go=no?no.BYTES_PER_ELEMENT:0,yo=ju.pow(2,53)-1,mo=Qu&&new Qu,wo={},bo=Wt.support={};!function(n){bo.funcDecomp=/\bthis\b/.test(function(){return this}),bo.funcNames=typeof Au.name=="string";try{bo.dom=11===Tu.createDocumentFragment().nodeType
|
||||
}catch(t){bo.dom=false}try{bo.nonEnumArgs=!Zu.call(arguments,1)}catch(r){bo.nonEnumArgs=true}}(0,0),Wt.templateSettings={escape:ht,evaluate:_t,interpolate:vt,variable:"",imports:{_:Wt}};var xo=function(){function n(){}return function(t){if(He(t)){n.prototype=t;var r=new n;n.prototype=null}return r||_.Object()}}(),Ao=Lr(ar),jo=Lr(cr,true),ko=Br(),Eo=Br(true),Io=mo?function(n,t){return mo.set(n,t),n}:gu;Du||(Tr=Mu&&Hu?function(n){var t=n.byteLength,r=no?Ku(t/go):0,e=r*go,u=new Mu(t);if(r){var o=new no(u,0,r);
|
||||
o.set(new no(n,0,r))}return t!=e&&(o=new Hu(u,e),o.set(new Hu(n,e))),u}:vu(null));var Oo=ro&&Gu?function(n){return new $t(n)}:vu(null),Ro=mo?function(n){return mo.get(n)}:mu,Co=function(){return bo.funcNames?"constant"==vu.name?dr("name"):function(n){for(var t=n.name,r=wo[t],e=r?r.length:0;e--;){var u=r[e],o=u.func;if(null==o||o==n)return u.name}return t}:vu("")}(),So=function(){var n=0,t=0;return function(r,e){var u=Qo(),o=U-(u-t);if(t=u,0<o){if(++n>=T)return r}else n=0;return Io(r,e)}}(),Wo=Ze(function(n,t){return si(n)||Ge(n)?rr(n,ir(t,false,true)):[]
|
||||
}),To=Vr(),Uo=Vr(true),Fo=Ze(function(t,r){t||(t=[]),r=ir(r);var e=r.length,u=Xt(t,r);for(r.sort(n);e--;){var o=parseFloat(r[e]);if(o!=i&&ve(o)){var i=o;Xu.call(t,o,1)}}return u}),No=ue(),$o=ue(true),Lo=Ze(function(n){return Er(ir(n,false,true))}),Bo=Ze(function(n,t){return si(n)||Ge(n)?rr(n,t):[]}),zo=Ze(Ue),Mo=Ze(function(n,t){return de(n?n.length:0)&&(n=je(n)),Xt(n,ir(t))}),Do=Nr(function(n,t,r){Nu.call(n,r)?++n[r]:n[r]=1}),Po=Kr(Ao),qo=Kr(jo,true),Ko=Gr(zt,Ao),Vo=Gr(function(n,t){for(var r=n.length;r--&&false!==t(n[r],r,n););return n
|
||||
},jo),Yo=Nr(function(n,t,r){Nu.call(n,r)?n[r].push(t):n[r]=[t]}),Zo=Nr(function(n,t,r){n[r]=t}),Go=Ze(function(n,t,r){var e=-1,u=typeof t=="function",o=n?n.length:0,i=de(o)?wu(o):[];return Ao(n,function(n){var o=u?t:null!=n&&n[t];i[++e]=o?o.apply(n,r):w}),i}),Jo=Nr(function(n,t,r){n[r?0:1].push(t)},function(){return[[],[]]}),Xo=ne(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},Ao),Ho=ne(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},jo),Qo=fo||function(){return(new bu).getTime()},ni=Ze(function(n,t,r){var e=x;if(r.length)var u=v(r,ni.placeholder),e=e|I;return oe(n,e,t,r,u)}),ti=Ze(function(n,t){t=t.length?ir(t):ou(n);for(var r=-1,e=t.length;++r<e;){var u=t[r];n[u]=oe(n[u],x,n)}return n}),ri=Ze(function(n,t,r){var e=x|A;if(r.length)var u=v(r,ri.placeholder),e=e|I;return oe(t,e,n,r,u)}),ei=Pr(k),ui=Pr(E),oi=Ze(function(n,t){return tr(n,1,t)}),ii=Ze(function(n,t,r){return tr(n,t,r)}),fi=Zr(),ai=Zr(true),ci=Qr(I),li=Qr(O),pi=Ze(function(n,t){return oe(n,C,null,null,null,ir(t))
|
||||
}),si=to||function(n){return h(n)&&de(n.length)&&Lu.call(n)==M};bo.dom||(Je=function(n){return!!n&&1===n.nodeType&&h(n)&&!vi(n)});var hi=ao||function(n){return typeof n=="number"&&eo(n)},_i=e(/x/)||Hu&&!e(Hu)?function(n){return Lu.call(n)==K}:e,vi=Vu?function(n){if(!n||Lu.call(n)!=Y)return false;var t=n.valueOf,r=Qe(t)&&(r=Vu(t))&&Vu(r);return r?n==r||Vu(n)==r:xe(n)}:xe,gi=$r(Jt),yi=Ze(function(n){var t=n[0];return null==t?t:(n.push(Zt),gi.apply(w,n))}),di=Yr(ar),mi=Yr(cr),wi=Jr(ko),bi=Jr(Eo),xi=Xr(ar),Ai=Xr(cr),ji=uo?function(n){if(n)var t=n.constructor,r=n.length;
|
||||
return typeof t=="function"&&t.prototype===n||typeof n!="function"&&r&&de(r)?Ae(n):He(n)?uo(n):[]}:Ae,ki=$r(yr),Ei=Ze(function(n,t){if(null==n)return{};if("function"!=typeof t[0])return t=Kt(ir(t),Ou),we(n,rr(iu(n),t));var r=Wr(t[0],t[1],3);return be(n,function(n,t,e){return!r(n,t,e)})}),Ii=Ze(function(n,t){return null==n?{}:"function"==typeof t[0]?be(n,Wr(t[0],t[1],3)):we(n,ir(t))}),Oi=Mr(function(n,t,r){return t=t.toLowerCase(),n+(r?t.charAt(0).toUpperCase()+t.slice(1):t)}),Ri=Mr(function(n,t,r){return n+(r?"-":"")+t.toLowerCase()
|
||||
}),Ci=Hr(),Si=Hr(true);8!=co(It+"08")&&(lu=function(n,t,r){return(r?ge(n,t,r):null==t)?t=0:t&&(t=+t),n=su(n),co(n,t||(mt.test(n)?16:10))});var Wi=Mr(function(n,t,r){return n+(r?"_":"")+t.toLowerCase()}),Ti=Mr(function(n,t,r){return n+(r?" ":"")+(t.charAt(0).toUpperCase()+t.slice(1))}),Ui=Ze(function(n,t){try{return n.apply(w,t)}catch(r){return Xe(r)?r:new xu(r)}}),Fi=qr(Vt),Ni=qr(function(n){for(var t=-1,r=n.length,e=so;++t<r;){var u=n[t];u<e&&(e=u)}return e},true);return Wt.prototype=Tt.prototype,Ut.prototype=xo(Tt.prototype),Ut.prototype.constructor=Ut,Ft.prototype=xo(Tt.prototype),Ft.prototype.constructor=Ft,Nt.prototype["delete"]=function(n){return this.has(n)&&delete this.__data__[n]
|
||||
},Nt.prototype.get=function(n){return"__proto__"==n?w:this.__data__[n]},Nt.prototype.has=function(n){return"__proto__"!=n&&Nu.call(this.__data__,n)},Nt.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"||He(n)?t.set.add(n):t.hash[n]=true},Ye.Cache=Nt,Wt.after=function(n,t){if(typeof t!="function"){if(typeof n!="function")throw new Ru(L);var r=n;n=t,t=r}return n=eo(n=+n)?n:0,function(){return 1>--n?t.apply(this,arguments):void 0
|
||||
}},Wt.ary=function(n,t,r){return r&&ge(n,t,r)&&(t=null),t=n&&null==t?n.length:oo(+t||0,0),oe(n,R,null,null,null,null,t)},Wt.assign=gi,Wt.at=Mo,Wt.before=Ke,Wt.bind=ni,Wt.bindAll=ti,Wt.bindKey=ri,Wt.callback=_u,Wt.chain=Ne,Wt.chunk=function(n,t,r){t=(r?ge(n,t,r):null==t)?1:oo(+t||1,1),r=0;for(var e=n?n.length:0,u=-1,o=wu(Pu(e/t));r<e;)o[++u]=br(n,r,r+=t);return o},Wt.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},Wt.constant=vu,Wt.countBy=Do,Wt.create=function(n,t,r){var e=xo(n);
|
||||
return r&&ge(n,t,r)&&(t=null),t?Ht(t,e,ji(t)):e},Wt.curry=ei,Wt.curryRight=ui,Wt.debounce=Ve,Wt.defaults=yi,Wt.defer=oi,Wt.delay=ii,Wt.difference=Wo,Wt.drop=Ie,Wt.dropRight=Oe,Wt.dropRightWhile=function(n,t,r){return n&&n.length?Or(n,le(t,r,3),true,true):[]},Wt.dropWhile=function(n,t,r){return n&&n.length?Or(n,le(t,r,3),true):[]},Wt.fill=function(n,t,r,e){var u=n?n.length:0;if(!u)return[];for(r&&typeof r!="number"&&ge(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;
|
||||
return n},Wt.filter=Be,Wt.flatten=function(n,t,r){var e=n?n.length:0;return r&&ge(n,t,r)&&(t=false),e?ir(n,t):[]},Wt.flattenDeep=function(n){return n&&n.length?ir(n,true):[]},Wt.flow=fi,Wt.flowRight=ai,Wt.forEach=Ko,Wt.forEachRight=Vo,Wt.forIn=wi,Wt.forInRight=bi,Wt.forOwn=xi,Wt.forOwnRight=Ai,Wt.functions=ou,Wt.groupBy=Yo,Wt.indexBy=Zo,Wt.initial=function(n){return Oe(n,1)},Wt.intersection=function(){for(var n=[],t=-1,e=arguments.length,u=[],o=pe(),i=o==r;++t<e;){var f=arguments[t];(si(f)||Ge(f))&&(n.push(f),u.push(i&&120<=f.length?Oo(t&&f):null))
|
||||
}var e=n.length,i=n[0],a=-1,c=i?i.length:0,l=[],p=u[0];n:for(;++a<c;)if(f=i[a],0>(p?Lt(p,f):o(l,f,0))){for(t=e;--t;){var s=u[t];if(0>(s?Lt(s,f):o(n[t],f,0)))continue n}p&&p.push(f),l.push(f)}return l},Wt.invert=function(n,t,r){r&&ge(n,t,r)&&(t=null),r=-1;for(var e=ji(n),u=e.length,o={};++r<u;){var i=e[r],f=n[i];t?Nu.call(o,f)?o[f].push(i):o[f]=[i]:o[f]=i}return o},Wt.invoke=Go,Wt.keys=ji,Wt.keysIn=iu,Wt.map=Me,Wt.mapValues=function(n,t,r){var e={};return t=le(t,r,3),ar(n,function(n,r,u){e[r]=t(n,r,u)
|
||||
}),e},Wt.matches=yu,Wt.matchesProperty=function(n,t){return gr(n+"",nr(t,true))},Wt.memoize=Ye,Wt.merge=ki,Wt.mixin=du,Wt.negate=function(n){if(typeof n!="function")throw new Ru(L);return function(){return!n.apply(this,arguments)}},Wt.omit=Ei,Wt.once=function(n){return Ke(n,2)},Wt.pairs=function(n){for(var t=-1,r=ji(n),e=r.length,u=wu(e);++t<e;){var o=r[t];u[t]=[o,n[o]]}return u},Wt.partial=ci,Wt.partialRight=li,Wt.partition=Jo,Wt.pick=Ii,Wt.pluck=function(n,t){return Me(n,dr(t))},Wt.property=function(n){return dr(n+"")
|
||||
},Wt.propertyOf=function(n){return function(t){return null==n?w:n[t]}},Wt.pull=function(){var n=arguments,t=n[0];if(!t||!t.length)return t;for(var r=0,e=pe(),u=n.length;++r<u;)for(var o=0,i=n[r];-1<(o=e(t,i,o));)Xu.call(t,o,1);return t},Wt.pullAt=Fo,Wt.range=function(n,t,r){r&&ge(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=oo(Pu((t-n)/(r||1)),0);for(var u=wu(t);++e<t;)u[e]=n,n+=r;return u},Wt.rearg=pi,Wt.reject=function(n,t,r){var e=si(n)?qt:ur;return t=le(t,r,3),e(n,function(n,r,e){return!t(n,r,e)
|
||||
})},Wt.remove=function(n,t,r){var e=-1,u=n?n.length:0,o=[];for(t=le(t,r,3);++e<u;)r=n[e],t(r,e,n)&&(o.push(r),Xu.call(n,e--,1),u--);return o},Wt.rest=We,Wt.restParam=Ze,Wt.shuffle=Pe,Wt.slice=function(n,t,r){var e=n?n.length:0;return e?(r&&typeof r!="number"&&ge(n,t,r)&&(t=0,r=e),br(n,t,r)):[]},Wt.sortBy=function(n,t,r){if(null==n)return[];var e=-1,u=n.length,o=de(u)?wu(u):[];return r&&ge(n,t,r)&&(t=null),t=le(t,r,3),Ao(n,function(n,r,u){o[++e]={a:t(n,r,u),b:e,c:n}}),Ar(o,a)},Wt.sortByAll=function(){var n=arguments,t=n[0],r=n[3],e=0,u=n.length-1;
|
||||
if(null==t)return[];for(var o=wu(u);e<u;)o[e]=n[++e];return r&&ge(n[1],n[2],r)&&(o=n[1]),jr(t,ir(o),[])},Wt.sortByOrder=function(n,t,r,e){return null==n?[]:(e&&ge(t,r,e)&&(r=null),si(t)||(t=null==t?[]:[t]),si(r)||(r=null==r?[]:[r]),jr(n,t,r))},Wt.spread=function(n){if(typeof n!="function")throw new Ru(L);return function(t){return n.apply(this,t)}},Wt.take=function(n,t,r){return n&&n.length?((r?ge(n,t,r):null==t)&&(t=1),br(n,0,0>t?0:t)):[]},Wt.takeRight=function(n,t,r){var e=n?n.length:0;return e?((r?ge(n,t,r):null==t)&&(t=1),t=e-(+t||0),br(n,0>t?0:t)):[]
|
||||
},Wt.takeRightWhile=function(n,t,r){return n&&n.length?Or(n,le(t,r,3),false,true):[]},Wt.takeWhile=function(n,t,r){return n&&n.length?Or(n,le(t,r,3)):[]},Wt.tap=function(n,t,r){return t.call(r,n),n},Wt.throttle=function(n,t,r){var e=true,u=true;if(typeof n!="function")throw new Ru(L);return false===r?e=false:He(r)&&(e="leading"in r?!!r.leading:e,u="trailing"in r?!!r.trailing:u),St.leading=e,St.maxWait=+t,St.trailing=u,Ve(n,t,St)},Wt.thru=$e,Wt.times=function(n,t,r){if(n=+n,1>n||!eo(n))return[];var e=-1,u=wu(io(n,ho));
|
||||
for(t=Wr(t,r,1);++e<n;)e<ho?u[e]=t(e):t(e);return u},Wt.toArray=function(n){var t=n?n.length:0;return de(t)?t?Bt(n):[]:fu(n)},Wt.toPlainObject=uu,Wt.transform=function(n,t,r,e){var u=si(n)||eu(n);return t=le(t,e,4),null==r&&(u||He(n)?(e=n.constructor,r=u?si(n)?new e:[]:xo(_i(e)&&e.prototype)):r={}),(u?zt:ar)(n,function(n,e,u){return t(r,n,e,u)}),r},Wt.union=Lo,Wt.uniq=Te,Wt.unzip=Ue,Wt.values=fu,Wt.valuesIn=function(n){return Ir(n,iu(n))},Wt.where=function(n,t){return Be(n,vr(t))},Wt.without=Bo,Wt.wrap=function(n,t){return t=null==t?gu:t,oe(t,I,null,[n],[])
|
||||
},Wt.xor=function(){for(var n=-1,t=arguments.length;++n<t;){var r=arguments[n];if(si(r)||Ge(r))var e=e?rr(e,r).concat(rr(r,e)):r}return e?Er(e):[]},Wt.zip=zo,Wt.zipObject=Fe,Wt.backflow=ai,Wt.collect=Me,Wt.compose=ai,Wt.each=Ko,Wt.eachRight=Vo,Wt.extend=gi,Wt.iteratee=_u,Wt.methods=ou,Wt.object=Fe,Wt.select=Be,Wt.tail=We,Wt.unique=Te,du(Wt,Wt),Wt.add=function(n,t){return n+t},Wt.attempt=Ui,Wt.camelCase=Oi,Wt.capitalize=function(n){return(n=u(n))&&n.charAt(0).toUpperCase()+n.slice(1)},Wt.clone=function(n,t,r,e){return t&&typeof t!="boolean"&&ge(n,t,r)?t=false:typeof t=="function"&&(e=r,r=t,t=false),r=typeof r=="function"&&Wr(r,e,1),nr(n,t,r)
|
||||
},Wt.cloneDeep=function(n,t,r){return t=typeof t=="function"&&Wr(t,r,1),nr(n,true,t)},Wt.deburr=au,Wt.endsWith=function(n,t,r){n=u(n),t+="";var e=n.length;return r=typeof r=="undefined"?e:io(0>r?0:+r||0,e),r-=t.length,0<=r&&n.indexOf(t,r)==r},Wt.escape=function(n){return(n=u(n))&&st.test(n)?n.replace(lt,l):n},Wt.escapeRegExp=cu,Wt.every=Le,Wt.find=Po,Wt.findIndex=To,Wt.findKey=di,Wt.findLast=qo,Wt.findLastIndex=Uo,Wt.findLastKey=mi,Wt.findWhere=function(n,t){return Po(n,vr(t))},Wt.first=Re,Wt.has=function(n,t){return n?Nu.call(n,t):false
|
||||
},Wt.identity=gu,Wt.includes=ze,Wt.indexOf=Ce,Wt.inRange=function(n,t,r){return t=+t||0,"undefined"===typeof r?(r=t,t=0):r=+r||0,n>=t&&n<r},Wt.isArguments=Ge,Wt.isArray=si,Wt.isBoolean=function(n){return true===n||false===n||h(n)&&Lu.call(n)==D},Wt.isDate=function(n){return h(n)&&Lu.call(n)==P},Wt.isElement=Je,Wt.isEmpty=function(n){if(null==n)return true;var t=n.length;return de(t)&&(si(n)||ru(n)||Ge(n)||h(n)&&_i(n.splice))?!t:!ji(n).length},Wt.isEqual=function(n,t,r,e){return r=typeof r=="function"&&Wr(r,e,3),!r&&me(n)&&me(t)?n===t:(e=r?r(n,t):w,typeof e=="undefined"?pr(n,t,r):!!e)
|
||||
},Wt.isError=Xe,Wt.isFinite=hi,Wt.isFunction=_i,Wt.isMatch=function(n,t,r,e){var u=ji(t),o=u.length;if(!o)return true;if(null==n)return false;if(r=typeof r=="function"&&Wr(r,e,3),!r&&1==o){var i=u[0];if(e=t[i],me(e))return e===n[i]&&(typeof e!="undefined"||i in ke(n))}for(var i=wu(o),f=wu(o);o--;)e=i[o]=t[u[o]],f[o]=me(e);return hr(ke(n),u,i,f,r)},Wt.isNaN=function(n){return nu(n)&&n!=+n},Wt.isNative=Qe,Wt.isNull=function(n){return null===n},Wt.isNumber=nu,Wt.isObject=He,Wt.isPlainObject=vi,Wt.isRegExp=tu,Wt.isString=ru,Wt.isTypedArray=eu,Wt.isUndefined=function(n){return typeof n=="undefined"
|
||||
},Wt.kebabCase=Ri,Wt.last=Se,Wt.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?oo(e+r,0):io(r||0,e-1))+1;else if(r)return u=Cr(n,t,true)-1,n=n[u],(t===t?t===n:n!==n)?u:-1;if(t!==t)return s(n,u,true);for(;u--;)if(n[u]===t)return u;return-1},Wt.max=Fi,Wt.min=Ni,Wt.noConflict=function(){return _._=Bu,this},Wt.noop=mu,Wt.now=Qo,Wt.pad=function(n,t,r){n=u(n),t=+t;var e=n.length;return e<t&&eo(t)?(e=(t-e)/2,t=Ku(e),e=Pu(e),r=re("",e,r),r.slice(0,t)+n+r):n
|
||||
},Wt.padLeft=Ci,Wt.padRight=Si,Wt.parseInt=lu,Wt.random=function(n,t,r){r&&ge(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=lo(),io(n+r*(t-n+parseFloat("1e-"+((r+"").length-1))),t)):mr(n,t)},Wt.reduce=Xo,Wt.reduceRight=Ho,Wt.repeat=pu,Wt.result=function(n,t,r){return t=null==n?w:n[t],typeof t=="undefined"&&(t=r),_i(t)?t.call(n):t},Wt.runInContext=m,Wt.size=function(n){var t=n?n.length:0;
|
||||
return de(t)?t:ji(n).length},Wt.snakeCase=Wi,Wt.some=qe,Wt.sortedIndex=No,Wt.sortedLastIndex=$o,Wt.startCase=Ti,Wt.startsWith=function(n,t,r){return n=u(n),r=null==r?0:io(0>r?0:+r||0,n.length),n.lastIndexOf(t,r)==r},Wt.sum=function(n,t,r){r&&ge(n,t,r)&&(t=null);var e=le(),u=null==t;if(e===Qt&&u||(u=false,t=e(t,r,3)),u){for(n=si(n)?n:je(n),t=n.length,r=0;t--;)r+=+n[t]||0;n=r}else n=kr(n,t);return n},Wt.template=function(n,t,r){var e=Wt.templateSettings;r&&ge(n,t,r)&&(t=r=null),n=u(n),t=Jt(Jt({},r||t),e,Gt),r=Jt(Jt({},t.imports),e.imports,Gt);
|
||||
var o,i,f=ji(r),a=Ir(r,f),c=0;r=t.interpolate||xt;var l="__p+='";r=Iu((t.escape||xt).source+"|"+r.source+"|"+(r===vt?yt:xt).source+"|"+(t.evaluate||xt).source+"|$","g");var s="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(kt,p),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=Ui(function(){return Au(f,s+"return "+l).apply(w,a)
|
||||
}),t.source=l,Xe(t))throw t;return t},Wt.trim=su,Wt.trimLeft=function(n,t,r){var e=n;return(n=u(n))?n.slice((r?ge(e,t,r):null==t)?g(n):i(n,t+"")):n},Wt.trimRight=function(n,t,r){var e=n;return(n=u(n))?(r?ge(e,t,r):null==t)?n.slice(0,y(n)+1):n.slice(0,f(n,t+"")+1):n},Wt.trunc=function(n,t,r){r&&ge(n,t,r)&&(t=null);var e=S;if(r=W,null!=t)if(He(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;
|
||||
if(t=n.slice(0,e),null==o)return t+r;if(tu(o)){if(n.slice(e).search(o)){var i,f=n.slice(0,e);for(o.global||(o=Iu(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},Wt.unescape=function(n){return(n=u(n))&&pt.test(n)?n.replace(ct,d):n},Wt.uniqueId=function(n){var t=++$u;return u(n)+t},Wt.words=hu,Wt.all=Le,Wt.any=qe,Wt.contains=ze,Wt.detect=Po,Wt.foldl=Xo,Wt.foldr=Ho,Wt.head=Re,Wt.include=ze,Wt.inject=Xo,du(Wt,function(){var n={};
|
||||
return ar(Wt,function(t,r){Wt.prototype[r]||(n[r]=t)}),n}(),false),Wt.sample=De,Wt.prototype.sample=function(n){return this.__chain__||null!=n?this.thru(function(t){return De(t,n)}):De(this.value())},Wt.VERSION=b,zt("bind bindKey curry curryRight partial partialRight".split(" "),function(n){Wt[n].placeholder=Wt}),zt(["dropWhile","filter","map","takeWhile"],function(n,t){var r=t!=$,e=t==F;Ft.prototype[n]=function(n,u){var o=this.__filtered__,i=o&&e?new Ft(this):this.clone();return(i.__iteratees__||(i.__iteratees__=[])).push({done:false,count:0,index:0,iteratee:le(n,u,1),limit:-1,type:t}),i.__filtered__=o||r,i
|
||||
}}),zt(["drop","take"],function(n,t){var r=n+"While";Ft.prototype[n]=function(r){var e=this.__filtered__,u=e&&!t?this.dropWhile():this.clone();return r=null==r?1:oo(Ku(r)||0,0),e?t?u.__takeCount__=io(u.__takeCount__,r):Se(u.__iteratees__).limit=r:(u.__views__||(u.__views__=[])).push({size:r,type:n+(0>u.__dir__?"Right":"")}),u},Ft.prototype[n+"Right"]=function(t){return this.reverse()[n](t).reverse()},Ft.prototype[n+"RightWhile"]=function(n,t){return this.reverse()[r](n,t).reverse()}}),zt(["first","last"],function(n,t){var r="take"+(t?"Right":"");
|
||||
Ft.prototype[n]=function(){return this[r](1).value()[0]}}),zt(["initial","rest"],function(n,t){var r="drop"+(t?"":"Right");Ft.prototype[n]=function(){return this[r](1)}}),zt(["pluck","where"],function(n,t){var r=t?"filter":"map",e=t?vr:dr;Ft.prototype[n]=function(n){return this[r](e(n))}}),Ft.prototype.compact=function(){return this.filter(gu)},Ft.prototype.reject=function(n,t){return n=le(n,t,1),this.filter(function(t){return!n(t)})},Ft.prototype.slice=function(n,t){n=null==n?0:+n||0;var r=0>n?this.takeRight(-n):this.drop(n);
|
||||
return typeof t!="undefined"&&(t=+t||0,r=0>t?r.dropRight(-t):r.take(t-n)),r},Ft.prototype.toArray=function(){return this.drop(0)},ar(Ft.prototype,function(n,t){var r=Wt[t];if(r){var e=/^(?:filter|map|reject)|While$/.test(t),u=/^(?:first|last)$/.test(t);Wt.prototype[t]=function(){function t(n){return n=[n],Yu.apply(n,o),r.apply(Wt,n)}var o=arguments,i=this.__chain__,f=this.__wrapped__,a=!!this.__actions__.length,c=f instanceof Ft,l=o[0],p=c||si(f);return p&&e&&typeof l=="function"&&1!=l.length&&(c=p=false),c=c&&!a,u&&!i?c?n.call(f):r.call(Wt,this.value()):p?(f=n.apply(c?f:new Ft(this),o),u||!a&&!f.__actions__||(f.__actions__||(f.__actions__=[])).push({func:$e,args:[t],thisArg:Wt}),new Ut(f,i)):this.thru(t)
|
||||
}}}),zt("concat join pop push replace shift sort splice split unshift".split(" "),function(n){var t=(/^(?:replace|split)$/.test(n)?Wu:Cu)[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:join|pop|replace|shift)$/.test(n);Wt.prototype[n]=function(){var n=arguments;return e&&!this.__chain__?t.apply(this.value(),n):this[r](function(r){return t.apply(r,n)})}}),ar(Ft.prototype,function(n,t){var r=Wt[t];if(r){var e=r.name;(wo[e]||(wo[e]=[])).push({name:t,func:r})}}),wo[te(null,A).name]=[{name:"wrapper",func:null}],Ft.prototype.clone=function(){var n=this.__actions__,t=this.__iteratees__,r=this.__views__,e=new Ft(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},Ft.prototype.reverse=function(){if(this.__filtered__){var n=new Ft(this);n.__dir__=-1,n.__filtered__=true}else n=this.clone(),n.__dir__*=-1;return n},Ft.prototype.value=function(){var n=this.__wrapped__.value();if(!si(n))return Rr(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=io(t,o+c);break;case"takeRight":o=oo(o,t-c)}}t={start:o,end:t},u=t.start,o=t.end,t=o-u,u=e?o:u-1,o=io(t,this.__takeCount__),f=(i=this.__iteratees__)?i.length:0,a=0,c=[];n:for(;t--&&a<o;){for(var u=u+r,l=-1,p=n[u];++l<f;){var s=i[l],h=s.iteratee,_=s.type;if(_==F){if(s.done&&(e?u>s.index:u<s.index)&&(s.count=0,s.done=false),s.index=u,!(s.done||(_=s.limit,s.done=-1<_?s.count++>=_:!h(p))))continue n}else if(s=h(p),_==$)p=s;else if(!s){if(_==N)continue n;
|
||||
break n}}c[a++]=p}return c},Wt.prototype.chain=function(){return Ne(this)},Wt.prototype.commit=function(){return new Ut(this.value(),this.__chain__)},Wt.prototype.plant=function(n){for(var t,r=this;r instanceof Tt;){var e=Ee(r);t?u.__wrapped__=e:t=e;var u=e,r=r.__wrapped__}return u.__wrapped__=n,t},Wt.prototype.reverse=function(){var n=this.__wrapped__;return n instanceof Ft?(this.__actions__.length&&(n=new Ft(this)),new Ut(n.reverse(),this.__chain__)):this.thru(function(n){return n.reverse()})},Wt.prototype.toString=function(){return this.value()+""
|
||||
},Wt.prototype.run=Wt.prototype.toJSON=Wt.prototype.valueOf=Wt.prototype.value=function(){return Rr(this.__wrapped__,this.__actions__)},Wt.prototype.collect=Wt.prototype.map,Wt.prototype.head=Wt.prototype.first,Wt.prototype.select=Wt.prototype.filter,Wt.prototype.tail=Wt.prototype.rest,Wt}var w,b="3.6.0",x=1,A=2,j=4,k=8,E=16,I=32,O=64,R=128,C=256,S=30,W="...",T=150,U=16,F=0,N=1,$=2,L="Expected a function",B="__lodash_placeholder__",z="[object Arguments]",M="[object Array]",D="[object Boolean]",P="[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,pt=RegExp(ct.source),st=RegExp(lt.source),ht=/<%-([\s\S]+?)%>/g,_t=/<%([\s\S]+?)%>/g,vt=/<%=([\s\S]+?)%>/g,gt=/[\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),kt=/['\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",Ot="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={};
|
||||
Rt[X]=Rt[H]=Rt[Q]=Rt[nt]=Rt[tt]=Rt[rt]=Rt[et]=Rt[ut]=Rt[ot]=true,Rt[z]=Rt[M]=Rt[J]=Rt[D]=Rt[P]=Rt[q]=Rt[K]=Rt["[object Map]"]=Rt[V]=Rt[Y]=Rt[Z]=Rt["[object Set]"]=Rt[G]=Rt["[object WeakMap]"]=false;var Ct={};Ct[z]=Ct[M]=Ct[J]=Ct[D]=Ct[P]=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 St={leading:false,maxWait:0,trailing:false},Wt={"\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"},Tt={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},Ut={"&":"&","<":"<",">":">",""":'"',"'":"'","`":"`"},Ft={"function":true,object:true},Nt={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},$t=Ft[typeof exports]&&exports&&!exports.nodeType&&exports,Lt=Ft[typeof module]&&module&&!module.nodeType&&module,Bt=Ft[typeof self]&&self&&self.Object&&self,Ft=Ft[typeof window]&&window&&window.Object&&window,zt=Lt&&Lt.exports===$t&&$t,Mt=$t&&Lt&&typeof global=="object"&&global||Ft!==(this&&this.window)&&Ft||Bt||this,Dt=m();
|
||||
typeof define=="function"&&typeof define.amd=="object"&&define.amd?(Mt._=Dt, define(function(){return Dt})):$t&&Lt?zt?(Lt.exports=Dt)._=Dt:$t._=Dt:Mt._=Dt}).call(this);
|
||||
;(function(){function n(n,t){if(n!==t){var r=null===n,e=n===m,u=n===n,i=null===t,o=t===m,f=t===t;if(n>t&&!i||!u||r&&!o&&f||e&&f)return 1;if(n<t&&!r||!f||i&&!e&&u||o&&u)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 s(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 i(n,t){for(var r=-1,e=n.length;++r<e&&-1<t.indexOf(n.charAt(r)););
|
||||
return r}function o(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 l(n){return Fn[n]}function a(n){return Ln[n]}function c(n){return"\\"+Bn[n]}function s(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 p(n){return!!n&&typeof n=="object"}function h(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 _(n,t){for(var r=-1,e=n.length,u=-1,i=[];++r<e;)n[r]===t&&(n[r]=N,i[++u]=r);return i}function v(n){for(var t=-1,r=n.length;++t<r&&h(n.charCodeAt(t)););return t}function g(n){for(var t=n.length;t--&&h(n.charCodeAt(t)););return t}function y(n){return Nn[n]}function d(h){function Fn(n){if(p(n)&&!(Ci(n)||n instanceof zn)){if(n instanceof Nn)return n;if(tu.call(n,"__chain__")&&tu.call(n,"__wrapped__"))return Br(n)}return new Nn(n)}function Ln(){}function Nn(n,t,r){this.__wrapped__=n,this.__actions__=r||[],
|
||||
this.__chain__=!!t}function zn(n){this.__wrapped__=n,this.__actions__=null,this.__dir__=1,this.__filtered__=false,this.__iteratees__=null,this.__takeCount__=Eu,this.__views__=null}function Bn(){this.__data__={}}function Mn(n){var t=n?n.length:0;for(this.data={hash:mu(null),set:new hu};t--;)this.push(n[t])}function Pn(n,t){var r=n.data;return(typeof t=="string"||ve(t)?r.set.has(t):r.hash[t])?0:-1}function qn(n,t){var r=-1,e=n.length;for(t||(t=Be(e));++r<e;)t[r]=n[r];return t}function Dn(n,t){for(var r=-1,e=n.length;++r<e&&false!==t(n[r],r,n););
|
||||
return n}function Kn(n,t){for(var r=-1,e=n.length;++r<e;)if(!t(n[r],r,n))return false;return true}function Yn(n,t){for(var r=-1,e=n.length,u=-1,i=[];++r<e;){var o=n[r];t(o,r,n)&&(i[++u]=o)}return i}function Jn(n,t){for(var r=-1,e=n.length,u=Be(e);++r<e;)u[r]=t(n[r],r,n);return u}function Xn(n,t,r,e){var u=-1,i=n.length;for(e&&i&&(r=n[++u]);++u<i;)r=t(r,n[u],u,n);return r}function Gn(n,t){for(var r=-1,e=n.length;++r<e;)if(t(n[r],r,n))return true;return false}function Hn(n,t){return n===m?t:n}function Qn(n,t,r,e){
|
||||
return n!==m&&tu.call(e,r)?n:t}function nt(n,t,r){for(var e=-1,u=Pi(t),i=u.length;++e<i;){var o=u[e],f=n[o],l=r(f,t[o],o,n,t);(l===l?l===f:f!==f)&&(f!==m||o in n)||(n[o]=l)}return n}function tt(n,t){return null==t?n:et(t,Pi(t),n)}function rt(n,t){for(var r=-1,e=null==n,u=!e&&Rr(n),i=u?n.length:0,o=t.length,f=Be(o);++r<o;){var l=t[r];f[r]=u?Ir(l,i)?n[l]:m:e?m:n[l]}return f}function et(n,t,r){r||(r={});for(var e=-1,u=t.length;++e<u;){var i=t[e];r[i]=n[i]}return r}function ut(n,t,r){var e=typeof n;return"function"==e?t===m?n:Bt(n,t,r):null==n?$e:"object"==e?bt(n):t===m?ze(n):xt(n,t);
|
||||
}function it(n,t,r,e,u,i,o){var f;if(r&&(f=u?r(n,e,u):r(n)),f!==m)return f;if(!ve(n))return n;if(e=Ci(n)){if(f=jr(n),!t)return qn(n,f)}else{var l=eu.call(n),a=l==D;if(l!=Z&&l!=z&&(!a||u))return Tn[l]?kr(n,l,t):u?n:{};if(f=Ar(a?{}:n),!t)return tt(f,n)}for(i||(i=[]),o||(o=[]),u=i.length;u--;)if(i[u]==n)return o[u];return i.push(n),o.push(f),(e?Dn:_t)(n,function(e,u){f[u]=it(e,t,r,u,n,i,o)}),f}function ot(n,t,r){if(typeof n!="function")throw new Je(L);return _u(function(){n.apply(m,r)},t)}function ft(n,t){
|
||||
var e=n?n.length:0,u=[];if(!e)return u;var i=-1,o=wr(),f=o==r,l=f&&200<=t.length?qu(t):null,a=t.length;l&&(o=Pn,f=false,t=l);n:for(;++i<e;)if(l=n[i],f&&l===l){for(var c=a;c--;)if(t[c]===l)continue n;u.push(l)}else 0>o(t,l,0)&&u.push(l);return u}function lt(n,t){var r=true;return Nu(n,function(n,e,u){return r=!!t(n,e,u)}),r}function at(n,t,r,e){var u=e,i=u;return Nu(n,function(n,o,f){o=+t(n,o,f),(r(o,u)||o===e&&o===i)&&(u=o,i=n)}),i}function ct(n,t){var r=[];return Nu(n,function(n,e,u){t(n,e,u)&&r.push(n);
|
||||
}),r}function st(n,t,r,e){var u;return r(n,function(n,r,i){return t(n,r,i)?(u=e?r:n,false):void 0}),u}function pt(n,t,r){for(var e=-1,u=n.length,i=-1,o=[];++e<u;){var f=n[e];if(p(f)&&Rr(f)&&(r||Ci(f)||se(f))){t&&(f=pt(f,t,r));for(var l=-1,a=f.length;++l<a;)o[++i]=f[l]}else r||(o[++i]=f)}return o}function ht(n,t){Bu(n,t,Ae)}function _t(n,t){return Bu(n,t,Pi)}function vt(n,t){return Mu(n,t,Pi)}function gt(n,t){for(var r=-1,e=t.length,u=-1,i=[];++r<e;){var o=t[r];Si(n[o])&&(i[++u]=o)}return i}function yt(n,t,r){
|
||||
if(null!=n){r!==m&&r in Nr(n)&&(t=[r]),r=0;for(var e=t.length;null!=n&&r<e;)n=n[t[r++]];return r&&r==e?n:m}}function dt(n,t,r,e,u,i){if(n===t)n=true;else if(null==n||null==t||!ve(n)&&!ve(t))n=n!==n&&t!==t;else n:{var o=dt,f=Ci(n),l=Ci(t),a=B,c=B;f||(a=eu.call(n),a==z?a=Z:a!=Z&&(f=we(n))),l||(c=eu.call(t),c==z?c=Z:c!=Z&&we(t));var s=a==Z,l=c==Z,c=a==c;if(!c||f||s){if(!e&&(a=s&&tu.call(n,"__wrapped__"),l=l&&tu.call(t,"__wrapped__"),a||l)){n=o(a?n.value():n,l?t.value():t,r,e,u,i);break n}if(c){for(u||(u=[]),
|
||||
i||(i=[]),a=u.length;a--;)if(u[a]==n){n=i[a]==t;break n}u.push(n),i.push(t),n=(f?vr:yr)(n,t,o,r,e,u,i),u.pop(),i.pop()}else n=false}else n=gr(n,t,a)}return n}function mt(n,t,r){var e=t.length,u=e,i=!r;if(null==n)return!u;for(n=Nr(n);e--;){var o=t[e];if(i&&o[2]?o[1]!==n[o[0]]:!(o[0]in n))return false}for(;++e<u;){var o=t[e],f=o[0],l=n[f],a=o[1];if(i&&o[2]){if(l===m&&!(f in n))return false}else if(o=r?r(l,a,f):m,o===m?!dt(a,l,r,true):!o)return false}return true}function wt(n,t){var r=-1,e=Rr(n)?Be(n.length):[];return Nu(n,function(n,u,i){
|
||||
e[++r]=t(n,u,i)}),e}function bt(n){var t=br(n);if(1==t.length&&t[0][2]){var r=t[0][0],e=t[0][1];return function(n){return null==n?false:n[r]===e&&(e!==m||r in Nr(n))}}return function(n){return mt(n,t)}}function xt(n,t){var r=Ci(n),e=Cr(n)&&t===t&&!ve(t),u=n+"";return n=zr(n),function(i){if(null==i)return false;var o=u;if(i=Nr(i),!(!r&&e||o in i)){if(i=1==n.length?i:yt(i,Et(n,0,-1)),null==i)return false;o=Kr(n),i=Nr(i)}return i[o]===t?t!==m||o in i:dt(t,i[o],m,true)}}function jt(n,t,r,e,u){if(!ve(n))return n;var i=Rr(t)&&(Ci(t)||we(t)),o=i?null:Pi(t);
|
||||
return Dn(o||t,function(f,l){if(o&&(l=f,f=t[l]),p(f)){e||(e=[]),u||(u=[]);n:{for(var a=l,c=e,s=u,h=c.length,_=t[a];h--;)if(c[h]==_){n[a]=s[h];break n}var h=n[a],v=r?r(h,_,a,n,t):m,g=v===m;g&&(v=_,Rr(_)&&(Ci(_)||we(_))?v=Ci(h)?h:Rr(h)?qn(h):[]:Ui(_)||se(_)?v=se(h)?xe(h):Ui(h)?h:{}:g=false),c.push(_),s.push(v),g?n[a]=jt(v,_,r,c,s):(v===v?v!==h:h===h)&&(n[a]=v)}}else a=n[l],c=r?r(a,f,l,n,t):m,(s=c===m)&&(c=f),c===m&&(!i||l in n)||!s&&(c===c?c===a:a!==a)||(n[l]=c)}),n}function At(n){return function(t){return null==t?m:t[n];
|
||||
}}function kt(n){var t=n+"";return n=zr(n),function(r){return yt(r,n,t)}}function Ot(n,t){for(var r=n?t.length:0;r--;){var e=t[r];if(e!=u&&Ir(e)){var u=e;vu.call(n,e,1)}}}function Rt(n,t){return n+cu(Iu()*(t-n+1))}function It(n,t,r,e,u){return u(n,function(n,u,i){r=e?(e=false,n):t(r,n,u,i)}),r}function Et(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=r===m||r>u?u:+r||0,0>r&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0,r=Be(u);++e<u;)r[e]=n[e+t];return r}function Ct(n,t){var r;return Nu(n,function(n,e,u){
|
||||
return r=t(n,e,u),!r}),!!r}function Wt(n,t){var r=n.length;for(n.sort(t);r--;)n[r]=n[r].c;return n}function St(t,r,e){var u=dr(),i=-1;return r=Jn(r,function(n){return u(n)}),t=wt(t,function(n){return{a:Jn(r,function(t){return t(n)}),b:++i,c:n}}),Wt(t,function(t,r){var u;n:{u=-1;for(var i=t.a,o=r.a,f=i.length,l=e.length;++u<f;){var a=n(i[u],o[u]);if(a){u=u<l?a*(e[u]?1:-1):a;break n}}u=t.b-r.b}return u})}function Ut(n,t){var r=0;return Nu(n,function(n,e,u){r+=+t(n,e,u)||0}),r}function Tt(n,t){var e=-1,u=wr(),i=n.length,o=u==r,f=o&&200<=i,l=f?qu():null,a=[];
|
||||
l?(u=Pn,o=false):(f=false,l=t?[]:a);n:for(;++e<i;){var c=n[e],s=t?t(c,e,n):c;if(o&&c===c){for(var p=l.length;p--;)if(l[p]===s)continue n;t&&l.push(s),a.push(c)}else 0>u(l,s,0)&&((t||f)&&l.push(s),a.push(c))}return a}function $t(n,t){for(var r=-1,e=t.length,u=Be(e);++r<e;)u[r]=n[t[r]];return u}function Ft(n,t,r,e){for(var u=n.length,i=e?u:-1;(e?i--:++i<u)&&t(n[i],i,n););return r?Et(n,e?0:i,e?i+1:u):Et(n,e?i+1:0,e?u:i)}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],i=t[e];pu.apply(r,i.args),r=i.func.apply(i.thisArg,r)}return r}function Nt(n,t,r){var e=0,u=n?n.length:e;if(typeof t=="number"&&t===t&&u<=Wu){for(;e<u;){var i=e+u>>>1,o=n[i];(r?o<=t:o<t)&&null!==o?e=i+1:u=i}return u}return zt(n,t,$e,r)}function zt(n,t,r,e){t=r(t);for(var u=0,i=n?n.length:0,o=t!==t,f=null===t,l=t===m;u<i;){var a=cu((u+i)/2),c=r(n[a]),s=c!==m,p=c===c;(o?p||e:f?p&&s&&(e||null!=c):l?p&&(e||s):null==c?0:e?c<=t:c<t)?u=a+1:i=a}return Au(i,Cu)}function Bt(n,t,r){if(typeof n!="function")return $e;
|
||||
if(t===m)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,i){return n.call(t,r,e,u,i)};case 5:return function(r,e,u,i,o){return n.call(t,r,e,u,i,o)}}return function(){return n.apply(t,arguments)}}function Mt(n){return fu.call(n,0)}function Pt(n,t,r){for(var e=r.length,u=-1,i=ju(n.length-e,0),o=-1,f=t.length,l=Be(i+f);++o<f;)l[o]=t[o];for(;++u<e;)l[r[u]]=n[u];for(;i--;)l[o++]=n[u++];return l}function qt(n,t,r){
|
||||
for(var e=-1,u=r.length,i=-1,o=ju(n.length-u,0),f=-1,l=t.length,a=Be(o+l);++i<o;)a[i]=n[i];for(o=i;++f<l;)a[o+f]=t[f];for(;++e<u;)a[o+r[e]]=n[i++];return a}function Dt(n,t){return function(r,e,u){var i=t?t():{};if(e=dr(e,u,3),Ci(r)){u=-1;for(var o=r.length;++u<o;){var f=r[u];n(i,f,e(f,u,r),r)}}else Nu(r,function(t,r,u){n(i,t,e(t,r,u),u)});return i}}function Kt(n){return ae(function(t,r){var e=-1,u=null==t?0:r.length,i=2<u?r[u-2]:m,o=2<u?r[2]:m,f=1<u?r[u-1]:m;for(typeof i=="function"?(i=Bt(i,f,5),
|
||||
u-=2):(i=typeof f=="function"?f:m,u-=i?1:0),o&&Er(r[0],r[1],o)&&(i=3>u?m:i,u=1);++e<u;)(o=r[e])&&n(t,o,i);return t})}function Zt(n,t){return function(r,e){var u=r?Ku(r):0;if(!Sr(u))return n(r,e);for(var i=t?u:-1,o=Nr(r);(t?i--:++i<u)&&false!==e(o[i],i,o););return r}}function Vt(n){return function(t,r,e){var u=Nr(t);e=e(t);for(var i=e.length,o=n?i:-1;n?o--:++o<i;){var f=e[o];if(false===r(u[f],f,u))break}return t}}function Yt(n,t){function r(){return(this&&this!==Zn&&this instanceof r?e:n).apply(t,arguments);
|
||||
}var e=Xt(n);return r}function Jt(n){return function(t){var r=-1;t=Se(Re(t));for(var e=t.length,u="";++r<e;)u=n(u,t[r],r);return u}}function Xt(n){return function(){var t=arguments;switch(t.length){case 0:return new n;case 1:return new n(t[0]);case 2:return new n(t[0],t[1]);case 3:return new n(t[0],t[1],t[2]);case 4:return new n(t[0],t[1],t[2],t[3]);case 5:return new n(t[0],t[1],t[2],t[3],t[4])}var r=Lu(n.prototype),t=n.apply(r,t);return ve(t)?t:r}}function Gt(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 Ht(n,t){return function(r,e,u){if(u&&Er(r,e,u)&&(e=null),e=dr(e,u,3),1==e.length){u=r=Lr(r);for(var i=e,o=-1,f=u.length,l=t,a=l;++o<f;){var c=u[o],s=+i(c);n(s,l)&&(l=s,a=c)}if(u=a,!r.length||u!==t)return u}return at(r,e,n,t)}}function Qt(n,r){return function(e,u,i){return u=dr(u,i,3),Ci(e)?(u=t(e,u,r),-1<u?e[u]:m):st(e,u,n)}}function nr(n){return function(r,e,u){return r&&r.length?(e=dr(e,u,3),t(r,e,n)):-1}}function tr(n){
|
||||
return function(t,r,e){return r=dr(r,e,3),st(t,r,n,true)}}function rr(n){return function(){for(var t,r=arguments.length,e=n?r:-1,u=0,i=Be(r);n?e--:++e<r;){var o=i[u++]=arguments[e];if(typeof o!="function")throw new Je(L);!t&&Nn.prototype.thru&&"wrapper"==mr(o)&&(t=new Nn([]))}for(e=t?-1:r;++e<r;){var o=i[e],u=mr(o),f="wrapper"==u?Du(o):null;t=f&&Wr(f[0])&&f[1]==(I|A|O|E)&&!f[4].length&&1==f[9]?t[mr(f[0])].apply(t,f[3]):1==o.length&&Wr(o)?t[u]():t.thru(o)}return function(){var n=arguments;if(t&&1==n.length&&Ci(n[0]))return t.plant(n[0]).value();
|
||||
for(var e=0,n=r?i[e].apply(this,n):n[0];++e<r;)n=i[e].call(this,n);return n}}}function er(n,t){return function(r,e,u){return typeof e=="function"&&u===m&&Ci(r)?n(r,e):t(r,Bt(e,u,3))}}function ur(n){return function(t,r,e){return(typeof r!="function"||e!==m)&&(r=Bt(r,e,3)),n(t,r,Ae)}}function ir(n){return function(t,r,e){return(typeof r!="function"||e!==m)&&(r=Bt(r,e,3)),n(t,r)}}function or(n){return function(t,r,e){var u={};return r=dr(r,e,3),_t(t,function(t,e,i){i=r(t,e,i),e=n?i:e,t=n?t:i,u[e]=t}),
|
||||
u}}function fr(n){return function(t,r,e){return t=u(t),(n?t:"")+sr(t,r,e)+(n?"":t)}}function lr(n){var t=ae(function(r,e){var u=_(e,t.placeholder);return _r(r,n,null,e,u)});return t}function ar(n,t){return function(r,e,u,i){var o=3>arguments.length;return typeof e=="function"&&i===m&&Ci(r)?n(r,e,u,o):It(r,dr(e,i,4),u,o,t)}}function cr(n,t,r,e,u,i,o,f,l,a){function c(){for(var w=arguments.length,j=w,A=Be(w);j--;)A[j]=arguments[j];if(e&&(A=Pt(A,e,u)),i&&(A=qt(A,i,o)),v||y){var j=c.placeholder,k=_(A,j),w=w-k.length;
|
||||
if(w<a){var I=f?qn(f):null,w=ju(a-w,0),E=v?k:null,k=v?null:k,C=v?A:null,A=v?null:A;return t|=v?O:R,t&=~(v?R:O),g||(t&=~(b|x)),A=[n,t,r,C,E,A,k,I,l,w],I=cr.apply(m,A),Wr(n)&&Zu(I,A),I.placeholder=j,I}}if(j=p?r:this,I=h?j[n]:n,f)for(w=A.length,E=Au(f.length,w),k=qn(A);E--;)C=f[E],A[E]=Ir(C,w)?k[C]:m;return s&&l<A.length&&(A.length=l),this&&this!==Zn&&this instanceof c&&(I=d||Xt(n)),I.apply(j,A)}var s=t&I,p=t&b,h=t&x,v=t&A,g=t&j,y=t&k,d=h?null:Xt(n);return c}function sr(n,t,r){return n=n.length,t=+t,
|
||||
n<t&&bu(t)?(t-=n,r=null==r?" ":r+"",Ce(r,lu(t/r.length)).slice(0,t)):""}function pr(n,t,r,e){function u(){for(var t=-1,f=arguments.length,l=-1,a=e.length,c=Be(f+a);++l<a;)c[l]=e[l];for(;f--;)c[l++]=arguments[++t];return(this&&this!==Zn&&this instanceof u?o:n).apply(i?r:this,c)}var i=t&b,o=Xt(n);return u}function hr(n){return function(t,r,e,u){var i=dr(e);return null==e&&i===ut?Nt(t,r,n):zt(t,r,i(e,u,1),n)}}function _r(n,t,r,e,u,i,o,f){var l=t&x;if(!l&&typeof n!="function")throw new Je(L);var a=e?e.length:0;
|
||||
if(a||(t&=~(O|R),e=u=null),a-=u?u.length:0,t&R){var c=e,s=u;e=u=null}var p=l?null:Du(n);return r=[n,t,r,e,u,c,s,i,o,f],p&&(e=r[1],t=p[1],f=e|t,u=t==I&&e==A||t==I&&e==E&&r[7].length<=p[8]||t==(I|E)&&e==A,(f<I||u)&&(t&b&&(r[2]=p[2],f|=e&b?0:j),(e=p[3])&&(u=r[3],r[3]=u?Pt(u,e,p[4]):qn(e),r[4]=u?_(r[3],N):qn(p[4])),(e=p[5])&&(u=r[5],r[5]=u?qt(u,e,p[6]):qn(e),r[6]=u?_(r[5],N):qn(p[6])),(e=p[7])&&(r[7]=qn(e)),t&I&&(r[8]=null==r[8]?p[8]:Au(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?l?0:n.length:ju(f-a,0)||0,(p?Pu:Zu)(t==b?Yt(r[0],r[2]):t!=O&&t!=(b|O)||r[4].length?cr.apply(m,r):pr.apply(m,r),r)}function vr(n,t,r,e,u,i,o){var f=-1,l=n.length,a=t.length;if(l!=a&&(!u||a<=l))return false;for(;++f<l;){var c=n[f],a=t[f],s=e?e(u?a:c,u?c:a,f):m;if(s!==m){if(s)continue;return false}if(u){if(!Gn(t,function(n){return c===n||r(c,n,e,u,i,o)}))return false}else if(c!==a&&!r(c,a,e,u,i,o))return false}return true}function gr(n,t,r){switch(r){case M:case P:return+n==+t;case q:return n.name==t.name&&n.message==t.message;
|
||||
case K:return n!=+n?t!=+t:n==+t;case V:case Y:return n==t+""}return false}function yr(n,t,r,e,u,i,o){var f=Pi(n),l=f.length,a=Pi(t).length;if(l!=a&&!u)return false;for(a=l;a--;){var c=f[a];if(!(u?c in t:tu.call(t,c)))return false}for(var s=u;++a<l;){var c=f[a],p=n[c],h=t[c],_=e?e(u?h:p,u?p:h,c):m;if(_===m?!r(p,h,e,u,i,o):!_)return false;s||(s="constructor"==c)}return s||(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 dr(n,t,r){var e=Fn.callback||Ue,e=e===Ue?ut:e;return r?e(n,t,r):e}function mr(n){for(var t=n.name,r=$u[t],e=r?r.length:0;e--;){var u=r[e],i=u.func;if(null==i||i==n)return u.name}return t}function wr(n,t,e){var u=Fn.indexOf||Dr,u=u===Dr?r:u;return n?u(n,t,e):u}function br(n){n=ke(n);for(var t=n.length;t--;){var r=n[t][1];n[t][2]=r===r&&!ve(r)}return n}function xr(n,t){var r=null==n?m:n[t];return ge(r)?r:m}function jr(n){var t=n.length,r=new n.constructor(t);return t&&"string"==typeof n[0]&&tu.call(n,"index")&&(r.index=n.index,
|
||||
r.input=n.input),r}function Ar(n){return n=n.constructor,typeof n=="function"&&n instanceof n||(n=Ze),new n}function kr(n,t,r){var e=n.constructor;switch(t){case J:return Mt(n);case M:case P:return new e(+n);case X:case G:case H:case Q:case nn:case tn:case rn:case en:case un:return t=n.buffer,new e(r?Mt(t):t,n.byteOffset,n.length);case K:case Y:return new e(n);case V:var u=new e(n.source,An.exec(n));u.lastIndex=n.lastIndex}return u}function Or(n,t,r){return null==n||Cr(t,n)||(t=zr(t),n=1==t.length?n:yt(n,Et(t,0,-1)),
|
||||
t=Kr(t)),t=null==n?n:n[t],null==t?m:t.apply(n,r)}function Rr(n){return null!=n&&Sr(Ku(n))}function Ir(n,t){return n=typeof n=="number"?n:parseFloat(n),t=null==t?Uu:t,-1<n&&0==n%1&&n<t}function Er(n,t,r){if(!ve(r))return false;var e=typeof t;return("number"==e?Rr(r)&&Ir(t,r.length):"string"==e&&t in r)?(t=r[t],n===n?n===t:t!==t):false}function Cr(n,t){var r=typeof n;return"string"==r&&yn.test(n)||"number"==r?true:Ci(n)?false:!gn.test(n)||null!=t&&n in Nr(t)}function Wr(n){var t=mr(n);return!!t&&n===Fn[t]&&t in zn.prototype;
|
||||
}function Sr(n){return typeof n=="number"&&-1<n&&0==n%1&&n<=Uu}function Ur(n,t){n=Nr(n);for(var r=-1,e=t.length,u={};++r<e;){var i=t[r];i in n&&(u[i]=n[i])}return u}function Tr(n,t){var r={};return ht(n,function(n,e,u){t(n,e,u)&&(r[e]=n)}),r}function $r(n){var t;if(!p(n)||eu.call(n)!=Z||!(tu.call(n,"constructor")||(t=n.constructor,typeof t!="function"||t instanceof t)))return false;var r;return ht(n,function(n,t){r=t}),r===m||tu.call(n,r)}function Fr(n){for(var t=Ae(n),r=t.length,e=r&&n.length,u=!!e&&Sr(e)&&(Ci(n)||se(n)),i=-1,o=[];++i<r;){
|
||||
var f=t[i];(u&&Ir(f,e)||tu.call(n,f))&&o.push(f)}return o}function Lr(n){return null==n?[]:Rr(n)?ve(n)?n:Ze(n):Oe(n)}function Nr(n){return ve(n)?n:Ze(n)}function zr(n){if(Ci(n))return n;var t=[];return u(n).replace(dn,function(n,r,e,u){t.push(e?u.replace(xn,"$1"):r||n)}),t}function Br(n){return n instanceof zn?n.clone():new Nn(n.__wrapped__,n.__chain__,qn(n.__actions__))}function Mr(n,t,r){return n&&n.length?((r?Er(n,t,r):null==t)&&(t=1),Et(n,0>t?0:t)):[]}function Pr(n,t,r){var e=n?n.length:0;return e?((r?Er(n,t,r):null==t)&&(t=1),
|
||||
t=e-(+t||0),Et(n,0,0>t?0:t)):[]}function qr(n){return n?n[0]:m}function Dr(n,t,e){var u=n?n.length:0;if(!u)return-1;if(typeof e=="number")e=0>e?ju(u+e,0):e;else if(e)return e=Nt(n,t),n=n[e],(t===t?t===n:n!==n)?e:-1;return r(n,t,e||0)}function Kr(n){var t=n?n.length:0;return t?n[t-1]:m}function Zr(n){return Mr(n,1)}function Vr(n,t,e,u){if(!n||!n.length)return[];null!=t&&typeof t!="boolean"&&(u=e,e=Er(n,t,u)?null:t,t=false);var i=dr();if((null!=e||i!==ut)&&(e=i(e,u,3)),t&&wr()==r){t=e;var o;e=-1,u=n.length;
|
||||
for(var i=-1,f=[];++e<u;){var l=n[e],a=t?t(l,e,n):l;e&&o===a||(o=a,f[++i]=l)}n=f}else n=Tt(n,e);return n}function Yr(n){if(!n||!n.length)return[];var t=-1,r=0;n=Yn(n,function(n){return Rr(n)?(r=ju(n.length,r),true):void 0});for(var e=Be(r);++t<r;)e[t]=Jn(n,At(t));return e}function Jr(n,t,r){return n&&n.length?(n=Yr(n),null==t?n:(t=Bt(t,r,4),Jn(n,function(n){return Xn(n,t,m,true)}))):[]}function Xr(n,t){var r=-1,e=n?n.length:0,u={};for(!e||t||Ci(n[0])||(t=[]);++r<e;){var i=n[r];t?u[i]=t[r]:i&&(u[i[0]]=i[1]);
|
||||
}return u}function Gr(n){return n=Fn(n),n.__chain__=true,n}function Hr(n,t,r){return t.call(r,n)}function Qr(n,t,r){var e=Ci(n)?Kn:lt;return r&&Er(n,t,r)&&(t=null),(typeof t!="function"||r!==m)&&(t=dr(t,r,3)),e(n,t)}function ne(n,t,r){var e=Ci(n)?Yn:ct;return t=dr(t,r,3),e(n,t)}function te(n,t,r,e){var u=n?Ku(n):0;return Sr(u)||(n=Oe(n),u=n.length),u?(r=typeof r!="number"||e&&Er(t,r,e)?0:0>r?ju(u+r,0):r||0,typeof n=="string"||!Ci(n)&&me(n)?r<u&&-1<n.indexOf(t,r):-1<wr(n,t,r)):false}function re(n,t,r){
|
||||
var e=Ci(n)?Jn:wt;return t=dr(t,r,3),e(n,t)}function ee(n,t,r){return(r?Er(n,t,r):null==t)?(n=Lr(n),t=n.length,0<t?n[Rt(0,t-1)]:m):(n=ue(n),n.length=Au(0>t?0:+t||0,n.length),n)}function ue(n){n=Lr(n);for(var t=-1,r=n.length,e=Be(r);++t<r;){var u=Rt(0,t);t!=u&&(e[t]=e[u]),e[u]=n[t]}return e}function ie(n,t,r){var e=Ci(n)?Gn:Ct;return r&&Er(n,t,r)&&(t=null),(typeof t!="function"||r!==m)&&(t=dr(t,r,3)),e(n,t)}function oe(n,t){var r;if(typeof t!="function"){if(typeof n!="function")throw new Je(L);var e=n;
|
||||
n=t,t=e}return function(){return 0<--n&&(r=t.apply(this,arguments)),1>=n&&(t=null),r}}function fe(n,t,r){function e(){var r=t-(yi()-a);0>=r||r>t?(f&&au(f),r=p,f=s=p=m,r&&(h=yi(),l=n.apply(c,o),s||f||(o=c=null))):s=_u(e,r)}function u(){s&&au(s),f=s=p=m,(v||_!==t)&&(h=yi(),l=n.apply(c,o),s||f||(o=c=null))}function i(){if(o=arguments,a=yi(),c=this,p=v&&(s||!g),false===_)var r=g&&!s;else{f||g||(h=a);var i=_-(a-h),y=0>=i||i>_;y?(f&&(f=au(f)),h=a,l=n.apply(c,o)):f||(f=_u(u,i))}return y&&s?s=au(s):s||t===_||(s=_u(e,t)),
|
||||
r&&(y=true,l=n.apply(c,o)),!y||s||f||(o=c=null),l}var o,f,l,a,c,s,p,h=0,_=false,v=true;if(typeof n!="function")throw new Je(L);if(t=0>t?0:+t||0,true===r)var g=true,v=false;else ve(r)&&(g=r.leading,_="maxWait"in r&&ju(+r.maxWait||0,t),v="trailing"in r?r.trailing:v);return i.cancel=function(){s&&au(s),f&&au(f),f=s=p=m},i}function le(n,t){function r(){var e=arguments,u=t?t.apply(this,e):e[0],i=r.cache;return i.has(u)?i.get(u):(e=n.apply(this,e),r.cache=i.set(u,e),e)}if(typeof n!="function"||t&&typeof t!="function")throw new Je(L);
|
||||
return r.cache=new le.Cache,r}function ae(n,t){if(typeof n!="function")throw new Je(L);return t=ju(t===m?n.length-1:+t||0,0),function(){for(var r=arguments,e=-1,u=ju(r.length-t,0),i=Be(u);++e<u;)i[e]=r[t+e];switch(t){case 0:return n.call(this,i);case 1:return n.call(this,r[0],i);case 2:return n.call(this,r[0],r[1],i)}for(u=Be(t+1),e=-1;++e<t;)u[e]=r[e];return u[t]=i,n.apply(this,u)}}function ce(n,t){return n>t}function se(n){return p(n)&&Rr(n)&&eu.call(n)==z}function pe(n){return!!n&&1===n.nodeType&&p(n)&&-1<eu.call(n).indexOf("Element");
|
||||
}function he(n,t,r,e){return e=(r=typeof r=="function"?Bt(r,e,3):m)?r(n,t):m,e===m?dt(n,t,r):!!e}function _e(n){return p(n)&&typeof n.message=="string"&&eu.call(n)==q}function ve(n){var t=typeof n;return!!n&&("object"==t||"function"==t)}function ge(n){return null==n?false:eu.call(n)==D?iu.test(nu.call(n)):p(n)&&On.test(n)}function ye(n){return typeof n=="number"||p(n)&&eu.call(n)==K}function de(n){return p(n)&&eu.call(n)==V}function me(n){return typeof n=="string"||p(n)&&eu.call(n)==Y}function we(n){return p(n)&&Sr(n.length)&&!!Un[eu.call(n)];
|
||||
}function be(n,t){return n<t}function xe(n){return et(n,Ae(n))}function je(n){return gt(n,Ae(n))}function Ae(n){if(null==n)return[];ve(n)||(n=Ze(n));for(var t=n.length,t=t&&Sr(t)&&(Ci(n)||se(n))&&t||0,r=n.constructor,e=-1,r=typeof r=="function"&&r.prototype===n,u=Be(t),i=0<t;++e<t;)u[e]=e+"";for(var o in n)i&&Ir(o,t)||"constructor"==o&&(r||!tu.call(n,o))||u.push(o);return u}function ke(n){n=Nr(n);for(var t=-1,r=Pi(n),e=r.length,u=Be(e);++t<e;){var i=r[t];u[t]=[i,n[i]]}return u}function Oe(n){return $t(n,Pi(n));
|
||||
}function Re(n){return(n=u(n))&&n.replace(Rn,l).replace(bn,"")}function Ie(n){return(n=u(n))&&wn.test(n)?n.replace(mn,"\\$&"):n}function Ee(n,t,r){return r&&Er(n,t,r)&&(t=0),Ru(n,t)}function Ce(n,t){var r="";if(n=u(n),t=+t,1>t||!n||!bu(t))return r;do t%2&&(r+=n),t=cu(t/2),n+=n;while(t);return r}function We(n,t,r){var e=n;return(n=u(n))?(r?Er(e,t,r):null==t)?n.slice(v(n),g(n)+1):(t+="",n.slice(i(n,t),o(n,t)+1)):n}function Se(n,t,r){return r&&Er(n,t,r)&&(t=null),n=u(n),n.match(t||Cn)||[]}function Ue(n,t,r){
|
||||
return r&&Er(n,t,r)&&(t=null),p(n)?Fe(n):ut(n,t)}function Te(n){return function(){return n}}function $e(n){return n}function Fe(n){return bt(it(n,true))}function Le(n,t,r){if(null==r){var e=ve(t),u=e?Pi(t):null;((u=u&&u.length?gt(t,u):null)?u.length:e)||(u=false,r=t,t=n,n=this)}u||(u=gt(t,Pi(t)));var i=true,e=-1,o=Si(n),f=u.length;false===r?i=false:ve(r)&&"chain"in r&&(i=r.chain);for(;++e<f;){r=u[e];var l=t[r];n[r]=l,o&&(n.prototype[r]=function(t){return function(){var r=this.__chain__;if(i||r){var e=n(this.__wrapped__);
|
||||
return(e.__actions__=qn(this.__actions__)).push({func:t,args:arguments,thisArg:n}),e.__chain__=r,e}return r=[this.value()],pu.apply(r,arguments),t.apply(n,r)}}(l))}return n}function Ne(){}function ze(n){return Cr(n)?At(n):kt(n)}h=h?Vn.defaults(Zn.Object(),h,Vn.pick(Zn,Sn)):Zn;var Be=h.Array,Me=h.Date,Pe=h.Error,qe=h.Function,De=h.Math,Ke=h.Number,Ze=h.Object,Ve=h.RegExp,Ye=h.String,Je=h.TypeError,Xe=Be.prototype,Ge=Ze.prototype,He=Ye.prototype,Qe=(Qe=h.window)?Qe.document:null,nu=qe.prototype.toString,tu=Ge.hasOwnProperty,ru=0,eu=Ge.toString,uu=h._,iu=Ve("^"+Ie(nu.call(tu)).replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),ou=xr(h,"ArrayBuffer"),fu=xr(ou&&new ou(0),"slice"),lu=De.ceil,au=h.clearTimeout,cu=De.floor,su=xr(Ze,"getPrototypeOf"),pu=Xe.push,hu=xr(h,"Set"),_u=h.setTimeout,vu=Xe.splice,gu=xr(h,"Uint8Array"),yu=xr(h,"WeakMap"),du=function(){
|
||||
try{var n=xr(h,"Float64Array"),t=new n(new ou(10),0,1)&&n}catch(r){}return t||null}(),mu=xr(Ze,"create"),wu=xr(Be,"isArray"),bu=h.isFinite,xu=xr(Ze,"keys"),ju=De.max,Au=De.min,ku=xr(Me,"now"),Ou=xr(Ke,"isFinite"),Ru=h.parseInt,Iu=De.random,Eu=Ke.POSITIVE_INFINITY,Cu=4294967294,Wu=2147483647,Su=du?du.BYTES_PER_ELEMENT:0,Uu=9007199254740991,Tu=yu&&new yu,$u={},Fu=Fn.support={};!function(n){function t(){this.x=n}var r=[];t.prototype={valueOf:n,y:n};for(var e in new t)r.push(e);try{Fu.dom=11===Qe.createDocumentFragment().nodeType;
|
||||
}catch(u){Fu.dom=false}}(1,0),Fn.templateSettings={escape:hn,evaluate:_n,interpolate:vn,variable:"",imports:{_:Fn}};var Lu=function(){function n(){}return function(t){if(ve(t)){n.prototype=t;var r=new n;n.prototype=null}return r||{}}}(),Nu=Zt(_t),zu=Zt(vt,true),Bu=Vt(),Mu=Vt(true),Pu=Tu?function(n,t){return Tu.set(n,t),n}:$e;fu||(Mt=ou&&gu?function(n){var t=n.byteLength,r=du?cu(t/Su):0,e=r*Su,u=new ou(t);if(r){var i=new du(u,0,r);i.set(new du(n,0,r))}return t!=e&&(i=new gu(u,e),i.set(new gu(n,e))),u}:Te(null));
|
||||
var qu=mu&&hu?function(n){return new Mn(n)}:Te(null),Du=Tu?function(n){return Tu.get(n)}:Ne,Ku=At("length"),Zu=function(){var n=0,t=0;return function(r,e){var u=yi(),i=U-(u-t);if(t=u,0<i){if(++n>=S)return r}else n=0;return Pu(r,e)}}(),Vu=ae(function(n,t){return Rr(n)?ft(n,pt(t,false,true)):[]}),Yu=nr(),Ju=nr(true),Xu=ae(function(n){for(var t=n.length,e=t,u=Be(c),i=wr(),o=i==r,f=[];e--;){var l=n[e]=Rr(l=n[e])?l:[];u[e]=o&&120<=l.length?qu(e&&l):null}var o=n[0],a=-1,c=o?o.length:0,s=u[0];n:for(;++a<c;)if(l=o[a],
|
||||
0>(s?Pn(s,l):i(f,l,0))){for(e=t;--e;){var p=u[e];if(0>(p?Pn(p,l):i(n[e],l,0)))continue n}s&&s.push(l),f.push(l)}return f}),Gu=ae(function(t,r){r=pt(r);var e=rt(t,r);return Ot(t,r.sort(n)),e}),Hu=hr(),Qu=hr(true),ni=ae(function(n){return Tt(pt(n,false,true))}),ti=ae(function(n,t){return Rr(n)?ft(n,t):[]}),ri=ae(Yr),ei=ae(function(n){var t=n.length,r=2<t?n[t-2]:m,e=1<t?n[t-1]:m;return 2<t&&typeof r=="function"?t-=2:(r=1<t&&typeof e=="function"?(--t,e):m,e=m),n.length=t,Jr(n,r,e)}),ui=ae(function(n,t){return rt(n,pt(t));
|
||||
}),ii=Dt(function(n,t,r){tu.call(n,r)?++n[r]:n[r]=1}),oi=Qt(Nu),fi=Qt(zu,true),li=er(Dn,Nu),ai=er(function(n,t){for(var r=n.length;r--&&false!==t(n[r],r,n););return n},zu),ci=Dt(function(n,t,r){tu.call(n,r)?n[r].push(t):n[r]=[t]}),si=Dt(function(n,t,r){n[r]=t}),pi=ae(function(n,t,r){var e=-1,u=typeof t=="function",i=Cr(t),o=Rr(n)?Be(n.length):[];return Nu(n,function(n){var f=u?t:i&&null!=n?n[t]:null;o[++e]=f?f.apply(n,r):Or(n,t,r)}),o}),hi=Dt(function(n,t,r){n[r?0:1].push(t)},function(){return[[],[]]}),_i=ar(Xn,Nu),vi=ar(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),gi=ae(function(n,t){if(null==n)return[];var r=t[2];return r&&Er(t[0],t[1],r)&&(t.length=1),St(n,pt(t),[])}),yi=ku||function(){return(new Me).getTime()},di=ae(function(n,t,r){var e=b;if(r.length)var u=_(r,di.placeholder),e=e|O;return _r(n,e,t,r,u)}),mi=ae(function(n,t){t=t.length?pt(t):je(n);for(var r=-1,e=t.length;++r<e;){var u=t[r];n[u]=_r(n[u],b,n)}return n}),wi=ae(function(n,t,r){var e=b|x;if(r.length)var u=_(r,wi.placeholder),e=e|O;
|
||||
return _r(t,e,n,r,u)}),bi=Gt(A),xi=Gt(k),ji=ae(function(n,t){return ot(n,1,t)}),Ai=ae(function(n,t,r){return ot(n,t,r)}),ki=rr(),Oi=rr(true),Ri=lr(O),Ii=lr(R),Ei=ae(function(n,t){return _r(n,E,null,null,null,pt(t))}),Ci=wu||function(n){return p(n)&&Sr(n.length)&&eu.call(n)==B};Fu.dom||(pe=function(n){return!!n&&1===n.nodeType&&p(n)&&!Ui(n)});var Wi=Ou||function(n){return typeof n=="number"&&bu(n)},Si=e(/x/)||gu&&!e(gu)?function(n){return eu.call(n)==D}:e,Ui=su?function(n){if(!n||eu.call(n)!=Z)return false;
|
||||
var t=xr(n,"valueOf"),r=t&&(r=su(t))&&su(r);return r?n==r||su(n)==r:$r(n)}:$r,Ti=Kt(function(n,t,r){return r?nt(n,t,r):tt(n,t)}),$i=ae(function(n){var t=n[0];return null==t?t:(n.push(Hn),Ti.apply(m,n))}),Fi=tr(_t),Li=tr(vt),Ni=ur(Bu),zi=ur(Mu),Bi=ir(_t),Mi=ir(vt),Pi=xu?function(n){var t=null==n?null:n.constructor;return typeof t=="function"&&t.prototype===n||typeof n!="function"&&Rr(n)?Fr(n):ve(n)?xu(n):[]}:Fr,qi=or(true),Di=or(),Ki=Kt(jt),Zi=ae(function(n,t){if(null==n)return{};if("function"!=typeof t[0])return t=Jn(pt(t),Ye),
|
||||
Ur(n,ft(Ae(n),t));var r=Bt(t[0],t[1],3);return Tr(n,function(n,t,e){return!r(n,t,e)})}),Vi=ae(function(n,t){return null==n?{}:"function"==typeof t[0]?Tr(n,Bt(t[0],t[1],3)):Ur(n,pt(t))}),Yi=Jt(function(n,t,r){return t=t.toLowerCase(),n+(r?t.charAt(0).toUpperCase()+t.slice(1):t)}),Ji=Jt(function(n,t,r){return n+(r?"-":"")+t.toLowerCase()}),Xi=fr(),Gi=fr(true);8!=Ru(Wn+"08")&&(Ee=function(n,t,r){return(r?Er(n,t,r):null==t)?t=0:t&&(t=+t),n=We(n),Ru(n,t||(kn.test(n)?16:10))});var Hi=Jt(function(n,t,r){return n+(r?"_":"")+t.toLowerCase();
|
||||
}),Qi=Jt(function(n,t,r){return n+(r?" ":"")+(t.charAt(0).toUpperCase()+t.slice(1))}),no=ae(function(n,t){try{return n.apply(m,t)}catch(r){return _e(r)?r:new Pe(r)}}),to=ae(function(n,t){return function(r){return Or(r,n,t)}}),ro=ae(function(n,t){return function(r){return Or(n,r,t)}}),eo=Ht(ce,-(1/0)),uo=Ht(be,1/0);return Fn.prototype=Ln.prototype,Nn.prototype=Lu(Ln.prototype),Nn.prototype.constructor=Nn,zn.prototype=Lu(Ln.prototype),zn.prototype.constructor=zn,Bn.prototype["delete"]=function(n){return this.has(n)&&delete this.__data__[n];
|
||||
},Bn.prototype.get=function(n){return"__proto__"==n?m:this.__data__[n]},Bn.prototype.has=function(n){return"__proto__"!=n&&tu.call(this.__data__,n)},Bn.prototype.set=function(n,t){return"__proto__"!=n&&(this.__data__[n]=t),this},Mn.prototype.push=function(n){var t=this.data;typeof n=="string"||ve(n)?t.set.add(n):t.hash[n]=true},le.Cache=Bn,Fn.after=function(n,t){if(typeof t!="function"){if(typeof n!="function")throw new Je(L);var r=n;n=t,t=r}return n=bu(n=+n)?n:0,function(){return 1>--n?t.apply(this,arguments):void 0;
|
||||
}},Fn.ary=function(n,t,r){return r&&Er(n,t,r)&&(t=null),t=n&&null==t?n.length:ju(+t||0,0),_r(n,I,null,null,null,null,t)},Fn.assign=Ti,Fn.at=ui,Fn.before=oe,Fn.bind=di,Fn.bindAll=mi,Fn.bindKey=wi,Fn.callback=Ue,Fn.chain=Gr,Fn.chunk=function(n,t,r){t=(r?Er(n,t,r):null==t)?1:ju(+t||1,1),r=0;for(var e=n?n.length:0,u=-1,i=Be(lu(e/t));r<e;)i[++u]=Et(n,r,r+=t);return i},Fn.compact=function(n){for(var t=-1,r=n?n.length:0,e=-1,u=[];++t<r;){var i=n[t];i&&(u[++e]=i)}return u},Fn.constant=Te,Fn.countBy=ii,Fn.create=function(n,t,r){
|
||||
var e=Lu(n);return r&&Er(n,t,r)&&(t=null),t?tt(e,t):e},Fn.curry=bi,Fn.curryRight=xi,Fn.debounce=fe,Fn.defaults=$i,Fn.defer=ji,Fn.delay=Ai,Fn.difference=Vu,Fn.drop=Mr,Fn.dropRight=Pr,Fn.dropRightWhile=function(n,t,r){return n&&n.length?Ft(n,dr(t,r,3),true,true):[]},Fn.dropWhile=function(n,t,r){return n&&n.length?Ft(n,dr(t,r,3),true):[]},Fn.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===m||e>u?u:+e||0,
|
||||
0>e&&(e+=u),u=r>e?0:e>>>0,r>>>=0;r<u;)n[r++]=t;return n},Fn.filter=ne,Fn.flatten=function(n,t,r){var e=n?n.length:0;return r&&Er(n,t,r)&&(t=false),e?pt(n,t):[]},Fn.flattenDeep=function(n){return n&&n.length?pt(n,true):[]},Fn.flow=ki,Fn.flowRight=Oi,Fn.forEach=li,Fn.forEachRight=ai,Fn.forIn=Ni,Fn.forInRight=zi,Fn.forOwn=Bi,Fn.forOwnRight=Mi,Fn.functions=je,Fn.groupBy=ci,Fn.indexBy=si,Fn.initial=function(n){return Pr(n,1)},Fn.intersection=Xu,Fn.invert=function(n,t,r){r&&Er(n,t,r)&&(t=null),r=-1;for(var e=Pi(n),u=e.length,i={};++r<u;){
|
||||
var o=e[r],f=n[o];t?tu.call(i,f)?i[f].push(o):i[f]=[o]:i[f]=o}return i},Fn.invoke=pi,Fn.keys=Pi,Fn.keysIn=Ae,Fn.map=re,Fn.mapKeys=qi,Fn.mapValues=Di,Fn.matches=Fe,Fn.matchesProperty=function(n,t){return xt(n,it(t,true))},Fn.memoize=le,Fn.merge=Ki,Fn.method=to,Fn.methodOf=ro,Fn.mixin=Le,Fn.negate=function(n){if(typeof n!="function")throw new Je(L);return function(){return!n.apply(this,arguments)}},Fn.omit=Zi,Fn.once=function(n){return oe(2,n)},Fn.pairs=ke,Fn.partial=Ri,Fn.partialRight=Ii,Fn.partition=hi,
|
||||
Fn.pick=Vi,Fn.pluck=function(n,t){return re(n,ze(t))},Fn.property=ze,Fn.propertyOf=function(n){return function(t){return yt(n,zr(t),t+"")}},Fn.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 i=0,o=n[r];-1<(i=e(t,o,i));)vu.call(t,i,1);return t},Fn.pullAt=Gu,Fn.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=ju(lu((t-n)/(r||1)),0);for(var u=Be(t);++e<t;)u[e]=n,n+=r;return u},Fn.rearg=Ei,
|
||||
Fn.reject=function(n,t,r){var e=Ci(n)?Yn:ct;return t=dr(t,r,3),e(n,function(n,r,e){return!t(n,r,e)})},Fn.remove=function(n,t,r){var e=[];if(!n||!n.length)return e;var u=-1,i=[],o=n.length;for(t=dr(t,r,3);++u<o;)r=n[u],t(r,u,n)&&(e.push(r),i.push(u));return Ot(n,i),e},Fn.rest=Zr,Fn.restParam=ae,Fn.set=function(n,t,r){if(null==n)return n;var e=t+"";t=null!=n[e]||Cr(t,n)?[e]:zr(t);for(var e=-1,u=t.length,i=u-1,o=n;null!=o&&++e<u;){var f=t[e];ve(o)&&(e==i?o[f]=r:null==o[f]&&(o[f]=Ir(t[e+1])?[]:{})),o=o[f];
|
||||
}return n},Fn.shuffle=ue,Fn.slice=function(n,t,r){var e=n?n.length:0;return e?(r&&typeof r!="number"&&Er(n,t,r)&&(t=0,r=e),Et(n,t,r)):[]},Fn.sortBy=function(n,t,r){if(null==n)return[];r&&Er(n,t,r)&&(t=null);var e=-1;return t=dr(t,r,3),n=wt(n,function(n,r,u){return{a:t(n,r,u),b:++e,c:n}}),Wt(n,f)},Fn.sortByAll=gi,Fn.sortByOrder=function(n,t,r,e){return null==n?[]:(e&&Er(t,r,e)&&(r=null),Ci(t)||(t=null==t?[]:[t]),Ci(r)||(r=null==r?[]:[r]),St(n,t,r))},Fn.spread=function(n){if(typeof n!="function")throw new Je(L);
|
||||
return function(t){return n.apply(this,t)}},Fn.take=function(n,t,r){return n&&n.length?((r?Er(n,t,r):null==t)&&(t=1),Et(n,0,0>t?0:t)):[]},Fn.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),Et(n,0>t?0:t)):[]},Fn.takeRightWhile=function(n,t,r){return n&&n.length?Ft(n,dr(t,r,3),false,true):[]},Fn.takeWhile=function(n,t,r){return n&&n.length?Ft(n,dr(t,r,3)):[]},Fn.tap=function(n,t,r){return t.call(r,n),n},Fn.throttle=function(n,t,r){var e=true,u=true;if(typeof n!="function")throw new Je(L);
|
||||
return false===r?e=false:ve(r)&&(e="leading"in r?!!r.leading:e,u="trailing"in r?!!r.trailing:u),$n.leading=e,$n.maxWait=+t,$n.trailing=u,fe(n,t,$n)},Fn.thru=Hr,Fn.times=function(n,t,r){if(n=cu(n),1>n||!bu(n))return[];var e=-1,u=Be(Au(n,4294967295));for(t=Bt(t,r,1);++e<n;)4294967295>e?u[e]=t(e):t(e);return u},Fn.toArray=function(n){var t=n?Ku(n):0;return Sr(t)?t?qn(n):[]:Oe(n)},Fn.toPlainObject=xe,Fn.transform=function(n,t,r,e){var u=Ci(n)||we(n);return t=dr(t,e,4),null==r&&(u||ve(n)?(e=n.constructor,r=u?Ci(n)?new e:[]:Lu(Si(e)?e.prototype:null)):r={}),
|
||||
(u?Dn:_t)(n,function(n,e,u){return t(r,n,e,u)}),r},Fn.union=ni,Fn.uniq=Vr,Fn.unzip=Yr,Fn.unzipWith=Jr,Fn.values=Oe,Fn.valuesIn=function(n){return $t(n,Ae(n))},Fn.where=function(n,t){return ne(n,bt(t))},Fn.without=ti,Fn.wrap=function(n,t){return t=null==t?$e:t,_r(t,O,null,[n],[])},Fn.xor=function(){for(var n=-1,t=arguments.length;++n<t;){var r=arguments[n];if(Rr(r))var e=e?ft(e,r).concat(ft(r,e)):r}return e?Tt(e):[]},Fn.zip=ri,Fn.zipObject=Xr,Fn.zipWith=ei,Fn.backflow=Oi,Fn.collect=re,Fn.compose=Oi,
|
||||
Fn.each=li,Fn.eachRight=ai,Fn.extend=Ti,Fn.iteratee=Ue,Fn.methods=je,Fn.object=Xr,Fn.select=ne,Fn.tail=Zr,Fn.unique=Vr,Le(Fn,Fn),Fn.add=function(n,t){return(+n||0)+(+t||0)},Fn.attempt=no,Fn.camelCase=Yi,Fn.capitalize=function(n){return(n=u(n))&&n.charAt(0).toUpperCase()+n.slice(1)},Fn.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),typeof r=="function"?it(n,t,Bt(r,e,1)):it(n,t)},Fn.cloneDeep=function(n,t,r){return typeof t=="function"?it(n,true,Bt(t,r,1)):it(n,true);
|
||||
},Fn.deburr=Re,Fn.endsWith=function(n,t,r){n=u(n),t+="";var e=n.length;return r=r===m?e:Au(0>r?0:+r||0,e),r-=t.length,0<=r&&n.indexOf(t,r)==r},Fn.escape=function(n){return(n=u(n))&&pn.test(n)?n.replace(cn,a):n},Fn.escapeRegExp=Ie,Fn.every=Qr,Fn.find=oi,Fn.findIndex=Yu,Fn.findKey=Fi,Fn.findLast=fi,Fn.findLastIndex=Ju,Fn.findLastKey=Li,Fn.findWhere=function(n,t){return oi(n,bt(t))},Fn.first=qr,Fn.get=function(n,t,r){return n=null==n?m:yt(n,zr(t),t+""),n===m?r:n},Fn.gt=ce,Fn.gte=function(n,t){return n>=t;
|
||||
},Fn.has=function(n,t){if(null==n)return false;var r=tu.call(n,t);if(!r&&!Cr(t)){if(t=zr(t),n=1==t.length?n:yt(n,Et(t,0,-1)),null==n)return false;t=Kr(t),r=tu.call(n,t)}return r||Sr(n.length)&&Ir(t,n.length)&&(Ci(n)||se(n))},Fn.identity=$e,Fn.includes=te,Fn.indexOf=Dr,Fn.inRange=function(n,t,r){return t=+t||0,"undefined"===typeof r?(r=t,t=0):r=+r||0,n>=Au(t,r)&&n<ju(t,r)},Fn.isArguments=se,Fn.isArray=Ci,Fn.isBoolean=function(n){return true===n||false===n||p(n)&&eu.call(n)==M},Fn.isDate=function(n){return p(n)&&eu.call(n)==P;
|
||||
},Fn.isElement=pe,Fn.isEmpty=function(n){return null==n?true:Rr(n)&&(Ci(n)||me(n)||se(n)||p(n)&&Si(n.splice))?!n.length:!Pi(n).length},Fn.isEqual=he,Fn.isError=_e,Fn.isFinite=Wi,Fn.isFunction=Si,Fn.isMatch=function(n,t,r,e){return r=typeof r=="function"?Bt(r,e,3):m,mt(n,br(t),r)},Fn.isNaN=function(n){return ye(n)&&n!=+n},Fn.isNative=ge,Fn.isNull=function(n){return null===n},Fn.isNumber=ye,Fn.isObject=ve,Fn.isPlainObject=Ui,Fn.isRegExp=de,Fn.isString=me,Fn.isTypedArray=we,Fn.isUndefined=function(n){
|
||||
return n===m},Fn.kebabCase=Ji,Fn.last=Kr,Fn.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?ju(e+r,0):Au(r||0,e-1))+1;else if(r)return u=Nt(n,t,true)-1,n=n[u],(t===t?t===n:n!==n)?u:-1;if(t!==t)return s(n,u,true);for(;u--;)if(n[u]===t)return u;return-1},Fn.lt=be,Fn.lte=function(n,t){return n<=t},Fn.max=eo,Fn.min=uo,Fn.noConflict=function(){return h._=uu,this},Fn.noop=Ne,Fn.now=yi,Fn.pad=function(n,t,r){n=u(n),t=+t;var e=n.length;return e<t&&bu(t)?(e=(t-e)/2,
|
||||
t=cu(e),e=lu(e),r=sr("",e,r),r.slice(0,t)+n+r):n},Fn.padLeft=Xi,Fn.padRight=Gi,Fn.parseInt=Ee,Fn.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,r||n%1||t%1?(r=Iu(),Au(n+r*(t-n+parseFloat("1e-"+((r+"").length-1))),t)):Rt(n,t)},Fn.reduce=_i,Fn.reduceRight=vi,Fn.repeat=Ce,Fn.result=function(n,t,r){var e=null==n?m:n[t];return e===m&&(null==n||Cr(t,n)||(t=zr(t),
|
||||
n=1==t.length?n:yt(n,Et(t,0,-1)),e=null==n?m:n[Kr(t)]),e=e===m?r:e),Si(e)?e.call(n):e},Fn.runInContext=d,Fn.size=function(n){var t=n?Ku(n):0;return Sr(t)?t:Pi(n).length},Fn.snakeCase=Hi,Fn.some=ie,Fn.sortedIndex=Hu,Fn.sortedLastIndex=Qu,Fn.startCase=Qi,Fn.startsWith=function(n,t,r){return n=u(n),r=null==r?0:Au(0>r?0:+r||0,n.length),n.lastIndexOf(t,r)==r},Fn.sum=function(n,t,r){r&&Er(n,t,r)&&(t=null);var e=dr(),u=null==t;if(u&&e===ut||(u=false,t=e(t,r,3)),u){for(n=Ci(n)?n:Lr(n),t=n.length,r=0;t--;)r+=+n[t]||0;
|
||||
n=r}else n=Ut(n,t);return n},Fn.template=function(n,t,r){var e=Fn.templateSettings;r&&Er(n,t,r)&&(t=r=null),n=u(n),t=nt(tt({},r||t),e,Qn),r=nt(tt({},t.imports),e.imports,Qn);var i,o,f=Pi(r),l=$t(r,f),a=0;r=t.interpolate||In;var s="__p+='";r=Ve((t.escape||In).source+"|"+r.source+"|"+(r===vn?jn:In).source+"|"+(t.evaluate||In).source+"|$","g");var p="sourceURL"in t?"//# sourceURL="+t.sourceURL+"\n":"";if(n.replace(r,function(t,r,e,u,f,l){return e||(e=u),s+=n.slice(a,l).replace(En,c),r&&(i=true,s+="'+__e("+r+")+'"),
|
||||
f&&(o=true,s+="';"+f+";\n__p+='"),e&&(s+="'+((__t=("+e+"))==null?'':__t)+'"),a=l+t.length,t}),s+="';",(t=t.variable)||(s="with(obj){"+s+"}"),s=(o?s.replace(on,""):s).replace(fn,"$1").replace(ln,"$1;"),s="function("+(t||"obj")+"){"+(t?"":"obj||(obj={});")+"var __t,__p=''"+(i?",__e=_.escape":"")+(o?",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}":";")+s+"return __p}",t=no(function(){return qe(f,p+"return "+s).apply(m,l)}),t.source=s,_e(t))throw t;return t},Fn.trim=We,Fn.trimLeft=function(n,t,r){
|
||||
var e=n;return(n=u(n))?n.slice((r?Er(e,t,r):null==t)?v(n):i(n,t+"")):n},Fn.trimRight=function(n,t,r){var e=n;return(n=u(n))?(r?Er(e,t,r):null==t)?n.slice(0,g(n)+1):n.slice(0,o(n,t+"")+1):n},Fn.trunc=function(n,t,r){r&&Er(n,t,r)&&(t=null);var e=C;if(r=W,null!=t)if(ve(t)){var i="separator"in t?t.separator:i,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;if(t=n.slice(0,e),null==i)return t+r;if(de(i)){if(n.slice(e).search(i)){
|
||||
var o,f=n.slice(0,e);for(i.global||(i=Ve(i.source,(An.exec(i)||"")+"g")),i.lastIndex=0;n=i.exec(f);)o=n.index;t=t.slice(0,null==o?e:o)}}else n.indexOf(i,e)!=e&&(i=t.lastIndexOf(i),-1<i&&(t=t.slice(0,i)));return t+r},Fn.unescape=function(n){return(n=u(n))&&sn.test(n)?n.replace(an,y):n},Fn.uniqueId=function(n){var t=++ru;return u(n)+t},Fn.words=Se,Fn.all=Qr,Fn.any=ie,Fn.contains=te,Fn.eq=he,Fn.detect=oi,Fn.foldl=_i,Fn.foldr=vi,Fn.head=qr,Fn.include=te,Fn.inject=_i,Le(Fn,function(){var n={};return _t(Fn,function(t,r){
|
||||
Fn.prototype[r]||(n[r]=t)}),n}(),false),Fn.sample=ee,Fn.prototype.sample=function(n){return this.__chain__||null!=n?this.thru(function(t){return ee(t,n)}):ee(this.value())},Fn.VERSION=w,Dn("bind bindKey curry curryRight partial partialRight".split(" "),function(n){Fn[n].placeholder=Fn}),Dn(["dropWhile","filter","map","takeWhile"],function(n,t){var r=t!=F,e=t==T;zn.prototype[n]=function(n,u){var i=this.__filtered__,o=i&&e?new zn(this):this.clone();return(o.__iteratees__||(o.__iteratees__=[])).push({done:false,
|
||||
count:0,index:0,iteratee:dr(n,u,1),limit:-1,type:t}),o.__filtered__=i||r,o}}),Dn(["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:ju(cu(r)||0,0),e?t?u.__takeCount__=Au(u.__takeCount__,r):Kr(u.__iteratees__).limit=r:(u.__views__||(u.__views__=[])).push({size:r,type:n+(0>u.__dir__?"Right":"")}),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()}}),Dn(["first","last"],function(n,t){var r="take"+(t?"Right":"");zn.prototype[n]=function(){return this[r](1).value()[0]}}),Dn(["initial","rest"],function(n,t){var r="drop"+(t?"":"Right");zn.prototype[n]=function(){return this[r](1)}}),Dn(["pluck","where"],function(n,t){var r=t?"filter":"map",e=t?bt:ze;zn.prototype[n]=function(n){return this[r](e(n))}}),zn.prototype.compact=function(){return this.filter($e)},zn.prototype.reject=function(n,t){return n=dr(n,t,1),
|
||||
this.filter(function(t){return!n(t)})},zn.prototype.slice=function(n,t){n=null==n?0:+n||0;var r=this;return 0>n?r=this.takeRight(-n):n&&(r=this.drop(n)),t!==m&&(t=+t||0,r=0>t?r.dropRight(-t):r.take(t-n)),r},zn.prototype.toArray=function(){return this.drop(0)},_t(zn.prototype,function(n,t){var r=Fn[t];if(r){var e=/^(?:filter|map|reject)|While$/.test(t),u=/^(?:first|last)$/.test(t);Fn.prototype[t]=function(){function t(n){return n=[n],pu.apply(n,i),r.apply(Fn,n)}var i=arguments,o=this.__chain__,f=this.__wrapped__,l=!!this.__actions__.length,a=f instanceof zn,c=i[0],s=a||Ci(f);
|
||||
return s&&e&&typeof c=="function"&&1!=c.length&&(a=s=false),a=a&&!l,u&&!o?a?n.call(f):r.call(Fn,this.value()):s?(f=n.apply(a?f:new zn(this),i),u||!l&&!f.__actions__||(f.__actions__||(f.__actions__=[])).push({func:Hr,args:[t],thisArg:Fn}),new Nn(f,o)):this.thru(t)}}}),Dn("concat join pop push replace shift sort splice split unshift".split(" "),function(n){var t=(/^(?:replace|split)$/.test(n)?He:Xe)[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:join|pop|replace|shift)$/.test(n);Fn.prototype[n]=function(){
|
||||
var n=arguments;return e&&!this.__chain__?t.apply(this.value(),n):this[r](function(r){return t.apply(r,n)})}}),_t(zn.prototype,function(n,t){var r=Fn[t];if(r){var e=r.name;($u[e]||($u[e]=[])).push({name:t,func:r})}}),$u[cr(null,x).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?qn(n):null,e.__dir__=this.__dir__,e.__filtered__=this.__filtered__,e.__iteratees__=t?qn(t):null,
|
||||
e.__takeCount__=this.__takeCount__,e.__views__=r?qn(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;return n},zn.prototype.value=function(){var n=this.__wrapped__.value();if(!Ci(n))return Lt(n,this.__actions__);var t,r=this.__dir__,e=0>r;t=n.length;for(var u=this.__views__,i=0,o=-1,f=u?u.length:0;++o<f;){var l=u[o],a=l.size;switch(l.type){case"drop":i+=a;break;case"dropRight":t-=a;break;case"take":
|
||||
t=Au(t,i+a);break;case"takeRight":i=ju(i,t-a)}}t={start:i,end:t},u=t.start,i=t.end,t=i-u,u=e?i:u-1,i=Au(t,this.__takeCount__),f=(o=this.__iteratees__)?o.length:0,l=0,a=[];n:for(;t--&&l<i;){for(var u=u+r,c=-1,s=n[u];++c<f;){var p=o[c],h=p.iteratee,_=p.type;if(_==T){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),_==F)s=p;else if(!p){if(_==$)continue n;break n}}a[l++]=s}return a},Fn.prototype.chain=function(){
|
||||
return Gr(this)},Fn.prototype.commit=function(){return new Nn(this.value(),this.__chain__)},Fn.prototype.plant=function(n){for(var t,r=this;r instanceof Ln;){var e=Br(r);t?u.__wrapped__=e:t=e;var u=e,r=r.__wrapped__}return u.__wrapped__=n,t},Fn.prototype.reverse=function(){var n=this.__wrapped__;return n instanceof zn?(this.__actions__.length&&(n=new zn(this)),new Nn(n.reverse(),this.__chain__)):this.thru(function(n){return n.reverse()})},Fn.prototype.toString=function(){return this.value()+""},Fn.prototype.run=Fn.prototype.toJSON=Fn.prototype.valueOf=Fn.prototype.value=function(){
|
||||
return Lt(this.__wrapped__,this.__actions__)},Fn.prototype.collect=Fn.prototype.map,Fn.prototype.head=Fn.prototype.first,Fn.prototype.select=Fn.prototype.filter,Fn.prototype.tail=Fn.prototype.rest,Fn}var m,w="3.9.0",b=1,x=2,j=4,A=8,k=16,O=32,R=64,I=128,E=256,C=30,W="...",S=150,U=16,T=0,$=1,F=2,L="Expected a function",N="__lodash_placeholder__",z="[object Arguments]",B="[object Array]",M="[object Boolean]",P="[object Date]",q="[object Error]",D="[object Function]",K="[object Number]",Z="[object Object]",V="[object RegExp]",Y="[object String]",J="[object ArrayBuffer]",X="[object Float32Array]",G="[object Float64Array]",H="[object Int8Array]",Q="[object Int16Array]",nn="[object Int32Array]",tn="[object Uint8Array]",rn="[object Uint8ClampedArray]",en="[object Uint16Array]",un="[object Uint32Array]",on=/\b__p\+='';/g,fn=/\b(__p\+=)''\+/g,ln=/(__e\(.*?\)|\b__t\))\+'';/g,an=/&(?:amp|lt|gt|quot|#39|#96);/g,cn=/[&<>"'`]/g,sn=RegExp(an.source),pn=RegExp(cn.source),hn=/<%-([\s\S]+?)%>/g,_n=/<%([\s\S]+?)%>/g,vn=/<%=([\s\S]+?)%>/g,gn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\n\\]|\\.)*?\1)\]/,yn=/^\w*$/,dn=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g,mn=/[.*+?^${}()|[\]\/\\]/g,wn=RegExp(mn.source),bn=/[\u0300-\u036f\ufe20-\ufe23]/g,xn=/\\(\\)?/g,jn=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,An=/\w*$/,kn=/^0[xX]/,On=/^\[object .+?Constructor\]$/,Rn=/[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g,In=/($^)/,En=/['\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"),Wn=" \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",Sn="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(" "),Un={};
|
||||
Un[X]=Un[G]=Un[H]=Un[Q]=Un[nn]=Un[tn]=Un[rn]=Un[en]=Un[un]=true,Un[z]=Un[B]=Un[J]=Un[M]=Un[P]=Un[q]=Un[D]=Un["[object Map]"]=Un[K]=Un[Z]=Un[V]=Un["[object Set]"]=Un[Y]=Un["[object WeakMap]"]=false;var Tn={};Tn[z]=Tn[B]=Tn[J]=Tn[M]=Tn[P]=Tn[X]=Tn[G]=Tn[H]=Tn[Q]=Tn[nn]=Tn[K]=Tn[Z]=Tn[V]=Tn[Y]=Tn[tn]=Tn[rn]=Tn[en]=Tn[un]=true,Tn[q]=Tn[D]=Tn["[object Map]"]=Tn["[object Set]"]=Tn["[object WeakMap]"]=false;var $n={leading:false,maxWait:0,trailing:false},Fn={"\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"},Ln={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},Nn={"&":"&","<":"<",">":">",""":'"',"'":"'","`":"`"},zn={"function":true,object:true},Bn={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Mn=zn[typeof exports]&&exports&&!exports.nodeType&&exports,Pn=zn[typeof module]&&module&&!module.nodeType&&module,qn=zn[typeof self]&&self&&self.Object&&self,Dn=zn[typeof window]&&window&&window.Object&&window,Kn=Pn&&Pn.exports===Mn&&Mn,Zn=Mn&&Pn&&typeof global=="object"&&global&&global.Object&&global||Dn!==(this&&this.window)&&Dn||qn||this,Vn=d();
|
||||
typeof define=="function"&&typeof define.amd=="object"&&define.amd?(Zn._=Vn, define(function(){return Vn})):Mn&&Pn?Kn?(Pn.exports=Vn)._=Vn:Mn._=Vn:Zn._=Vn}).call(this);
|
||||
2283
lodash.src.js
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "lodash",
|
||||
"version": "3.6.0",
|
||||
"version": "3.9.0",
|
||||
"main": "lodash.src.js",
|
||||
"private": true,
|
||||
"devDependencies": {
|
||||
@@ -9,7 +9,7 @@
|
||||
"jquery": "~1.11.0",
|
||||
"platform": "~1.3.0",
|
||||
"qunit-extras": "~1.4.0",
|
||||
"qunitjs": "~1.17.0",
|
||||
"qunitjs": "~1.18.0",
|
||||
"requirejs": "~2.1.0"
|
||||
},
|
||||
"volo": {
|
||||
|
||||
80
perf/perf.js
@@ -18,7 +18,7 @@
|
||||
params = root.arguments,
|
||||
system = root.system;
|
||||
|
||||
/** Add `console.log()` support for Narwhal, Rhino, and RingoJS. */
|
||||
/** Add `console.log()` support for Rhino and RingoJS. */
|
||||
var console = root.console || (root.console = { 'log': root.print });
|
||||
|
||||
/** The file path of the lodash file to test. */
|
||||
@@ -306,6 +306,10 @@
|
||||
}\
|
||||
var strNumbers = numbers + "";\
|
||||
\
|
||||
if (typeof assign != "undefined") {\
|
||||
var _assign = _.assign || _.extend,\
|
||||
lodashAssign = lodash.assign;\
|
||||
}\
|
||||
if (typeof bind != "undefined") {\
|
||||
var thisArg = { "name": "fred" };\
|
||||
\
|
||||
@@ -458,10 +462,10 @@
|
||||
var source = { "num": 9 };\
|
||||
\
|
||||
var _findWhere = _.findWhere || _.find,\
|
||||
_match = (_.matches || _.createCallback || _.noop)(source);\
|
||||
_matcher = (_.matches || _.createCallback || _.noop)(source);\
|
||||
\
|
||||
var lodashFindWhere = lodash.findWhere || lodash.find,\
|
||||
lodashMatch = (lodash.matches || lodash.createCallback || lodash.noop)(source);\
|
||||
lodashMatcher = (lodash.matches || lodash.createCallback || lodash.noop)(source);\
|
||||
}\
|
||||
if (typeof multiArrays != "undefined") {\
|
||||
var twentyValues = belt.shuffle(belt.range(20)),\
|
||||
@@ -564,6 +568,32 @@
|
||||
|
||||
/*--------------------------------------------------------------------------*/
|
||||
|
||||
suites.push(
|
||||
Benchmark.Suite('`_.assign`')
|
||||
.add(buildName, {
|
||||
'fn': 'lodashAssign({}, object)',
|
||||
'teardown': 'function assign(){}'
|
||||
})
|
||||
.add(otherName, {
|
||||
'fn': '_assign({}, object)',
|
||||
'teardown': 'function assign(){}'
|
||||
})
|
||||
);
|
||||
|
||||
suites.push(
|
||||
Benchmark.Suite('`_.assign` with multiple sources')
|
||||
.add(buildName, {
|
||||
'fn': 'lodashAssign({}, object, object)',
|
||||
'teardown': 'function assign(){}'
|
||||
})
|
||||
.add(otherName, {
|
||||
'fn': '_assign({}, object, object)',
|
||||
'teardown': 'function assign(){}'
|
||||
})
|
||||
);
|
||||
|
||||
/*--------------------------------------------------------------------------*/
|
||||
|
||||
suites.push(
|
||||
Benchmark.Suite('`_.bind` (slow path)')
|
||||
.add(buildName, {
|
||||
@@ -866,18 +896,6 @@
|
||||
|
||||
/*--------------------------------------------------------------------------*/
|
||||
|
||||
suites.push(
|
||||
Benchmark.Suite('`_.extend`')
|
||||
.add(buildName, '\
|
||||
lodash.extend({}, object)'
|
||||
)
|
||||
.add(otherName, '\
|
||||
_.extend({}, object)'
|
||||
)
|
||||
);
|
||||
|
||||
/*--------------------------------------------------------------------------*/
|
||||
|
||||
suites.push(
|
||||
Benchmark.Suite('`_.filter` iterating an array')
|
||||
.add(buildName, '\
|
||||
@@ -920,6 +938,18 @@
|
||||
)
|
||||
);
|
||||
|
||||
suites.push(
|
||||
Benchmark.Suite('`_.filter` with `_.matches` predicate')
|
||||
.add(buildName, {
|
||||
'fn': 'lodash.filter(objects, lodashMatcher)',
|
||||
'teardown': 'function matches(){}'
|
||||
})
|
||||
.add(otherName, {
|
||||
'fn': '_.filter(objects, _matcher)',
|
||||
'teardown': 'function matches(){}'
|
||||
})
|
||||
);
|
||||
|
||||
/*--------------------------------------------------------------------------*/
|
||||
|
||||
suites.push(
|
||||
@@ -950,10 +980,10 @@
|
||||
)
|
||||
);
|
||||
|
||||
// Avoid Underscore induced `OutOfMemoryError` in Rhino, Narwhal, and Ringo.
|
||||
// Avoid Underscore induced `OutOfMemoryError` in Rhino and Ringo.
|
||||
if (!isJava) {
|
||||
suites.push(
|
||||
Benchmark.Suite('`_.find` with `properties`')
|
||||
Benchmark.Suite('`_.find` with `_.matches` shorthand')
|
||||
.add(buildName, {
|
||||
'fn': 'lodashFindWhere(objects, source)',
|
||||
'teardown': 'function matches(){}'
|
||||
@@ -1206,7 +1236,7 @@
|
||||
);
|
||||
|
||||
suites.push(
|
||||
Benchmark.Suite('`_.invoke` with a function for `methodName` iterating an array')
|
||||
Benchmark.Suite('`_.invoke` with a function for `path` iterating an array')
|
||||
.add(buildName, '\
|
||||
lodash.invoke(numbers, Number.prototype.toFixed, 1)'
|
||||
)
|
||||
@@ -1441,20 +1471,6 @@
|
||||
|
||||
/*--------------------------------------------------------------------------*/
|
||||
|
||||
suites.push(
|
||||
Benchmark.Suite('`_.matches` predicate')
|
||||
.add(buildName, {
|
||||
'fn': 'lodash.filter(objects, lodashMatch)',
|
||||
'teardown': 'function matches(){}'
|
||||
})
|
||||
.add(otherName, {
|
||||
'fn': '_.filter(objects, _match)',
|
||||
'teardown': 'function matches(){}'
|
||||
})
|
||||
);
|
||||
|
||||
/*--------------------------------------------------------------------------*/
|
||||
|
||||
suites.push(
|
||||
Benchmark.Suite('`_.max`')
|
||||
.add(buildName, '\
|
||||
|
||||
@@ -6,14 +6,8 @@
|
||||
<link rel="stylesheet" href="../node_modules/qunitjs/qunit/qunit.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="qunit"></div>
|
||||
<div id="qunit-fixture">
|
||||
<div id='testElement'>
|
||||
<h1>Test</h1>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
// avoid reporting tests to Sauce Labs when script errors occur
|
||||
// Avoid reporting tests to Sauce Labs when script errors occur.
|
||||
if (location.port == '9001') {
|
||||
window.onerror = function(message) {
|
||||
if (window.QUnit) {
|
||||
@@ -44,18 +38,15 @@
|
||||
QUnit.config.asyncRetries = 10;
|
||||
QUnit.config.hidepassed = true;
|
||||
|
||||
// load lodash
|
||||
if (!ui.isModularize) {
|
||||
document.write('<script src="' + ui.buildPath + '"><\/script>');
|
||||
}
|
||||
// load test scripts
|
||||
// Load test scripts.
|
||||
document.write(ui.urlParams.loader != 'none'
|
||||
? '<script data-dojo-config="async:1" src="' + ui.loaderPath + '"><\/script>'
|
||||
: ([
|
||||
'<script src="' + ui.buildPath + '"><\/script>',
|
||||
'<script src="../node_modules/jquery/dist/jquery.js"><\/script>',
|
||||
'<script src="../vendor/backbone/backbone.js"><\/script>',
|
||||
'<script src="../vendor/backbone/test/environment.js"><\/script>',
|
||||
'<script src="../vendor/backbone/test/setup/dom-setup.js"><\/script>',
|
||||
'<script src="../vendor/backbone/test/setup/environment.js"><\/script>',
|
||||
'<script src="../vendor/backbone/test/noconflict.js"><\/script>',
|
||||
'<script src="../vendor/backbone/test/events.js"><\/script>',
|
||||
'<script src="../vendor/backbone/test/model.js"><\/script>',
|
||||
@@ -95,7 +86,7 @@
|
||||
'name': 'test',
|
||||
'location': '../vendor/backbone/test',
|
||||
'config': {
|
||||
// work around no global being exported
|
||||
// Work around no global being exported.
|
||||
'exports': 'QUnit',
|
||||
'loader': 'curl/loader/legacy'
|
||||
}
|
||||
@@ -123,7 +114,8 @@
|
||||
window._ = lodash;
|
||||
}
|
||||
require(getConfig(), [
|
||||
'test/environment',
|
||||
'test/setup/dom-setup',
|
||||
'test/setup/environment',
|
||||
'test/noconflict',
|
||||
'test/events',
|
||||
'test/model',
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
// avoid reporting tests to Sauce Labs when script errors occur
|
||||
// Avoid reporting tests to Sauce Labs when script errors occur.
|
||||
if (location.port == '9001') {
|
||||
window.onerror = function(message) {
|
||||
if (window.QUnit) {
|
||||
@@ -56,6 +56,7 @@
|
||||
fnToString = funcProto.toString,
|
||||
nativeString = fnToString.call(objectProto.toString),
|
||||
noop = function() {},
|
||||
parseInt = window.parseInt,
|
||||
propertyIsEnumerable = objectProto.propertyIsEnumerable,
|
||||
reToString = /toString/g,
|
||||
whitespace = ' \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';
|
||||
@@ -68,7 +69,7 @@
|
||||
function createToString(funcName) {
|
||||
return constant(nativeString.replace(reToString, funcName));
|
||||
}
|
||||
// allow bypassing native checks
|
||||
// Allow bypassing native checks.
|
||||
setProperty(funcProto, 'toString', (function() {
|
||||
function wrapper() {
|
||||
setProperty(funcProto, 'toString', fnToString);
|
||||
@@ -79,10 +80,10 @@
|
||||
return wrapper;
|
||||
}()));
|
||||
|
||||
// add extensions
|
||||
// Add prototype extensions.
|
||||
funcProto._method = noop;
|
||||
|
||||
// set bad shims
|
||||
// Set bad shims.
|
||||
setProperty(Array, '_isArray', Array.isArray);
|
||||
setProperty(Array, 'isArray', noop);
|
||||
|
||||
@@ -97,10 +98,10 @@
|
||||
|
||||
setProperty(objectProto, '_propertyIsEnumerable', propertyIsEnumerable);
|
||||
setProperty(objectProto, 'propertyIsEnumerable', function(key) {
|
||||
if (key == '1' && this && typeof this == 'object' && this.length === 2 &&
|
||||
if (key == '1' && this && typeof this == 'object' &&
|
||||
hasOwnProperty.call(this, 'callee') &&
|
||||
!propertyIsEnumerable.call(this, 'callee') &&
|
||||
this[0] === 0 && this[1] === 0) {
|
||||
this.length === 2 && this[0] === 1 && this[1] === 0) {
|
||||
throw new Error;
|
||||
}
|
||||
return propertyIsEnumerable.call(this, key);
|
||||
@@ -150,9 +151,9 @@
|
||||
setProperty(window, 'WeakMap', noop);
|
||||
|
||||
setProperty(window, '_parseInt', parseInt);
|
||||
setProperty(window, 'parseInt', (function(_parseInt) {
|
||||
setProperty(window, 'parseInt', (function() {
|
||||
var checkStr = whitespace + '08',
|
||||
isFaked = _parseInt(checkStr) != 8,
|
||||
isFaked = parseInt(checkStr) != 8,
|
||||
reHexPrefix = /^0[xX]/,
|
||||
reTrim = RegExp('^[' + whitespace + ']+|[' + whitespace + ']+$');
|
||||
|
||||
@@ -162,18 +163,18 @@
|
||||
return 0;
|
||||
}
|
||||
value = String(value == null ? '' : value).replace(reTrim, '');
|
||||
return _parseInt(value, +radix || (reHexPrefix.test(value) ? 16 : 10));
|
||||
return parseInt(value, +radix || (reHexPrefix.test(value) ? 16 : 10));
|
||||
};
|
||||
}(_parseInt)));
|
||||
}()));
|
||||
|
||||
// fake lack of DOM support
|
||||
// Fake lack of DOM support.
|
||||
setProperty(document, '_createDocumentFragment', document.createDocumentFragment);
|
||||
document.createDocumentFragment = noop;
|
||||
|
||||
// fake `WinRTError`
|
||||
// Fake `WinRTError`.
|
||||
setProperty(window, 'WinRTError', Error);
|
||||
|
||||
// fake free variable `global`
|
||||
// Fake free variable `global`.
|
||||
setProperty(window, 'exports', window);
|
||||
setProperty(window, 'global', window);
|
||||
setProperty(window, 'module', {});
|
||||
@@ -240,27 +241,26 @@
|
||||
|
||||
delete Array._isArray;
|
||||
delete Date._now;
|
||||
delete funcProto._method;
|
||||
delete Object._create;
|
||||
delete Object._getPrototypeOf;
|
||||
delete Object._keys;
|
||||
delete funcProto._method;
|
||||
delete objectProto._propertyIsEnumerable;
|
||||
}
|
||||
|
||||
// load lodash and expose it to the bad extensions/shims
|
||||
// Load lodash to expose it to the bad extensions/shims.
|
||||
if (!ui.isModularize) {
|
||||
addBizarroMethods();
|
||||
document.write('<script src="' + ui.buildPath + '"><\/script>');
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
// store lodash to test for bad extensions/shims
|
||||
// Store lodash to test for bad extensions/shims.
|
||||
if (!ui.isModularize) {
|
||||
var lodashBizarro = window._;
|
||||
window._ = undefined;
|
||||
removeBizarroMethods();
|
||||
}
|
||||
// load test scripts
|
||||
// Load test scripts.
|
||||
document.write((ui.isForeign || ui.urlParams.loader == 'none')
|
||||
? '<script src="' + ui.buildPath + '"><\/script><script src="test.js"><\/script>'
|
||||
: '<script data-dojo-config="async:1" src="' + ui.loaderPath + '"><\/script>'
|
||||
@@ -298,7 +298,7 @@
|
||||
'location': basePath + 'test',
|
||||
'main': 'test',
|
||||
'config': {
|
||||
// work around no global being exported
|
||||
// Work around no global being exported.
|
||||
'exports': 'QUnit',
|
||||
'loader': 'curl/loader/legacy'
|
||||
}
|
||||
@@ -389,7 +389,7 @@
|
||||
}
|
||||
}());
|
||||
|
||||
// set a more readable browser name
|
||||
// Set a more readable browser name.
|
||||
window.onload = function() {
|
||||
var timeoutId = setInterval(function() {
|
||||
var ua = document.getElementById('qunit-userAgent');
|
||||
|
||||
@@ -105,19 +105,17 @@ var platforms = [
|
||||
['Linux', 'android', '5.0'],
|
||||
['Linux', 'android', '4.4'],
|
||||
['Linux', 'android', '4.0'],
|
||||
['Windows 8.1', 'firefox', '37'],
|
||||
['Windows 8.1', 'firefox', '36'],
|
||||
['Windows 8.1', 'firefox', '35'],
|
||||
['Windows 8.1', 'firefox', '20'],
|
||||
['Windows 8.1', 'chrome', '42'],
|
||||
['Windows 8.1', 'chrome', '41'],
|
||||
['Windows 8.1', 'chrome', '40'],
|
||||
['Windows 8.1', 'internet explorer', '11'],
|
||||
['Windows 8', 'internet explorer', '10'],
|
||||
['Windows 7', 'internet explorer', '9'],
|
||||
['Windows 7', 'internet explorer', '8'],
|
||||
['Windows XP', 'internet explorer', '7'],
|
||||
['Windows XP', 'internet explorer', '6'],
|
||||
['Windows 7', 'opera', '12'],
|
||||
['Windows 7', 'opera', '11'],
|
||||
['OS X 10.9', 'ipad', '8.1'],
|
||||
['OS X 10.6', 'ipad', '4'],
|
||||
['OS X 10.10', 'safari', '8'],
|
||||
@@ -161,6 +159,7 @@ if (isBackbone) {
|
||||
|
||||
switch (browser) {
|
||||
case 'Firefox': return version >= 4;
|
||||
case 'Internet Explorer': return version >= 7;
|
||||
case 'iPad': return version >= 5;
|
||||
case 'Opera': return version >= 12;
|
||||
}
|
||||
|
||||
2870
test/test.js
@@ -4,23 +4,11 @@
|
||||
<meta charset="utf-8">
|
||||
<title>Underscore Test Suite</title>
|
||||
<link rel="stylesheet" href="../node_modules/qunitjs/qunit/qunit.css">
|
||||
<style>
|
||||
iframe {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="qunit"></div>
|
||||
<div id="qunit-fixture">
|
||||
<div id="map-test">
|
||||
<div id="id1"></div>
|
||||
<div id="id2"></div>
|
||||
</div>
|
||||
<img id="chart_image" src="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==">
|
||||
</div>
|
||||
<script>
|
||||
// avoid reporting tests to Sauce Labs when script errors occur
|
||||
// Avoid reporting tests to Sauce Labs when script errors occur.
|
||||
if (location.port == '9001') {
|
||||
window.onerror = function(message) {
|
||||
if (window.QUnit) {
|
||||
@@ -39,7 +27,7 @@
|
||||
QUnit.config.asyncRetries = 10;
|
||||
QUnit.config.hidepassed = true;
|
||||
|
||||
// excuse tests we intentionally fail or those with problems
|
||||
// Excuse tests we intentionally fail or those with problems.
|
||||
QUnit.config.excused = {
|
||||
'Arrays': {
|
||||
'drop': [
|
||||
@@ -63,9 +51,7 @@
|
||||
'initial works on arguments object'
|
||||
],
|
||||
'intersection': [
|
||||
'can perform an OO-style intersection',
|
||||
'returns an empty array when passed null as first argument',
|
||||
'returns an empty array when passed null as argument beyond the first'
|
||||
'can perform an OO-style intersection'
|
||||
],
|
||||
'last': [
|
||||
'can pass an index to last',
|
||||
@@ -131,6 +117,12 @@
|
||||
'extend': [
|
||||
'extend copies all properties from source'
|
||||
],
|
||||
'isEqual': [
|
||||
'`0` is not equal to `-0`',
|
||||
'Commutative equality is implemented for `0` and `-0`',
|
||||
'`new Number(0)` and `-0` are not equal',
|
||||
'Commutative equality is implemented for `new Number(0)` and `-0`'
|
||||
],
|
||||
'isFinite': [
|
||||
'Numeric strings are numbers',
|
||||
'Number instances can be finite'
|
||||
@@ -149,8 +141,8 @@
|
||||
]
|
||||
},
|
||||
'Utility': {
|
||||
'_.templateSettings.variable': [
|
||||
'"x"'
|
||||
'now': [
|
||||
'Produces the correct time in milliseconds'
|
||||
],
|
||||
'times': [
|
||||
'works as a wrapper'
|
||||
@@ -158,14 +150,15 @@
|
||||
}
|
||||
};
|
||||
|
||||
// only excuse in Sauce Labs (buggy Safari and timers)
|
||||
// Only excuse in Sauce Labs (buggy Safari and timers).
|
||||
if (!ui.isSauceLabs) {
|
||||
delete QUnit.config.excused.Functions['throttle repeatedly with results'];
|
||||
delete QUnit.config.excused.Functions['more throttle does not trigger leading call when leading is set to false'];
|
||||
delete QUnit.config.excused.Functions['throttle does not trigger trailing call when trailing is set to false'];
|
||||
delete QUnit.config.excused.Functions['debounce asap'];
|
||||
delete QUnit.config.excused.Utility.now;
|
||||
}
|
||||
// load test scripts
|
||||
// Load test scripts.
|
||||
document.write(ui.urlParams.loader != 'none'
|
||||
? '<script data-dojo-config="async:1" src="' + ui.loaderPath + '"><\/script>'
|
||||
: ([
|
||||
@@ -174,6 +167,7 @@
|
||||
'<script src="../vendor/underscore/test/arrays.js"><\/script>',
|
||||
'<script src="../vendor/underscore/test/functions.js"><\/script>',
|
||||
'<script src="../vendor/underscore/test/objects.js"><\/script>',
|
||||
'<script src="../vendor/underscore/test/cross-document.js"><\/script>',
|
||||
'<script src="../vendor/underscore/test/utility.js"><\/script>',
|
||||
'<script src="../vendor/underscore/test/chaining.js"><\/script>'
|
||||
].join('\n'))
|
||||
@@ -205,7 +199,7 @@
|
||||
'name': 'test',
|
||||
'location': '../vendor/underscore/test',
|
||||
'config': {
|
||||
// work around no global being exported
|
||||
// Work around no global being exported.
|
||||
'exports': 'QUnit',
|
||||
'loader': 'curl/loader/legacy'
|
||||
}
|
||||
@@ -235,6 +229,7 @@
|
||||
'test/arrays',
|
||||
'test/functions',
|
||||
'test/objects',
|
||||
'test/cross-document',
|
||||
'test/utility',
|
||||
'test/chaining'
|
||||
], function() {
|
||||
@@ -243,11 +238,5 @@
|
||||
});
|
||||
}());
|
||||
</script>
|
||||
<script type="text/html" id="template">
|
||||
<%
|
||||
// a comment
|
||||
if (data) { data += 12345; }; %>
|
||||
<li><%= data %></li>
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
2
vendor/backbone/LICENSE
vendored
@@ -1,4 +1,4 @@
|
||||
Copyright (c) 2010-2014 Jeremy Ashkenas, DocumentCloud
|
||||
Copyright (c) 2010-2015 Jeremy Ashkenas, DocumentCloud
|
||||
|
||||
Permission is hereby granted, free of charge, to any person
|
||||
obtaining a copy of this software and associated documentation
|
||||
|
||||
938
vendor/backbone/backbone.js
vendored
344
vendor/backbone/test/collection.js
vendored
@@ -16,23 +16,20 @@
|
||||
|
||||
});
|
||||
|
||||
test("new and sort", 9, function() {
|
||||
test("new and sort", 6, function() {
|
||||
var counter = 0;
|
||||
col.on('sort', function(){ counter++; });
|
||||
equal(col.first(), a, "a should be first");
|
||||
equal(col.last(), d, "d should be last");
|
||||
deepEqual(col.pluck('label'), ['a', 'b', 'c', 'd']);
|
||||
col.comparator = function(a, b) {
|
||||
return a.id > b.id ? -1 : 1;
|
||||
};
|
||||
col.sort();
|
||||
equal(counter, 1);
|
||||
equal(col.first(), a, "a should be first");
|
||||
equal(col.last(), d, "d should be last");
|
||||
deepEqual(col.pluck('label'), ['a', 'b', 'c', 'd']);
|
||||
col.comparator = function(model) { return model.id; };
|
||||
col.sort();
|
||||
equal(counter, 2);
|
||||
equal(col.first(), d, "d should be first");
|
||||
equal(col.last(), a, "a should be last");
|
||||
deepEqual(col.pluck('label'), ['d', 'c', 'b', 'a']);
|
||||
equal(col.length, 4);
|
||||
});
|
||||
|
||||
@@ -60,6 +57,20 @@
|
||||
strictEqual(collection.last().get('a'), 4);
|
||||
});
|
||||
|
||||
test("clone preserves model and comparator", 3, function() {
|
||||
var Model = Backbone.Model.extend();
|
||||
var comparator = function(model){ return model.id; };
|
||||
|
||||
var collection = new Backbone.Collection([{id: 1}], {
|
||||
model: Model,
|
||||
comparator: comparator
|
||||
}).clone();
|
||||
collection.add({id: 2});
|
||||
ok(collection.at(0) instanceof Model);
|
||||
ok(collection.at(1) instanceof Model);
|
||||
strictEqual(collection.comparator, comparator);
|
||||
});
|
||||
|
||||
test("get", 6, function() {
|
||||
equal(col.get(0), d);
|
||||
equal(col.get(d.clone()), d);
|
||||
@@ -70,10 +81,9 @@
|
||||
});
|
||||
|
||||
test("get with non-default ids", 5, function() {
|
||||
var col = new Backbone.Collection();
|
||||
var MongoModel = Backbone.Model.extend({idAttribute: '_id'});
|
||||
var model = new MongoModel({_id: 100});
|
||||
col.add(model);
|
||||
var col = new Backbone.Collection([model], {model: MongoModel});
|
||||
equal(col.get(100), model);
|
||||
equal(col.get(model.cid), model);
|
||||
equal(col.get(model), model);
|
||||
@@ -88,7 +98,7 @@
|
||||
test('get with "undefined" id', function() {
|
||||
var collection = new Backbone.Collection([{id: 1}, {id: 'undefined'}]);
|
||||
equal(collection.get(1).id, 1);
|
||||
}),
|
||||
});
|
||||
|
||||
test("update index when id changes", 4, function() {
|
||||
var col = new Backbone.Collection();
|
||||
@@ -104,8 +114,9 @@
|
||||
equal(col.get(101).get('name'), 'dalmatians');
|
||||
});
|
||||
|
||||
test("at", 1, function() {
|
||||
test("at", 2, function() {
|
||||
equal(col.at(2), c);
|
||||
equal(col.at(-2), c);
|
||||
});
|
||||
|
||||
test("pluck", 1, function() {
|
||||
@@ -287,9 +298,10 @@
|
||||
deepEqual(col.pluck('id'), [1, 2, 3]);
|
||||
});
|
||||
|
||||
test("remove", 5, function() {
|
||||
test("remove", 7, function() {
|
||||
var removed = null;
|
||||
var otherRemoved = null;
|
||||
var result = null;
|
||||
col.on('remove', function(model, col, options) {
|
||||
removed = model.get('label');
|
||||
equal(options.index, 3);
|
||||
@@ -297,8 +309,12 @@
|
||||
otherCol.on('remove', function(model, col, options) {
|
||||
otherRemoved = true;
|
||||
});
|
||||
col.remove(d);
|
||||
result = col.remove(d);
|
||||
equal(removed, 'd');
|
||||
strictEqual(result, d);
|
||||
//if we try to remove d again, it's not going to actually get removed
|
||||
result = col.remove(d);
|
||||
strictEqual(result, undefined);
|
||||
equal(col.length, 3);
|
||||
equal(col.first(), a);
|
||||
equal(otherRemoved, null);
|
||||
@@ -464,6 +480,21 @@
|
||||
collection.fetch();
|
||||
});
|
||||
|
||||
test("#3283 - fetch with an error response calls error with context", 1, function () {
|
||||
var collection = new Backbone.Collection();
|
||||
var obj = {};
|
||||
var options = {
|
||||
context: obj,
|
||||
error: function() {
|
||||
equal(this, obj);
|
||||
}
|
||||
};
|
||||
collection.sync = function (method, model, options) {
|
||||
options.error.call(options.context);
|
||||
};
|
||||
collection.fetch(options);
|
||||
});
|
||||
|
||||
test("ensure fetch only parses once", 1, function() {
|
||||
var collection = new Backbone.Collection;
|
||||
var counter = 0;
|
||||
@@ -504,6 +535,30 @@
|
||||
equal(col.create({"foo":"bar"}, {validate:true}), false);
|
||||
});
|
||||
|
||||
test("create will pass extra options to success callback", 1, function () {
|
||||
var Model = Backbone.Model.extend({
|
||||
sync: function (method, model, options) {
|
||||
_.extend(options, {specialSync: true});
|
||||
return Backbone.Model.prototype.sync.call(this, method, model, options);
|
||||
}
|
||||
});
|
||||
|
||||
var Collection = Backbone.Collection.extend({
|
||||
model: Model,
|
||||
url: '/test'
|
||||
});
|
||||
|
||||
var collection = new Collection;
|
||||
|
||||
var success = function (model, response, options) {
|
||||
ok(options.specialSync, "Options were passed correctly to callback");
|
||||
};
|
||||
|
||||
collection.create({}, {success: success});
|
||||
this.ajaxSettings.success();
|
||||
|
||||
});
|
||||
|
||||
test("a failing create returns model with errors", function() {
|
||||
var ValidatingModel = Backbone.Model.extend({
|
||||
validate: function(attrs) {
|
||||
@@ -634,6 +689,16 @@
|
||||
});
|
||||
});
|
||||
|
||||
test("reset does not alter options by reference", 2, function() {
|
||||
var col = new Backbone.Collection([{id:1}]);
|
||||
var origOpts = {};
|
||||
col.on("reset", function(col, opts){
|
||||
equal(origOpts.previousModels, undefined);
|
||||
equal(opts.previousModels[0].id, 1);
|
||||
});
|
||||
col.reset([], origOpts);
|
||||
});
|
||||
|
||||
test("trigger custom events on models", 1, function() {
|
||||
var fired = null;
|
||||
a.on("custom", function() { fired = true; });
|
||||
@@ -672,22 +737,22 @@
|
||||
equal(col.length, 0);
|
||||
});
|
||||
|
||||
test("#861, adding models to a collection which do not pass validation, with validate:true", function() {
|
||||
var Model = Backbone.Model.extend({
|
||||
validate: function(attrs) {
|
||||
if (attrs.id == 3) return "id can't be 3";
|
||||
}
|
||||
});
|
||||
test("#861, adding models to a collection which do not pass validation, with validate:true", 2, function() {
|
||||
var Model = Backbone.Model.extend({
|
||||
validate: function(attrs) {
|
||||
if (attrs.id == 3) return "id can't be 3";
|
||||
}
|
||||
});
|
||||
|
||||
var Collection = Backbone.Collection.extend({
|
||||
model: Model
|
||||
});
|
||||
var Collection = Backbone.Collection.extend({
|
||||
model: Model
|
||||
});
|
||||
|
||||
var collection = new Collection;
|
||||
collection.on("error", function() { ok(true); });
|
||||
var collection = new Collection;
|
||||
collection.on("invalid", function() { ok(true); });
|
||||
|
||||
collection.add([{id: 1}, {id: 2}, {id: 3}, {id: 4}, {id: 5}, {id: 6}], {validate:true});
|
||||
deepEqual(collection.pluck('id'), [1, 2, 4, 5, 6]);
|
||||
collection.add([{id: 1}, {id: 2}, {id: 3}, {id: 4}, {id: 5}, {id: 6}], {validate:true});
|
||||
deepEqual(collection.pluck("id"), [1, 2, 4, 5, 6]);
|
||||
});
|
||||
|
||||
test("Invalid models are discarded with validate:true.", 5, function() {
|
||||
@@ -756,12 +821,13 @@
|
||||
var m = new Backbone.Model({x:1});
|
||||
var col = new Backbone.Collection();
|
||||
var opts = {
|
||||
success: function(collection, resp, options){
|
||||
ok(options);
|
||||
opts: true,
|
||||
success: function(collection, resp, options) {
|
||||
ok(options.opts);
|
||||
}
|
||||
};
|
||||
col.sync = m.sync = function( method, collection, options ){
|
||||
options.success(collection, [], options);
|
||||
options.success({});
|
||||
};
|
||||
col.fetch(opts);
|
||||
col.create(m, opts);
|
||||
@@ -791,6 +857,24 @@
|
||||
collection.off();
|
||||
});
|
||||
|
||||
test("#3283 - fetch, create calls success with context", 2, function() {
|
||||
var collection = new Backbone.Collection;
|
||||
collection.url = '/test';
|
||||
Backbone.ajax = function(settings) {
|
||||
settings.success.call(settings.context);
|
||||
};
|
||||
var obj = {};
|
||||
var options = {
|
||||
context: obj,
|
||||
success: function() {
|
||||
equal(this, obj);
|
||||
}
|
||||
};
|
||||
|
||||
collection.fetch(options);
|
||||
collection.create({id: 1}, options);
|
||||
});
|
||||
|
||||
test("#1447 - create with wait adds model.", 1, function() {
|
||||
var collection = new Backbone.Collection;
|
||||
var model = new Backbone.Model;
|
||||
@@ -1085,9 +1169,7 @@
|
||||
test("#1894 - Push should not trigger a sort", 0, function() {
|
||||
var Collection = Backbone.Collection.extend({
|
||||
comparator: 'id',
|
||||
sort: function() {
|
||||
ok(false);
|
||||
}
|
||||
sort: function() { ok(false); }
|
||||
});
|
||||
new Collection().push({id: 1});
|
||||
});
|
||||
@@ -1111,7 +1193,7 @@
|
||||
test("#1894 - `sort` can optionally be turned off", 0, function() {
|
||||
var Collection = Backbone.Collection.extend({
|
||||
comparator: 'id',
|
||||
sort: function() { ok(true); }
|
||||
sort: function() { ok(false); }
|
||||
});
|
||||
new Collection().add({id: 1}, {sort: false});
|
||||
});
|
||||
@@ -1146,6 +1228,25 @@
|
||||
Backbone.ajax = ajax;
|
||||
});
|
||||
|
||||
test("fetch will pass extra options to success callback", 1, function () {
|
||||
var SpecialSyncCollection = Backbone.Collection.extend({
|
||||
url: '/test',
|
||||
sync: function (method, collection, options) {
|
||||
_.extend(options, { specialSync: true });
|
||||
return Backbone.Collection.prototype.sync.call(this, method, collection, options);
|
||||
}
|
||||
});
|
||||
|
||||
var collection = new SpecialSyncCollection();
|
||||
|
||||
var onSuccess = function (collection, resp, options) {
|
||||
ok(options.specialSync, "Options were passed correctly to callback");
|
||||
};
|
||||
|
||||
collection.fetch({ success: onSuccess });
|
||||
this.ajaxSettings.success();
|
||||
});
|
||||
|
||||
test("`add` only `sort`s when necessary", 2, function () {
|
||||
var collection = new (Backbone.Collection.extend({
|
||||
comparator: 'a'
|
||||
@@ -1175,15 +1276,15 @@
|
||||
});
|
||||
|
||||
test("Attach options to collection.", 2, function() {
|
||||
var model = new Backbone.Model;
|
||||
var Model = Backbone.Model;
|
||||
var comparator = function(){};
|
||||
|
||||
var collection = new Backbone.Collection([], {
|
||||
model: model,
|
||||
model: Model,
|
||||
comparator: comparator
|
||||
});
|
||||
|
||||
ok(collection.model === model);
|
||||
ok(collection.model === Model);
|
||||
ok(collection.comparator === comparator);
|
||||
});
|
||||
|
||||
@@ -1309,7 +1410,7 @@
|
||||
equal(this._byId[model.id], void 0);
|
||||
equal(this._byId[model.cid], void 0);
|
||||
equal(model.collection, void 0);
|
||||
equal(model._events.all, void 0);
|
||||
equal(model._events, void 0);
|
||||
}
|
||||
|
||||
});
|
||||
@@ -1335,4 +1436,173 @@
|
||||
equal(c.models.length, 1);
|
||||
});
|
||||
|
||||
test('#3020: #set with {add: false} should not throw.', 2, function() {
|
||||
var collection = new Backbone.Collection;
|
||||
collection.set([{id: 1}], {add: false});
|
||||
strictEqual(collection.length, 0);
|
||||
strictEqual(collection.models.length, 0);
|
||||
});
|
||||
|
||||
test("create with wait, model instance, #3028", 1, function() {
|
||||
var collection = new Backbone.Collection();
|
||||
var model = new Backbone.Model({id: 1});
|
||||
model.sync = function(){
|
||||
equal(this.collection, collection);
|
||||
};
|
||||
collection.create(model, {wait: true});
|
||||
});
|
||||
|
||||
test("modelId", function() {
|
||||
var Stooge = Backbone.Model.extend();
|
||||
var StoogeCollection = Backbone.Collection.extend({model: Stooge});
|
||||
|
||||
// Default to using `Collection::model::idAttribute`.
|
||||
equal(StoogeCollection.prototype.modelId({id: 1}), 1);
|
||||
Stooge.prototype.idAttribute = '_id';
|
||||
equal(StoogeCollection.prototype.modelId({_id: 1}), 1);
|
||||
});
|
||||
|
||||
test('Polymorphic models work with "simple" constructors', function () {
|
||||
var A = Backbone.Model.extend();
|
||||
var B = Backbone.Model.extend();
|
||||
var C = Backbone.Collection.extend({
|
||||
model: function (attrs) {
|
||||
return attrs.type === 'a' ? new A(attrs) : new B(attrs);
|
||||
}
|
||||
});
|
||||
var collection = new C([{id: 1, type: 'a'}, {id: 2, type: 'b'}]);
|
||||
equal(collection.length, 2);
|
||||
ok(collection.at(0) instanceof A);
|
||||
equal(collection.at(0).id, 1);
|
||||
ok(collection.at(1) instanceof B);
|
||||
equal(collection.at(1).id, 2);
|
||||
});
|
||||
|
||||
test('Polymorphic models work with "advanced" constructors', function () {
|
||||
var A = Backbone.Model.extend({idAttribute: '_id'});
|
||||
var B = Backbone.Model.extend({idAttribute: '_id'});
|
||||
var C = Backbone.Collection.extend({
|
||||
model: Backbone.Model.extend({
|
||||
constructor: function (attrs) {
|
||||
return attrs.type === 'a' ? new A(attrs) : new B(attrs);
|
||||
},
|
||||
|
||||
idAttribute: '_id'
|
||||
})
|
||||
});
|
||||
var collection = new C([{_id: 1, type: 'a'}, {_id: 2, type: 'b'}]);
|
||||
equal(collection.length, 2);
|
||||
ok(collection.at(0) instanceof A);
|
||||
equal(collection.at(0), collection.get(1));
|
||||
ok(collection.at(1) instanceof B);
|
||||
equal(collection.at(1), collection.get(2));
|
||||
|
||||
C = Backbone.Collection.extend({
|
||||
model: function (attrs) {
|
||||
return attrs.type === 'a' ? new A(attrs) : new B(attrs);
|
||||
},
|
||||
|
||||
modelId: function (attrs) {
|
||||
return attrs.type + '-' + attrs.id;
|
||||
}
|
||||
});
|
||||
collection = new C([{id: 1, type: 'a'}, {id: 1, type: 'b'}]);
|
||||
equal(collection.length, 2);
|
||||
ok(collection.at(0) instanceof A);
|
||||
equal(collection.at(0), collection.get('a-1'));
|
||||
ok(collection.at(1) instanceof B);
|
||||
equal(collection.at(1), collection.get('b-1'));
|
||||
});
|
||||
|
||||
test("#3039: adding at index fires with correct at", 3, function() {
|
||||
var col = new Backbone.Collection([{at: 0}, {at: 4}]);
|
||||
col.on('add', function(model, col, options) {
|
||||
equal(model.get('at'), options.index);
|
||||
});
|
||||
col.add([{at: 1}, {at: 2}, {at: 3}], {at: 1});
|
||||
});
|
||||
|
||||
test("#3039: index is not sent when at is not specified", 2, function() {
|
||||
var col = new Backbone.Collection([{at: 0}]);
|
||||
col.on('add', function(model, col, options) {
|
||||
equal(undefined, options.index);
|
||||
});
|
||||
col.add([{at: 1}, {at: 2}]);
|
||||
});
|
||||
|
||||
test('#3199 - Order changing should trigger a sort', 1, function() {
|
||||
var one = new Backbone.Model({id: 1});
|
||||
var two = new Backbone.Model({id: 2});
|
||||
var three = new Backbone.Model({id: 3});
|
||||
var collection = new Backbone.Collection([one, two, three]);
|
||||
collection.on('sort', function() {
|
||||
ok(true);
|
||||
});
|
||||
collection.set([{id: 3}, {id: 2}, {id: 1}]);
|
||||
});
|
||||
|
||||
test('#3199 - Adding a model should trigger a sort', 1, function() {
|
||||
var one = new Backbone.Model({id: 1});
|
||||
var two = new Backbone.Model({id: 2});
|
||||
var three = new Backbone.Model({id: 3});
|
||||
var collection = new Backbone.Collection([one, two, three]);
|
||||
collection.on('sort', function() {
|
||||
ok(true);
|
||||
});
|
||||
collection.set([{id: 3}, {id: 2}, {id: 1}, {id: 0}]);
|
||||
})
|
||||
|
||||
test('#3199 - Order not changing should not trigger a sort', 0, function() {
|
||||
var one = new Backbone.Model({id: 1});
|
||||
var two = new Backbone.Model({id: 2});
|
||||
var three = new Backbone.Model({id: 3});
|
||||
var collection = new Backbone.Collection([one, two, three]);
|
||||
collection.on('sort', function() {
|
||||
ok(false);
|
||||
});
|
||||
collection.set([{id: 1}, {id: 2}, {id: 3}]);
|
||||
});
|
||||
|
||||
test("add supports negative indexes", 1, function() {
|
||||
var collection = new Backbone.Collection([{id: 1}]);
|
||||
collection.add([{id: 2}, {id: 3}], {at: -1});
|
||||
collection.add([{id: 2.5}], {at: -2});
|
||||
equal(collection.pluck('id').join(','), "1,2,2.5,3");
|
||||
});
|
||||
|
||||
test("#set accepts options.at as a string", 1, function() {
|
||||
var collection = new Backbone.Collection([{id: 1}, {id: 2}]);
|
||||
collection.add([{id: 3}], {at: '1'});
|
||||
deepEqual(collection.pluck('id'), [1, 3, 2]);
|
||||
});
|
||||
test("adding multiple models triggers `set` event once", 1, function() {
|
||||
var collection = new Backbone.Collection;
|
||||
collection.on('update', function() { ok(true); });
|
||||
collection.add([{id: 1}, {id: 2}, {id: 3}]);
|
||||
});
|
||||
|
||||
test("removing models triggers `set` event once", 1, function() {
|
||||
var collection = new Backbone.Collection([{id: 1}, {id: 2}, {id: 3}]);
|
||||
collection.on('update', function() { ok(true); });
|
||||
collection.remove([{id: 1}, {id: 2}]);
|
||||
});
|
||||
|
||||
test("remove does not trigger `set` when nothing removed", 0, function() {
|
||||
var collection = new Backbone.Collection([{id: 1}, {id: 2}]);
|
||||
collection.on('update', function() { ok(false); });
|
||||
collection.remove([{id: 3}]);
|
||||
});
|
||||
|
||||
test("set triggers `set` event once", 1, function() {
|
||||
var collection = new Backbone.Collection([{id: 1}, {id: 2}]);
|
||||
collection.on('update', function() { ok(true); });
|
||||
collection.set([{id: 1}, {id: 3}]);
|
||||
});
|
||||
|
||||
test("set does not trigger `set` event when nothing added nor removed", 0, function() {
|
||||
var collection = new Backbone.Collection([{id: 1}, {id: 2}]);
|
||||
collection.on('update', function() { ok(false); });
|
||||
collection.set([{id: 1}, {id: 2}]);
|
||||
});
|
||||
|
||||
})();
|
||||
|
||||
143
vendor/backbone/test/events.js
vendored
@@ -106,6 +106,19 @@
|
||||
b.trigger('event2');
|
||||
});
|
||||
|
||||
test("listenToOnce", 2, function() {
|
||||
// Same as the previous test, but we use once rather than having to explicitly unbind
|
||||
var obj = { counterA: 0, counterB: 0 };
|
||||
_.extend(obj, Backbone.Events);
|
||||
var incrA = function(){ obj.counterA += 1; obj.trigger('event'); };
|
||||
var incrB = function(){ obj.counterB += 1; };
|
||||
obj.listenToOnce(obj, 'event', incrA);
|
||||
obj.listenToOnce(obj, 'event', incrB);
|
||||
obj.trigger('event');
|
||||
equal(obj.counterA, 1, 'counterA should have only been incremented once.');
|
||||
equal(obj.counterB, 1, 'counterB should have only been incremented once.');
|
||||
});
|
||||
|
||||
test("listenToOnce and stopListening", 1, function() {
|
||||
var a = _.extend({}, Backbone.Events);
|
||||
var b = _.extend({}, Backbone.Events);
|
||||
@@ -152,18 +165,72 @@
|
||||
e.trigger("foo");
|
||||
});
|
||||
|
||||
test("stopListening cleans up references", 4, function() {
|
||||
test("stopListening cleans up references", 12, function() {
|
||||
var a = _.extend({}, Backbone.Events);
|
||||
var b = _.extend({}, Backbone.Events);
|
||||
var fn = function() {};
|
||||
a.listenTo(b, 'all', fn).stopListening();
|
||||
b.on('event', fn);
|
||||
a.listenTo(b, 'event', fn).stopListening();
|
||||
equal(_.size(a._listeningTo), 0);
|
||||
a.listenTo(b, 'all', fn).stopListening(b);
|
||||
equal(_.size(b._events.event), 1);
|
||||
equal(_.size(b._listeners), 0);
|
||||
a.listenTo(b, 'event', fn).stopListening(b);
|
||||
equal(_.size(a._listeningTo), 0);
|
||||
a.listenTo(b, 'all', fn).stopListening(null, 'all');
|
||||
equal(_.size(b._events.event), 1);
|
||||
equal(_.size(b._listeners), 0);
|
||||
a.listenTo(b, 'event', fn).stopListening(b, 'event');
|
||||
equal(_.size(a._listeningTo), 0);
|
||||
a.listenTo(b, 'all', fn).stopListening(null, null, fn);
|
||||
equal(_.size(b._events.event), 1);
|
||||
equal(_.size(b._listeners), 0);
|
||||
a.listenTo(b, 'event', fn).stopListening(b, 'event', fn);
|
||||
equal(_.size(a._listeningTo), 0);
|
||||
equal(_.size(b._events.event), 1);
|
||||
equal(_.size(b._listeners), 0);
|
||||
});
|
||||
|
||||
test("stopListening cleans up references from listenToOnce", 12, function() {
|
||||
var a = _.extend({}, Backbone.Events);
|
||||
var b = _.extend({}, Backbone.Events);
|
||||
var fn = function() {};
|
||||
b.on('event', fn);
|
||||
a.listenToOnce(b, 'event', fn).stopListening();
|
||||
equal(_.size(a._listeningTo), 0);
|
||||
equal(_.size(b._events.event), 1);
|
||||
equal(_.size(b._listeners), 0);
|
||||
a.listenToOnce(b, 'event', fn).stopListening(b);
|
||||
equal(_.size(a._listeningTo), 0);
|
||||
equal(_.size(b._events.event), 1);
|
||||
equal(_.size(b._listeners), 0);
|
||||
a.listenToOnce(b, 'event', fn).stopListening(b, 'event');
|
||||
equal(_.size(a._listeningTo), 0);
|
||||
equal(_.size(b._events.event), 1);
|
||||
equal(_.size(b._listeners), 0);
|
||||
a.listenToOnce(b, 'event', fn).stopListening(b, 'event', fn);
|
||||
equal(_.size(a._listeningTo), 0);
|
||||
equal(_.size(b._events.event), 1);
|
||||
equal(_.size(b._listeners), 0);
|
||||
});
|
||||
|
||||
test("listenTo and off cleaning up references", 8, function() {
|
||||
var a = _.extend({}, Backbone.Events);
|
||||
var b = _.extend({}, Backbone.Events);
|
||||
var fn = function() {};
|
||||
a.listenTo(b, 'event', fn);
|
||||
b.off();
|
||||
equal(_.size(a._listeningTo), 0);
|
||||
equal(_.size(b._listeners), 0);
|
||||
a.listenTo(b, 'event', fn);
|
||||
b.off('event');
|
||||
equal(_.size(a._listeningTo), 0);
|
||||
equal(_.size(b._listeners), 0);
|
||||
a.listenTo(b, 'event', fn);
|
||||
b.off(null, fn);
|
||||
equal(_.size(a._listeningTo), 0);
|
||||
equal(_.size(b._listeners), 0);
|
||||
a.listenTo(b, 'event', fn);
|
||||
b.off(null, null, a);
|
||||
equal(_.size(a._listeningTo), 0);
|
||||
equal(_.size(b._listeners), 0);
|
||||
});
|
||||
|
||||
test("listenTo and stopListening cleaning up references", 2, function() {
|
||||
@@ -174,7 +241,36 @@
|
||||
a.listenTo(b, 'other', function(){ ok(false); });
|
||||
a.stopListening(b, 'other');
|
||||
a.stopListening(b, 'all');
|
||||
equal(_.keys(a._listeningTo).length, 0);
|
||||
equal(_.size(a._listeningTo), 0);
|
||||
});
|
||||
|
||||
test("listenToOnce without context cleans up references after the event has fired", 2, function() {
|
||||
var a = _.extend({}, Backbone.Events);
|
||||
var b = _.extend({}, Backbone.Events);
|
||||
a.listenToOnce(b, 'all', function(){ ok(true); });
|
||||
b.trigger('anything');
|
||||
equal(_.size(a._listeningTo), 0);
|
||||
});
|
||||
|
||||
test("listenToOnce with event maps cleans up references", 2, function() {
|
||||
var a = _.extend({}, Backbone.Events);
|
||||
var b = _.extend({}, Backbone.Events);
|
||||
a.listenToOnce(b, {
|
||||
one: function() { ok(true); },
|
||||
two: function() { ok(false); }
|
||||
});
|
||||
b.trigger('one');
|
||||
equal(_.size(a._listeningTo), 1);
|
||||
});
|
||||
|
||||
test("listenToOnce with event maps binds the correct `this`", 1, function() {
|
||||
var a = _.extend({}, Backbone.Events);
|
||||
var b = _.extend({}, Backbone.Events);
|
||||
a.listenToOnce(b, {
|
||||
one: function() { ok(this === a); },
|
||||
two: function() { ok(false); }
|
||||
});
|
||||
b.trigger('one');
|
||||
});
|
||||
|
||||
test("listenTo with empty callback doesn't throw an error", 1, function(){
|
||||
@@ -277,15 +373,14 @@
|
||||
test("callback list is not altered during trigger", 2, function () {
|
||||
var counter = 0, obj = _.extend({}, Backbone.Events);
|
||||
var incr = function(){ counter++; };
|
||||
obj.on('event', function(){ obj.on('event', incr).on('all', incr); })
|
||||
.trigger('event');
|
||||
equal(counter, 0, 'bind does not alter callback list');
|
||||
obj.off()
|
||||
.on('event', function(){ obj.off('event', incr).off('all', incr); })
|
||||
.on('event', incr)
|
||||
.on('all', incr)
|
||||
.trigger('event');
|
||||
equal(counter, 2, 'unbind does not alter callback list');
|
||||
var incrOn = function(){ obj.on('event all', incr); };
|
||||
var incrOff = function(){ obj.off('event all', incr); };
|
||||
|
||||
obj.on('event all', incrOn).trigger('event');
|
||||
equal(counter, 0, 'on does not alter callback list');
|
||||
|
||||
obj.off().on('event', incrOff).on('event all', incr).trigger('event');
|
||||
equal(counter, 2, 'off does not alter callback list');
|
||||
});
|
||||
|
||||
test("#1282 - 'all' callback list is retrieved after each event.", 1, function() {
|
||||
@@ -305,7 +400,7 @@
|
||||
|
||||
test("if callback is truthy but not a function, `on` should throw an error just like jQuery", 1, function() {
|
||||
var view = _.extend({}, Backbone.Events).on('test', 'noop');
|
||||
raises(function() {
|
||||
throws(function() {
|
||||
view.trigger('test');
|
||||
});
|
||||
});
|
||||
@@ -457,6 +552,11 @@
|
||||
_.extend({}, Backbone.Events).once('event').trigger('event');
|
||||
});
|
||||
|
||||
test("listenToOnce without a callback is a noop", 0, function() {
|
||||
var obj = _.extend({}, Backbone.Events);
|
||||
obj.listenToOnce(obj, 'event').trigger('event');
|
||||
});
|
||||
|
||||
test("event functions are chainable", function() {
|
||||
var obj = _.extend({}, Backbone.Events);
|
||||
var obj2 = _.extend({}, Backbone.Events);
|
||||
@@ -474,4 +574,15 @@
|
||||
equal(obj, obj.stopListening());
|
||||
});
|
||||
|
||||
test("#3448 - listenToOnce with space-separated events", 2, function() {
|
||||
var one = _.extend({}, Backbone.Events);
|
||||
var two = _.extend({}, Backbone.Events);
|
||||
var count = 1;
|
||||
one.listenToOnce(two, 'x y', function(n) { ok(n === count++); });
|
||||
two.trigger('x', 1);
|
||||
two.trigger('x', 1);
|
||||
two.trigger('y', 2);
|
||||
two.trigger('y', 2);
|
||||
});
|
||||
|
||||
})();
|
||||
|
||||
173
vendor/backbone/test/model.js
vendored
@@ -83,7 +83,7 @@
|
||||
doc.collection.url = '/collection/';
|
||||
equal(doc.url(), '/collection/1-the-tempest');
|
||||
doc.collection = null;
|
||||
raises(function() { doc.url(); });
|
||||
throws(function() { doc.url(); });
|
||||
doc.collection = collection;
|
||||
});
|
||||
|
||||
@@ -120,6 +120,11 @@
|
||||
deepEqual(model.omit('foo', 'bar'), {'baz': 'c'});
|
||||
});
|
||||
|
||||
test("chain", function() {
|
||||
var model = new Backbone.Model({ a: 0, b: 1, c: 2 });
|
||||
deepEqual(model.chain().pick("a", "b", "c").values().compact().value(), [1, 2]);
|
||||
});
|
||||
|
||||
test("clone", 10, function() {
|
||||
var a = new Backbone.Model({ 'foo': 1, 'bar': 2, 'baz': 3});
|
||||
var b = a.clone();
|
||||
@@ -199,6 +204,32 @@
|
||||
strictEqual(model.has('undefined'), false);
|
||||
});
|
||||
|
||||
test("matches", 4, function() {
|
||||
var model = new Backbone.Model();
|
||||
|
||||
strictEqual(model.matches({'name': 'Jonas', 'cool': true}), false);
|
||||
|
||||
model.set({name: 'Jonas', 'cool': true});
|
||||
|
||||
strictEqual(model.matches({'name': 'Jonas'}), true);
|
||||
strictEqual(model.matches({'name': 'Jonas', 'cool': true}), true);
|
||||
strictEqual(model.matches({'name': 'Jonas', 'cool': false}), false);
|
||||
});
|
||||
|
||||
test("matches with predicate", function() {
|
||||
var model = new Backbone.Model({a: 0});
|
||||
|
||||
strictEqual(model.matches(function(attr) {
|
||||
return attr.a > 1 && attr.b != null;
|
||||
}), false);
|
||||
|
||||
model.set({a: 3, b: true});
|
||||
|
||||
strictEqual(model.matches(function(attr) {
|
||||
return attr.a > 1 && attr.b != null;
|
||||
}), true);
|
||||
})
|
||||
|
||||
test("set and unset", 8, function() {
|
||||
var a = new Backbone.Model({id: 'id', foo: 1, bar: 2, baz: 3});
|
||||
var changeCount = 0;
|
||||
@@ -312,6 +343,31 @@
|
||||
equal(model.isNew(), true);
|
||||
});
|
||||
|
||||
test("setting an alternative cid prefix", 4, function() {
|
||||
var Model = Backbone.Model.extend({
|
||||
cidPrefix: 'm'
|
||||
});
|
||||
var model = new Model();
|
||||
|
||||
equal(model.cid.charAt(0), 'm');
|
||||
|
||||
model = new Backbone.Model();
|
||||
equal(model.cid.charAt(0), 'c');
|
||||
|
||||
var Collection = Backbone.Collection.extend({
|
||||
model: Model
|
||||
});
|
||||
var collection = new Collection([{id: 'c5'}, {id: 'c6'}, {id: 'c7'}]);
|
||||
|
||||
equal(collection.get('c6').cid.charAt(0), 'm');
|
||||
collection.set([{id: 'c6', value: 'test'}], {
|
||||
merge: true,
|
||||
add: true,
|
||||
remove: false
|
||||
});
|
||||
ok(collection.get('c6').has('value'));
|
||||
});
|
||||
|
||||
test("set an empty string", 1, function() {
|
||||
var model = new Backbone.Model({name : "Model"});
|
||||
model.set({name : ''});
|
||||
@@ -460,6 +516,40 @@
|
||||
model.destroy();
|
||||
});
|
||||
|
||||
test("#3283 - save, fetch, destroy calls success with context", 3, function () {
|
||||
var model = new Backbone.Model();
|
||||
var obj = {};
|
||||
var options = {
|
||||
context: obj,
|
||||
success: function() {
|
||||
equal(this, obj);
|
||||
}
|
||||
};
|
||||
model.sync = function (method, model, options) {
|
||||
options.success.call(options.context);
|
||||
};
|
||||
model.save({data: 2, id: 1}, options);
|
||||
model.fetch(options);
|
||||
model.destroy(options);
|
||||
});
|
||||
|
||||
test("#3283 - save, fetch, destroy calls error with context", 3, function () {
|
||||
var model = new Backbone.Model();
|
||||
var obj = {};
|
||||
var options = {
|
||||
context: obj,
|
||||
error: function() {
|
||||
equal(this, obj);
|
||||
}
|
||||
};
|
||||
model.sync = function (method, model, options) {
|
||||
options.error.call(options.context);
|
||||
};
|
||||
model.save({data: 2, id: 1}, options);
|
||||
model.fetch(options);
|
||||
model.destroy(options);
|
||||
});
|
||||
|
||||
test("save with PATCH", function() {
|
||||
doc.clear().set({id: 1, a: 1, b: 2, c: 3, d: 4});
|
||||
doc.save();
|
||||
@@ -474,6 +564,14 @@
|
||||
equal(this.ajaxSettings.data, "{\"b\":2,\"d\":4}");
|
||||
});
|
||||
|
||||
test("save with PATCH and different attrs", function() {
|
||||
doc.clear().save({b: 2, d: 4}, {patch: true, attrs: {B: 1, D: 3}});
|
||||
equal(this.syncArgs.options.attrs.D, 3);
|
||||
equal(this.syncArgs.options.attrs.d, undefined);
|
||||
equal(this.ajaxSettings.data, "{\"B\":1,\"D\":3}");
|
||||
deepEqual(doc.attributes, {b: 2, d: 4});
|
||||
});
|
||||
|
||||
test("save in positional style", 1, function() {
|
||||
var model = new Backbone.Model();
|
||||
model.sync = function(method, model, options) {
|
||||
@@ -496,12 +594,59 @@
|
||||
});
|
||||
});
|
||||
|
||||
test("save with wait and supplied id", function() {
|
||||
var Model = Backbone.Model.extend({
|
||||
urlRoot: '/collection'
|
||||
});
|
||||
var model = new Model();
|
||||
model.save({id: 42}, {wait: true});
|
||||
equal(this.ajaxSettings.url, '/collection/42');
|
||||
});
|
||||
|
||||
test("save will pass extra options to success callback", 1, function () {
|
||||
var SpecialSyncModel = Backbone.Model.extend({
|
||||
sync: function (method, model, options) {
|
||||
_.extend(options, { specialSync: true });
|
||||
return Backbone.Model.prototype.sync.call(this, method, model, options);
|
||||
},
|
||||
urlRoot: '/test'
|
||||
});
|
||||
|
||||
var model = new SpecialSyncModel();
|
||||
|
||||
var onSuccess = function (model, response, options) {
|
||||
ok(options.specialSync, "Options were passed correctly to callback");
|
||||
};
|
||||
|
||||
model.save(null, { success: onSuccess });
|
||||
this.ajaxSettings.success();
|
||||
});
|
||||
|
||||
test("fetch", 2, function() {
|
||||
doc.fetch();
|
||||
equal(this.syncArgs.method, 'read');
|
||||
ok(_.isEqual(this.syncArgs.model, doc));
|
||||
});
|
||||
|
||||
test("fetch will pass extra options to success callback", 1, function () {
|
||||
var SpecialSyncModel = Backbone.Model.extend({
|
||||
sync: function (method, model, options) {
|
||||
_.extend(options, { specialSync: true });
|
||||
return Backbone.Model.prototype.sync.call(this, method, model, options);
|
||||
},
|
||||
urlRoot: '/test'
|
||||
});
|
||||
|
||||
var model = new SpecialSyncModel();
|
||||
|
||||
var onSuccess = function (model, response, options) {
|
||||
ok(options.specialSync, "Options were passed correctly to callback");
|
||||
};
|
||||
|
||||
model.fetch({ success: onSuccess });
|
||||
this.ajaxSettings.success();
|
||||
});
|
||||
|
||||
test("destroy", 3, function() {
|
||||
doc.destroy();
|
||||
equal(this.syncArgs.method, 'delete');
|
||||
@@ -511,6 +656,25 @@
|
||||
equal(newModel.destroy(), false);
|
||||
});
|
||||
|
||||
test("destroy will pass extra options to success callback", 1, function () {
|
||||
var SpecialSyncModel = Backbone.Model.extend({
|
||||
sync: function (method, model, options) {
|
||||
_.extend(options, { specialSync: true });
|
||||
return Backbone.Model.prototype.sync.call(this, method, model, options);
|
||||
},
|
||||
urlRoot: '/test'
|
||||
});
|
||||
|
||||
var model = new SpecialSyncModel({ id: 'id' });
|
||||
|
||||
var onSuccess = function (model, response, options) {
|
||||
ok(options.specialSync, "Options were passed correctly to callback");
|
||||
};
|
||||
|
||||
model.destroy({ success: onSuccess });
|
||||
this.ajaxSettings.success();
|
||||
});
|
||||
|
||||
test("non-persisted destroy", 1, function() {
|
||||
var a = new Backbone.Model({ 'foo': 1, 'bar': 2, 'baz': 3});
|
||||
a.sync = function() { throw "should not be called"; };
|
||||
@@ -967,11 +1131,14 @@
|
||||
model.destroy();
|
||||
});
|
||||
|
||||
test("#1365 - Destroy: New models execute success callback.", 2, function() {
|
||||
asyncTest("#1365 - Destroy: New models execute success callback.", 2, function() {
|
||||
new Backbone.Model()
|
||||
.on('sync', function() { ok(false); })
|
||||
.on('destroy', function(){ ok(true); })
|
||||
.destroy({ success: function(){ ok(true); }});
|
||||
.destroy({ success: function(){
|
||||
ok(true);
|
||||
start();
|
||||
}});
|
||||
});
|
||||
|
||||
test("#1433 - Save: An invalid model cannot be persisted.", 1, function() {
|
||||
|
||||
212
vendor/backbone/test/router.js
vendored
@@ -331,6 +331,36 @@
|
||||
Backbone.history.checkUrl();
|
||||
});
|
||||
|
||||
test("No events are triggered if #execute returns false.", 1, function() {
|
||||
var Router = Backbone.Router.extend({
|
||||
|
||||
routes: {
|
||||
foo: function() {
|
||||
ok(true);
|
||||
}
|
||||
},
|
||||
|
||||
execute: function(callback, args) {
|
||||
callback.apply(this, args);
|
||||
return false;
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
var router = new Router;
|
||||
|
||||
router.on('route route:foo', function() {
|
||||
ok(false);
|
||||
});
|
||||
|
||||
Backbone.history.on('route', function() {
|
||||
ok(false);
|
||||
});
|
||||
|
||||
location.replace('http://example.com#foo');
|
||||
Backbone.history.checkUrl();
|
||||
});
|
||||
|
||||
test("#933, #908 - leading slash", 2, function() {
|
||||
location.replace('http://example.com/root/foo');
|
||||
|
||||
@@ -345,14 +375,6 @@
|
||||
strictEqual(Backbone.history.getFragment(), 'foo');
|
||||
});
|
||||
|
||||
test("#1003 - History is started before navigate is called", 1, function() {
|
||||
Backbone.history.stop();
|
||||
Backbone.history.navigate = function(){ ok(Backbone.History.started); };
|
||||
Backbone.history.start();
|
||||
// If this is not an old IE navigate will not be called.
|
||||
if (!Backbone.history.iframe) ok(true);
|
||||
});
|
||||
|
||||
test("#967 - Route callback gets passed encoded values.", 3, function() {
|
||||
var route = 'has%2Fslash/complex-has%23hash/has%20space';
|
||||
Backbone.history.navigate(route, {trigger: true});
|
||||
@@ -375,7 +397,7 @@
|
||||
Backbone.history.navigate('charñ', {trigger: true});
|
||||
equal(router.charType, 'UTF');
|
||||
Backbone.history.navigate('char%C3%B1', {trigger: true});
|
||||
equal(router.charType, 'escaped');
|
||||
equal(router.charType, 'UTF');
|
||||
});
|
||||
|
||||
test("#1185 - Use pathname when hashChange is not wanted.", 1, function() {
|
||||
@@ -543,7 +565,7 @@
|
||||
Backbone.history.stop();
|
||||
location.replace('http://example.com/root/x/y?a=b');
|
||||
location.replace = function(url) {
|
||||
strictEqual(url, '/root/#x/y?a=b');
|
||||
strictEqual(url, '/root#x/y?a=b');
|
||||
};
|
||||
Backbone.history = _.extend(new Backbone.History, {
|
||||
location: location,
|
||||
@@ -711,6 +733,21 @@
|
||||
Backbone.history.navigate('');
|
||||
});
|
||||
|
||||
test('#2656 - No trailing slash on root.', 1, function() {
|
||||
Backbone.history.stop();
|
||||
Backbone.history = _.extend(new Backbone.History, {
|
||||
location: location,
|
||||
history: {
|
||||
pushState: function(state, title, url){
|
||||
strictEqual(url, '/root?x=1');
|
||||
}
|
||||
}
|
||||
});
|
||||
location.replace('http://example.com/root/path');
|
||||
Backbone.history.start({pushState: true, hashChange: false, root: 'root'});
|
||||
Backbone.history.navigate('?x=1');
|
||||
});
|
||||
|
||||
test('#2765 - Fragment matching sans query/hash.', 2, function() {
|
||||
Backbone.history.stop();
|
||||
Backbone.history = _.extend(new Backbone.History, {
|
||||
@@ -738,12 +775,12 @@
|
||||
var Router = Backbone.Router.extend({
|
||||
routes: {
|
||||
path: function(params){
|
||||
strictEqual(params, 'x=y%20z');
|
||||
strictEqual(params, 'x=y%3Fz');
|
||||
}
|
||||
}
|
||||
});
|
||||
var router = new Router;
|
||||
Backbone.history.navigate('path?x=y%20z', true);
|
||||
Backbone.history.navigate('path?x=y%3Fz', true);
|
||||
});
|
||||
|
||||
test('Navigate to a hash url.', function() {
|
||||
@@ -792,6 +829,22 @@
|
||||
Backbone.history.start({pushState: true});
|
||||
});
|
||||
|
||||
test('unicode pathname with % in a parameter', 1, function() {
|
||||
location.replace('http://example.com/myyjä/foo%20%25%3F%2f%40%25%20bar');
|
||||
location.pathname = '/myyj%C3%A4/foo%20%25%3F%2f%40%25%20bar';
|
||||
Backbone.history.stop();
|
||||
Backbone.history = _.extend(new Backbone.History, {location: location});
|
||||
var Router = Backbone.Router.extend({
|
||||
routes: {
|
||||
'myyjä/:query': function(query) {
|
||||
strictEqual(query, 'foo %?/@% bar');
|
||||
}
|
||||
}
|
||||
});
|
||||
new Router;
|
||||
Backbone.history.start({pushState: true});
|
||||
});
|
||||
|
||||
test('newline in route', 1, function() {
|
||||
location.replace('http://example.com/stuff%0Anonsense?param=foo%0Abar');
|
||||
Backbone.history.stop();
|
||||
@@ -807,4 +860,139 @@
|
||||
Backbone.history.start({pushState: true});
|
||||
});
|
||||
|
||||
test('Router#execute receives callback, args, name.', 3, function() {
|
||||
location.replace('http://example.com#foo/123/bar?x=y');
|
||||
Backbone.history.stop();
|
||||
Backbone.history = _.extend(new Backbone.History, {location: location});
|
||||
var Router = Backbone.Router.extend({
|
||||
routes: {'foo/:id/bar': 'foo'},
|
||||
foo: function(){},
|
||||
execute: function(callback, args, name) {
|
||||
strictEqual(callback, this.foo);
|
||||
deepEqual(args, ['123', 'x=y']);
|
||||
strictEqual(name, 'foo');
|
||||
}
|
||||
});
|
||||
var router = new Router;
|
||||
Backbone.history.start();
|
||||
});
|
||||
|
||||
test("pushState to hashChange with only search params.", 1, function() {
|
||||
Backbone.history.stop();
|
||||
location.replace('http://example.com?a=b');
|
||||
location.replace = function(url) {
|
||||
strictEqual(url, '/#?a=b');
|
||||
};
|
||||
Backbone.history = _.extend(new Backbone.History, {
|
||||
location: location,
|
||||
history: null
|
||||
});
|
||||
Backbone.history.start({pushState: true});
|
||||
});
|
||||
|
||||
test("#3123 - History#navigate decodes before comparison.", 1, function() {
|
||||
Backbone.history.stop();
|
||||
location.replace('http://example.com/shop/search?keyword=short%20dress');
|
||||
Backbone.history = _.extend(new Backbone.History, {
|
||||
location: location,
|
||||
history: {
|
||||
pushState: function(){ ok(false); },
|
||||
replaceState: function(){ ok(false); }
|
||||
}
|
||||
});
|
||||
Backbone.history.start({pushState: true});
|
||||
Backbone.history.navigate('shop/search?keyword=short%20dress', true);
|
||||
strictEqual(Backbone.history.fragment, 'shop/search?keyword=short dress');
|
||||
});
|
||||
|
||||
test('#3175 - Urls in the params', 1, function() {
|
||||
Backbone.history.stop();
|
||||
location.replace('http://example.com#login?a=value&backUrl=https%3A%2F%2Fwww.msn.com%2Fidp%2Fidpdemo%3Fspid%3Dspdemo%26target%3Db');
|
||||
Backbone.history = _.extend(new Backbone.History, {location: location});
|
||||
var router = new Backbone.Router;
|
||||
router.route('login', function(params) {
|
||||
strictEqual(params, 'a=value&backUrl=https%3A%2F%2Fwww.msn.com%2Fidp%2Fidpdemo%3Fspid%3Dspdemo%26target%3Db');
|
||||
});
|
||||
Backbone.history.start();
|
||||
});
|
||||
|
||||
test('#3358 - pushState to hashChange transition with search params', 1, function() {
|
||||
Backbone.history.stop();
|
||||
location.replace('/root?foo=bar');
|
||||
location.replace = function(url) {
|
||||
strictEqual(url, '/root#?foo=bar');
|
||||
};
|
||||
Backbone.history = _.extend(new Backbone.History, {
|
||||
location: location,
|
||||
history: {
|
||||
pushState: undefined,
|
||||
replaceState: undefined
|
||||
}
|
||||
});
|
||||
Backbone.history.start({root: '/root', pushState: true});
|
||||
});
|
||||
|
||||
test("Paths that don't match the root should not match no root", 0, function() {
|
||||
location.replace('http://example.com/foo');
|
||||
Backbone.history.stop();
|
||||
Backbone.history = _.extend(new Backbone.History, {location: location});
|
||||
var Router = Backbone.Router.extend({
|
||||
routes: {
|
||||
foo: function(){
|
||||
ok(false, 'should not match unless root matches');
|
||||
}
|
||||
}
|
||||
});
|
||||
var router = new Router;
|
||||
Backbone.history.start({root: 'root', pushState: true});
|
||||
});
|
||||
|
||||
test("Paths that don't match the root should not match roots of the same length", 0, function() {
|
||||
location.replace('http://example.com/xxxx/foo');
|
||||
Backbone.history.stop();
|
||||
Backbone.history = _.extend(new Backbone.History, {location: location});
|
||||
var Router = Backbone.Router.extend({
|
||||
routes: {
|
||||
foo: function(){
|
||||
ok(false, 'should not match unless root matches');
|
||||
}
|
||||
}
|
||||
});
|
||||
var router = new Router;
|
||||
Backbone.history.start({root: 'root', pushState: true});
|
||||
});
|
||||
|
||||
test("roots with regex characters", 1, function() {
|
||||
location.replace('http://example.com/x+y.z/foo');
|
||||
Backbone.history.stop();
|
||||
Backbone.history = _.extend(new Backbone.History, {location: location});
|
||||
var Router = Backbone.Router.extend({
|
||||
routes: {foo: function(){ ok(true); }}
|
||||
});
|
||||
var router = new Router;
|
||||
Backbone.history.start({root: 'x+y.z', pushState: true});
|
||||
});
|
||||
|
||||
test("roots with unicode characters", 1, function() {
|
||||
location.replace('http://example.com/®ooτ/foo');
|
||||
Backbone.history.stop();
|
||||
Backbone.history = _.extend(new Backbone.History, {location: location});
|
||||
var Router = Backbone.Router.extend({
|
||||
routes: {foo: function(){ ok(true); }}
|
||||
});
|
||||
var router = new Router;
|
||||
Backbone.history.start({root: '®ooτ', pushState: true});
|
||||
});
|
||||
|
||||
test("roots without slash", 1, function() {
|
||||
location.replace('http://example.com/®ooτ');
|
||||
Backbone.history.stop();
|
||||
Backbone.history = _.extend(new Backbone.History, {location: location});
|
||||
var Router = Backbone.Router.extend({
|
||||
routes: {'': function(){ ok(true); }}
|
||||
});
|
||||
var router = new Router;
|
||||
Backbone.history.start({root: '®ooτ', pushState: true});
|
||||
});
|
||||
|
||||
})();
|
||||
|
||||
6
vendor/backbone/test/setup/dom-setup.js
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
$('body').append(
|
||||
'<div id="qunit"></div>' +
|
||||
'<div id="qunit-fixture">' +
|
||||
'<div id="testElement"><h1>Test</h1></div>' +
|
||||
'</div>'
|
||||
);
|
||||
13
vendor/backbone/test/sync.js
vendored
@@ -131,7 +131,7 @@
|
||||
|
||||
test("urlError", 2, function() {
|
||||
var model = new Backbone.Model();
|
||||
raises(function() {
|
||||
throws(function() {
|
||||
model.fetch();
|
||||
});
|
||||
model.fetch({url: '/one/two'});
|
||||
@@ -207,4 +207,15 @@
|
||||
strictEqual(this.ajaxSettings.beforeSend(xhr), false);
|
||||
});
|
||||
|
||||
test('#2928 - Pass along `textStatus` and `errorThrown`.', 2, function() {
|
||||
var model = new Backbone.Model;
|
||||
model.url = '/test';
|
||||
model.on('error', function(model, xhr, options) {
|
||||
strictEqual(options.textStatus, 'textStatus');
|
||||
strictEqual(options.errorThrown, 'errorThrown');
|
||||
});
|
||||
model.fetch();
|
||||
this.ajaxSettings.error({}, 'textStatus', 'errorThrown');
|
||||
});
|
||||
|
||||
})();
|
||||
|
||||
128
vendor/backbone/test/view.js
vendored
@@ -20,10 +20,22 @@
|
||||
equal(view.el.other, void 0);
|
||||
});
|
||||
|
||||
test("jQuery", 1, function() {
|
||||
test("$", 2, function() {
|
||||
var view = new Backbone.View;
|
||||
view.setElement('<p><a><b>test</b></a></p>');
|
||||
strictEqual(view.$('a b').html(), 'test');
|
||||
var result = view.$('a b');
|
||||
|
||||
strictEqual(result[0].innerHTML, 'test');
|
||||
ok(result.length === +result.length);
|
||||
});
|
||||
|
||||
test("$el", 3, function() {
|
||||
var view = new Backbone.View;
|
||||
view.setElement('<p><a><b>test</b></a></p>');
|
||||
strictEqual(view.el.nodeType, 1);
|
||||
|
||||
ok(view.$el instanceof Backbone.$);
|
||||
strictEqual(view.$el[0], view.el);
|
||||
});
|
||||
|
||||
test("initialize", 1, function() {
|
||||
@@ -60,6 +72,17 @@
|
||||
equal(counter2, 3);
|
||||
});
|
||||
|
||||
test("delegate", 2, function() {
|
||||
var view = new Backbone.View({el: '#testElement'});
|
||||
view.delegate('click', 'h1', function() {
|
||||
ok(true);
|
||||
});
|
||||
view.delegate('click', function() {
|
||||
ok(true);
|
||||
});
|
||||
view.$('h1').trigger('click');
|
||||
});
|
||||
|
||||
test("delegateEvents allows functions for callbacks", 3, function() {
|
||||
var view = new Backbone.View({el: '<p></p>'});
|
||||
view.counter = 0;
|
||||
@@ -114,6 +137,63 @@
|
||||
equal(counter2, 3);
|
||||
});
|
||||
|
||||
test("undelegate", 0, function() {
|
||||
view = new Backbone.View({el: '#testElement'});
|
||||
view.delegate('click', function() { ok(false); });
|
||||
view.delegate('click', 'h1', function() { ok(false); });
|
||||
|
||||
view.undelegate('click');
|
||||
|
||||
view.$('h1').trigger('click');
|
||||
view.$el.trigger('click');
|
||||
});
|
||||
|
||||
test("undelegate with passed handler", 1, function() {
|
||||
view = new Backbone.View({el: '#testElement'});
|
||||
var listener = function() { ok(false); };
|
||||
view.delegate('click', listener);
|
||||
view.delegate('click', function() { ok(true); });
|
||||
view.undelegate('click', listener);
|
||||
view.$el.trigger('click');
|
||||
});
|
||||
|
||||
test("undelegate with selector", 2, function() {
|
||||
view = new Backbone.View({el: '#testElement'});
|
||||
view.delegate('click', function() { ok(true); });
|
||||
view.delegate('click', 'h1', function() { ok(false); });
|
||||
view.undelegate('click', 'h1');
|
||||
view.$('h1').trigger('click');
|
||||
view.$el.trigger('click');
|
||||
});
|
||||
|
||||
test("undelegate with handler and selector", 2, function() {
|
||||
view = new Backbone.View({el: '#testElement'});
|
||||
view.delegate('click', function() { ok(true); });
|
||||
var handler = function(){ ok(false); };
|
||||
view.delegate('click', 'h1', handler);
|
||||
view.undelegate('click', 'h1', handler);
|
||||
view.$('h1').trigger('click');
|
||||
view.$el.trigger('click');
|
||||
});
|
||||
|
||||
test("tagName can be provided as a string", 1, function() {
|
||||
var View = Backbone.View.extend({
|
||||
tagName: 'span'
|
||||
});
|
||||
|
||||
equal(new View().el.tagName, 'SPAN');
|
||||
});
|
||||
|
||||
test("tagName can be provided as a function", 1, function() {
|
||||
var View = Backbone.View.extend({
|
||||
tagName: function() {
|
||||
return 'p';
|
||||
}
|
||||
});
|
||||
|
||||
ok(new View().$el.is('p'));
|
||||
});
|
||||
|
||||
test("_ensureElement with DOM node el", 1, function() {
|
||||
var View = Backbone.View.extend({
|
||||
el: document.body
|
||||
@@ -201,26 +281,19 @@
|
||||
equal(5, count);
|
||||
});
|
||||
|
||||
test("custom events, with namespaces", 2, function() {
|
||||
var count = 0;
|
||||
|
||||
test("custom events", 2, function() {
|
||||
var View = Backbone.View.extend({
|
||||
el: $('body'),
|
||||
events: function() {
|
||||
return {"fake$event.namespaced": "run"};
|
||||
},
|
||||
run: function() {
|
||||
count++;
|
||||
events: {
|
||||
"fake$event": function() { ok(true); }
|
||||
}
|
||||
});
|
||||
|
||||
var view = new View;
|
||||
$('body').trigger('fake$event').trigger('fake$event');
|
||||
equal(count, 2);
|
||||
|
||||
$('body').off('.namespaced');
|
||||
$('body').off('fake$event');
|
||||
$('body').trigger('fake$event');
|
||||
equal(count, 2);
|
||||
});
|
||||
|
||||
test("#1048 - setElement uses provided object.", 2, function() {
|
||||
@@ -264,21 +337,11 @@
|
||||
ok(!view2.el.id);
|
||||
});
|
||||
|
||||
test("#1228 - tagName can be provided as a function", 1, function() {
|
||||
var View = Backbone.View.extend({
|
||||
tagName: function() {
|
||||
return 'p';
|
||||
}
|
||||
});
|
||||
|
||||
ok(new View().$el.is('p'));
|
||||
});
|
||||
|
||||
test("views stopListening", 0, function() {
|
||||
var View = Backbone.View.extend({
|
||||
initialize: function() {
|
||||
this.listenTo(this.model, 'all x', function(){ ok(false); }, this);
|
||||
this.listenTo(this.collection, 'all x', function(){ ok(false); }, this);
|
||||
this.listenTo(this.model, 'all x', function(){ ok(false); });
|
||||
this.listenTo(this.collection, 'all x', function(){ ok(false); });
|
||||
}
|
||||
});
|
||||
|
||||
@@ -324,4 +387,19 @@
|
||||
equal(counter, 2);
|
||||
});
|
||||
|
||||
test("remove", 1, function() {
|
||||
var view = new Backbone.View;
|
||||
document.body.appendChild(view.el);
|
||||
|
||||
view.delegate('click', function() { ok(false); });
|
||||
view.listenTo(view, 'all x', function() { ok(false); });
|
||||
|
||||
view.remove();
|
||||
view.$el.trigger('click');
|
||||
view.trigger('x');
|
||||
|
||||
// In IE8 and below, parentNode still exists but is not document.body.
|
||||
notEqual(view.el.parentNode, document.body);
|
||||
});
|
||||
|
||||
})();
|
||||
|
||||
7
vendor/benchmark.js/benchmark.js
vendored
@@ -500,7 +500,8 @@
|
||||
/*------------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* A deep clone utility.
|
||||
* A specialized version of `_.cloneDeep` which only clones arrays and plain
|
||||
* objects assigning all other values by reference.
|
||||
*
|
||||
* @private
|
||||
* @param {*} value The value to clone.
|
||||
@@ -652,7 +653,7 @@
|
||||
}
|
||||
|
||||
/**
|
||||
* A wrapper around `require()` to suppress `module missing` errors.
|
||||
* A wrapper around `require` to suppress `module missing` errors.
|
||||
*
|
||||
* @private
|
||||
* @param {string} id The module id.
|
||||
@@ -2861,7 +2862,7 @@
|
||||
if (moduleExports) {
|
||||
(freeModule.exports = Benchmark).Benchmark = Benchmark;
|
||||
}
|
||||
// Export for Narwhal or Rhino -require.
|
||||
// Export for Rhino with CommonJS support.
|
||||
else {
|
||||
freeExports.Benchmark = Benchmark;
|
||||
}
|
||||
|
||||
0
vendor/firebug-lite/license.txt
vendored
Executable file → Normal file
0
vendor/firebug-lite/skin/xp/blank.gif
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 43 B After Width: | Height: | Size: 43 B |
0
vendor/firebug-lite/skin/xp/buttonBg.png
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 167 B After Width: | Height: | Size: 167 B |
0
vendor/firebug-lite/skin/xp/buttonBgHover.png
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 171 B After Width: | Height: | Size: 171 B |
0
vendor/firebug-lite/skin/xp/debugger.css
vendored
Executable file → Normal file
0
vendor/firebug-lite/skin/xp/detach.png
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 655 B After Width: | Height: | Size: 655 B |
0
vendor/firebug-lite/skin/xp/detachHover.png
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 586 B After Width: | Height: | Size: 586 B |
0
vendor/firebug-lite/skin/xp/disable.gif
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 340 B After Width: | Height: | Size: 340 B |
0
vendor/firebug-lite/skin/xp/disable.png
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 543 B After Width: | Height: | Size: 543 B |
0
vendor/firebug-lite/skin/xp/disableHover.gif
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 344 B After Width: | Height: | Size: 344 B |
0
vendor/firebug-lite/skin/xp/disableHover.png
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 512 B After Width: | Height: | Size: 512 B |
0
vendor/firebug-lite/skin/xp/down.png
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 637 B After Width: | Height: | Size: 637 B |
0
vendor/firebug-lite/skin/xp/downActive.png
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 543 B After Width: | Height: | Size: 543 B |
0
vendor/firebug-lite/skin/xp/downHover.png
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 526 B After Width: | Height: | Size: 526 B |
0
vendor/firebug-lite/skin/xp/errorIcon-sm.png
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 447 B After Width: | Height: | Size: 447 B |
0
vendor/firebug-lite/skin/xp/errorIcon.gif
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 365 B After Width: | Height: | Size: 365 B |
0
vendor/firebug-lite/skin/xp/errorIcon.png
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 457 B After Width: | Height: | Size: 457 B |
28
vendor/firebug-lite/skin/xp/firebug-1.3a2.css
vendored
Executable file → Normal file
@@ -70,7 +70,7 @@ html, body {
|
||||
body {
|
||||
font-family: Lucida Grande, Tahoma, sans-serif;
|
||||
font-size: 11px;
|
||||
background: #fff;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.clear {
|
||||
@@ -103,7 +103,7 @@ body {
|
||||
border: 1px solid #ccc;
|
||||
margin: 0 5px 0 0;
|
||||
background: #fff url(search.png) no-repeat 4px 2px;
|
||||
padding-left: 20px;
|
||||
padding-left: 20px;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
@@ -124,7 +124,7 @@ body {
|
||||
height: 14px;
|
||||
background: url(errorIcon.png) no-repeat;
|
||||
color: #f00;
|
||||
font-weight: bold;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#fbMiniErrors {
|
||||
@@ -139,7 +139,7 @@ body {
|
||||
margin: 3px 4px 0;
|
||||
height: 20px;
|
||||
width: 20px;
|
||||
float: right;
|
||||
float: right;
|
||||
background: url(sprite.png) 0 -135px;
|
||||
cursor: pointer;
|
||||
}
|
||||
@@ -192,10 +192,10 @@ body {
|
||||
}
|
||||
|
||||
/************************************************************************************************
|
||||
Sub-Layout
|
||||
Sub-Layout
|
||||
*************************************************************************************************/
|
||||
|
||||
/* fbToolbar
|
||||
/* fbToolbar
|
||||
*************************************************************************************************/
|
||||
#fbToolbarIcon {
|
||||
float: left;
|
||||
@@ -237,7 +237,7 @@ body {
|
||||
position: relative;
|
||||
top: 5px;
|
||||
line-height: 19px;
|
||||
cursor: default;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.fbToolbarSeparator{
|
||||
@@ -262,7 +262,7 @@ body {
|
||||
|
||||
.fbStatusBar span a:hover {
|
||||
color: blue;
|
||||
cursor: pointer;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
|
||||
@@ -307,7 +307,7 @@ body {
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
/* body
|
||||
/* body
|
||||
*************************************************************************************************/
|
||||
.fbPanel {
|
||||
display: none;
|
||||
@@ -340,7 +340,7 @@ body {
|
||||
visibility: hidden !important;
|
||||
}
|
||||
|
||||
/* fbBottom
|
||||
/* fbBottom
|
||||
*************************************************************************************************/
|
||||
|
||||
#fbCommand {
|
||||
@@ -391,7 +391,7 @@ div.fbFitHeight {
|
||||
Layout Controls
|
||||
*************************************************************************************************/
|
||||
|
||||
/* fbToolbar buttons
|
||||
/* fbToolbar buttons
|
||||
*************************************************************************************************/
|
||||
#fbWindowButtons a {
|
||||
font-size: 1px;
|
||||
@@ -420,7 +420,7 @@ div.fbFitHeight {
|
||||
background: url(sprite.png) -48px -119px;
|
||||
}
|
||||
|
||||
/* fbPanelBarBox tabs
|
||||
/* fbPanelBarBox tabs
|
||||
*************************************************************************************************/
|
||||
.fbTab {
|
||||
text-decoration: none;
|
||||
@@ -475,7 +475,7 @@ a.fbTab:hover .fbTabR {
|
||||
background: url(sprite.png) -8px -96px !important;
|
||||
}
|
||||
|
||||
/* splitters
|
||||
/* splitters
|
||||
*************************************************************************************************/
|
||||
#fbHSplitter {
|
||||
position: absolute;
|
||||
@@ -571,7 +571,7 @@ div.objectBox-element {
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
/* Webkit CSS Hack - bug in "highlight" named color */
|
||||
/* Webkit CSS Hack - bug in "highlight" named color */
|
||||
@media screen and (-webkit-min-device-pixel-ratio:0) {
|
||||
.selectedElement{
|
||||
background: #316AC5;
|
||||
|
||||
0
vendor/firebug-lite/skin/xp/firebug.IE6.css
vendored
Executable file → Normal file
68
vendor/firebug-lite/skin/xp/firebug.css
vendored
Executable file → Normal file
@@ -136,10 +136,10 @@ h1.groupHeader {
|
||||
position: relative;
|
||||
top: -7px;
|
||||
left: -5px;
|
||||
|
||||
|
||||
outline: none;
|
||||
resize: none;
|
||||
|
||||
|
||||
/*
|
||||
_border: 1px solid #999 !important;
|
||||
_padding: 1px !important;
|
||||
@@ -311,17 +311,17 @@ h1.groupHeader {
|
||||
outline: none;
|
||||
background-color: transparent
|
||||
}
|
||||
|
||||
.useA11y .a11yCSSView .focusRow:focus .cssSelector,
|
||||
.useA11y .a11yCSSView .focusRow:focus .cssPropName,
|
||||
|
||||
.useA11y .a11yCSSView .focusRow:focus .cssSelector,
|
||||
.useA11y .a11yCSSView .focusRow:focus .cssPropName,
|
||||
.useA11y .a11yCSSView .focusRow:focus .cssPropValue,
|
||||
.useA11y .a11yCSSView .computedStyleRow:focus,
|
||||
.useA11y .a11yCSSView .computedStyleRow:focus,
|
||||
.useA11y .a11yCSSView .groupHeader:focus {
|
||||
outline: 2px solid #FF9933;
|
||||
outline-offset: -2px;
|
||||
background-color: #FFFFD6;
|
||||
}
|
||||
|
||||
|
||||
.useA11y .a11yCSSView .groupHeader:focus {
|
||||
outline-offset: -2px;
|
||||
}
|
||||
@@ -731,7 +731,7 @@ h1.groupHeader {
|
||||
/* Time Info tip */
|
||||
|
||||
.timeInfoTip {
|
||||
width: 150px;
|
||||
width: 150px;
|
||||
height: 40px
|
||||
}
|
||||
|
||||
@@ -944,7 +944,7 @@ h1.groupHeader {
|
||||
/*overflow-x: auto; HTML is damaged in case of big (2-3MB) responses */
|
||||
}
|
||||
|
||||
/* replaced by .netInfoTextSelected for IE6 support
|
||||
/* replaced by .netInfoTextSelected for IE6 support
|
||||
.netInfoText[selected="true"] {
|
||||
display: block;
|
||||
}
|
||||
@@ -963,7 +963,7 @@ h1.groupHeader {
|
||||
}
|
||||
|
||||
.netInfoPostText .netInfoParamName {
|
||||
width: 1px; /* Google Chrome need this otherwise the first column of
|
||||
width: 1px; /* Google Chrome need this otherwise the first column of
|
||||
the post variables table will be larger than expected */
|
||||
}
|
||||
|
||||
@@ -1148,7 +1148,7 @@ h1.groupHeader {
|
||||
}
|
||||
|
||||
* html .opened .spyHead .spyTitle,
|
||||
* html .opened .logGroupLabel,
|
||||
* html .opened .logGroupLabel,
|
||||
* html .opened .memberLabelCell .memberLabel {
|
||||
background-image: url(tree_close.gif);
|
||||
background-repeat: no-repeat;
|
||||
@@ -1677,7 +1677,7 @@ h1.groupHeader {
|
||||
/*
|
||||
.logRow-errorMessage > .hasTwisty > .errorTitle,
|
||||
.logRow-spy .spyHead .spyTitle,
|
||||
.logGroup > .logRow
|
||||
.logGroup > .logRow
|
||||
*/
|
||||
.logRow-errorMessage .hasTwisty .errorTitle,
|
||||
.logRow-spy .spyHead .spyTitle,
|
||||
@@ -2056,11 +2056,11 @@ h1.groupHeader {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
margin-top: 6px;
|
||||
background: url(tabMenuTarget.png);
|
||||
background: url(tabMenuTarget.png);
|
||||
}
|
||||
|
||||
.fbTabMenuTarget:hover {
|
||||
background: url(tabMenuTargetHover.png);
|
||||
background: url(tabMenuTargetHover.png);
|
||||
}
|
||||
|
||||
.fbShadow {
|
||||
@@ -2098,7 +2098,7 @@ h1.groupHeader {
|
||||
padding: 1px 18px 0;
|
||||
text-decoration: none;
|
||||
color: #000;
|
||||
cursor: default;
|
||||
cursor: default;
|
||||
background: #ACA899;
|
||||
margin: 4px 0;
|
||||
}
|
||||
@@ -2149,7 +2149,7 @@ h1.groupHeader {
|
||||
}
|
||||
|
||||
.fbMenuShortcut {
|
||||
padding-right: 85px;
|
||||
padding-right: 85px;
|
||||
}
|
||||
|
||||
.fbMenuShortcutKey {
|
||||
@@ -2274,7 +2274,7 @@ h1.groupHeader {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
overflow: hidden;
|
||||
|
||||
|
||||
font-family: Lucida Grande, Tahoma, sans-serif;
|
||||
font-size: 11px;
|
||||
background: #fff;
|
||||
@@ -2311,7 +2311,7 @@ h1.groupHeader {
|
||||
margin: 0 5px 0 0;
|
||||
background: #fff url(search.png) no-repeat 4px 2px !important;
|
||||
background: #fff url(search.gif) no-repeat 4px 2px;
|
||||
padding-left: 20px;
|
||||
padding-left: 20px;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
@@ -2333,7 +2333,7 @@ h1.groupHeader {
|
||||
background: url(errorIcon.png) no-repeat !important;
|
||||
background: url(errorIcon.gif) no-repeat;
|
||||
color: #f00;
|
||||
font-weight: bold;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#fbMiniErrors {
|
||||
@@ -2348,7 +2348,7 @@ h1.groupHeader {
|
||||
margin: 3px 4px 0;
|
||||
height: 20px;
|
||||
width: 20px;
|
||||
float: right;
|
||||
float: right;
|
||||
background: url(sprite.png) 0 -135px;
|
||||
cursor: pointer;
|
||||
}
|
||||
@@ -2403,10 +2403,10 @@ h1.groupHeader {
|
||||
}
|
||||
|
||||
/************************************************************************************************
|
||||
Sub-Layout
|
||||
Sub-Layout
|
||||
*************************************************************************************************/
|
||||
|
||||
/* fbToolbar
|
||||
/* fbToolbar
|
||||
*************************************************************************************************/
|
||||
#fbToolbarIcon {
|
||||
float: left;
|
||||
@@ -2472,7 +2472,7 @@ h1.groupHeader {
|
||||
|
||||
#fbStatusBarBox {
|
||||
top: 4px;
|
||||
cursor: default;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.fbToolbarSeparator {
|
||||
@@ -2500,7 +2500,7 @@ h1.groupHeader {
|
||||
|
||||
.fbStatusBar a:hover {
|
||||
color: blue;
|
||||
cursor: pointer;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
|
||||
@@ -2545,7 +2545,7 @@ h1.groupHeader {
|
||||
padding-left: 4px;
|
||||
}
|
||||
|
||||
/* body
|
||||
/* body
|
||||
*************************************************************************************************/
|
||||
.fbPanel {
|
||||
display: none;
|
||||
@@ -2609,7 +2609,7 @@ h1.groupHeader {
|
||||
position: absolute;
|
||||
right: 2px;
|
||||
bottom: 3px;
|
||||
|
||||
|
||||
z-index: 99;
|
||||
}
|
||||
|
||||
@@ -2624,7 +2624,7 @@ h1.groupHeader {
|
||||
visibility: hidden !important;
|
||||
}
|
||||
|
||||
/* fbBottom
|
||||
/* fbBottom
|
||||
*************************************************************************************************/
|
||||
|
||||
#fbCommand {
|
||||
@@ -2689,7 +2689,7 @@ div.fbFitHeight {
|
||||
Layout Controls
|
||||
*************************************************************************************************/
|
||||
|
||||
/* fbToolbar buttons
|
||||
/* fbToolbar buttons
|
||||
*************************************************************************************************/
|
||||
.fbSmallButton {
|
||||
overflow: hidden;
|
||||
@@ -2729,7 +2729,7 @@ div.fbFitHeight {
|
||||
}
|
||||
|
||||
|
||||
/* fbPanelBarBox tabs
|
||||
/* fbPanelBarBox tabs
|
||||
*************************************************************************************************/
|
||||
.fbTab {
|
||||
text-decoration: none;
|
||||
@@ -2785,7 +2785,7 @@ a.fbTab:hover .fbTabR {
|
||||
background: url(sprite.png) -8px -96px !important;
|
||||
}
|
||||
|
||||
/* splitters
|
||||
/* splitters
|
||||
*************************************************************************************************/
|
||||
#fbHSplitter {
|
||||
position: fixed;
|
||||
@@ -2888,7 +2888,7 @@ div.objectBox-element {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
/* Webkit CSS Hack - bug in "highlight" named color */
|
||||
/* Webkit CSS Hack - bug in "highlight" named color */
|
||||
@media screen and (-webkit-min-device-pixel-ratio:0) {
|
||||
.selectedElement{
|
||||
background: #316AC5;
|
||||
@@ -2903,7 +2903,7 @@ div.objectBox-element {
|
||||
}
|
||||
|
||||
/* TODO: remove this? */
|
||||
/* TODO: xxxpedro - IE need this in windowless mode (cnn.com) check if the issue is related to
|
||||
/* TODO: xxxpedro - IE need this in windowless mode (cnn.com) check if the issue is related to
|
||||
position. if so, override it at chrome.js initialization when creating the div */
|
||||
.logRow {
|
||||
position: relative;
|
||||
@@ -2939,9 +2939,9 @@ position. if so, override it at chrome.js initialization when creating the div *
|
||||
|
||||
.objectBox-string {
|
||||
color: red;
|
||||
|
||||
|
||||
/* TODO: xxxpedro make long strings break line */
|
||||
/*white-space: pre; */
|
||||
/*white-space: pre; */
|
||||
}
|
||||
|
||||
.objectBox-number {
|
||||
|
||||
80
vendor/firebug-lite/skin/xp/firebug.html
vendored
Executable file → Normal file
@@ -14,71 +14,71 @@
|
||||
<tr>
|
||||
<!-- Interface - Top Area -->
|
||||
<td id="fbTop" colspan="2">
|
||||
|
||||
<!--
|
||||
|
||||
<!--
|
||||
<div>
|
||||
--><!-- <span id="fbToolbarErrors" class="fbErrors">2 errors</span> --><!--
|
||||
--><!-- <span id="fbToolbarErrors" class="fbErrors">2 errors</span> --><!--
|
||||
<input type="text" id="fbToolbarSearch" />
|
||||
</div>
|
||||
-->
|
||||
|
||||
|
||||
<!-- Window Buttons -->
|
||||
<div id="fbWindowButtons">
|
||||
<a id="fbWindow_btDeactivate" class="fbSmallButton fbHover" title="Deactivate Firebug for this web page"> </a>
|
||||
<a id="fbWindow_btDetach" class="fbSmallButton fbHover" title="Open Firebug in popup window"> </a>
|
||||
<a id="fbWindow_btClose" class="fbSmallButton fbHover" title="Minimize Firebug"> </a>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Toolbar buttons and Status Bar -->
|
||||
<div id="fbToolbar">
|
||||
<div id="fbToolbarContent">
|
||||
|
||||
|
||||
<!-- Firebug Button -->
|
||||
<span id="fbToolbarIcon">
|
||||
<a id="fbFirebugButton" class="fbIconButton" class="fbHover" target="_blank"> </a>
|
||||
</span>
|
||||
|
||||
<!--
|
||||
|
||||
<!--
|
||||
<span id="fbLeftToolbarErrors" class="fbErrors">2 errors</span>
|
||||
-->
|
||||
|
||||
|
||||
<!-- Toolbar Buttons -->
|
||||
<span id="fbToolbarButtons">
|
||||
<!-- Fixed Toolbar Buttons -->
|
||||
<span id="fbFixedButtons">
|
||||
<a id="fbChrome_btInspect" class="fbButton fbHover" title="Click an element in the page to inspect">Inspect</a>
|
||||
</span>
|
||||
|
||||
|
||||
<!-- Console Panel Toolbar Buttons -->
|
||||
<span id="fbConsoleButtons" class="fbToolbarButtons">
|
||||
<a id="fbConsole_btClear" class="fbButton fbHover" title="Clear the console">Clear</a>
|
||||
</span>
|
||||
|
||||
|
||||
<!-- HTML Panel Toolbar Buttons -->
|
||||
<!--
|
||||
<!--
|
||||
<span id="fbHTMLButtons" class="fbToolbarButtons">
|
||||
<a id="fbHTML_btEdit" class="fbHover" title="Edit this HTML">Edit</a>
|
||||
</span>
|
||||
-->
|
||||
</span>
|
||||
|
||||
|
||||
<!-- Status Bar -->
|
||||
<span id="fbStatusBarBox">
|
||||
<span class="fbToolbarSeparator"></span>
|
||||
<!-- HTML Panel Status Bar -->
|
||||
<!--
|
||||
<!--
|
||||
<span id="fbHTMLStatusBar" class="fbStatusBar fbToolbarButtons">
|
||||
</span>
|
||||
-->
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<!-- PanelBars -->
|
||||
<div id="fbPanelBarBox">
|
||||
|
||||
|
||||
<!-- Main PanelBar -->
|
||||
<div id="fbPanelBar1" class="fbPanelBar">
|
||||
<a id="fbConsoleTab" class="fbTab fbHover">
|
||||
@@ -112,7 +112,7 @@
|
||||
<!-- Side PanelBars -->
|
||||
<div id="fbPanelBar2Box" class="hide">
|
||||
<div id="fbPanelBar2" class="fbPanelBar">
|
||||
<!--
|
||||
<!--
|
||||
<a class="fbTab fbHover">
|
||||
<span class="fbTabL"></span>
|
||||
<span class="fbTabText">Style</span>
|
||||
@@ -131,18 +131,18 @@
|
||||
-->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Horizontal Splitter -->
|
||||
<div id="fbHSplitter"> </div>
|
||||
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<!-- Interface - Main Area -->
|
||||
<tr id="fbContent">
|
||||
|
||||
|
||||
<!-- Panels -->
|
||||
<td id="fbPanelBox1">
|
||||
<div id="fbPanel1" class="fbFitHeight">
|
||||
@@ -150,41 +150,41 @@
|
||||
<div id="fbHTML" class="fbPanel"></div>
|
||||
</div>
|
||||
</td>
|
||||
|
||||
|
||||
<!-- Side Panel Box -->
|
||||
<td id="fbPanelBox2" class="hide">
|
||||
|
||||
|
||||
<!-- VerticalSplitter -->
|
||||
<div id="fbVSplitter" class="fbVSplitter"> </div>
|
||||
|
||||
|
||||
<!-- Side Panels -->
|
||||
<div id="fbPanel2" class="fbFitHeight">
|
||||
|
||||
|
||||
<!-- HTML Side Panels -->
|
||||
<div id="fbHTML_Style" class="fbPanel"></div>
|
||||
<div id="fbHTML_Layout" class="fbPanel"></div>
|
||||
<div id="fbHTML_DOM" class="fbPanel"></div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Large Command Line -->
|
||||
<textarea id="fbLargeCommandLine" class="fbFitHeight"></textarea>
|
||||
|
||||
|
||||
<!-- Large Command Line Buttons -->
|
||||
<div id="fbLargeCommandButtons">
|
||||
<a id="fbCommand_btRun" class="fbButton fbHover">Run</a>
|
||||
<a id="fbCommand_btClear" class="fbButton fbHover">Clear</a>
|
||||
|
||||
|
||||
<a id="fbSmallCommandLineIcon" class="fbSmallButton fbHover"></a>
|
||||
</div>
|
||||
|
||||
|
||||
</td>
|
||||
|
||||
|
||||
</tr>
|
||||
|
||||
|
||||
<!-- Interface - Bottom Area -->
|
||||
<tr id="fbBottom" class="hide">
|
||||
|
||||
|
||||
<!-- Command Line -->
|
||||
<td id="fbCommand" colspan="2">
|
||||
<div id="fbCommandBox">
|
||||
@@ -193,18 +193,18 @@
|
||||
<a id="fbLargeCommandLineIcon" class="fbSmallButton fbHover"></a>
|
||||
</div>
|
||||
</td>
|
||||
|
||||
|
||||
</tr>
|
||||
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</table>
|
||||
<span id="fbMiniChrome">
|
||||
<span id="fbMiniContent">
|
||||
<span id="fbMiniIcon" title="Open Firebug Lite"></span>
|
||||
<span id="fbMiniErrors" class="fbErrors"><!-- 2 errors --></span>
|
||||
</span>
|
||||
</span>
|
||||
<!--
|
||||
<!--
|
||||
<div id="fbErrorPopup">
|
||||
<div id="fbErrorPopupContent">
|
||||
<div id="fbErrorIndicator" class="fbErrors">2 errors</div>
|
||||
|
||||
0
vendor/firebug-lite/skin/xp/firebug.png
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
0
vendor/firebug-lite/skin/xp/group.gif
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 158 B After Width: | Height: | Size: 158 B |
0
vendor/firebug-lite/skin/xp/html.css
vendored
Executable file → Normal file
0
vendor/firebug-lite/skin/xp/infoIcon.gif
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 359 B After Width: | Height: | Size: 359 B |
0
vendor/firebug-lite/skin/xp/infoIcon.png
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 524 B After Width: | Height: | Size: 524 B |
0
vendor/firebug-lite/skin/xp/loading_16.gif
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
0
vendor/firebug-lite/skin/xp/min.png
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 552 B After Width: | Height: | Size: 552 B |
0
vendor/firebug-lite/skin/xp/minHover.png
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 485 B After Width: | Height: | Size: 485 B |
0
vendor/firebug-lite/skin/xp/off.png
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 742 B After Width: | Height: | Size: 742 B |
0
vendor/firebug-lite/skin/xp/offHover.png
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 680 B After Width: | Height: | Size: 680 B |
0
vendor/firebug-lite/skin/xp/pixel_transparent.gif
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 43 B After Width: | Height: | Size: 43 B |
0
vendor/firebug-lite/skin/xp/roundCorner.svg
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 228 B After Width: | Height: | Size: 228 B |
0
vendor/firebug-lite/skin/xp/search.gif
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 550 B After Width: | Height: | Size: 550 B |
0
vendor/firebug-lite/skin/xp/search.png
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 685 B After Width: | Height: | Size: 685 B |
0
vendor/firebug-lite/skin/xp/shadow.gif
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.3 KiB |
0
vendor/firebug-lite/skin/xp/shadow2.gif
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.0 KiB |
0
vendor/firebug-lite/skin/xp/shadowAlpha.png
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
0
vendor/firebug-lite/skin/xp/sprite.png
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 39 KiB |
0
vendor/firebug-lite/skin/xp/tabHoverLeft.png
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 438 B After Width: | Height: | Size: 438 B |
0
vendor/firebug-lite/skin/xp/tabHoverMid.png
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 261 B After Width: | Height: | Size: 261 B |
0
vendor/firebug-lite/skin/xp/tabHoverRight.png
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 436 B After Width: | Height: | Size: 436 B |
0
vendor/firebug-lite/skin/xp/tabLeft.png
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 449 B After Width: | Height: | Size: 449 B |
0
vendor/firebug-lite/skin/xp/tabMenuCheckbox.png
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 220 B After Width: | Height: | Size: 220 B |
0
vendor/firebug-lite/skin/xp/tabMenuPin.png
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 207 B After Width: | Height: | Size: 207 B |
0
vendor/firebug-lite/skin/xp/tabMenuRadio.png
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 192 B After Width: | Height: | Size: 192 B |
0
vendor/firebug-lite/skin/xp/tabMenuTarget.png
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 142 B After Width: | Height: | Size: 142 B |
0
vendor/firebug-lite/skin/xp/tabMenuTargetHover.png
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 148 B After Width: | Height: | Size: 148 B |
0
vendor/firebug-lite/skin/xp/tabMid.png
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 262 B After Width: | Height: | Size: 262 B |
0
vendor/firebug-lite/skin/xp/tabRight.png
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 448 B After Width: | Height: | Size: 448 B |
0
vendor/firebug-lite/skin/xp/textEditorBorders.gif
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 117 B After Width: | Height: | Size: 117 B |
0
vendor/firebug-lite/skin/xp/textEditorBorders.png
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.1 KiB |
0
vendor/firebug-lite/skin/xp/textEditorCorners.gif
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
0
vendor/firebug-lite/skin/xp/textEditorCorners.png
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB |
0
vendor/firebug-lite/skin/xp/titlebarMid.png
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 273 B After Width: | Height: | Size: 273 B |
0
vendor/firebug-lite/skin/xp/toolbarMid.png
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 242 B After Width: | Height: | Size: 242 B |
0
vendor/firebug-lite/skin/xp/tree_close.gif
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 300 B After Width: | Height: | Size: 300 B |
0
vendor/firebug-lite/skin/xp/tree_open.gif
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 202 B After Width: | Height: | Size: 202 B |
0
vendor/firebug-lite/skin/xp/twistyClosed.png
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 334 B After Width: | Height: | Size: 334 B |
0
vendor/firebug-lite/skin/xp/twistyOpen.png
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 309 B After Width: | Height: | Size: 309 B |
0
vendor/firebug-lite/skin/xp/up.png
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 619 B After Width: | Height: | Size: 619 B |
0
vendor/firebug-lite/skin/xp/upActive.png
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 551 B After Width: | Height: | Size: 551 B |
0
vendor/firebug-lite/skin/xp/upHover.png
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 526 B After Width: | Height: | Size: 526 B |
0
vendor/firebug-lite/skin/xp/warningIcon.gif
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 357 B After Width: | Height: | Size: 357 B |
0
vendor/firebug-lite/skin/xp/warningIcon.png
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 516 B After Width: | Height: | Size: 516 B |
2
vendor/firebug-lite/src/firebug-lite-debug.js
vendored
Executable file → Normal file
@@ -6258,7 +6258,7 @@ FBL.Firebug =
|
||||
{
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
version: "Firebug Lite 1.4.0",
|
||||
revision: "$Revision: 11967 $",
|
||||
revision: "$Revision$",
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
modules: modules,
|
||||
|
||||
126
vendor/json-js/json2.js
vendored
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
json2.js
|
||||
2014-02-04
|
||||
2015-05-03
|
||||
|
||||
Public Domain.
|
||||
|
||||
@@ -17,7 +17,9 @@
|
||||
|
||||
|
||||
This file creates a global JSON object containing two methods: stringify
|
||||
and parse.
|
||||
and parse. This file is provides the ES5 JSON capability to ES3 systems.
|
||||
If a project might run on IE8 or earlier, then this file should be included.
|
||||
This file does nothing on ES5 systems.
|
||||
|
||||
JSON.stringify(value, replacer, space)
|
||||
value any JavaScript value, usually an object or array.
|
||||
@@ -48,7 +50,9 @@
|
||||
Date.prototype.toJSON = function (key) {
|
||||
function f(n) {
|
||||
// Format integers to have at least two digits.
|
||||
return n < 10 ? '0' + n : n;
|
||||
return n < 10
|
||||
? '0' + n
|
||||
: n;
|
||||
}
|
||||
|
||||
return this.getUTCFullYear() + '-' +
|
||||
@@ -94,8 +98,9 @@
|
||||
// text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]'
|
||||
|
||||
text = JSON.stringify([new Date()], function (key, value) {
|
||||
return this[key] instanceof Date ?
|
||||
'Date(' + this[key] + ')' : value;
|
||||
return this[key] instanceof Date
|
||||
? 'Date(' + this[key] + ')'
|
||||
: value;
|
||||
});
|
||||
// text is '["Date(---current time---)"]'
|
||||
|
||||
@@ -146,10 +151,12 @@
|
||||
redistribute.
|
||||
*/
|
||||
|
||||
/*jslint evil: true, regexp: true */
|
||||
/*jslint
|
||||
eval, for, this
|
||||
*/
|
||||
|
||||
/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply,
|
||||
call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
|
||||
/*property
|
||||
JSON, apply, call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
|
||||
getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,
|
||||
lastIndex, length, parse, prototype, push, replace, slice, stringify,
|
||||
test, toJSON, toString, valueOf
|
||||
@@ -165,10 +172,23 @@ if (typeof JSON !== 'object') {
|
||||
|
||||
(function () {
|
||||
'use strict';
|
||||
|
||||
var rx_one = /^[\],:{}\s]*$/,
|
||||
rx_two = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
|
||||
rx_three = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
|
||||
rx_four = /(?:^|:|,)(?:\s*\[)+/g,
|
||||
rx_escapable = /[\\\"\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
|
||||
rx_dangerous = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
|
||||
|
||||
function f(n) {
|
||||
// Format integers to have at least two digits.
|
||||
return n < 10 ? '0' + n : n;
|
||||
return n < 10
|
||||
? '0' + n
|
||||
: n;
|
||||
}
|
||||
|
||||
function this_value() {
|
||||
return this.valueOf();
|
||||
}
|
||||
|
||||
if (typeof Date.prototype.toJSON !== 'function') {
|
||||
@@ -176,25 +196,21 @@ if (typeof JSON !== 'object') {
|
||||
Date.prototype.toJSON = function () {
|
||||
|
||||
return isFinite(this.valueOf())
|
||||
? this.getUTCFullYear() + '-' +
|
||||
f(this.getUTCMonth() + 1) + '-' +
|
||||
f(this.getUTCDate()) + 'T' +
|
||||
f(this.getUTCHours()) + ':' +
|
||||
f(this.getUTCMinutes()) + ':' +
|
||||
f(this.getUTCSeconds()) + 'Z'
|
||||
? this.getUTCFullYear() + '-' +
|
||||
f(this.getUTCMonth() + 1) + '-' +
|
||||
f(this.getUTCDate()) + 'T' +
|
||||
f(this.getUTCHours()) + ':' +
|
||||
f(this.getUTCMinutes()) + ':' +
|
||||
f(this.getUTCSeconds()) + 'Z'
|
||||
: null;
|
||||
};
|
||||
|
||||
String.prototype.toJSON =
|
||||
Number.prototype.toJSON =
|
||||
Boolean.prototype.toJSON = function () {
|
||||
return this.valueOf();
|
||||
};
|
||||
Boolean.prototype.toJSON = this_value;
|
||||
Number.prototype.toJSON = this_value;
|
||||
String.prototype.toJSON = this_value;
|
||||
}
|
||||
|
||||
var cx,
|
||||
escapable,
|
||||
gap,
|
||||
var gap,
|
||||
indent,
|
||||
meta,
|
||||
rep;
|
||||
@@ -207,13 +223,15 @@ if (typeof JSON !== 'object') {
|
||||
// Otherwise we must also replace the offending characters with safe escape
|
||||
// sequences.
|
||||
|
||||
escapable.lastIndex = 0;
|
||||
return escapable.test(string) ? '"' + string.replace(escapable, function (a) {
|
||||
var c = meta[a];
|
||||
return typeof c === 'string'
|
||||
? c
|
||||
: '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
|
||||
}) + '"' : '"' + string + '"';
|
||||
rx_escapable.lastIndex = 0;
|
||||
return rx_escapable.test(string)
|
||||
? '"' + string.replace(rx_escapable, function (a) {
|
||||
var c = meta[a];
|
||||
return typeof c === 'string'
|
||||
? c
|
||||
: '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
|
||||
}) + '"'
|
||||
: '"' + string + '"';
|
||||
}
|
||||
|
||||
|
||||
@@ -253,7 +271,9 @@ if (typeof JSON !== 'object') {
|
||||
|
||||
// JSON numbers must be finite. Encode non-finite numbers as null.
|
||||
|
||||
return isFinite(value) ? String(value) : 'null';
|
||||
return isFinite(value)
|
||||
? String(value)
|
||||
: 'null';
|
||||
|
||||
case 'boolean':
|
||||
case 'null':
|
||||
@@ -299,8 +319,8 @@ if (typeof JSON !== 'object') {
|
||||
v = partial.length === 0
|
||||
? '[]'
|
||||
: gap
|
||||
? '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']'
|
||||
: '[' + partial.join(',') + ']';
|
||||
? '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']'
|
||||
: '[' + partial.join(',') + ']';
|
||||
gap = mind;
|
||||
return v;
|
||||
}
|
||||
@@ -314,7 +334,11 @@ if (typeof JSON !== 'object') {
|
||||
k = rep[i];
|
||||
v = str(k, value);
|
||||
if (v) {
|
||||
partial.push(quote(k) + (gap ? ': ' : ':') + v);
|
||||
partial.push(quote(k) + (
|
||||
gap
|
||||
? ': '
|
||||
: ':'
|
||||
) + v);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -326,7 +350,11 @@ if (typeof JSON !== 'object') {
|
||||
if (Object.prototype.hasOwnProperty.call(value, k)) {
|
||||
v = str(k, value);
|
||||
if (v) {
|
||||
partial.push(quote(k) + (gap ? ': ' : ':') + v);
|
||||
partial.push(quote(k) + (
|
||||
gap
|
||||
? ': '
|
||||
: ':'
|
||||
) + v);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -338,8 +366,8 @@ if (typeof JSON !== 'object') {
|
||||
v = partial.length === 0
|
||||
? '{}'
|
||||
: gap
|
||||
? '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}'
|
||||
: '{' + partial.join(',') + '}';
|
||||
? '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}'
|
||||
: '{' + partial.join(',') + '}';
|
||||
gap = mind;
|
||||
return v;
|
||||
}
|
||||
@@ -348,14 +376,13 @@ if (typeof JSON !== 'object') {
|
||||
// If the JSON object does not yet have a stringify method, give it one.
|
||||
|
||||
if (typeof JSON.stringify !== 'function') {
|
||||
escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
|
||||
meta = { // table of character substitutions
|
||||
'\b': '\\b',
|
||||
'\t': '\\t',
|
||||
'\n': '\\n',
|
||||
'\f': '\\f',
|
||||
'\r': '\\r',
|
||||
'"' : '\\"',
|
||||
'"': '\\"',
|
||||
'\\': '\\\\'
|
||||
};
|
||||
JSON.stringify = function (value, replacer, space) {
|
||||
@@ -405,7 +432,6 @@ if (typeof JSON !== 'object') {
|
||||
// If the JSON object does not yet have a parse method, give it one.
|
||||
|
||||
if (typeof JSON.parse !== 'function') {
|
||||
cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
|
||||
JSON.parse = function (text, reviver) {
|
||||
|
||||
// The parse method takes a text and an optional reviver function, and returns
|
||||
@@ -440,11 +466,11 @@ if (typeof JSON !== 'object') {
|
||||
// incorrectly, either silently deleting them, or treating them as line endings.
|
||||
|
||||
text = String(text);
|
||||
cx.lastIndex = 0;
|
||||
if (cx.test(text)) {
|
||||
text = text.replace(cx, function (a) {
|
||||
rx_dangerous.lastIndex = 0;
|
||||
if (rx_dangerous.test(text)) {
|
||||
text = text.replace(rx_dangerous, function (a) {
|
||||
return '\\u' +
|
||||
('0000' + a.charCodeAt(0).toString(16)).slice(-4);
|
||||
('0000' + a.charCodeAt(0).toString(16)).slice(-4);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -461,10 +487,14 @@ if (typeof JSON !== 'object') {
|
||||
// we look to see that the remaining characters are only whitespace or ']' or
|
||||
// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.
|
||||
|
||||
if (/^[\],:{}\s]*$/
|
||||
.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')
|
||||
.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']')
|
||||
.replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
|
||||
if (
|
||||
rx_one.test(
|
||||
text
|
||||
.replace(rx_two, '@')
|
||||
.replace(rx_three, ']')
|
||||
.replace(rx_four, '')
|
||||
)
|
||||
) {
|
||||
|
||||
// In the third stage we use the eval function to compile the text into a
|
||||
// JavaScript structure. The '{' operator is subject to a syntactic ambiguity
|
||||
|
||||
6
vendor/underscore/test/arrays.js
vendored
@@ -344,6 +344,9 @@
|
||||
strictEqual(_.indexOf([1, 2, NaN, NaN], NaN), 2, 'Expected [1, 2, NaN] to contain NaN');
|
||||
strictEqual(_.indexOf([1, 2, Infinity], NaN), -1, 'Expected [1, 2, NaN] to contain NaN');
|
||||
|
||||
strictEqual(_.indexOf([1, 2, NaN, NaN], NaN, 1), 2, 'startIndex does not affect result');
|
||||
strictEqual(_.indexOf([1, 2, NaN, NaN], NaN, -2), 2, 'startIndex does not affect result');
|
||||
|
||||
(function() {
|
||||
strictEqual(_.indexOf(arguments, NaN), 2, 'Expected arguments [1, 2, NaN] to contain NaN');
|
||||
}(1, 2, NaN, NaN));
|
||||
@@ -418,6 +421,9 @@
|
||||
strictEqual(_.lastIndexOf([1, 2, NaN, NaN], NaN), 3, 'Expected [1, 2, NaN] to contain NaN');
|
||||
strictEqual(_.lastIndexOf([1, 2, Infinity], NaN), -1, 'Expected [1, 2, NaN] to contain NaN');
|
||||
|
||||
strictEqual(_.lastIndexOf([1, 2, NaN, NaN], NaN, 2), 2, 'fromIndex does not affect result');
|
||||
strictEqual(_.lastIndexOf([1, 2, NaN, NaN], NaN, -2), 2, 'fromIndex does not affect result');
|
||||
|
||||
(function() {
|
||||
strictEqual(_.lastIndexOf(arguments, NaN), 3, 'Expected arguments [1, 2, NaN] to contain NaN');
|
||||
}(1, 2, NaN, NaN));
|
||||
|
||||
22
vendor/underscore/test/collections.js
vendored
@@ -23,6 +23,13 @@
|
||||
deepEqual(answers, ['one', 'two', 'three'], 'iterating over objects works, and ignores the object prototype.');
|
||||
delete obj.constructor.prototype.four;
|
||||
|
||||
// ensure the each function is JITed
|
||||
_(1000).times(function() { _.each([], function(){}); });
|
||||
var count = 0;
|
||||
obj = {1 : 'foo', 2 : 'bar', 3 : 'baz'};
|
||||
_.each(obj, function(value, key){ count++; });
|
||||
equal(count, 3, 'the fun should be called only 3 times');
|
||||
|
||||
var answer = null;
|
||||
_.each([1, 2, 3], function(num, index, arr){ if (_.include(arr, num)) answer = true; });
|
||||
ok(answer, 'can reference the original collection from inside the iterator');
|
||||
@@ -420,12 +427,14 @@
|
||||
strictEqual(_.includes, _.contains, 'alias for includes');
|
||||
|
||||
var numbers = [1, 2, 3, 1, 2, 3, 1, 2, 3];
|
||||
strictEqual(_.includes(numbers, 1, 1), true);
|
||||
strictEqual(_.includes(numbers, 1, -1), false);
|
||||
strictEqual(_.includes(numbers, 1, -2), false);
|
||||
strictEqual(_.includes(numbers, 1, -3), true);
|
||||
strictEqual(_.includes(numbers, 1, 6), true);
|
||||
strictEqual(_.includes(numbers, 1, 7), false);
|
||||
strictEqual(_.includes(numbers, 1, 1), true, 'contains takes a fromIndex');
|
||||
strictEqual(_.includes(numbers, 1, -1), false, 'contains takes a fromIndex');
|
||||
strictEqual(_.includes(numbers, 1, -2), false, 'contains takes a fromIndex');
|
||||
strictEqual(_.includes(numbers, 1, -3), true, 'contains takes a fromIndex');
|
||||
strictEqual(_.includes(numbers, 1, 6), true, 'contains takes a fromIndex');
|
||||
strictEqual(_.includes(numbers, 1, 7), false, 'contains takes a fromIndex');
|
||||
|
||||
ok(_.every([1, 2, 3], _.partial(_.contains, numbers)), 'fromIndex is guarded');
|
||||
});
|
||||
|
||||
test('includes with NaN', function() {
|
||||
@@ -789,6 +798,7 @@
|
||||
equal(_.size(new String('hello')), 5, 'can compute the size of string object');
|
||||
|
||||
equal(_.size(null), 0, 'handles nulls');
|
||||
equal(_.size(0), 0, 'handles numbers');
|
||||
});
|
||||
|
||||
test('partition', function() {
|
||||
|
||||
141
vendor/underscore/test/cross-document.js
vendored
Normal file
@@ -0,0 +1,141 @@
|
||||
(function() {
|
||||
if (typeof document == 'undefined') return;
|
||||
|
||||
var _ = typeof require == 'function' ? require('..') : window._;
|
||||
|
||||
QUnit.module('Cross Document');
|
||||
/* global iObject, iElement, iArguments, iFunction, iArray, iError, iString, iNumber, iBoolean, iDate, iRegExp, iNaN, iNull, iUndefined, ActiveXObject */
|
||||
|
||||
// Setup remote variables for iFrame tests.
|
||||
var iframe = document.createElement('iframe');
|
||||
iframe.frameBorder = iframe.height = iframe.width = 0;
|
||||
document.body.appendChild(iframe);
|
||||
var iDoc = (iDoc = iframe.contentDocument || iframe.contentWindow).document || iDoc;
|
||||
iDoc.write(
|
||||
[
|
||||
'<script>',
|
||||
'parent.iElement = document.createElement("div");',
|
||||
'parent.iArguments = (function(){ return arguments; })(1, 2, 3);',
|
||||
'parent.iArray = [1, 2, 3];',
|
||||
'parent.iString = new String("hello");',
|
||||
'parent.iNumber = new Number(100);',
|
||||
'parent.iFunction = (function(){});',
|
||||
'parent.iDate = new Date();',
|
||||
'parent.iRegExp = /hi/;',
|
||||
'parent.iNaN = NaN;',
|
||||
'parent.iNull = null;',
|
||||
'parent.iBoolean = new Boolean(false);',
|
||||
'parent.iUndefined = undefined;',
|
||||
'parent.iObject = {};',
|
||||
'parent.iError = new Error();',
|
||||
'</script>'
|
||||
].join('\n')
|
||||
);
|
||||
iDoc.close();
|
||||
|
||||
test('isEqual', function() {
|
||||
|
||||
ok(!_.isEqual(iNumber, 101));
|
||||
ok(_.isEqual(iNumber, 100));
|
||||
|
||||
// Objects from another frame.
|
||||
ok(_.isEqual({}, iObject), 'Objects with equivalent members created in different documents are equal');
|
||||
|
||||
// Array from another frame.
|
||||
ok(_.isEqual([1, 2, 3], iArray), 'Arrays with equivalent elements created in different documents are equal');
|
||||
});
|
||||
|
||||
test('isEmpty', function() {
|
||||
ok(!_([iNumber]).isEmpty(), '[1] is not empty');
|
||||
ok(!_.isEmpty(iArray), '[] is empty');
|
||||
ok(_.isEmpty(iObject), '{} is empty');
|
||||
});
|
||||
|
||||
test('isElement', function() {
|
||||
ok(!_.isElement('div'), 'strings are not dom elements');
|
||||
ok(_.isElement(document.body), 'the body tag is a DOM element');
|
||||
ok(_.isElement(iElement), 'even from another frame');
|
||||
});
|
||||
|
||||
test('isArguments', function() {
|
||||
ok(_.isArguments(iArguments), 'even from another frame');
|
||||
});
|
||||
|
||||
test('isObject', function() {
|
||||
ok(_.isObject(iElement), 'even from another frame');
|
||||
ok(_.isObject(iFunction), 'even from another frame');
|
||||
});
|
||||
|
||||
test('isArray', function() {
|
||||
ok(_.isArray(iArray), 'even from another frame');
|
||||
});
|
||||
|
||||
test('isString', function() {
|
||||
ok(_.isString(iString), 'even from another frame');
|
||||
});
|
||||
|
||||
test('isNumber', function() {
|
||||
ok(_.isNumber(iNumber), 'even from another frame');
|
||||
});
|
||||
|
||||
test('isBoolean', function() {
|
||||
ok(_.isBoolean(iBoolean), 'even from another frame');
|
||||
});
|
||||
|
||||
test('isFunction', function() {
|
||||
ok(_.isFunction(iFunction), 'even from another frame');
|
||||
});
|
||||
|
||||
test('isDate', function() {
|
||||
ok(_.isDate(iDate), 'even from another frame');
|
||||
});
|
||||
|
||||
test('isRegExp', function() {
|
||||
ok(_.isRegExp(iRegExp), 'even from another frame');
|
||||
});
|
||||
|
||||
test('isNaN', function() {
|
||||
ok(_.isNaN(iNaN), 'even from another frame');
|
||||
});
|
||||
|
||||
test('isNull', function() {
|
||||
ok(_.isNull(iNull), 'even from another frame');
|
||||
});
|
||||
|
||||
test('isUndefined', function() {
|
||||
ok(_.isUndefined(iUndefined), 'even from another frame');
|
||||
});
|
||||
|
||||
test('isError', function() {
|
||||
ok(_.isError(iError), 'even from another frame');
|
||||
});
|
||||
|
||||
if (typeof ActiveXObject != 'undefined') {
|
||||
test('IE host objects', function() {
|
||||
var xml = new ActiveXObject('Msxml2.DOMDocument.3.0');
|
||||
ok(!_.isNumber(xml));
|
||||
ok(!_.isBoolean(xml));
|
||||
ok(!_.isNaN(xml));
|
||||
ok(!_.isFunction(xml));
|
||||
ok(!_.isNull(xml));
|
||||
ok(!_.isUndefined(xml));
|
||||
});
|
||||
|
||||
test('#1621 IE 11 compat mode DOM elements are not functions', function() {
|
||||
var fn = function() {};
|
||||
var xml = new ActiveXObject('Msxml2.DOMDocument.3.0');
|
||||
var div = document.createElement('div');
|
||||
|
||||
// JIT the function
|
||||
var count = 200;
|
||||
while (count--) {
|
||||
_.isFunction(fn);
|
||||
}
|
||||
|
||||
equal(_.isFunction(xml), false);
|
||||
equal(_.isFunction(div), false);
|
||||
equal(_.isFunction(fn), true);
|
||||
});
|
||||
}
|
||||
|
||||
}());
|
||||
26
vendor/underscore/test/objects.js
vendored
@@ -282,6 +282,32 @@
|
||||
equal(_.clone(null), null, 'non objects should not be changed by clone');
|
||||
});
|
||||
|
||||
test('create', function() {
|
||||
var Parent = function() {};
|
||||
Parent.prototype = {foo: function() {}, bar: 2};
|
||||
|
||||
_.each(['foo', null, undefined, 1], function(val) {
|
||||
deepEqual(_.create(val), {}, 'should return empty object when a non-object is provided');
|
||||
});
|
||||
|
||||
ok(_.create([]) instanceof Array, 'should return new instance of array when array is provided');
|
||||
|
||||
var Child = function() {};
|
||||
Child.prototype = _.create(Parent.prototype);
|
||||
ok(new Child instanceof Parent, 'object should inherit prototype');
|
||||
|
||||
var func = function() {};
|
||||
Child.prototype = _.create(Parent.prototype, {func: func});
|
||||
strictEqual(Child.prototype.func, func, 'properties should be added to object');
|
||||
|
||||
Child.prototype = _.create(Parent.prototype, {constructor: Child});
|
||||
strictEqual(Child.prototype.constructor, Child);
|
||||
|
||||
Child.prototype.foo = 'foo';
|
||||
var created = _.create(Child.prototype, new Child);
|
||||
ok(!created.hasOwnProperty('foo'), 'should only add own properties');
|
||||
});
|
||||
|
||||
test('isEqual', function() {
|
||||
function First() {
|
||||
this.value = 1;
|
||||
|
||||
4
vendor/underscore/underscore-min.js
vendored
130
vendor/underscore/underscore.js
vendored
@@ -1,4 +1,4 @@
|
||||
// Underscore.js 1.8.2
|
||||
// Underscore.js 1.8.3
|
||||
// http://underscorejs.org
|
||||
// (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
|
||||
// Underscore may be freely distributed under the MIT license.
|
||||
@@ -55,7 +55,7 @@
|
||||
}
|
||||
|
||||
// Current version.
|
||||
_.VERSION = '1.8.2';
|
||||
_.VERSION = '1.8.3';
|
||||
|
||||
// Internal function that returns an efficient (for current engines) version
|
||||
// of the passed-in callback, to be repeatedly applied in other Underscore
|
||||
@@ -122,12 +122,20 @@
|
||||
return result;
|
||||
};
|
||||
|
||||
var property = function(key) {
|
||||
return function(obj) {
|
||||
return obj == null ? void 0 : obj[key];
|
||||
};
|
||||
};
|
||||
|
||||
// Helper for collection methods to determine whether a collection
|
||||
// should be iterated as an array or as an object
|
||||
// Related: http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength
|
||||
// Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094
|
||||
var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;
|
||||
var getLength = property('length');
|
||||
var isArrayLike = function(collection) {
|
||||
var length = collection && collection.length;
|
||||
var length = getLength(collection);
|
||||
return typeof length == 'number' && length >= 0 && length <= MAX_ARRAY_INDEX;
|
||||
};
|
||||
|
||||
@@ -252,11 +260,12 @@
|
||||
return false;
|
||||
};
|
||||
|
||||
// Determine if the array or object contains a given value (using `===`).
|
||||
// Determine if the array or object contains a given item (using `===`).
|
||||
// Aliased as `includes` and `include`.
|
||||
_.contains = _.includes = _.include = function(obj, target, fromIndex) {
|
||||
_.contains = _.includes = _.include = function(obj, item, fromIndex, guard) {
|
||||
if (!isArrayLike(obj)) obj = _.values(obj);
|
||||
return _.indexOf(obj, target, typeof fromIndex == 'number' && fromIndex) >= 0;
|
||||
if (typeof fromIndex != 'number' || guard) fromIndex = 0;
|
||||
return _.indexOf(obj, item, fromIndex) >= 0;
|
||||
};
|
||||
|
||||
// Invoke a method (with arguments) on every item in a collection.
|
||||
@@ -480,7 +489,7 @@
|
||||
// Internal implementation of a recursive `flatten` function.
|
||||
var flatten = function(input, shallow, strict, startIndex) {
|
||||
var output = [], idx = 0;
|
||||
for (var i = startIndex || 0, length = input && input.length; i < length; i++) {
|
||||
for (var i = startIndex || 0, length = getLength(input); i < length; i++) {
|
||||
var value = input[i];
|
||||
if (isArrayLike(value) && (_.isArray(value) || _.isArguments(value))) {
|
||||
//flatten current level of array or arguments object
|
||||
@@ -511,7 +520,6 @@
|
||||
// been sorted, you have the option of using a faster algorithm.
|
||||
// Aliased as `unique`.
|
||||
_.uniq = _.unique = function(array, isSorted, iteratee, context) {
|
||||
if (array == null) return [];
|
||||
if (!_.isBoolean(isSorted)) {
|
||||
context = iteratee;
|
||||
iteratee = isSorted;
|
||||
@@ -520,7 +528,7 @@
|
||||
if (iteratee != null) iteratee = cb(iteratee, context);
|
||||
var result = [];
|
||||
var seen = [];
|
||||
for (var i = 0, length = array.length; i < length; i++) {
|
||||
for (var i = 0, length = getLength(array); i < length; i++) {
|
||||
var value = array[i],
|
||||
computed = iteratee ? iteratee(value, i, array) : value;
|
||||
if (isSorted) {
|
||||
@@ -547,10 +555,9 @@
|
||||
// Produce an array that contains every item shared between all the
|
||||
// passed-in arrays.
|
||||
_.intersection = function(array) {
|
||||
if (array == null) return [];
|
||||
var result = [];
|
||||
var argsLength = arguments.length;
|
||||
for (var i = 0, length = array.length; i < length; i++) {
|
||||
for (var i = 0, length = getLength(array); i < length; i++) {
|
||||
var item = array[i];
|
||||
if (_.contains(result, item)) continue;
|
||||
for (var j = 1; j < argsLength; j++) {
|
||||
@@ -579,7 +586,7 @@
|
||||
// Complement of _.zip. Unzip accepts an array of arrays and groups
|
||||
// each array's elements on shared indices
|
||||
_.unzip = function(array) {
|
||||
var length = array && _.max(array, 'length').length || 0;
|
||||
var length = array && _.max(array, getLength).length || 0;
|
||||
var result = Array(length);
|
||||
|
||||
for (var index = 0; index < length; index++) {
|
||||
@@ -593,7 +600,7 @@
|
||||
// the corresponding values.
|
||||
_.object = function(list, values) {
|
||||
var result = {};
|
||||
for (var i = 0, length = list && list.length; i < length; i++) {
|
||||
for (var i = 0, length = getLength(list); i < length; i++) {
|
||||
if (values) {
|
||||
result[list[i]] = values[i];
|
||||
} else {
|
||||
@@ -603,42 +610,11 @@
|
||||
return result;
|
||||
};
|
||||
|
||||
// Return the position of the first occurrence of an item in an array,
|
||||
// or -1 if the item is not included in the array.
|
||||
// If the array is large and already in sort order, pass `true`
|
||||
// for **isSorted** to use binary search.
|
||||
_.indexOf = function(array, item, isSorted) {
|
||||
var i = 0, length = array && array.length;
|
||||
if (typeof isSorted == 'number') {
|
||||
i = isSorted < 0 ? Math.max(0, length + isSorted) : isSorted;
|
||||
} else if (isSorted && length) {
|
||||
i = _.sortedIndex(array, item);
|
||||
return array[i] === item ? i : -1;
|
||||
}
|
||||
if (item !== item) {
|
||||
return _.findIndex(slice.call(array, i), _.isNaN);
|
||||
}
|
||||
for (; i < length; i++) if (array[i] === item) return i;
|
||||
return -1;
|
||||
};
|
||||
|
||||
_.lastIndexOf = function(array, item, from) {
|
||||
var idx = array ? array.length : 0;
|
||||
if (typeof from == 'number') {
|
||||
idx = from < 0 ? idx + from + 1 : Math.min(idx, from + 1);
|
||||
}
|
||||
if (item !== item) {
|
||||
return _.findLastIndex(slice.call(array, 0, idx), _.isNaN);
|
||||
}
|
||||
while (--idx >= 0) if (array[idx] === item) return idx;
|
||||
return -1;
|
||||
};
|
||||
|
||||
// Generator function to create the findIndex and findLastIndex functions
|
||||
function createIndexFinder(dir) {
|
||||
function createPredicateIndexFinder(dir) {
|
||||
return function(array, predicate, context) {
|
||||
predicate = cb(predicate, context);
|
||||
var length = array != null && array.length;
|
||||
var length = getLength(array);
|
||||
var index = dir > 0 ? 0 : length - 1;
|
||||
for (; index >= 0 && index < length; index += dir) {
|
||||
if (predicate(array[index], index, array)) return index;
|
||||
@@ -648,16 +624,15 @@
|
||||
}
|
||||
|
||||
// Returns the first index on an array-like that passes a predicate test
|
||||
_.findIndex = createIndexFinder(1);
|
||||
|
||||
_.findLastIndex = createIndexFinder(-1);
|
||||
_.findIndex = createPredicateIndexFinder(1);
|
||||
_.findLastIndex = createPredicateIndexFinder(-1);
|
||||
|
||||
// Use a comparator function to figure out the smallest index at which
|
||||
// an object should be inserted so as to maintain order. Uses binary search.
|
||||
_.sortedIndex = function(array, obj, iteratee, context) {
|
||||
iteratee = cb(iteratee, context, 1);
|
||||
var value = iteratee(obj);
|
||||
var low = 0, high = array.length;
|
||||
var low = 0, high = getLength(array);
|
||||
while (low < high) {
|
||||
var mid = Math.floor((low + high) / 2);
|
||||
if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;
|
||||
@@ -665,11 +640,43 @@
|
||||
return low;
|
||||
};
|
||||
|
||||
// Generator function to create the indexOf and lastIndexOf functions
|
||||
function createIndexFinder(dir, predicateFind, sortedIndex) {
|
||||
return function(array, item, idx) {
|
||||
var i = 0, length = getLength(array);
|
||||
if (typeof idx == 'number') {
|
||||
if (dir > 0) {
|
||||
i = idx >= 0 ? idx : Math.max(idx + length, i);
|
||||
} else {
|
||||
length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;
|
||||
}
|
||||
} else if (sortedIndex && idx && length) {
|
||||
idx = sortedIndex(array, item);
|
||||
return array[idx] === item ? idx : -1;
|
||||
}
|
||||
if (item !== item) {
|
||||
idx = predicateFind(slice.call(array, i, length), _.isNaN);
|
||||
return idx >= 0 ? idx + i : -1;
|
||||
}
|
||||
for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {
|
||||
if (array[idx] === item) return idx;
|
||||
}
|
||||
return -1;
|
||||
};
|
||||
}
|
||||
|
||||
// Return the position of the first occurrence of an item in an array,
|
||||
// or -1 if the item is not included in the array.
|
||||
// If the array is large and already in sort order, pass `true`
|
||||
// for **isSorted** to use binary search.
|
||||
_.indexOf = createIndexFinder(1, _.findIndex, _.sortedIndex);
|
||||
_.lastIndexOf = createIndexFinder(-1, _.findLastIndex);
|
||||
|
||||
// Generate an integer Array containing an arithmetic progression. A port of
|
||||
// the native Python `range()` function. See
|
||||
// [the Python documentation](http://docs.python.org/library/functions.html#range).
|
||||
_.range = function(start, stop, step) {
|
||||
if (arguments.length <= 1) {
|
||||
if (stop == null) {
|
||||
stop = start || 0;
|
||||
start = 0;
|
||||
}
|
||||
@@ -1048,6 +1055,15 @@
|
||||
// Fill in a given object with default properties.
|
||||
_.defaults = createAssigner(_.allKeys, true);
|
||||
|
||||
// Creates an object that inherits from the given prototype object.
|
||||
// If additional properties are provided then they will be added to the
|
||||
// created object.
|
||||
_.create = function(prototype, props) {
|
||||
var result = baseCreate(prototype);
|
||||
if (props) _.extendOwn(result, props);
|
||||
return result;
|
||||
};
|
||||
|
||||
// Create a (shallow-cloned) duplicate of an object.
|
||||
_.clone = function(obj) {
|
||||
if (!_.isObject(obj)) return obj;
|
||||
@@ -1125,7 +1141,7 @@
|
||||
}
|
||||
// Assume equality for cyclic structures. The algorithm for detecting cyclic
|
||||
// structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.
|
||||
|
||||
|
||||
// Initializing stack of traversed objects.
|
||||
// It's done here since we only need them for objects and arrays comparison.
|
||||
aStack = aStack || [];
|
||||
@@ -1276,11 +1292,7 @@
|
||||
|
||||
_.noop = function(){};
|
||||
|
||||
_.property = function(key) {
|
||||
return function(obj) {
|
||||
return obj == null ? void 0 : obj[key];
|
||||
};
|
||||
};
|
||||
_.property = property;
|
||||
|
||||
// Generates a function for a given object that returns a given property.
|
||||
_.propertyOf = function(obj) {
|
||||
@@ -1289,7 +1301,7 @@
|
||||
};
|
||||
};
|
||||
|
||||
// Returns a predicate for checking whether an object has a given set of
|
||||
// Returns a predicate for checking whether an object has a given set of
|
||||
// `key:value` pairs.
|
||||
_.matcher = _.matches = function(attrs) {
|
||||
attrs = _.extendOwn({}, attrs);
|
||||
@@ -1516,7 +1528,7 @@
|
||||
// Provide unwrapping proxy for some methods used in engine operations
|
||||
// such as arithmetic and JSON stringification.
|
||||
_.prototype.valueOf = _.prototype.toJSON = _.prototype.value;
|
||||
|
||||
|
||||
_.prototype.toString = function() {
|
||||
return '' + this._wrapped;
|
||||
};
|
||||
|
||||