aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJinweiClarkChao <[email protected]>2014-08-22 17:23:02 +0800
committerJinwei Zhao <[email protected]>2017-01-13 15:07:42 +0800
commit80255411ee7040e0cebbf6b05d2ce323f6f2596e (patch)
tree295b0ef6c85e7cb091b63719ab041596879690fa
parent13be3d058713e1467ffc573a90cc694b80526135 (diff)
downloadjinwei.me-80255411ee7040e0cebbf6b05d2ce323f6f2596e.tar.gz
backup
-rw-r--r--Back/Blocks/72906-106.jpg (renamed from Blocks/72906-106.jpg)bin475073 -> 475073 bytes
-rw-r--r--Back/Blocks/Flipboard/css/demo.css (renamed from Blocks/Flipboard/css/demo.css)0
-rw-r--r--Back/Blocks/Flipboard/css/fallback.css (renamed from Blocks/Flipboard/css/fallback.css)0
-rw-r--r--Back/Blocks/Flipboard/css/font.css18
-rw-r--r--Back/Blocks/Flipboard/css/gk5FxslNkTTHtojXrkp-xF1YPouZEKgzpqZW9wN-3Ek.woffbin0 -> 21512 bytes
-rw-r--r--Back/Blocks/Flipboard/css/gk5FxslNkTTHtojXrkp-xONSK5BxN3NFS4EJkViHIqo.woffbin0 -> 20972 bytes
-rw-r--r--Back/Blocks/Flipboard/css/jIXlqT1WKafUSwj6s9AzV6XnXbwdDC8wAz6IIzmCDUP3rGVtsTkPsbDajuO5ueQw.woffbin0 -> 19916 bytes
-rw-r--r--Back/Blocks/Flipboard/css/style.css (renamed from Blocks/Flipboard/css/style.css)0
-rw-r--r--Back/Blocks/Flipboard/images/1.gif (renamed from Blocks/Flipboard/images/1.gif)bin46290 -> 46290 bytes
-rw-r--r--Back/Blocks/Flipboard/images/1.jpg (renamed from Blocks/Flipboard/images/1.jpg)bin43878 -> 43878 bytes
-rw-r--r--Back/Blocks/Flipboard/images/2.jpg (renamed from Blocks/Flipboard/images/2.jpg)bin61573 -> 61573 bytes
-rw-r--r--Back/Blocks/Flipboard/images/3.jpg (renamed from Blocks/Flipboard/images/3.jpg)bin46384 -> 46384 bytes
-rw-r--r--Back/Blocks/Flipboard/images/31.png (renamed from Blocks/Flipboard/images/31.png)bin244204 -> 244204 bytes
-rw-r--r--Back/Blocks/Flipboard/images/32.png (renamed from Blocks/Flipboard/images/32.png)bin221622 -> 221622 bytes
-rw-r--r--Back/Blocks/Flipboard/images/33.png (renamed from Blocks/Flipboard/images/33.png)bin149821 -> 149821 bytes
-rw-r--r--Back/Blocks/Flipboard/images/34.png (renamed from Blocks/Flipboard/images/34.png)bin147398 -> 147398 bytes
-rw-r--r--Back/Blocks/Flipboard/images/4.jpg (renamed from Blocks/Flipboard/images/4.jpg)bin41492 -> 41492 bytes
-rw-r--r--Back/Blocks/Flipboard/images/41.jpg (renamed from Blocks/Flipboard/images/41.jpg)bin388665 -> 388665 bytes
-rw-r--r--Back/Blocks/Flipboard/images/43.jpg (renamed from Blocks/Flipboard/images/43.jpg)bin325424 -> 325424 bytes
-rw-r--r--Back/Blocks/Flipboard/images/44.jpg (renamed from Blocks/Flipboard/images/44.jpg)bin395792 -> 395792 bytes
-rw-r--r--Back/Blocks/Flipboard/images/5.jpg (renamed from Blocks/Flipboard/images/5.jpg)bin31082 -> 31082 bytes
-rw-r--r--Back/Blocks/Flipboard/images/6.jpg (renamed from Blocks/Flipboard/images/6.jpg)bin99676 -> 99676 bytes
-rw-r--r--Back/Blocks/Flipboard/images/7.jpg (renamed from Blocks/Flipboard/images/7.jpg)bin76749 -> 76749 bytes
-rw-r--r--Back/Blocks/Flipboard/images/8.jpg (renamed from Blocks/Flipboard/images/8.jpg)bin29856 -> 29856 bytes
-rw-r--r--Back/Blocks/Flipboard/images/ImageAttribution.txt (renamed from Blocks/Flipboard/images/ImageAttribution.txt)0
-rw-r--r--Back/Blocks/Flipboard/images/beijing.png (renamed from Blocks/Flipboard/images/beijing.png)bin194195 -> 194195 bytes
-rw-r--r--Back/Blocks/Flipboard/images/cover.jpg (renamed from Blocks/Flipboard/images/cover.jpg)bin85319 -> 85319 bytes
-rw-r--r--Back/Blocks/Flipboard/images/cover1.jpg (renamed from Blocks/Flipboard/images/cover1.jpg)bin29784 -> 29784 bytes
-rw-r--r--Back/Blocks/Flipboard/images/fabric_plaid.png (renamed from Blocks/Flipboard/images/fabric_plaid.png)bin9897 -> 9897 bytes
-rw-r--r--Back/Blocks/Flipboard/index.html (renamed from Blocks/Flipboard/index.html)632
-rw-r--r--Back/Blocks/Flipboard/js/core.string.js (renamed from Blocks/Flipboard/js/core.string.js)0
-rw-r--r--Back/Blocks/Flipboard/js/jquery.flips.js (renamed from Blocks/Flipboard/js/jquery.flips.js)0
-rw-r--r--Back/Blocks/Flipboard/js/jquery.history.js (renamed from Blocks/Flipboard/js/jquery.history.js)0
-rw-r--r--Back/Blocks/Flipboard/js/jquery.min.js4
-rw-r--r--Back/Blocks/Flipboard/js/jquery.tmpl.min.js (renamed from Blocks/Flipboard/js/jquery.tmpl.min.js)0
-rw-r--r--Back/Blocks/Flipboard/js/jquery.touchSwipe-1.2.5.js (renamed from Blocks/Flipboard/js/jquery.touchSwipe-1.2.5.js)0
-rw-r--r--Back/Blocks/Flipboard/js/modernizr.custom.08464.js (renamed from Blocks/Flipboard/js/modernizr.custom.08464.js)0
-rw-r--r--Back/Blocks/For U_files/_notes/dwsync.xml (renamed from Blocks/For U_files/_notes/dwsync.xml)0
-rw-r--r--Back/Blocks/For U_files/future.png (renamed from Blocks/For U_files/future.png)bin3888 -> 3888 bytes
-rw-r--r--Back/Blocks/For U_files/life.png (renamed from Blocks/For U_files/life.png)bin3999 -> 3999 bytes
-rw-r--r--Back/Blocks/For U_files/love.png (renamed from Blocks/For U_files/love.png)bin3006 -> 3006 bytes
-rw-r--r--Back/Blocks/For U_files/python.png (renamed from Blocks/For U_files/python.png)bin4159 -> 4159 bytes
-rw-r--r--Back/Blocks/For U_files/time.png (renamed from Blocks/For U_files/time.png)bin24881 -> 24881 bytes
-rw-r--r--Back/Blocks/For U_files/train.png (renamed from Blocks/For U_files/train.png)bin13711 -> 13711 bytes
-rw-r--r--Back/Blocks/For U_files/world.png (renamed from Blocks/For U_files/world.png)bin7487 -> 7487 bytes
-rw-r--r--Back/Blocks/alphabet.js1603
-rw-r--r--Back/Blocks/audiojs/Bandari-Your Smile.mp3 (renamed from Blocks/audiojs/Bandari-Your Smile.mp3)bin2766891 -> 2766891 bytes
-rw-r--r--Back/Blocks/audiojs/Richard .mp3 (renamed from Blocks/audiojs/Richard .mp3)bin3225530 -> 3225530 bytes
-rw-r--r--Back/Blocks/audiojs/The First Snowflake.mp3 (renamed from Blocks/audiojs/The First Snowflake.mp3)bin3121263 -> 3121263 bytes
-rw-r--r--Back/Blocks/audiojs/audio.min.js (renamed from Blocks/audiojs/audio.min.js)0
-rw-r--r--Back/Blocks/audiojs/audiojs.swf (renamed from Blocks/audiojs/audiojs.swf)bin1644 -> 1644 bytes
-rw-r--r--Back/Blocks/audiojs/player-graphics.gif (renamed from Blocks/audiojs/player-graphics.gif)bin4499 -> 4499 bytes
-rw-r--r--Back/Blocks/code.html (renamed from Blocks/code.html)0
-rw-r--r--Back/Blocks/countdown/audiojs/The First Snowflake.mp3 (renamed from Blocks/countdown/audiojs/The First Snowflake.mp3)bin3121263 -> 3121263 bytes
-rw-r--r--Back/Blocks/countdown/audiojs/audio.min.js (renamed from Blocks/countdown/audiojs/audio.min.js)0
-rw-r--r--Back/Blocks/countdown/audiojs/audiojs.swf (renamed from Blocks/countdown/audiojs/audiojs.swf)bin1644 -> 1644 bytes
-rw-r--r--Back/Blocks/countdown/audiojs/player-graphics.gif (renamed from Blocks/countdown/audiojs/player-graphics.gif)bin4499 -> 4499 bytes
-rw-r--r--Back/Blocks/countdown/css/countdown.css (renamed from Blocks/countdown/css/countdown.css)0
-rw-r--r--Back/Blocks/countdown/index.html (renamed from Blocks/countdown/index.html)0
-rw-r--r--Back/Blocks/countdown/js/countdown.min.js (renamed from Blocks/countdown/js/countdown.min.js)0
-rw-r--r--Back/Blocks/countdown/js/jquery-1.10.2.js (renamed from Blocks/countdown/js/jquery-1.10.2.js)0
-rw-r--r--Back/Blocks/countdown/js/jquery.knob.min.js (renamed from Blocks/countdown/js/jquery.knob.min.js)0
-rw-r--r--Back/Blocks/countdown/js/jquery.min.js (renamed from Blocks/countdown/js/jquery.min.js)0
-rw-r--r--Back/Blocks/countdown/js/lrtk.js (renamed from Blocks/countdown/js/lrtk.js)0
-rw-r--r--Back/Blocks/countdown/something.png (renamed from Blocks/countdown/something.png)bin23095 -> 23095 bytes
-rw-r--r--Back/Blocks/countdown/waiting.png (renamed from Blocks/countdown/waiting.png)bin14177 -> 14177 bytes
-rw-r--r--Back/Blocks/demo/2(3).jpg (renamed from Blocks/demo/2(3).jpg)bin137941 -> 137941 bytes
-rw-r--r--Back/Blocks/demo/bg.jpg (renamed from Blocks/demo/bg.jpg)bin76136 -> 76136 bytes
-rw-r--r--Back/Blocks/demo/cartedeParis1.html (renamed from Blocks/demo/cartedeParis1.html)0
-rw-r--r--Back/Blocks/demo/deibi-webfont.eot (renamed from Blocks/demo/deibi-webfont.eot)bin28906 -> 28906 bytes
-rw-r--r--Back/Blocks/demo/deibi-webfont.svg (renamed from Blocks/demo/deibi-webfont.svg)0
-rw-r--r--Back/Blocks/demo/deibi-webfont.ttf (renamed from Blocks/demo/deibi-webfont.ttf)bin63164 -> 63164 bytes
-rw-r--r--Back/Blocks/demo/deibi-webfont.woff (renamed from Blocks/demo/deibi-webfont.woff)bin32212 -> 32212 bytes
-rw-r--r--Back/Blocks/demo/images/Paris_eiffel.png (renamed from Blocks/demo/images/Paris_eiffel.png)bin14110 -> 14110 bytes
-rw-r--r--Back/Blocks/demo/images/Paris_roofs.png (renamed from Blocks/demo/images/Paris_roofs.png)bin48684 -> 48684 bytes
-rw-r--r--Back/Blocks/demo/images/Paris_sky.jpg (renamed from Blocks/demo/images/Paris_sky.jpg)bin23904 -> 23904 bytes
-rw-r--r--Back/Blocks/demo/images/clouds1000.png (renamed from Blocks/demo/images/clouds1000.png)bin27087 -> 27087 bytes
-rw-r--r--Back/Blocks/demo/images/clouds1200_1.png (renamed from Blocks/demo/images/clouds1200_1.png)bin33975 -> 33975 bytes
-rw-r--r--Back/Blocks/demo/images/clouds1200_2.png (renamed from Blocks/demo/images/clouds1200_2.png)bin16306 -> 16306 bytes
-rw-r--r--Back/Blocks/demo/images/eiffel.png (renamed from Blocks/demo/images/eiffel.png)bin5294 -> 5294 bytes
-rw-r--r--Back/Blocks/demo/images/eiffel1.png (renamed from Blocks/demo/images/eiffel1.png)bin8715 -> 8715 bytes
-rw-r--r--Back/Blocks/demo/images/eiffel2.png (renamed from Blocks/demo/images/eiffel2.png)bin18629 -> 18629 bytes
-rw-r--r--Back/Blocks/demo/images/phare.png (renamed from Blocks/demo/images/phare.png)bin5860 -> 5860 bytes
-rw-r--r--Back/Blocks/demo/images/sparkling1.png (renamed from Blocks/demo/images/sparkling1.png)bin58194 -> 58194 bytes
-rw-r--r--Back/Blocks/demo/images/sparkling2.png (renamed from Blocks/demo/images/sparkling2.png)bin53367 -> 53367 bytes
-rw-r--r--Back/Blocks/jquery-1.10.2.min.js3386
-rw-r--r--Back/Blocks/life.html (renamed from Blocks/life.html)157
-rw-r--r--Back/Blocks/life/148337312826694352.jpg (renamed from Blocks/life/148337312826694352.jpg)bin537281 -> 537281 bytes
-rw-r--r--Back/Blocks/life/1713901133291362836.jpg (renamed from Blocks/life/1713901133291362836.jpg)bin353709 -> 353709 bytes
-rw-r--r--Back/Blocks/life/1903615267594677472.jpg (renamed from Blocks/life/1903615267594677472.jpg)bin706173 -> 706173 bytes
-rw-r--r--Back/Blocks/life/2041819481159275260.jpg (renamed from Blocks/life/2041819481159275260.jpg)bin573289 -> 573289 bytes
-rw-r--r--Back/Blocks/life/3014878475648013989.jpg (renamed from Blocks/life/3014878475648013989.jpg)bin410450 -> 410450 bytes
-rw-r--r--Back/Blocks/life/3374040545930946866.jpg (renamed from Blocks/life/3374040545930946866.jpg)bin405661 -> 405661 bytes
-rw-r--r--Back/Blocks/life/3911939226425011954.jpg (renamed from Blocks/life/3911939226425011954.jpg)bin628279 -> 628279 bytes
-rw-r--r--Back/Blocks/life/6597074164702513006.png (renamed from Blocks/life/6597074164702513006.png)bin15606 -> 15606 bytes
-rw-r--r--Back/Blocks/life/6597305062146155801.jpg (renamed from Blocks/life/6597305062146155801.jpg)bin631707 -> 631707 bytes
-rw-r--r--Back/Blocks/life/6598086814913787340.jpg (renamed from Blocks/life/6598086814913787340.jpg)bin474182 -> 474182 bytes
-rw-r--r--Back/Blocks/life/6598256139704465765.jpg (renamed from Blocks/life/6598256139704465765.jpg)bin544897 -> 544897 bytes
-rw-r--r--Back/Blocks/life/gqj.png (renamed from Blocks/life/gqj.png)bin519326 -> 519326 bytes
-rw-r--r--Back/Blocks/life/icon.jpg (renamed from Blocks/life/icon.jpg)bin500 -> 500 bytes
-rw-r--r--Back/Blocks/life/shming.png (renamed from Blocks/life/shming.png)bin10966 -> 10966 bytes
-rw-r--r--Back/Blocks/main.css (renamed from Blocks/main.css)0
-rw-r--r--Back/Blocks/main.js39
-rw-r--r--Back/Blocks/pics/2012_03.jpg (renamed from Blocks/pics/2012_03.jpg)bin776153 -> 776153 bytes
-rw-r--r--Back/Blocks/pics/20130228192941_rm3ky.jpg (renamed from Blocks/pics/20130228192941_rm3ky.jpg)bin116765 -> 116765 bytes
-rw-r--r--Back/Blocks/pics/QQ截图20131123002119.png (renamed from Blocks/pics/QQ截图20131123002119.png)bin302399 -> 302399 bytes
-rw-r--r--Back/Blocks/pics/QQ截图20131123002203.png (renamed from Blocks/pics/QQ截图20131123002203.png)bin216019 -> 216019 bytes
-rw-r--r--Back/Blocks/pics/QQ截图20131123002213.png (renamed from Blocks/pics/QQ截图20131123002213.png)bin72446 -> 72446 bytes
-rw-r--r--Back/Blocks/pics/siteinfo.png (renamed from Blocks/pics/siteinfo.png)bin15604 -> 15604 bytes
-rw-r--r--Back/Blocks/post/BraFEMRumMsVbWgqTQIWRPesZW2xOQ-xsNqO47m55DA.woffbin0 -> 47648 bytes
-rw-r--r--Back/Blocks/post/font.css6
-rw-r--r--Back/Blocks/post/index.html (renamed from Blocks/post/index.html)68
-rw-r--r--Back/Blocks/post/jquery.min.js (renamed from Blocks/post/jquery.min.js)0
-rw-r--r--Back/Blocks/post/snowfall.min.js (renamed from Blocks/post/snowfall.min.js)0
-rw-r--r--Back/Blocks/post/style.css (renamed from Blocks/post/style.css)2
-rw-r--r--Back/Blocks/syntax/LGPL-LICENSE (renamed from Blocks/syntax/LGPL-LICENSE)0
-rw-r--r--Back/Blocks/syntax/MIT-LICENSE (renamed from Blocks/syntax/MIT-LICENSE)0
-rw-r--r--Back/Blocks/syntax/compass/_theme_template.scss (renamed from Blocks/syntax/compass/_theme_template.scss)0
-rw-r--r--Back/Blocks/syntax/compass/config.rb (renamed from Blocks/syntax/compass/config.rb)0
-rw-r--r--Back/Blocks/syntax/compass/shCore.scss (renamed from Blocks/syntax/compass/shCore.scss)0
-rw-r--r--Back/Blocks/syntax/compass/shCoreDefault.scss (renamed from Blocks/syntax/compass/shCoreDefault.scss)0
-rw-r--r--Back/Blocks/syntax/compass/shCoreDjango.scss (renamed from Blocks/syntax/compass/shCoreDjango.scss)0
-rw-r--r--Back/Blocks/syntax/compass/shCoreEclipse.scss (renamed from Blocks/syntax/compass/shCoreEclipse.scss)0
-rw-r--r--Back/Blocks/syntax/compass/shCoreEmacs.scss (renamed from Blocks/syntax/compass/shCoreEmacs.scss)0
-rw-r--r--Back/Blocks/syntax/compass/shCoreFadeToGrey.scss (renamed from Blocks/syntax/compass/shCoreFadeToGrey.scss)0
-rw-r--r--Back/Blocks/syntax/compass/shCoreMDUltra.scss (renamed from Blocks/syntax/compass/shCoreMDUltra.scss)0
-rw-r--r--Back/Blocks/syntax/compass/shCoreMidnight.scss (renamed from Blocks/syntax/compass/shCoreMidnight.scss)0
-rw-r--r--Back/Blocks/syntax/compass/shCoreRDark.scss (renamed from Blocks/syntax/compass/shCoreRDark.scss)0
-rw-r--r--Back/Blocks/syntax/compass/shThemeDefault.scss (renamed from Blocks/syntax/compass/shThemeDefault.scss)0
-rw-r--r--Back/Blocks/syntax/compass/shThemeDjango.scss (renamed from Blocks/syntax/compass/shThemeDjango.scss)0
-rw-r--r--Back/Blocks/syntax/compass/shThemeEclipse.scss (renamed from Blocks/syntax/compass/shThemeEclipse.scss)0
-rw-r--r--Back/Blocks/syntax/compass/shThemeEmacs.scss (renamed from Blocks/syntax/compass/shThemeEmacs.scss)0
-rw-r--r--Back/Blocks/syntax/compass/shThemeFadeToGrey.scss (renamed from Blocks/syntax/compass/shThemeFadeToGrey.scss)0
-rw-r--r--Back/Blocks/syntax/compass/shThemeMDUltra.scss (renamed from Blocks/syntax/compass/shThemeMDUltra.scss)0
-rw-r--r--Back/Blocks/syntax/compass/shThemeMidnight.scss (renamed from Blocks/syntax/compass/shThemeMidnight.scss)0
-rw-r--r--Back/Blocks/syntax/compass/shThemeRDark.scss (renamed from Blocks/syntax/compass/shThemeRDark.scss)0
-rw-r--r--Back/Blocks/syntax/index.html (renamed from Blocks/syntax/index.html)0
-rw-r--r--Back/Blocks/syntax/scripts/shAutoloader.js (renamed from Blocks/syntax/scripts/shAutoloader.js)0
-rw-r--r--Back/Blocks/syntax/scripts/shBrushAS3.js (renamed from Blocks/syntax/scripts/shBrushAS3.js)0
-rw-r--r--Back/Blocks/syntax/scripts/shBrushAppleScript.js (renamed from Blocks/syntax/scripts/shBrushAppleScript.js)0
-rw-r--r--Back/Blocks/syntax/scripts/shBrushBash.js (renamed from Blocks/syntax/scripts/shBrushBash.js)0
-rw-r--r--Back/Blocks/syntax/scripts/shBrushCSharp.js (renamed from Blocks/syntax/scripts/shBrushCSharp.js)0
-rw-r--r--Back/Blocks/syntax/scripts/shBrushColdFusion.js (renamed from Blocks/syntax/scripts/shBrushColdFusion.js)0
-rw-r--r--Back/Blocks/syntax/scripts/shBrushCpp.js (renamed from Blocks/syntax/scripts/shBrushCpp.js)0
-rw-r--r--Back/Blocks/syntax/scripts/shBrushCss.js (renamed from Blocks/syntax/scripts/shBrushCss.js)0
-rw-r--r--Back/Blocks/syntax/scripts/shBrushDelphi.js (renamed from Blocks/syntax/scripts/shBrushDelphi.js)0
-rw-r--r--Back/Blocks/syntax/scripts/shBrushDiff.js (renamed from Blocks/syntax/scripts/shBrushDiff.js)0
-rw-r--r--Back/Blocks/syntax/scripts/shBrushErlang.js (renamed from Blocks/syntax/scripts/shBrushErlang.js)0
-rw-r--r--Back/Blocks/syntax/scripts/shBrushGroovy.js (renamed from Blocks/syntax/scripts/shBrushGroovy.js)0
-rw-r--r--Back/Blocks/syntax/scripts/shBrushJScript.js (renamed from Blocks/syntax/scripts/shBrushJScript.js)0
-rw-r--r--Back/Blocks/syntax/scripts/shBrushJava.js (renamed from Blocks/syntax/scripts/shBrushJava.js)0
-rw-r--r--Back/Blocks/syntax/scripts/shBrushJavaFX.js (renamed from Blocks/syntax/scripts/shBrushJavaFX.js)0
-rw-r--r--Back/Blocks/syntax/scripts/shBrushPerl.js (renamed from Blocks/syntax/scripts/shBrushPerl.js)0
-rw-r--r--Back/Blocks/syntax/scripts/shBrushPhp.js (renamed from Blocks/syntax/scripts/shBrushPhp.js)0
-rw-r--r--Back/Blocks/syntax/scripts/shBrushPlain.js (renamed from Blocks/syntax/scripts/shBrushPlain.js)0
-rw-r--r--Back/Blocks/syntax/scripts/shBrushPowerShell.js (renamed from Blocks/syntax/scripts/shBrushPowerShell.js)0
-rw-r--r--Back/Blocks/syntax/scripts/shBrushPython.js (renamed from Blocks/syntax/scripts/shBrushPython.js)0
-rw-r--r--Back/Blocks/syntax/scripts/shBrushRuby.js (renamed from Blocks/syntax/scripts/shBrushRuby.js)0
-rw-r--r--Back/Blocks/syntax/scripts/shBrushSass.js (renamed from Blocks/syntax/scripts/shBrushSass.js)0
-rw-r--r--Back/Blocks/syntax/scripts/shBrushScala.js (renamed from Blocks/syntax/scripts/shBrushScala.js)0
-rw-r--r--Back/Blocks/syntax/scripts/shBrushSql.js (renamed from Blocks/syntax/scripts/shBrushSql.js)0
-rw-r--r--Back/Blocks/syntax/scripts/shBrushVb.js (renamed from Blocks/syntax/scripts/shBrushVb.js)0
-rw-r--r--Back/Blocks/syntax/scripts/shBrushXml.js (renamed from Blocks/syntax/scripts/shBrushXml.js)0
-rw-r--r--Back/Blocks/syntax/scripts/shCore.js (renamed from Blocks/syntax/scripts/shCore.js)0
-rw-r--r--Back/Blocks/syntax/scripts/shLegacy.js (renamed from Blocks/syntax/scripts/shLegacy.js)0
-rw-r--r--Back/Blocks/syntax/src/shAutoloader.js (renamed from Blocks/syntax/src/shAutoloader.js)0
-rw-r--r--Back/Blocks/syntax/src/shCore.js (renamed from Blocks/syntax/src/shCore.js)0
-rw-r--r--Back/Blocks/syntax/src/shLegacy.js (renamed from Blocks/syntax/src/shLegacy.js)0
-rw-r--r--Back/Blocks/syntax/styles/shCore.css (renamed from Blocks/syntax/styles/shCore.css)0
-rw-r--r--Back/Blocks/syntax/styles/shCoreDefault.css (renamed from Blocks/syntax/styles/shCoreDefault.css)0
-rw-r--r--Back/Blocks/syntax/styles/shCoreDjango.css (renamed from Blocks/syntax/styles/shCoreDjango.css)0
-rw-r--r--Back/Blocks/syntax/styles/shCoreEclipse.css (renamed from Blocks/syntax/styles/shCoreEclipse.css)0
-rw-r--r--Back/Blocks/syntax/styles/shCoreEmacs.css (renamed from Blocks/syntax/styles/shCoreEmacs.css)0
-rw-r--r--Back/Blocks/syntax/styles/shCoreFadeToGrey.css (renamed from Blocks/syntax/styles/shCoreFadeToGrey.css)0
-rw-r--r--Back/Blocks/syntax/styles/shCoreMDUltra.css (renamed from Blocks/syntax/styles/shCoreMDUltra.css)0
-rw-r--r--Back/Blocks/syntax/styles/shCoreMidnight.css (renamed from Blocks/syntax/styles/shCoreMidnight.css)0
-rw-r--r--Back/Blocks/syntax/styles/shCoreRDark.css (renamed from Blocks/syntax/styles/shCoreRDark.css)0
-rw-r--r--Back/Blocks/syntax/styles/shThemeDefault.css (renamed from Blocks/syntax/styles/shThemeDefault.css)0
-rw-r--r--Back/Blocks/syntax/styles/shThemeDjango.css (renamed from Blocks/syntax/styles/shThemeDjango.css)0
-rw-r--r--Back/Blocks/syntax/styles/shThemeEclipse.css (renamed from Blocks/syntax/styles/shThemeEclipse.css)0
-rw-r--r--Back/Blocks/syntax/styles/shThemeEmacs.css (renamed from Blocks/syntax/styles/shThemeEmacs.css)0
-rw-r--r--Back/Blocks/syntax/styles/shThemeFadeToGrey.css (renamed from Blocks/syntax/styles/shThemeFadeToGrey.css)0
-rw-r--r--Back/Blocks/syntax/styles/shThemeMDUltra.css (renamed from Blocks/syntax/styles/shThemeMDUltra.css)0
-rw-r--r--Back/Blocks/syntax/styles/shThemeMidnight.css (renamed from Blocks/syntax/styles/shThemeMidnight.css)0
-rw-r--r--Back/Blocks/syntax/styles/shThemeRDark.css (renamed from Blocks/syntax/styles/shThemeRDark.css)0
-rw-r--r--Back/Blocks/syntax/tests/.rvmrc (renamed from Blocks/syntax/tests/.rvmrc)0
-rw-r--r--Back/Blocks/syntax/tests/brushes/sass.html (renamed from Blocks/syntax/tests/brushes/sass.html)0
-rw-r--r--Back/Blocks/syntax/tests/brushes_tests.html (renamed from Blocks/syntax/tests/brushes_tests.html)0
-rw-r--r--Back/Blocks/syntax/tests/cases/001_basic.html (renamed from Blocks/syntax/tests/cases/001_basic.html)0
-rw-r--r--Back/Blocks/syntax/tests/cases/002_brushes.html (renamed from Blocks/syntax/tests/cases/002_brushes.html)0
-rw-r--r--Back/Blocks/syntax/tests/cases/003_script_tag.html (renamed from Blocks/syntax/tests/cases/003_script_tag.html)0
-rw-r--r--Back/Blocks/syntax/tests/cases/004_url_parsing.html (renamed from Blocks/syntax/tests/cases/004_url_parsing.html)0
-rw-r--r--Back/Blocks/syntax/tests/cases/005_no_gutter.html (renamed from Blocks/syntax/tests/cases/005_no_gutter.html)0
-rw-r--r--Back/Blocks/syntax/tests/cases/006_pad_line_numbers.html (renamed from Blocks/syntax/tests/cases/006_pad_line_numbers.html)0
-rw-r--r--Back/Blocks/syntax/tests/cases/007_collapse.html (renamed from Blocks/syntax/tests/cases/007_collapse.html)0
-rw-r--r--Back/Blocks/syntax/tests/cases/007_collapse_interaction.html (renamed from Blocks/syntax/tests/cases/007_collapse_interaction.html)0
-rw-r--r--Back/Blocks/syntax/tests/cases/008_first_line.html (renamed from Blocks/syntax/tests/cases/008_first_line.html)0
-rw-r--r--Back/Blocks/syntax/tests/cases/009_class_name.html (renamed from Blocks/syntax/tests/cases/009_class_name.html)0
-rw-r--r--Back/Blocks/syntax/tests/cases/010_highlight.html (renamed from Blocks/syntax/tests/cases/010_highlight.html)0
-rw-r--r--Back/Blocks/syntax/tests/cases/011_smart_tabs.html (renamed from Blocks/syntax/tests/cases/011_smart_tabs.html)0
-rw-r--r--Back/Blocks/syntax/tests/cases/012_server_side.html (renamed from Blocks/syntax/tests/cases/012_server_side.html)0
-rw-r--r--Back/Blocks/syntax/tests/cases/013_html_script.html (renamed from Blocks/syntax/tests/cases/013_html_script.html)0
-rw-r--r--Back/Blocks/syntax/tests/cases/014_legacy.html (renamed from Blocks/syntax/tests/cases/014_legacy.html)0
-rw-r--r--Back/Blocks/syntax/tests/commonjs_tests.js (renamed from Blocks/syntax/tests/commonjs_tests.js)0
-rw-r--r--Back/Blocks/syntax/tests/js/jquery-1.4.2.js (renamed from Blocks/syntax/tests/js/jquery-1.4.2.js)0
-rw-r--r--Back/Blocks/syntax/tests/js/qunit.css (renamed from Blocks/syntax/tests/js/qunit.css)0
-rw-r--r--Back/Blocks/syntax/tests/js/qunit.js (renamed from Blocks/syntax/tests/js/qunit.js)0
-rw-r--r--Back/Blocks/syntax/tests/syntaxhighlighter_tests.html (renamed from Blocks/syntax/tests/syntaxhighlighter_tests.html)0
-rw-r--r--Back/Blocks/syntax/tests/theme_tests.html (renamed from Blocks/syntax/tests/theme_tests.html)0
-rw-r--r--Back/Blocks/syntax/tests/webrick.rb (renamed from Blocks/syntax/tests/webrick.rb)0
-rw-r--r--Back/Blocks/syntax/tests/webrick.sh (renamed from Blocks/syntax/tests/webrick.sh)0
-rw-r--r--Back/Blocks/time/index.html (renamed from Blocks/time/index.html)0
-rw-r--r--Back/Blocks/time/jquery.min.js (renamed from Blocks/time/jquery.min.js)0
-rw-r--r--Back/Blocks/time/script.js (renamed from Blocks/time/script.js)0
-rw-r--r--Back/Blocks/time/style.css (renamed from Blocks/time/style.css)0
-rw-r--r--Back/Blocks/welcome.html (renamed from Blocks/welcome.html)2
-rw-r--r--Back/GitHub_Jekyll/images/bkg.pngbin0 -> 2169 bytes
-rw-r--r--Back/GitHub_Jekyll/images/blacktocat.pngbin0 -> 1207 bytes
-rw-r--r--Back/GitHub_Jekyll/images/optipng.exebin0 -> 98816 bytes
-rw-r--r--Back/GitHub_Jekyll/index.html96
-rw-r--r--Back/GitHub_Jekyll/javascripts/main.js1
-rw-r--r--Back/GitHub_Jekyll/params.json7
-rw-r--r--Back/GitHub_Jekyll/posts/2014-03-20-blog-git-pages.html49
-rw-r--r--Back/GitHub_Jekyll/posts/2014-03-23-Git.html47
-rw-r--r--Back/GitHub_Jekyll/posts/2014-03-24-Python.html80
-rw-r--r--Back/GitHub_Jekyll/posts/2014-04-16-Life.html82
-rw-r--r--Back/GitHub_Jekyll/posts/模板.html39
-rw-r--r--Back/GitHub_Jekyll/sitemap.xml39
-rw-r--r--Back/GitHub_Jekyll/stylesheets/pygment_trac.css68
-rw-r--r--Back/GitHub_Jekyll/stylesheets/stylesheet.css247
-rw-r--r--Back/Train/I Love You.mp3 (renamed from Train/I Love You.mp3)bin4318018 -> 4318018 bytes
-rw-r--r--Back/Train/Train.jpg (renamed from Train/Train.jpg)bin1082510 -> 1082510 bytes
-rw-r--r--Back/Train/alphabet.js (renamed from Blocks/alphabet.js)0
-rw-r--r--Back/Train/jquery-1.10.2.min.js (renamed from Blocks/jquery-1.10.2.min.js)0
-rw-r--r--Back/Train/main.js (renamed from Blocks/main.js)0
-rw-r--r--Back/Train/train.html (renamed from Train/train.html)0
-rw-r--r--Back/Train/video.html (renamed from Train/video.html)0
-rw-r--r--Back/ZJW/About.html51
-rw-r--r--Back/ZJW/Gemfile3
-rw-r--r--Back/ZJW/Gemfile.lock51
-rw-r--r--Back/ZJW/Happy-Birthday.html106
-rw-r--r--Back/ZJW/_config.yml5
-rw-r--r--Back/ZJW/fonts/digital-7_mono.ttfbin0 -> 33992 bytes
-rw-r--r--Back/ZJW/images/123.pngbin0 -> 5430 bytes
-rw-r--r--Back/ZJW/images/fans-black.jpgbin0 -> 70492 bytes
-rw-r--r--Back/ZJW/images/favicon.icobin0 -> 9662 bytes
-rw-r--r--Back/ZJW/images/github-48.pngbin0 -> 670 bytes
-rw-r--r--Back/ZJW/images/gmail-48.pngbin0 -> 431 bytes
-rw-r--r--Back/ZJW/images/logo.pngbin0 -> 10707 bytes
-rw-r--r--Back/ZJW/images/twitter-48.pngbin0 -> 495 bytes
-rw-r--r--Back/ZJW/index.html18
-rw-r--r--Back/ZJW/javascripts/functions_dev.js137
-rw-r--r--Back/ZJW/javascripts/garden_dev.js199
-rw-r--r--Back/ZJW/javascripts/jquery.js154
-rw-r--r--Back/ZJW/javascripts/jquery.min.js3375
-rw-r--r--Back/ZJW/javascripts/jquery.swatchbook.js255
-rw-r--r--Back/ZJW/javascripts/modernizr.custom.79639.js167
-rw-r--r--Back/ZJW/javascripts/modernizr.js8
-rw-r--r--Back/ZJW/javascripts/processing.min.js12665
-rw-r--r--Back/ZJW/javascripts/site.js12
-rw-r--r--Back/ZJW/javascripts/viz.pde81
-rw-r--r--Back/ZJW/javascripts/webflow.js4445
-rw-r--r--Back/ZJW/javascripts/webfont.js828
-rw-r--r--Back/ZJW/stylesheets/all.css30
-rw-r--r--Back/ZJW/stylesheets/default.css1
-rw-r--r--Back/ZJW/stylesheets/magnetic1407129817662.webflow.css448
-rw-r--r--Back/ZJW/stylesheets/normalize.css340
-rw-r--r--Back/ZJW/stylesheets/webflow.css1633
-rw-r--r--Back/jinwei.me/css/css.css18
-rw-r--r--Back/jinwei.me/css/demo.css176
-rw-r--r--Back/jinwei.me/css/font/gk5FxslNkTTHtojXrkp-xF1YPouZEKgzpqZW9wN-3Ek.woffbin0 -> 21512 bytes
-rw-r--r--Back/jinwei.me/css/font/gk5FxslNkTTHtojXrkp-xONSK5BxN3NFS4EJkViHIqo.woffbin0 -> 20972 bytes
-rw-r--r--Back/jinwei.me/css/font/icons.eotbin0 -> 7028 bytes
-rw-r--r--Back/jinwei.me/css/font/icons.svg68
-rw-r--r--Back/jinwei.me/css/font/icons.ttfbin0 -> 6780 bytes
-rw-r--r--Back/jinwei.me/css/font/icons.woffbin0 -> 4548 bytes
-rw-r--r--Back/jinwei.me/css/font/jIXlqT1WKafUSwj6s9AzV6XnXbwdDC8wAz6IIzmCDUP3rGVtsTkPsbDajuO5ueQw.woffbin0 -> 19916 bytes
-rw-r--r--Back/jinwei.me/css/style.css213
-rw-r--r--Back/jinwei.me/css/style2.css225
-rw-r--r--Back/jinwei.me/css/style3.css227
-rw-r--r--Back/jinwei.me/css/style4.css207
-rw-r--r--Back/jinwei.me/css/style5.css223
-rw-r--r--Back/jinwei.me/images/ImageAttribution.txt7
-rw-r--r--Back/jinwei.me/images/cartboard.jpgbin0 -> 29786 bytes
-rw-r--r--Back/jinwei.me/images/cover.jpg (renamed from uucky.me/Uucky的小站_files/cover.jpg)bin31879 -> 31879 bytes
-rw-r--r--Back/jinwei.me/images/cover2.jpgbin0 -> 23878 bytes
-rw-r--r--Back/jinwei.me/images/dark_leather.jpgbin0 -> 13135 bytes
-rw-r--r--Back/jinwei.me/images/egg_shell.jpg (renamed from uucky.me/Uucky的小站_files/egg_shell.jpg)bin24929 -> 24929 bytes
-rw-r--r--Back/jinwei.me/images/fabric.png (renamed from uucky.me/Uucky的小站_files/fabric.png)bin135491 -> 135491 bytes
-rw-r--r--Back/jinwei.me/index.html154
-rw-r--r--Back/jinwei.me/js/jquery.min.js3576
-rw-r--r--Back/jinwei.me/js/jquery.swatchbook.js255
-rw-r--r--Back/jinwei.me/js/modernizr.custom.79639.js167
-rw-r--r--Back/jinwei.me/mobile/css/bootstrap-theme.css347
-rw-r--r--Back/jinwei.me/mobile/css/bootstrap-theme.css.map1
-rw-r--r--Back/jinwei.me/mobile/css/bootstrap-theme.min.css7
-rw-r--r--Back/jinwei.me/mobile/css/bootstrap.css5785
-rw-r--r--Back/jinwei.me/mobile/css/bootstrap.css.map1
-rw-r--r--Back/jinwei.me/mobile/css/bootstrap.min.css7
-rw-r--r--Back/jinwei.me/mobile/css/navbar.less616
-rw-r--r--Back/jinwei.me/mobile/fonts/glyphicons-halflings-regular.eotbin0 -> 20335 bytes
-rw-r--r--Back/jinwei.me/mobile/fonts/glyphicons-halflings-regular.svg229
-rw-r--r--Back/jinwei.me/mobile/fonts/glyphicons-halflings-regular.ttfbin0 -> 41280 bytes
-rw-r--r--Back/jinwei.me/mobile/fonts/glyphicons-halflings-regular.woffbin0 -> 23320 bytes
-rw-r--r--Back/jinwei.me/mobile/index - backup.html173
-rw-r--r--Back/jinwei.me/mobile/index.html100
-rw-r--r--Back/jinwei.me/mobile/js/bootstrap.js1988
-rw-r--r--Back/jinwei.me/mobile/js/bootstrap.min.js759
-rw-r--r--Back/jinwei.me/mobile/js/jquery.min.js3375
-rw-r--r--Back/jinwei.me/mobile/js/less.js3635
-rw-r--r--Back/uucky.me/Uucky的小站.htm (renamed from uucky.me/Uucky的小站.htm)0
-rw-r--r--Back/uucky.me/Uucky的小站_files/capture.css (renamed from uucky.me/Uucky的小站_files/capture.css)0
-rw-r--r--Back/uucky.me/Uucky的小站_files/cover.jpgbin0 -> 31879 bytes
-rw-r--r--Back/uucky.me/Uucky的小站_files/css.css (renamed from uucky.me/Uucky的小站_files/css.css)0
-rw-r--r--Back/uucky.me/Uucky的小站_files/demo.css (renamed from uucky.me/Uucky的小站_files/demo.css)0
-rw-r--r--Back/uucky.me/Uucky的小站_files/egg_shell.jpgbin0 -> 24929 bytes
-rw-r--r--Back/uucky.me/Uucky的小站_files/fabric.pngbin0 -> 135491 bytes
-rw-r--r--Back/uucky.me/Uucky的小站_files/gk5FxslNkTTHtojXrkp-xF1YPouZEKgzpqZW9wN-3Ek.woff (renamed from uucky.me/Uucky的小站_files/gk5FxslNkTTHtojXrkp-xF1YPouZEKgzpqZW9wN-3Ek.woff)bin22432 -> 22432 bytes
-rw-r--r--Back/uucky.me/Uucky的小站_files/gk5FxslNkTTHtojXrkp-xONSK5BxN3NFS4EJkViHIqo.woff (renamed from uucky.me/Uucky的小站_files/gk5FxslNkTTHtojXrkp-xONSK5BxN3NFS4EJkViHIqo.woff)bin21612 -> 21612 bytes
-rw-r--r--Back/uucky.me/Uucky的小站_files/icons.woff (renamed from uucky.me/Uucky的小站_files/icons.woff)bin6772 -> 6772 bytes
-rw-r--r--Back/uucky.me/Uucky的小站_files/jquery.max.js (renamed from uucky.me/Uucky的小站_files/jquery.max.js)0
-rw-r--r--Back/uucky.me/Uucky的小站_files/jquery.min.js (renamed from uucky.me/Uucky的小站_files/jquery.min.js)0
-rw-r--r--Back/uucky.me/Uucky的小站_files/jquery.swatchbook.js (renamed from uucky.me/Uucky的小站_files/jquery.swatchbook.js)0
-rw-r--r--Back/uucky.me/Uucky的小站_files/modernizr.custom.79639.js (renamed from uucky.me/Uucky的小站_files/modernizr.custom.79639.js)0
-rw-r--r--Back/uucky.me/Uucky的小站_files/stats (renamed from uucky.me/Uucky的小站_files/stats)0
-rw-r--r--Back/uucky.me/Uucky的小站_files/style.css (renamed from uucky.me/Uucky的小站_files/style.css)0
-rw-r--r--Train/alphabet.js1
-rw-r--r--Train/jquery-1.10.2.min.js6
-rw-r--r--Train/main.js21
329 files changed, 53819 insertions, 432 deletions
diff --git a/Blocks/72906-106.jpg b/Back/Blocks/72906-106.jpg
index ea44056..ea44056 100644
--- a/Blocks/72906-106.jpg
+++ b/Back/Blocks/72906-106.jpg
Binary files differ
diff --git a/Blocks/Flipboard/css/demo.css b/Back/Blocks/Flipboard/css/demo.css
index 2bf1e5b..2bf1e5b 100644
--- a/Blocks/Flipboard/css/demo.css
+++ b/Back/Blocks/Flipboard/css/demo.css
diff --git a/Blocks/Flipboard/css/fallback.css b/Back/Blocks/Flipboard/css/fallback.css
index 6ceae5a..6ceae5a 100644
--- a/Blocks/Flipboard/css/fallback.css
+++ b/Back/Blocks/Flipboard/css/fallback.css
diff --git a/Back/Blocks/Flipboard/css/font.css b/Back/Blocks/Flipboard/css/font.css
new file mode 100644
index 0000000..de90dc0
--- /dev/null
+++ b/Back/Blocks/Flipboard/css/font.css
@@ -0,0 +1,18 @@
1@font-face {
2 font-family: 'Open Sans Condensed';
3 font-style: normal;
4 font-weight: 300;
5 src: local('Open Sans Cond Light'), local('OpenSans-CondensedLight'), url(gk5FxslNkTTHtojXrkp-xF1YPouZEKgzpqZW9wN-3Ek.woff) format('woff');
6}
7@font-face {
8 font-family: 'Open Sans Condensed';
9 font-style: normal;
10 font-weight: 700;
11 src: local('Open Sans Condensed Bold'), local('OpenSans-CondensedBold'), url(gk5FxslNkTTHtojXrkp-xONSK5BxN3NFS4EJkViHIqo.woff) format('woff');
12}
13@font-face {
14 font-family: 'Open Sans Condensed';
15 font-style: italic;
16 font-weight: 300;
17 src: local('Open Sans Cond Light Italic'), local('OpenSans-CondensedLightItalic'), url(jIXlqT1WKafUSwj6s9AzV6XnXbwdDC8wAz6IIzmCDUP3rGVtsTkPsbDajuO5ueQw.woff) format('woff');
18} \ No newline at end of file
diff --git a/Back/Blocks/Flipboard/css/gk5FxslNkTTHtojXrkp-xF1YPouZEKgzpqZW9wN-3Ek.woff b/Back/Blocks/Flipboard/css/gk5FxslNkTTHtojXrkp-xF1YPouZEKgzpqZW9wN-3Ek.woff
new file mode 100644
index 0000000..66adc47
--- /dev/null
+++ b/Back/Blocks/Flipboard/css/gk5FxslNkTTHtojXrkp-xF1YPouZEKgzpqZW9wN-3Ek.woff
Binary files differ
diff --git a/Back/Blocks/Flipboard/css/gk5FxslNkTTHtojXrkp-xONSK5BxN3NFS4EJkViHIqo.woff b/Back/Blocks/Flipboard/css/gk5FxslNkTTHtojXrkp-xONSK5BxN3NFS4EJkViHIqo.woff
new file mode 100644
index 0000000..fa873b2
--- /dev/null
+++ b/Back/Blocks/Flipboard/css/gk5FxslNkTTHtojXrkp-xONSK5BxN3NFS4EJkViHIqo.woff
Binary files differ
diff --git a/Back/Blocks/Flipboard/css/jIXlqT1WKafUSwj6s9AzV6XnXbwdDC8wAz6IIzmCDUP3rGVtsTkPsbDajuO5ueQw.woff b/Back/Blocks/Flipboard/css/jIXlqT1WKafUSwj6s9AzV6XnXbwdDC8wAz6IIzmCDUP3rGVtsTkPsbDajuO5ueQw.woff
new file mode 100644
index 0000000..ffd3d2f
--- /dev/null
+++ b/Back/Blocks/Flipboard/css/jIXlqT1WKafUSwj6s9AzV6XnXbwdDC8wAz6IIzmCDUP3rGVtsTkPsbDajuO5ueQw.woff
Binary files differ
diff --git a/Blocks/Flipboard/css/style.css b/Back/Blocks/Flipboard/css/style.css
index 577dc52..577dc52 100644
--- a/Blocks/Flipboard/css/style.css
+++ b/Back/Blocks/Flipboard/css/style.css
diff --git a/Blocks/Flipboard/images/1.gif b/Back/Blocks/Flipboard/images/1.gif
index 391d383..391d383 100644
--- a/Blocks/Flipboard/images/1.gif
+++ b/Back/Blocks/Flipboard/images/1.gif
Binary files differ
diff --git a/Blocks/Flipboard/images/1.jpg b/Back/Blocks/Flipboard/images/1.jpg
index c8623c3..c8623c3 100644
--- a/Blocks/Flipboard/images/1.jpg
+++ b/Back/Blocks/Flipboard/images/1.jpg
Binary files differ
diff --git a/Blocks/Flipboard/images/2.jpg b/Back/Blocks/Flipboard/images/2.jpg
index f463a7d..f463a7d 100644
--- a/Blocks/Flipboard/images/2.jpg
+++ b/Back/Blocks/Flipboard/images/2.jpg
Binary files differ
diff --git a/Blocks/Flipboard/images/3.jpg b/Back/Blocks/Flipboard/images/3.jpg
index 900e75a..900e75a 100644
--- a/Blocks/Flipboard/images/3.jpg
+++ b/Back/Blocks/Flipboard/images/3.jpg
Binary files differ
diff --git a/Blocks/Flipboard/images/31.png b/Back/Blocks/Flipboard/images/31.png
index d3eac5e..d3eac5e 100644
--- a/Blocks/Flipboard/images/31.png
+++ b/Back/Blocks/Flipboard/images/31.png
Binary files differ
diff --git a/Blocks/Flipboard/images/32.png b/Back/Blocks/Flipboard/images/32.png
index 941876a..941876a 100644
--- a/Blocks/Flipboard/images/32.png
+++ b/Back/Blocks/Flipboard/images/32.png
Binary files differ
diff --git a/Blocks/Flipboard/images/33.png b/Back/Blocks/Flipboard/images/33.png
index 486fc92..486fc92 100644
--- a/Blocks/Flipboard/images/33.png
+++ b/Back/Blocks/Flipboard/images/33.png
Binary files differ
diff --git a/Blocks/Flipboard/images/34.png b/Back/Blocks/Flipboard/images/34.png
index 53a3f82..53a3f82 100644
--- a/Blocks/Flipboard/images/34.png
+++ b/Back/Blocks/Flipboard/images/34.png
Binary files differ
diff --git a/Blocks/Flipboard/images/4.jpg b/Back/Blocks/Flipboard/images/4.jpg
index a487d1f..a487d1f 100644
--- a/Blocks/Flipboard/images/4.jpg
+++ b/Back/Blocks/Flipboard/images/4.jpg
Binary files differ
diff --git a/Blocks/Flipboard/images/41.jpg b/Back/Blocks/Flipboard/images/41.jpg
index c7f7d40..c7f7d40 100644
--- a/Blocks/Flipboard/images/41.jpg
+++ b/Back/Blocks/Flipboard/images/41.jpg
Binary files differ
diff --git a/Blocks/Flipboard/images/43.jpg b/Back/Blocks/Flipboard/images/43.jpg
index a37db8e..a37db8e 100644
--- a/Blocks/Flipboard/images/43.jpg
+++ b/Back/Blocks/Flipboard/images/43.jpg
Binary files differ
diff --git a/Blocks/Flipboard/images/44.jpg b/Back/Blocks/Flipboard/images/44.jpg
index 1289d2d..1289d2d 100644
--- a/Blocks/Flipboard/images/44.jpg
+++ b/Back/Blocks/Flipboard/images/44.jpg
Binary files differ
diff --git a/Blocks/Flipboard/images/5.jpg b/Back/Blocks/Flipboard/images/5.jpg
index 9033d04..9033d04 100644
--- a/Blocks/Flipboard/images/5.jpg
+++ b/Back/Blocks/Flipboard/images/5.jpg
Binary files differ
diff --git a/Blocks/Flipboard/images/6.jpg b/Back/Blocks/Flipboard/images/6.jpg
index 45cbb34..45cbb34 100644
--- a/Blocks/Flipboard/images/6.jpg
+++ b/Back/Blocks/Flipboard/images/6.jpg
Binary files differ
diff --git a/Blocks/Flipboard/images/7.jpg b/Back/Blocks/Flipboard/images/7.jpg
index 1dfd8cb..1dfd8cb 100644
--- a/Blocks/Flipboard/images/7.jpg
+++ b/Back/Blocks/Flipboard/images/7.jpg
Binary files differ
diff --git a/Blocks/Flipboard/images/8.jpg b/Back/Blocks/Flipboard/images/8.jpg
index a591327..a591327 100644
--- a/Blocks/Flipboard/images/8.jpg
+++ b/Back/Blocks/Flipboard/images/8.jpg
Binary files differ
diff --git a/Blocks/Flipboard/images/ImageAttribution.txt b/Back/Blocks/Flipboard/images/ImageAttribution.txt
index 962294f..962294f 100644
--- a/Blocks/Flipboard/images/ImageAttribution.txt
+++ b/Back/Blocks/Flipboard/images/ImageAttribution.txt
diff --git a/Blocks/Flipboard/images/beijing.png b/Back/Blocks/Flipboard/images/beijing.png
index c90b15c..c90b15c 100644
--- a/Blocks/Flipboard/images/beijing.png
+++ b/Back/Blocks/Flipboard/images/beijing.png
Binary files differ
diff --git a/Blocks/Flipboard/images/cover.jpg b/Back/Blocks/Flipboard/images/cover.jpg
index 55565f8..55565f8 100644
--- a/Blocks/Flipboard/images/cover.jpg
+++ b/Back/Blocks/Flipboard/images/cover.jpg
Binary files differ
diff --git a/Blocks/Flipboard/images/cover1.jpg b/Back/Blocks/Flipboard/images/cover1.jpg
index 6e48737..6e48737 100644
--- a/Blocks/Flipboard/images/cover1.jpg
+++ b/Back/Blocks/Flipboard/images/cover1.jpg
Binary files differ
diff --git a/Blocks/Flipboard/images/fabric_plaid.png b/Back/Blocks/Flipboard/images/fabric_plaid.png
index 7120bb4..7120bb4 100644
--- a/Blocks/Flipboard/images/fabric_plaid.png
+++ b/Back/Blocks/Flipboard/images/fabric_plaid.png
Binary files differ
diff --git a/Blocks/Flipboard/index.html b/Back/Blocks/Flipboard/index.html
index b97d914..d83438c 100644
--- a/Blocks/Flipboard/index.html
+++ b/Back/Blocks/Flipboard/index.html
@@ -1,316 +1,318 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<html lang="en"> 2<html lang="en">
3 <head> 3 <head>
4 <meta charset="UTF-8" /> 4 <meta charset="UTF-8" />
5 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
6 <title>说好的约定</title> 6 <title>说好的约定</title>
7 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"> 7 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
8 <meta name="description" content="Experimental Page Layout Inspired by Flipboard" /> 8 <meta name="description" content="Experimental Page Layout Inspired by Flipboard" />
9 <meta name="keywords" content="flip, pages, flipboard, layout, responsive, web, web design, grid, ipad, jquery, css3, 3d, perspective, transitions, transform" /> 9 <meta name="keywords" content="flip, pages, flipboard, layout, responsive, web, web design, grid, ipad, jquery, css3, 3d, perspective, transitions, transform" />
10 <meta name="author" content="Jinwei" /> 10 <meta name="author" content="Jinwei" />
11 <link href='http://fonts.googleapis.com/css?family=Open+Sans+Condensed:700,300,300italic' rel='stylesheet' type='text/css'> 11 <link href='./css/font.css' rel='stylesheet' type='text/css'>
12 <link rel="stylesheet" type="text/css" href="css/demo.css" /> 12 <link rel="stylesheet" type="text/css" href="css/demo.css" />
13 <link rel="stylesheet" type="text/css" href="css/style.css" /> 13 <link rel="stylesheet" type="text/css" href="css/style.css" />
14 <script type="text/javascript" src="js/modernizr.custom.08464.js"></script> 14 <script type="text/javascript" src="js/modernizr.custom.08464.js"></script>
15 <script id="pageTmpl" type="text/x-jquery-tmpl"> 15 <script id="pageTmpl" type="text/x-jquery-tmpl">
16 <div class="${theClass}" style="${theStyle}"> 16 <div class="${theClass}" style="${theStyle}">
17 <div class="front"> 17 <div class="front">
18 <div class="outer"> 18 <div class="outer">
19 <div class="content" style="${theContentStyleFront}"> 19 <div class="content" style="${theContentStyleFront}">
20 <div class="inner">{{html theContentFront}}</div> 20 <div class="inner">{{html theContentFront}}</div>
21 </div> 21 </div>
22 </div> 22 </div>
23 </div> 23 </div>
24 <div class="back"> 24 <div class="back">
25 <div class="outer"> 25 <div class="outer">
26 <div class="content" style="${theContentStyleBack}"> 26 <div class="content" style="${theContentStyleBack}">
27 <div class="inner">{{html theContentBack}}</div> 27 <div class="inner">{{html theContentBack}}</div>
28 </div> 28 </div>
29 </div> 29 </div>
30 </div> 30 </div>
31 </div> 31 </div>
32 </script> 32 </script>
33 </head> 33 </head>
34 <body> 34 <body>
35 35
36 <header class="main-title"> 36 <header class="main-title">
37 <h1>说好的约定 </br><strong>TransSiberian</strong></h1> 37 <h1>说好的约定 </br><strong>TransSiberian</strong></h1>
38 <p>Swipe or drag to flip the pages, click to open items </p> 38 <p>Swipe or drag to flip the pages, click to open items </p>
39 <p><strong>Best viewed in a Webkit browser (Safari, Chrome)</strong></p> 39 <p><strong>Best viewed in a Webkit browser (Safari, Chrome)</strong></p>
40 </header> 40 </header>
41 41
42 <div id="flip" class="container"> 42 <div id="flip" class="container">
43 43
44 <div class="f-page f-cover"> 44 <div class="f-page f-cover">
45 <div class="cover-elements"> 45 <div class="cover-elements">
46 <div class="logo"> 46 <div class="logo">
47 Start 47 Start
48 48
49 </div> 49 </div>
50 50
51 51
52 </div> 52 </div>
53 <div class="f-cover-flip"></div> 53 <div class="f-cover-flip"></div>
54 </div> 54 </div>
55 55
56 <div class="f-page"> 56 <div class="f-page">
57 <div class="f-title"> 57 <div class="f-title">
58 58
59 <h2 align="center">从北京到莫斯科</h2> 59 <h2 align="center">从北京到莫斯科</h2>
60 60
61 </div> 61 </div>
62 <div class="box w-25 h-70"> 62 <div class="box w-25 h-70">
63 <div class="img-cont img-1"></div> 63 <div class="img-cont img-1"></div>
64 <h3>A brief introduction <span>Published May 3, 2013</span></h3> 64 <h3>A brief introduction <span>Published May 3, 2013</span></h3>
65 <p>记得最早是在人人网上看到了德铁的数据库里有从德国到北京的火车。具体是从德国到华沙,从华沙到莫斯科,从莫斯科到北京。后来好像就能经常看到莫斯科到北京的火车的消息了。也许是自己开始不经意地关注了。今天早上特意在维基百科上仔细地看了有关莫斯科到北京的这条线路的火车的信息,在豆瓣上看到了几篇坐过这趟火车的游者的笔记,下午又看了一部有关这趟世界上最长的铁路的电影,TransSiberian,(穿越西伯利亚),毫无疑问,我已经深深地征服了。很显然,我是一直以来都喜欢坐火车出行的。这趟6天5夜的旅行,如果能够成行,必然是生命中不可多得的一次大冒险。首先简要地介绍一下有关这趟火车的细节。从北京到莫斯科的火车线路一共有两趟。一趟是K3/4次列车,经二连浩特进入蒙古国然后进入俄罗斯境内,列车及乘务员全部由中国方面负责。另一趟是K29/30次列车,从北京出发,经满洲里进入俄罗斯境内,列车及乘务人员全部由俄罗斯方面负责。如果是我,我肯定会选择由中方担当营运的K3/4次,一来与乘务员的语言交流方便(这是最主要的),好像其他也没啥理由了。接下来也围绕这一次列车展开。票价方面,分为高包软卧,软卧,硬卧三个档次,分别是6021元,5501元,3737元(数据来自http://rw19.net/record/)。高包就是两人一个包厢,然后一些设施方面比较豪华,普通的软卧是4人一个包厢,硬卧也是4人包房。发车时间方面,每周一班,每周三北京站早上07:45发车,次周一14:19抵达莫斯科。途中主要的站点有大同、二连浩特、扎门乌德、乌兰巴托、伊尔库茨克、新西伯利亚等站。因为中国用的是国际标准轨,而蒙古国和俄罗斯用的是更宽的宽轨,所以在中国边境的二连浩特,列车将会被整列被吊起,更换铁轨。这毫无疑问是激动人心的一次体验。</p> 65 <p>记得最早是在人人网上看到了德铁的数据库里有从德国到北京的火车。具体是从德国到华沙,从华沙到莫斯科,从莫斯科到北京。后来好像就能经常看到莫斯科到北京的火车的消息了。也许是自己开始不经意地关注了。今天早上特意在维基百科上仔细地看了有关莫斯科到北京的这条线路的火车的信息,在豆瓣上看到了几篇坐过这趟火车的游者的笔记,下午又看了一部有关这趟世界上最长的铁路的电影,TransSiberian,(穿越西伯利亚),毫无疑问,我已经深深地征服了。很显然,我是一直以来都喜欢坐火车出行的。这趟6天5夜的旅行,如果能够成行,必然是生命中不可多得的一次大冒险。首先简要地介绍一下有关这趟火车的细节。从北京到莫斯科的火车线路一共有两趟。一趟是K3/4次列车,经二连浩特进入蒙古国然后进入俄罗斯境内,列车及乘务员全部由中国方面负责。另一趟是K29/30次列车,从北京出发,经满洲里进入俄罗斯境内,列车及乘务人员全部由俄罗斯方面负责。如果是我,我肯定会选择由中方担当营运的K3/4次,一来与乘务员的语言交流方便(这是最主要的),好像其他也没啥理由了。接下来也围绕这一次列车展开。票价方面,分为高包软卧,软卧,硬卧三个档次,分别是6021元,5501元,3737元(数据来自http://rw19.net/record/)。高包就是两人一个包厢,然后一些设施方面比较豪华,普通的软卧是4人一个包厢,硬卧也是4人包房。发车时间方面,每周一班,每周三北京站早上07:45发车,次周一14:19抵达莫斯科。途中主要的站点有大同、二连浩特、扎门乌德、乌兰巴托、伊尔库茨克、新西伯利亚等站。因为中国用的是国际标准轨,而蒙古国和俄罗斯用的是更宽的宽轨,所以在中国边境的二连浩特,列车将会被整列被吊起,更换铁轨。这毫无疑问是激动人心的一次体验。</p>
66 </div> 66 </div>
67 <div class="box w-50 h-70 box-b-l box-b-r"> 67 <div class="box w-50 h-70 box-b-l box-b-r">
68 <div class="img-cont img-2"></div> 68 <div class="img-cont img-2"></div>
69 <h3>(一)地图</span></h3> 69 <h3>(一)地图</span></h3>
70 <p>如果我们把目光从中国版图移向世界,那么这样一条铁路线会让你惊叹不已,从太平洋沿岸的符拉迪沃斯托克(海参崴)到乌拉尔山脉的车里雅宾斯克,乌拉尔山是欧洲和亚洲的分界线,车里雅宾斯克是2007年上合军演的所在地,这条线路就是横贯亚欧大陆的西伯利亚大铁路,俄罗斯西伯利亚-远东地区的交通大动脉。当从北京站始发的k3次国际列车出境二连浩特,经乌兰巴托进入俄罗斯境内后,从蒙古国延伸过来的铁轨便与西伯利亚大铁路汇合了,而汇合点距离传说中的贝加尔湖仅半天多的路程而已。 70 <p>如果我们把目光从中国版图移向世界,那么这样一条铁路线会让你惊叹不已,从太平洋沿岸的符拉迪沃斯托克(海参崴)到乌拉尔山脉的车里雅宾斯克,乌拉尔山是欧洲和亚洲的分界线,车里雅宾斯克是2007年上合军演的所在地,这条线路就是横贯亚欧大陆的西伯利亚大铁路,俄罗斯西伯利亚-远东地区的交通大动脉。当从北京站始发的k3次国际列车出境二连浩特,经乌兰巴托进入俄罗斯境内后,从蒙古国延伸过来的铁轨便与西伯利亚大铁路汇合了,而汇合点距离传说中的贝加尔湖仅半天多的路程而已。
71K3次国际列车的票价是2700元,加上180元的蒙古国的过境签证,约2900元。我知道,经过努力我可能在网上找到3000-4000元的从北京到莫斯科的飞机票,飞机只需要7、8个小时即可到莫斯科,而火车需要六天五夜。然而,10月份正是俄罗斯的深秋季节,遥远的西伯利亚充满着无尽的想象,浩瀚的贝加尔湖,金黄的白桦林,坚韧豪放的俄罗斯农庄……时间和价格都不是我可以错过这条线路的理由,我义无反顾地选择了这条路线,从北京去莫斯科大学亚非学院交流学习。 71K3次国际列车的票价是2700元,加上180元的蒙古国的过境签证,约2900元。我知道,经过努力我可能在网上找到3000-4000元的从北京到莫斯科的飞机票,飞机只需要7、8个小时即可到莫斯科,而火车需要六天五夜。然而,10月份正是俄罗斯的深秋季节,遥远的西伯利亚充满着无尽的想象,浩瀚的贝加尔湖,金黄的白桦林,坚韧豪放的俄罗斯农庄……时间和价格都不是我可以错过这条线路的理由,我义无反顾地选择了这条路线,从北京去莫斯科大学亚非学院交流学习。
72列车时刻表上,这条线路被标记为“北京-乌兰巴托-莫斯科”,但这条线路的主角既不是北京、乌兰巴托,也不是莫斯科,而是西伯利亚。 72列车时刻表上,这条线路被标记为“北京-乌兰巴托-莫斯科”,但这条线路的主角既不是北京、乌兰巴托,也不是莫斯科,而是西伯利亚。
73列车从北京站出发,星期三早晨7点45分,经张家口南、大同、集宁南、晚上8点多到达中国的边境检查站二连浩特,在这里护照会被盖上出境章,旅客需要填写(旅客行李)物品(申)报(海)关单,同时还要更换铁轨,因为中国的铁轨与蒙古国、俄罗斯的铁轨宽窄不同。换轨在“国际换轮库”里进行,火车厢被一节一节地吊起,中国的铁轨撤掉,俄式的铁轨换上,整个过程旅客无须下车,也感觉不到任何震荡。因为换轨和边境检查,所以列车会在二连停3个小时左右。晚上11点多火车离开二连浩特进入蒙古国,随即停在蒙方的边境检查站上,进行蒙方入(过)境签证检查、物品报关等手续,第二天下午1点多达到乌兰巴托,晚上9点左右再次到达蒙古国边境,进行蒙方的出境检查。乌兰巴托时间和北京时间大概是相同的,所以无须调整手表。 73列车从北京站出发,星期三早晨7点45分,经张家口南、大同、集宁南、晚上8点多到达中国的边境检查站二连浩特,在这里护照会被盖上出境章,旅客需要填写(旅客行李)物品(申)报(海)关单,同时还要更换铁轨,因为中国的铁轨与蒙古国、俄罗斯的铁轨宽窄不同。换轨在“国际换轮库”里进行,火车厢被一节一节地吊起,中国的铁轨撤掉,俄式的铁轨换上,整个过程旅客无须下车,也感觉不到任何震荡。因为换轨和边境检查,所以列车会在二连停3个小时左右。晚上11点多火车离开二连浩特进入蒙古国,随即停在蒙方的边境检查站上,进行蒙方入(过)境签证检查、物品报关等手续,第二天下午1点多达到乌兰巴托,晚上9点左右再次到达蒙古国边境,进行蒙方的出境检查。乌兰巴托时间和北京时间大概是相同的,所以无须调整手表。
74乌兰巴托时间晚上10点多出蒙古国进入俄罗斯,莫斯科时间比北京时间晚4个小时,所以莫斯科时间下午6点左右进入俄罗斯。列车在边境的纳乌什基(наушки)停车,进行俄方的入境签证检查,填写物品报关单、移民卡,这里的检查比较细致。至此,烦琐的边境检查终于结束了,列车奔驰在辽阔的西伯利亚土地上了。经贝加尔湖、伊尔库茨克、克拉斯诺雅尔斯克、新西伯利亚、奥姆斯克、秋明油田(大概在这附近,列车不再走西伯利亚大铁路,转而向西北的东欧平原进发),进入乌拉尔山区的叶卡捷林堡,现在的叶卡也叫做斯维尔德洛夫斯克,过了乌拉尔山,列车正式驶入欧洲,再经别尔米、基洛夫、古都弗拉基米尔,最后进入900万人口的莫斯科,时值莫斯科时间星期一下午2点多。 74乌兰巴托时间晚上10点多出蒙古国进入俄罗斯,莫斯科时间比北京时间晚4个小时,所以莫斯科时间下午6点左右进入俄罗斯。列车在边境的纳乌什基(наушки)停车,进行俄方的入境签证检查,填写物品报关单、移民卡,这里的检查比较细致。至此,烦琐的边境检查终于结束了,列车奔驰在辽阔的西伯利亚土地上了。经贝加尔湖、伊尔库茨克、克拉斯诺雅尔斯克、新西伯利亚、奥姆斯克、秋明油田(大概在这附近,列车不再走西伯利亚大铁路,转而向西北的东欧平原进发),进入乌拉尔山区的叶卡捷林堡,现在的叶卡也叫做斯维尔德洛夫斯克,过了乌拉尔山,列车正式驶入欧洲,再经别尔米、基洛夫、古都弗拉基米尔,最后进入900万人口的莫斯科,时值莫斯科时间星期一下午2点多。
75这条线路共经过三个国家,纵贯蒙古国南北,经过俄罗斯至少14个行政单位(州、共和国、自治区、边疆区),经过蒙古高原、蒙俄边境的雅布洛诺夫山脉、世界上最深的内陆湖贝加尔湖、中西伯利亚高原的南部、西西伯利亚平原南部,翻过乌拉尔山区后进入东欧平原。列车出中国需要1天,过蒙古也需要1天,其余4天都在广袤的俄罗斯领土上奔驰。 75这条线路共经过三个国家,纵贯蒙古国南北,经过俄罗斯至少14个行政单位(州、共和国、自治区、边疆区),经过蒙古高原、蒙俄边境的雅布洛诺夫山脉、世界上最深的内陆湖贝加尔湖、中西伯利亚高原的南部、西西伯利亚平原南部,翻过乌拉尔山区后进入东欧平原。列车出中国需要1天,过蒙古也需要1天,其余4天都在广袤的俄罗斯领土上奔驰。
76向东这条线路可以延伸至太平沿岸的海参崴,向西可以延伸至乌克兰、捷克、德国、巴黎等等,跟我同火车包厢的伙伴就是乘坐这条线路回比利时。 76向东这条线路可以延伸至太平沿岸的海参崴,向西可以延伸至乌克兰、捷克、德国、巴黎等等,跟我同火车包厢的伙伴就是乘坐这条线路回比利时。
77</p> 77</p>
78 </div> 78 </div>
79 <div class="box w-25 h-70"> 79 <div class="box w-25 h-70">
80 <div class="img-cont img-3"></div> 80 <div class="img-cont img-3"></div>
81 <h3>(二)离别<span>Published May 3, 2012</span></h3> 81 <h3>(二)离别<span>Published May 3, 2012</span></h3>
82 <p>10月3号凌晨4点多,lan和几个好朋友一起送我去北京站。出租车上,我默默地流泪了,我忍不住我的眼泪,可能是因为我马上就要离开我最熟识的朋友了,大约八个月我们见不到面,也可能是因为胆怯,因为我马上就要步入一个高度不确定的环境中,而我从未经历过这种不确定性。 82 <p>10月3号凌晨4点多,lan和几个好朋友一起送我去北京站。出租车上,我默默地流泪了,我忍不住我的眼泪,可能是因为我马上就要离开我最熟识的朋友了,大约八个月我们见不到面,也可能是因为胆怯,因为我马上就要步入一个高度不确定的环境中,而我从未经历过这种不确定性。
83出发前的两个星期内,我不停地与亲朋师友们告别。见过了pictures版的老友 83出发前的两个星期内,我不停地与亲朋师友们告别。见过了pictures版的老友
84们、小柯、Q艳、小米夫妇和YQ,跟宿舍的哥们喝过,跟同班同学喝过,跟同高中的师兄、师姐、师妹们聚过,同门师友聚会为我饯行,dai爷又以俄餐送行,还去天津看过妹妹,见到了阿蒙和单姐,……临走时,班级的几个穷哥们撕扭着塞给我500块钱……所有这一切,我很感动,也很满足……离别,让生命和友情绽放,却又瞬间将其置于深远的时空下,煎熬着,飘散在空气中的味道叫伤感。 84们、小柯、Q艳、小米夫妇和YQ,跟宿舍的哥们喝过,跟同班同学喝过,跟同高中的师兄、师姐、师妹们聚过,同门师友聚会为我饯行,dai爷又以俄餐送行,还去天津看过妹妹,见到了阿蒙和单姐,……临走时,班级的几个穷哥们撕扭着塞给我500块钱……所有这一切,我很感动,也很满足……离别,让生命和友情绽放,却又瞬间将其置于深远的时空下,煎熬着,飘散在空气中的味道叫伤感。
85就这样上火车了。安检很松,只需查看车票。 85就这样上火车了。安检很松,只需查看车票。
86我在11车厢第11铺,属于第3包厢,跟我同包厢的是一个比利时人,并且四人包厢里面只有我们两个旅客,看来,我不得不用我蹩脚的英语跟他交流了。lan和好朋友送我到包厢里,把行李放到床铺下面,我们在车厢外壁上的国徽前合影作别,几分钟后,列车缓缓启动…… 86我在11车厢第11铺,属于第3包厢,跟我同包厢的是一个比利时人,并且四人包厢里面只有我们两个旅客,看来,我不得不用我蹩脚的英语跟他交流了。lan和好朋友送我到包厢里,把行李放到床铺下面,我们在车厢外壁上的国徽前合影作别,几分钟后,列车缓缓启动……
87我身上带着1500元的美金、笔记本电脑和护照,所以,上了火车心里总是忐忑不安。dai爷曾经在1992年坐过这趟列车,他特别嘱咐我小心看管自己的财物,晚上睡觉的时候要把包厢门反锁好,必要时要用绳子把门锁再缠一遍。在百度网,我也试图搜索一些对这趟列车的介绍,结果搜索出来的消息大部分与90年代的抢劫、偷窃案件有关,也有案件发生在近几年。不过,这么多年过去了,车上的治安应该所有改善吧,我这样想,况且利用国际列车运输货物的高峰期早过去了,车上旅客所携带贵重财物已经很少了。 87我身上带着1500元的美金、笔记本电脑和护照,所以,上了火车心里总是忐忑不安。dai爷曾经在1992年坐过这趟列车,他特别嘱咐我小心看管自己的财物,晚上睡觉的时候要把包厢门反锁好,必要时要用绳子把门锁再缠一遍。在百度网,我也试图搜索一些对这趟列车的介绍,结果搜索出来的消息大部分与90年代的抢劫、偷窃案件有关,也有案件发生在近几年。不过,这么多年过去了,车上的治安应该所有改善吧,我这样想,况且利用国际列车运输货物的高峰期早过去了,车上旅客所携带贵重财物已经很少了。
88愿上帝保佑我一路平安! 88愿上帝保佑我一路平安!
89</p> 89</p>
90 </div> 90 </div>
91 <div class="box w-50 h-30 box-b-r title-top"> 91 <div class="box w-50 h-30 box-b-r title-top">
92 <h3>(三)启程<span>Published May 3, 2012</span></h3> 92 <h3>(三)启程<span>Published May 3, 2012</span></h3>
93 <p>出发前的晚上我只睡了一个小时,火车离站后,困意迅速来袭。跟比利时人简单打了招呼,我把包厢门反锁,把随身背的361度运动斜挎包放在枕边,倒在卧席上很快就睡着了。 93 <p>出发前的晚上我只睡了一个小时,火车离站后,困意迅速来袭。跟比利时人简单打了招呼,我把包厢门反锁,把随身背的361度运动斜挎包放在枕边,倒在卧席上很快就睡着了。
94当我醒来时,发现比利时人也睡着了,他头戴耳机,眼带黑眼罩,身上的毛仿佛野草,杂乱而茂盛……此时列车好像正在经过山区,每隔一会儿就会出现一个隧道,我走出包厢向窗外看,丛山延绵,硕大的山谷扑面而来,我顿时失去了方向,竟不知道这是什么地方。自从去年11月份“京郊穿越黄草梁”一事闹得满城风雨后(此事参见《柏峪-黄草梁-七座楼-向阳村……穿行记》),近一年的时间内我没有“撒野”了,更是很少见到大山。我仔细寻找着路边的字迹,发现了“官厅”、“怀来”字样,才意识到这里是北京的怀柔区。我想起,北京城地处平原,北京小平原的西北方向就是燕山,此刻列车正在穿越燕山,向内蒙古高原方向驶去。 94当我醒来时,发现比利时人也睡着了,他头戴耳机,眼带黑眼罩,身上的毛仿佛野草,杂乱而茂盛……此时列车好像正在经过山区,每隔一会儿就会出现一个隧道,我走出包厢向窗外看,丛山延绵,硕大的山谷扑面而来,我顿时失去了方向,竟不知道这是什么地方。自从去年11月份“京郊穿越黄草梁”一事闹得满城风雨后(此事参见《柏峪-黄草梁-七座楼-向阳村……穿行记》),近一年的时间内我没有“撒野”了,更是很少见到大山。我仔细寻找着路边的字迹,发现了“官厅”、“怀来”字样,才意识到这里是北京的怀柔区。我想起,北京城地处平原,北京小平原的西北方向就是燕山,此刻列车正在穿越燕山,向内蒙古高原方向驶去。
95我回到包厢继续补觉,昏睡中被叫醒,原来是列车乘务员送来免费的午餐券和晚餐券,餐券上有中文、英文和俄文三种语言。既然车上有免费餐券,那我的那些食物岂不白带了?隔壁包厢有女乘客高声说,“怎么还没出河北”,原来列车刚过河北沙城,我心想,旅程刚刚开始就如此心急,那以后的六天五夜她该如何度过呢?我出发时,朋友们也担心我该如何度过这漫长的六天五夜,师兄甚至给我copy了130多集的评书《隋唐演义》,让我在火车上解闷儿,可我毫不担心,我给远在南京的“jia先生”发短信说,六天里我会写日记、看俄罗斯国情方面的书、学俄语、吃东西、做俯卧撑锻炼身体、看风景拍照片……我会有很多事情做,只要不丢东西,我相信这将是一次很难忘的旅行。 95我回到包厢继续补觉,昏睡中被叫醒,原来是列车乘务员送来免费的午餐券和晚餐券,餐券上有中文、英文和俄文三种语言。既然车上有免费餐券,那我的那些食物岂不白带了?隔壁包厢有女乘客高声说,“怎么还没出河北”,原来列车刚过河北沙城,我心想,旅程刚刚开始就如此心急,那以后的六天五夜她该如何度过呢?我出发时,朋友们也担心我该如何度过这漫长的六天五夜,师兄甚至给我copy了130多集的评书《隋唐演义》,让我在火车上解闷儿,可我毫不担心,我给远在南京的“jia先生”发短信说,六天里我会写日记、看俄罗斯国情方面的书、学俄语、吃东西、做俯卧撑锻炼身体、看风景拍照片……我会有很多事情做,只要不丢东西,我相信这将是一次很难忘的旅行。
96大约11点多,我背着361度运动包,拿着餐券去餐车吃免费午餐,比利时人还在睡觉。运动包里面装着笔记本电脑和证件,所以我决定包不离身。在餐车里,我点了炒花菜、炒蒜苗和一碗米饭,饮料4元一听,需要单独付费。对面来了一个年轻男子,大概27、28岁,个子与我相仿,他点了同样的菜,我主动与他搭话,算是礼貌性地打招呼,他则告诉我“免费餐券过了今天不再有”,原来这免费午餐是对旅客的“慰问餐”。他是北京人,家住宣武区,在莫斯科做生意,正属我的研究群体之列,所以我多问了他几句,他把货物装在包厢里。 96大约11点多,我背着361度运动包,拿着餐券去餐车吃免费午餐,比利时人还在睡觉。运动包里面装着笔记本电脑和证件,所以我决定包不离身。在餐车里,我点了炒花菜、炒蒜苗和一碗米饭,饮料4元一听,需要单独付费。对面来了一个年轻男子,大概27、28岁,个子与我相仿,他点了同样的菜,我主动与他搭话,算是礼貌性地打招呼,他则告诉我“免费餐券过了今天不再有”,原来这免费午餐是对旅客的“慰问餐”。他是北京人,家住宣武区,在莫斯科做生意,正属我的研究群体之列,所以我多问了他几句,他把货物装在包厢里。
9790年代,苏联解体后,俄罗斯的商品极其短缺,尤其是日用品,这为廉价的中国商品进入俄罗斯市场提供了机会,而国际列车就成为最早的商品运输工具。列车规定,旅客行李限重35公斤,但大概这个规定没人理会,或者早被旅客们疏通得名存实亡了,所以这些中国旅客们往往携带很多日用品上车,而列车所停靠的小站往往成为中国商品的集散地,通常尚未到莫斯科,车上的商品早已换成大把的卢布了。正因为车上的商人较多,钱财较多,所以抢劫、偷窃比较猖獗。dai爷讲,他当年坐这趟列车时,从莫斯科上来一个俄罗斯男人,带着两个俄罗斯姑娘,从莫斯科到北京,一直向旅客提供性服务;而这些中国商人也趾高气昂地嫖娼,还宣称为中国失去那么多北方领土报仇雪恨……啧啧……鱼龙混杂、藏污纳垢的东方快车! 9790年代,苏联解体后,俄罗斯的商品极其短缺,尤其是日用品,这为廉价的中国商品进入俄罗斯市场提供了机会,而国际列车就成为最早的商品运输工具。列车规定,旅客行李限重35公斤,但大概这个规定没人理会,或者早被旅客们疏通得名存实亡了,所以这些中国旅客们往往携带很多日用品上车,而列车所停靠的小站往往成为中国商品的集散地,通常尚未到莫斯科,车上的商品早已换成大把的卢布了。正因为车上的商人较多,钱财较多,所以抢劫、偷窃比较猖獗。dai爷讲,他当年坐这趟列车时,从莫斯科上来一个俄罗斯男人,带着两个俄罗斯姑娘,从莫斯科到北京,一直向旅客提供性服务;而这些中国商人也趾高气昂地嫖娼,还宣称为中国失去那么多北方领土报仇雪恨……啧啧……鱼龙混杂、藏污纳垢的东方快车!
98吃饭之际,对面的男子突然堆笑着向我提出要求:“帮个忙儿吧,帮我带几条烟在你房间里”。面对突如其来的要求,我没有任何心理准备。他开始谩骂俄方的女检查员,憎恨俄方的例行检查,我不知怎么拒绝他的要求,当然更不想接受,因为这可能会给我带来麻烦,我只好岔开话题。我非常不爽,凭什么让我帮他做这种事?我立即感觉到他脸上的笑容很猥琐,饭没有吃完,我就起身走了。走廊里,我突然记起,我曾经把包厢地址告诉过他,而餐桌上我也没有明确拒绝他的要求,想必他会找来,我该如何是好? 98吃饭之际,对面的男子突然堆笑着向我提出要求:“帮个忙儿吧,帮我带几条烟在你房间里”。面对突如其来的要求,我没有任何心理准备。他开始谩骂俄方的女检查员,憎恨俄方的例行检查,我不知怎么拒绝他的要求,当然更不想接受,因为这可能会给我带来麻烦,我只好岔开话题。我非常不爽,凭什么让我帮他做这种事?我立即感觉到他脸上的笑容很猥琐,饭没有吃完,我就起身走了。走廊里,我突然记起,我曾经把包厢地址告诉过他,而餐桌上我也没有明确拒绝他的要求,想必他会找来,我该如何是好?
99免费晚餐我没有去吃,因为我不想再碰到这个商人。我在日记里写道: 99免费晚餐我没有去吃,因为我不想再碰到这个商人。我在日记里写道:
100“我阅读翁杏法的小册子《到莫斯科去》,这本小册子是90年代写的,作者明确写道‘不要轻易向别人透露你的居住地址’,我想,我也没有想到,竟是一个中国人首先让我体会到了这个道理……其实,在国外,也许外国人比中国人更友善,中国人由于经济利益的原因往往更功利,更不友善,更坏。可以这样对比,同样互不熟识的情况下,中国人比外国人更愿意向对方提出令对方为难的要求,如果对方拒绝了,中国人也许比外国人更愿意谩骂、憎恨对方”。 100“我阅读翁杏法的小册子《到莫斯科去》,这本小册子是90年代写的,作者明确写道‘不要轻易向别人透露你的居住地址’,我想,我也没有想到,竟是一个中国人首先让我体会到了这个道理……其实,在国外,也许外国人比中国人更友善,中国人由于经济利益的原因往往更功利,更不友善,更坏。可以这样对比,同样互不熟识的情况下,中国人比外国人更愿意向对方提出令对方为难的要求,如果对方拒绝了,中国人也许比外国人更愿意谩骂、憎恨对方”。
101大概晚上8点30分,火车到达二连浩特,这是中国边境检查站,过了这里,我就 101大概晚上8点30分,火车到达二连浩特,这是中国边境检查站,过了这里,我就
102身处异国了,我的手机也将没有信号,无法再跟爸妈、lan、同学联系了。我有些怅然。火车在这里要换轨,我用数码相机拍了换轨过程的小短片,打算回去给同学看。11点多,火车进入蒙古国,在蒙方的检查站停留了一段时间,火车重新启动后,我和比利时人方才入睡,因为今晚不再有检查。</p> 102身处异国了,我的手机也将没有信号,无法再跟爸妈、lan、同学联系了。我有些怅然。火车在这里要换轨,我用数码相机拍了换轨过程的小短片,打算回去给同学看。11点多,火车进入蒙古国,在蒙方的检查站停留了一段时间,火车重新启动后,我和比利时人方才入睡,因为今晚不再有检查。</p>
103 </div> 103 </div>
104 <div class="box w-50 h-30 title-top"> 104 <div class="box w-50 h-30 title-top">
105 <h3>(四)蒙古 <span>Published May 3, 2012</span></h3> 105 <h3>(四)蒙古 <span>Published May 3, 2012</span></h3>
106 <p>我在蒙古国大使馆办过境签证的时候,曾经遇到一个中国女人,她说“蒙古什么都没有”。也许她说得没错,透过车窗,我什么都看不到,只有无边无际的大地,比利时朋友不停地念叨着“Nothing, nothing, crazy country”!也许,盛夏季节,这里会是满山遍野的碧绿,但现在正值深秋,草已枯黄,也看不见灌木丛和树林,只有短草勉强包裹着大地。当大地上缺少高大植被的时候,大地所呈现给我们的是标准的“地势”,或平坦如砥,或高低起伏,线条凸凹感十分强烈,大地展现了他性感的一面!很罕见地,我看到一摊水,巴掌那么大,水边围着一群羊,我真担心一个钟头以后,这摊水会被饥渴的羊群喝干。偶尔会见到房屋,远远望去,八、九个房屋围坐在一起,仿佛正在召开部落会议,这里的房屋也像蒙古包,只是尖顶下面围着的是方形墙壁,房屋表面经常涂着墨绿色和铁红色,墨绿色的门窗,铁红色的山墙,别有一番味道。铁路沿线可以看到很多电线杆,但这些电线杆多为木制,并且大多是由两节木头连接而成,印象中,这些木头电线杆是我小时候家乡的景象,而现在家乡的电线杆早已更换成水泥混凝土的了,更加结实耐用。看着这些,我意识到蒙古国的生产能力大致处在什么水平了。蒙古国大使馆门前的那个中国女人告诉我,她给朋友办理签证,而她的朋友是去蒙古国做房屋装潢,想必蒙古国的房屋建设、装潢水平也不高。 106 <p>我在蒙古国大使馆办过境签证的时候,曾经遇到一个中国女人,她说“蒙古什么都没有”。也许她说得没错,透过车窗,我什么都看不到,只有无边无际的大地,比利时朋友不停地念叨着“Nothing, nothing, crazy country”!也许,盛夏季节,这里会是满山遍野的碧绿,但现在正值深秋,草已枯黄,也看不见灌木丛和树林,只有短草勉强包裹着大地。当大地上缺少高大植被的时候,大地所呈现给我们的是标准的“地势”,或平坦如砥,或高低起伏,线条凸凹感十分强烈,大地展现了他性感的一面!很罕见地,我看到一摊水,巴掌那么大,水边围着一群羊,我真担心一个钟头以后,这摊水会被饥渴的羊群喝干。偶尔会见到房屋,远远望去,八、九个房屋围坐在一起,仿佛正在召开部落会议,这里的房屋也像蒙古包,只是尖顶下面围着的是方形墙壁,房屋表面经常涂着墨绿色和铁红色,墨绿色的门窗,铁红色的山墙,别有一番味道。铁路沿线可以看到很多电线杆,但这些电线杆多为木制,并且大多是由两节木头连接而成,印象中,这些木头电线杆是我小时候家乡的景象,而现在家乡的电线杆早已更换成水泥混凝土的了,更加结实耐用。看着这些,我意识到蒙古国的生产能力大致处在什么水平了。蒙古国大使馆门前的那个中国女人告诉我,她给朋友办理签证,而她的朋友是去蒙古国做房屋装潢,想必蒙古国的房屋建设、装潢水平也不高。
107下午1点多(10月4日),列车进入乌兰巴托,我赶紧用小数码录像。乌兰巴托没有想象中那么明净美丽,这应该是蒙古国的“大都市”了,但是我没有看到林立的高楼,楼房多为6、7层,10到20层之间的楼房在乌兰巴托想必是少有的高层建筑了吧,大概更多的居民居住的是平房。蒙古全国也就200多万人口,乌兰巴托的人口能有100万吗?高层建筑大多出现在上海、香港、东京、纽约这样人口高度集中的城市,而乌兰巴托没必要致力于垂直开发空间,也许汽车较房屋的需求更强,在铁路一侧,我看到几个轿车聚集的地方,大概是停车场。 107下午1点多(10月4日),列车进入乌兰巴托,我赶紧用小数码录像。乌兰巴托没有想象中那么明净美丽,这应该是蒙古国的“大都市”了,但是我没有看到林立的高楼,楼房多为6、7层,10到20层之间的楼房在乌兰巴托想必是少有的高层建筑了吧,大概更多的居民居住的是平房。蒙古全国也就200多万人口,乌兰巴托的人口能有100万吗?高层建筑大多出现在上海、香港、东京、纽约这样人口高度集中的城市,而乌兰巴托没必要致力于垂直开发空间,也许汽车较房屋的需求更强,在铁路一侧,我看到几个轿车聚集的地方,大概是停车场。
108列车在乌兰巴托站停一会儿,旅客可以下车走动,比利时朋友要去买Mongolian milk,我跟他下车去转转。车站不大,相当于中国中等城市的车站,乌兰巴托下点小雨,一个蒙古中年男子用中文向我兜售蒙古邮票,我没有理会,我们没有找到Mongolian milk,却看到了韩国和中国方便面,比利时朋友在一个小摊铺前驻足,售货大婶可以说俄语,比利时朋友用20元人民币买了一大根香肠和两袋大面包,兴高采烈地往回走,在餐车前,我为他和香肠、面包照相留念。1元人民币大概等于758蒙元,所以一个香肠、两袋面包卖20元人民币很赚,而比利时人也觉得20元人民币买了这么多食物不贵,皆大欢喜。一个国家的货币价格可以反映该国的生产能力,从蒙元的汇率上足见蒙古国的生产水平了。 108列车在乌兰巴托站停一会儿,旅客可以下车走动,比利时朋友要去买Mongolian milk,我跟他下车去转转。车站不大,相当于中国中等城市的车站,乌兰巴托下点小雨,一个蒙古中年男子用中文向我兜售蒙古邮票,我没有理会,我们没有找到Mongolian milk,却看到了韩国和中国方便面,比利时朋友在一个小摊铺前驻足,售货大婶可以说俄语,比利时朋友用20元人民币买了一大根香肠和两袋大面包,兴高采烈地往回走,在餐车前,我为他和香肠、面包照相留念。1元人民币大概等于758蒙元,所以一个香肠、两袋面包卖20元人民币很赚,而比利时人也觉得20元人民币买了这么多食物不贵,皆大欢喜。一个国家的货币价格可以反映该国的生产能力,从蒙元的汇率上足见蒙古国的生产水平了。
10930分钟后,列车离开乌兰巴托,我的目光再次陷入苍茫大地。比起乌兰巴托,我更喜欢这辽阔无边的大地,正像久居北京的人喜欢去坝上草原放松心情一样,但习惯了荒芜人烟的大草原的蒙古人也许更喜欢乌兰巴托,在那里游牧的人们可以定居、群居。我在日记里写下: 10930分钟后,列车离开乌兰巴托,我的目光再次陷入苍茫大地。比起乌兰巴托,我更喜欢这辽阔无边的大地,正像久居北京的人喜欢去坝上草原放松心情一样,但习惯了荒芜人烟的大草原的蒙古人也许更喜欢乌兰巴托,在那里游牧的人们可以定居、群居。我在日记里写下:
110“蒙古国一定很贫穷,但这里拥有人烟稀少的土地,因此这里拥有别样的心情和别样性格的人。《乌兰巴托的夜》,是怎样的呢?天上有许多星星?还是地上有许多明亮的车灯?我希望是前者”。 110“蒙古国一定很贫穷,但这里拥有人烟稀少的土地,因此这里拥有别样的心情和别样性格的人。《乌兰巴托的夜》,是怎样的呢?天上有许多星星?还是地上有许多明亮的车灯?我希望是前者”。
111</p> 111</p>
112 </div> 112 </div>
113 </div> 113 </div>
114 114
115 <div class="f-page"> 115 <div class="f-page">
116 <div class="f-title"> 116 <div class="f-title">
117 117
118 <h2>从北京到莫斯科</h2> 118 <h2>从北京到莫斯科</h2>
119 </div> 119 </div>
120 <div class="box w-70 h-50 box-b-r title-top box-img-left"> 120 <div class="box w-70 h-50 box-b-r title-top box-img-left">
121 <div class="img-cont img-4"></div> 121 <div class="img-cont img-4"></div>
122 <h3>(五)纳乌什基(наушки)<span>Published May 3, 2012</span></h3> 122 <h3>(五)纳乌什基(наушки)<span>Published May 3, 2012</span></h3>
123 <p>傍晚,列车出蒙古进入俄罗斯,在наушки站先后上来4个俄罗斯工作人员进行了3次检查,包括仔细的行李检查,但无需打开行李,检查签证时通常会把护照收走一段时间,待盖完入境章后重新还给旅客。中国、蒙古、俄罗斯三国检查签证的工作人员皆为女性。列车在наушки停车约5个小时,停车时厕所会关闭,可比利时朋友恰好这时想去厕所,所以十分苦恼,直说要找个瓶子撒尿,然后把瓶子扔出窗外,说完我们哈哈大笑。在这一站,我把手表调回了4个小时,开始使用莫斯科时间。 123 <p>傍晚,列车出蒙古进入俄罗斯,在наушки站先后上来4个俄罗斯工作人员进行了3次检查,包括仔细的行李检查,但无需打开行李,检查签证时通常会把护照收走一段时间,待盖完入境章后重新还给旅客。中国、蒙古、俄罗斯三国检查签证的工作人员皆为女性。列车在наушки停车约5个小时,停车时厕所会关闭,可比利时朋友恰好这时想去厕所,所以十分苦恼,直说要找个瓶子撒尿,然后把瓶子扔出窗外,说完我们哈哈大笑。在这一站,我把手表调回了4个小时,开始使用莫斯科时间。
124不出所料,那个中国商人来找我了,我正躺在床上看书,他出现在门口大声说:“原来你在这里啊”,我瞟了他一眼,没有说话,继续看书,然后他走了。我以冷漠表示了拒绝,后来我们再次相遇的时候,他没有再跟我搭话,看来他还很知趣。有了这次经历,我告诫自己“有些事情不要给对方留任何希望”,很快这个经验再次应用上了。наушки站停车时,我听到有个中年男子在走廊里喊:“我得借个护照,要不得罚款了”,听到这个喊声,我下意识地去关包厢门,他恰好走到我们的包厢门口:“能借护照用一下吗”?这是个大约45岁左右的中国男子,我反问道:“护照怎么能借”?他马上回答“是海关让我来借的”,我随即把门关上,不再理他。我心想,为了逃避罚款居然编出“海关让他借护照”的瞎话儿,真是见鬼了。这个男子是第二个向我提出无理要求的中国人,我猜,他可能是长期寄居在列车上的商人,可能负责货物运输,因为他跟列车员有些熟。当我用两种方式拒绝了两个无理要求后,才有所安心。 124不出所料,那个中国商人来找我了,我正躺在床上看书,他出现在门口大声说:“原来你在这里啊”,我瞟了他一眼,没有说话,继续看书,然后他走了。我以冷漠表示了拒绝,后来我们再次相遇的时候,他没有再跟我搭话,看来他还很知趣。有了这次经历,我告诫自己“有些事情不要给对方留任何希望”,很快这个经验再次应用上了。наушки站停车时,我听到有个中年男子在走廊里喊:“我得借个护照,要不得罚款了”,听到这个喊声,我下意识地去关包厢门,他恰好走到我们的包厢门口:“能借护照用一下吗”?这是个大约45岁左右的中国男子,我反问道:“护照怎么能借”?他马上回答“是海关让我来借的”,我随即把门关上,不再理他。我心想,为了逃避罚款居然编出“海关让他借护照”的瞎话儿,真是见鬼了。这个男子是第二个向我提出无理要求的中国人,我猜,他可能是长期寄居在列车上的商人,可能负责货物运输,因为他跟列车员有些熟。当我用两种方式拒绝了两个无理要求后,才有所安心。
125过了наушки站,以后的4天将不再有各种检查,真正开始享受西伯利亚之旅了! 125过了наушки站,以后的4天将不再有各种检查,真正开始享受西伯利亚之旅了!
126列车在此前的停车时间最长,前后共有4次证件、行李检查,每次检查都要停车几个小时,中间还有一次换轨,这就是通关手续所带来的麻烦。但欧洲就大不一样,欧洲一体化带来的一个重要影响就是简化了欧洲各国之间的通关手续,如果不是这样,乘火车从希腊走到荷兰不知要浪费多少时间和金钱在通关手续上。我的一个朋友大约4年前开始在巴黎读书,迄今已经到过好多欧洲国家,但她的护照上却只有法国签证,当她抱怨护照上签证太少的时候,殊不知签证丰富所意味着的繁琐手续。 126列车在此前的停车时间最长,前后共有4次证件、行李检查,每次检查都要停车几个小时,中间还有一次换轨,这就是通关手续所带来的麻烦。但欧洲就大不一样,欧洲一体化带来的一个重要影响就是简化了欧洲各国之间的通关手续,如果不是这样,乘火车从希腊走到荷兰不知要浪费多少时间和金钱在通关手续上。我的一个朋友大约4年前开始在巴黎读书,迄今已经到过好多欧洲国家,但她的护照上却只有法国签证,当她抱怨护照上签证太少的时候,殊不知签证丰富所意味着的繁琐手续。
127列车再次启动,我知道,明天早晨就能见到贝加尔湖了……噢,贝加尔湖,我心中的梦……今晚,我将带着神秘的贝加尔入梦,good night! 127列车再次启动,我知道,明天早晨就能见到贝加尔湖了……噢,贝加尔湖,我心中的梦……今晚,我将带着神秘的贝加尔入梦,good night!
128</p> 128</p>
129 </div> 129 </div>
130 <div class="box w-30 h-50"> 130 <div class="box w-30 h-50">
131 <div class="img-cont img-5"></div> 131 <div class="img-cont img-5"></div>
132 <h3>(六)贝加尔<span>Published May 3, 2012</span></h3> 132 <h3>(六)贝加尔<span>Published May 3, 2012</span></h3>
133 <p>一觉醒来,手表显示凌晨3点多,但是太阳却光彩夺目……我有些糊涂了,弄不清时间了。我赶紧起身,打开包厢门向窗外望去,天啊!Какой красивый пейзаж! 太漂亮了!当你的眼睛已经习惯了漫无边际的光秃草原,眼前却突然出现大片大片的金黄色白桦林时,你根本无法抑制那种兴奋与激动,到处都是白桦树,到处都是金黄色,一片连着一片,没有尽头,无边无际,那是一种来自心底的震撼!秋天在这里化身海洋,你向远处看吧,麦田是金色的,白桦林是金色的,阳光是金色的……你会感慨万千,为什么仅仅一线之隔,这边遍地白桦,而那边却只有光秃秃的草原,造物主分配植被的时候未免太苛刻了吧。 133 <p>一觉醒来,手表显示凌晨3点多,但是太阳却光彩夺目……我有些糊涂了,弄不清时间了。我赶紧起身,打开包厢门向窗外望去,天啊!Какой красивый пейзаж! 太漂亮了!当你的眼睛已经习惯了漫无边际的光秃草原,眼前却突然出现大片大片的金黄色白桦林时,你根本无法抑制那种兴奋与激动,到处都是白桦树,到处都是金黄色,一片连着一片,没有尽头,无边无际,那是一种来自心底的震撼!秋天在这里化身海洋,你向远处看吧,麦田是金色的,白桦林是金色的,阳光是金色的……你会感慨万千,为什么仅仅一线之隔,这边遍地白桦,而那边却只有光秃秃的草原,造物主分配植被的时候未免太苛刻了吧。
134我赶紧回到包厢记下自己的心情,又立刻跑回走廊,生怕错过什么。 134我赶紧回到包厢记下自己的心情,又立刻跑回走廊,生怕错过什么。
135突然,包厢里的比利时朋友大叫一声“lake”!我转身又回到包厢,哇塞!I can’t believe my eyes! 车厢这边一片蔚蓝,像大海一样浩瀚,真大,真漂亮,真干净!这就是贝加尔湖吗?我丝毫没有心理准备,应该就是了,贝加尔湖,梦幻般的出场!I want stay here all my life!Как море!Like the sea ……我的语言系统完全混乱了,我完全找不到词来形容贝加尔湖,那是一种让嘴巴无能为力,让眼睛不知所措的感觉。这分明就是海!它有翻滚的波涛,拍打在岸边还激起雪白的浪花,那布满细沙的岸边不正是海滩吗?可它确实是湖泊,世界上最深、最富有的内陆湖,在地图上你可以看见它被陆地环保,轮廓清晰可见。贝加尔,这大概是海洋之母远嫁人间的一个女儿,她干净美丽得让人窒息,我真想跳下火车去触摸她,去感受她的湖水,她的波涛,她的一切,却又不忍心碰触,担心这样会惊到她,破坏她那原生态的美丽。 135突然,包厢里的比利时朋友大叫一声“lake”!我转身又回到包厢,哇塞!I can’t believe my eyes! 车厢这边一片蔚蓝,像大海一样浩瀚,真大,真漂亮,真干净!这就是贝加尔湖吗?我丝毫没有心理准备,应该就是了,贝加尔湖,梦幻般的出场!I want stay here all my life!Как море!Like the sea ……我的语言系统完全混乱了,我完全找不到词来形容贝加尔湖,那是一种让嘴巴无能为力,让眼睛不知所措的感觉。这分明就是海!它有翻滚的波涛,拍打在岸边还激起雪白的浪花,那布满细沙的岸边不正是海滩吗?可它确实是湖泊,世界上最深、最富有的内陆湖,在地图上你可以看见它被陆地环保,轮廓清晰可见。贝加尔,这大概是海洋之母远嫁人间的一个女儿,她干净美丽得让人窒息,我真想跳下火车去触摸她,去感受她的湖水,她的波涛,她的一切,却又不忍心碰触,担心这样会惊到她,破坏她那原生态的美丽。
136湖岸边,生长着挺拔的白桦树,白桦林间散落着一座座俄式木屋,木屋旁时而走过几个俄罗斯大叔。比利时人猜那是俄罗斯人的度假别墅,在这里,任何一间破木板房都是别墅!贝加尔湖,真的是人间天堂,望不尽的山林,望不尽的湖水,湖水藏在山桦林后面,白桦林却怎么也挡不住贝加尔湖的面庞。上帝啊!多么神奇!多么伟大! 136湖岸边,生长着挺拔的白桦树,白桦林间散落着一座座俄式木屋,木屋旁时而走过几个俄罗斯大叔。比利时人猜那是俄罗斯人的度假别墅,在这里,任何一间破木板房都是别墅!贝加尔湖,真的是人间天堂,望不尽的山林,望不尽的湖水,湖水藏在山桦林后面,白桦林却怎么也挡不住贝加尔湖的面庞。上帝啊!多么神奇!多么伟大!
137我拿着相机尽情地拍摄着,远处忽然浮现出高低起伏的青白色,Snow mountain!我大叫了一声,比利时朋友赶紧凑过来。哇呜!这里居然看见了雪山!不可思议!这时我生平第一次见到雪山,居然在贝加尔,我居然在同一天见到了贝加尔湖和雪山!2007年10月5日!我弄不清楚了,雪山、白桦林、蔚蓝的湖水、浪花、天空、飞鸟、秋天、木屋、小河、山泉、铁路桥、俄罗斯大叔……噢,我眼花缭乱,铁路两侧,一切尽收眼底,却又怎么都看不过来,美丽是需要秩序的,可是我弄不清这么多的美丽究竟是如何组合起来的,这么多的美丽,它们之间到底是什么关系,我完全不能理解,浑然天成。我能确定的是,所有这些美丽都有一个共同的名义——贝加尔湖。能亲眼目睹这壮丽的景象,真是莫大的幸福! 137我拿着相机尽情地拍摄着,远处忽然浮现出高低起伏的青白色,Snow mountain!我大叫了一声,比利时朋友赶紧凑过来。哇呜!这里居然看见了雪山!不可思议!这时我生平第一次见到雪山,居然在贝加尔,我居然在同一天见到了贝加尔湖和雪山!2007年10月5日!我弄不清楚了,雪山、白桦林、蔚蓝的湖水、浪花、天空、飞鸟、秋天、木屋、小河、山泉、铁路桥、俄罗斯大叔……噢,我眼花缭乱,铁路两侧,一切尽收眼底,却又怎么都看不过来,美丽是需要秩序的,可是我弄不清这么多的美丽究竟是如何组合起来的,这么多的美丽,它们之间到底是什么关系,我完全不能理解,浑然天成。我能确定的是,所有这些美丽都有一个共同的名义——贝加尔湖。能亲眼目睹这壮丽的景象,真是莫大的幸福!
138车停了,我得去看看……原来是一个叫Байкальск(贝加尔斯克)的小站,只停了半分钟,我还没来得及照相……远处的山,一层秋黄,一层墨绿,又一层枫红,整片山仿佛色带,墨绿中点缀着金黄,金黄中又泛起墨绿,而枫红镶嵌其中,啊,真是迷人,天生的油画,无需任何人工雕琢;更远处的山,灰灰的,白白的,灰的是树,白的是雪,也许是去年的积雪,也许是今年的新雪。山脚下,白桦林中,贝加尔湖畔,木屋点点,其中有一个小村庄就叫贝加尔斯克,多么幸福的村庄,多么幸运的村民。当年,海洋之母为贝加尔准备了丰厚的嫁妆出嫁远方,让这个女儿拥有336条注入河,占全世界总储量近1/5的淡水,还有极为丰富的煤炭、金属铝、森林资源,让这个海拔456m的高山少女闻名世界。噢!依傍着贝加尔湖,贝加尔斯克的村民一定生活得很富足。 138车停了,我得去看看……原来是一个叫Байкальск(贝加尔斯克)的小站,只停了半分钟,我还没来得及照相……远处的山,一层秋黄,一层墨绿,又一层枫红,整片山仿佛色带,墨绿中点缀着金黄,金黄中又泛起墨绿,而枫红镶嵌其中,啊,真是迷人,天生的油画,无需任何人工雕琢;更远处的山,灰灰的,白白的,灰的是树,白的是雪,也许是去年的积雪,也许是今年的新雪。山脚下,白桦林中,贝加尔湖畔,木屋点点,其中有一个小村庄就叫贝加尔斯克,多么幸福的村庄,多么幸运的村民。当年,海洋之母为贝加尔准备了丰厚的嫁妆出嫁远方,让这个女儿拥有336条注入河,占全世界总储量近1/5的淡水,还有极为丰富的煤炭、金属铝、森林资源,让这个海拔456m的高山少女闻名世界。噢!依傍着贝加尔湖,贝加尔斯克的村民一定生活得很富足。
139火车沿着贝加尔湖走了很久,我也忙个不停,一会儿从包厢跑到走廊,看铁路那边的白桦林和村庄,一会儿又从走廊跑回包厢,看铁路这边的蔚蓝湖泊。起初我还拍些照片,但很快就觉得不过瘾,全部改成录制短片了,可相机记忆卡的空间实在很小,两三个短片下来记忆卡就满了,这样我又得把视频倒到笔记本里面。恰好这个时候,我的相机和笔记本都快没电了,然后我又翻找充电器、转换插头,给相机充电十几分钟(列车上有低压电源,电流不稳定),又开始录短片……我想,我的亲朋师友们不会有太多机会亲眼目睹这些景象,我应该把视频带回去给他们看。 139火车沿着贝加尔湖走了很久,我也忙个不停,一会儿从包厢跑到走廊,看铁路那边的白桦林和村庄,一会儿又从走廊跑回包厢,看铁路这边的蔚蓝湖泊。起初我还拍些照片,但很快就觉得不过瘾,全部改成录制短片了,可相机记忆卡的空间实在很小,两三个短片下来记忆卡就满了,这样我又得把视频倒到笔记本里面。恰好这个时候,我的相机和笔记本都快没电了,然后我又翻找充电器、转换插头,给相机充电十几分钟(列车上有低压电源,电流不稳定),又开始录短片……我想,我的亲朋师友们不会有太多机会亲眼目睹这些景象,我应该把视频带回去给他们看。
140外面似乎飘起了雪,我还不太确定,乘务员招呼我“小伙子,下雪了,赶快拍吧”。几天下来,乘务员们早已习惯了我拿着相加跑来跑去,拍来拍去。真的是下雪了!雪花纷纷扬扬,天空朦朦胧胧,只能看见近处的村庄,稍远一点的房屋在雪雾中若隐若现,真的像庄园,仿佛雪雾里隐藏着一个更大的城堡。而贝加尔湖边,也早已白茫茫一片,分不清哪里是天空,哪里是湖面,只是地平线上隐约一条粗线,线下的颜色多一点青蓝,应该是湖,线上的颜色多一些灰白,大概是天。雪越来越大,水天逐渐融为一体,贝加尔湖成为想象。 140外面似乎飘起了雪,我还不太确定,乘务员招呼我“小伙子,下雪了,赶快拍吧”。几天下来,乘务员们早已习惯了我拿着相加跑来跑去,拍来拍去。真的是下雪了!雪花纷纷扬扬,天空朦朦胧胧,只能看见近处的村庄,稍远一点的房屋在雪雾中若隐若现,真的像庄园,仿佛雪雾里隐藏着一个更大的城堡。而贝加尔湖边,也早已白茫茫一片,分不清哪里是天空,哪里是湖面,只是地平线上隐约一条粗线,线下的颜色多一点青蓝,应该是湖,线上的颜色多一些灰白,大概是天。雪越来越大,水天逐渐融为一体,贝加尔湖成为想象。
141看来列车又要经过一个站,地面的铁轨增加至四五条,天空的电线也便变成了网,路边七八个橘黄色的铁路工人站成一排,看着疾驰而过的国际列车。铁路线上停着暗红色的货运列车,有集装箱、汽油灌、起重机等等,又看见了绿色的客运列车,里面空荡荡的。地面上开始出现两三层的楼房,还横七竖八地停着很多轿车,这大概是个中转站,而贝加尔湖早已躲到车站后面。列车在这站未停,小站过后,水天一色的贝加尔湖又来到眼前。 141看来列车又要经过一个站,地面的铁轨增加至四五条,天空的电线也便变成了网,路边七八个橘黄色的铁路工人站成一排,看着疾驰而过的国际列车。铁路线上停着暗红色的货运列车,有集装箱、汽油灌、起重机等等,又看见了绿色的客运列车,里面空荡荡的。地面上开始出现两三层的楼房,还横七竖八地停着很多轿车,这大概是个中转站,而贝加尔湖早已躲到车站后面。列车在这站未停,小站过后,水天一色的贝加尔湖又来到眼前。
142我的心逐渐平静下来,不再忙乱,我回到桌旁拿起笔和日记本,望着贝加尔湖开始临摹我的心情,贝加尔湖也逐渐化作一壶绿茶,让我慢慢品味……列车在贝加尔湖畔整整走了四、五个钟头,在地图上,这段路程大概相当于贝加尔湖周长的1/7。莫斯科时间上午8点多,列车经过了斯柳迪扬卡(Слюдянка),噢,美丽的贝加尔湖,Time to say goodbye,下次再见吧。下一次,我将环绕着你走上几天几夜,给你拍一套漂亮的写真集,你的夕阳,你的日升,你的暴雨,你的海浪,你的蔚蓝,你的所有美丽……再见!贝加尔…… 142我的心逐渐平静下来,不再忙乱,我回到桌旁拿起笔和日记本,望着贝加尔湖开始临摹我的心情,贝加尔湖也逐渐化作一壶绿茶,让我慢慢品味……列车在贝加尔湖畔整整走了四、五个钟头,在地图上,这段路程大概相当于贝加尔湖周长的1/7。莫斯科时间上午8点多,列车经过了斯柳迪扬卡(Слюдянка),噢,美丽的贝加尔湖,Time to say goodbye,下次再见吧。下一次,我将环绕着你走上几天几夜,给你拍一套漂亮的写真集,你的夕阳,你的日升,你的暴雨,你的海浪,你的蔚蓝,你的所有美丽……再见!贝加尔……
143前方66公里处,伊尔库茨克(Иркутск)还在等待。 143前方66公里处,伊尔库茨克(Иркутск)还在等待。
144</p> 144</p>
145 </div> 145 </div>
146 <div class="box w-30 h-50 box-b-r title-top"> 146 <div class="box w-30 h-50 box-b-r title-top">
147 <h3>(七)YAHZEE<span>Published May 3, 2012</span></h3> 147 <h3>(七)YAHZEE<span>Published May 3, 2012</span></h3>
148 <p>哦,离开贝加尔湖了…… 148 <p>哦,离开贝加尔湖了……
149当我为贝加尔湖兴奋不已的时候,比利时朋友却比较平静,后来他甚至睡了一会儿,只是我大喊“Snow mountain”的时候,他赶紧起来趴窗看,然后照了几张相,又去听他的mp3。列车临近伊尔库茨克的时候,比利时朋友邀请我跟他玩游戏,游戏的名字叫YAHZEE。这个游戏非常有趣,很适合长途旅行中消遣时光,我想把这个游戏带回中国跟朋友们玩,所以这里详述游戏规则,但在火车上,无论如何我都无法把游戏规则清楚地讲给隔壁的中国人听。游戏需要5个骰子,每个玩家每回有3次(3次为1回)掷骰机会,每次可以5骰全掷,也可以根据上次的结果选择其中几个骰子掷出,以求更满意的数字组合。3次过后,根据该回最终得到的数字组合计分,但计分的形式有很多种(见下表中的“解释”),玩家可以选择计分的形式,填入相应的计分表格中,每轮必须要填写表格,如因分数较低不想填写,可以划去概率较低的栏目(例如YAHZEE、BS等),14回过后,一局游戏结束,最后总积分多的玩家胜出。 149当我为贝加尔湖兴奋不已的时候,比利时朋友却比较平静,后来他甚至睡了一会儿,只是我大喊“Snow mountain”的时候,他赶紧起来趴窗看,然后照了几张相,又去听他的mp3。列车临近伊尔库茨克的时候,比利时朋友邀请我跟他玩游戏,游戏的名字叫YAHZEE。这个游戏非常有趣,很适合长途旅行中消遣时光,我想把这个游戏带回中国跟朋友们玩,所以这里详述游戏规则,但在火车上,无论如何我都无法把游戏规则清楚地讲给隔壁的中国人听。游戏需要5个骰子,每个玩家每回有3次(3次为1回)掷骰机会,每次可以5骰全掷,也可以根据上次的结果选择其中几个骰子掷出,以求更满意的数字组合。3次过后,根据该回最终得到的数字组合计分,但计分的形式有很多种(见下表中的“解释”),玩家可以选择计分的形式,填入相应的计分表格中,每轮必须要填写表格,如因分数较低不想填写,可以划去概率较低的栏目(例如YAHZEE、BS等),14回过后,一局游戏结束,最后总积分多的玩家胜出。
150</p> 150</p>
151 </div> 151 </div>
152 <div class="box w-70 h-50 title-top box-img-left"> 152 <div class="box w-70 h-50 title-top box-img-left">
153 <div class="img-cont img-6"></div> 153 <div class="img-cont img-6"></div>
154 <h3>(八)马克西姆<span>Published May 3, 2012</span></h3> 154 <h3>(八)马克西姆<span>Published May 3, 2012</span></h3>
155 <p>YAHZEE这个游戏,是比利时人上车第一天教我玩的,起初我只能连续玩3局,因为我还不太熟悉规则,3局下来之后我的大脑已经转不动了,很需要休息。但每天都跟他玩一会儿,很快就轻车熟路了。玩过游戏,我跟这个比利时人已经很熟了,尽管我的英语不太好,说起话来磕磕绊绊,但是他仍然能理解我说的意思,他说起话来总是附带很多很夸张的动作,有时甚至尚未开口,动作已经结束,而我已经理解他的意思。他的笑声也很多,早晨起来一句“morning”,然后“呵呵呵”一声笑,笑得有些傻,但让我觉得很亲近,从这个“呵呵呵”开始,一整天笑声不断。我们这节火车厢,只有3个包厢里有旅客,隔壁是一男一女,再隔壁是个荷兰人,其他4、5个包厢都由乘务员使用,其中几个包厢被乘务员装满了中国食品,而所有这些包厢里面,就我们这个3号包厢笑声最多,通常是比利时人笑声在先,我的笑声在后。 155 <p>YAHZEE这个游戏,是比利时人上车第一天教我玩的,起初我只能连续玩3局,因为我还不太熟悉规则,3局下来之后我的大脑已经转不动了,很需要休息。但每天都跟他玩一会儿,很快就轻车熟路了。玩过游戏,我跟这个比利时人已经很熟了,尽管我的英语不太好,说起话来磕磕绊绊,但是他仍然能理解我说的意思,他说起话来总是附带很多很夸张的动作,有时甚至尚未开口,动作已经结束,而我已经理解他的意思。他的笑声也很多,早晨起来一句“morning”,然后“呵呵呵”一声笑,笑得有些傻,但让我觉得很亲近,从这个“呵呵呵”开始,一整天笑声不断。我们这节火车厢,只有3个包厢里有旅客,隔壁是一男一女,再隔壁是个荷兰人,其他4、5个包厢都由乘务员使用,其中几个包厢被乘务员装满了中国食品,而所有这些包厢里面,就我们这个3号包厢笑声最多,通常是比利时人笑声在先,我的笑声在后。
156比利时人给我看他的各种签证,我才知道他叫马克西姆,他的护照上有好多签证,中国的、韩国的、蒙古的、澳大利亚的、新西兰的、俄罗斯的、日本的,还有好多看不懂的。他向我展示比利时护照的防伪技术,确实很棒,护照底页内涵一块电子芯片,马克西姆告诉我他的护照合人民币1000多,我告诉他我的护照只有200人民币,他很喜欢中国的签证,觉得长城背景很漂亮。马克西姆说,他已经在外面旅游两年多了,现在他没钱了,要回比利时工作了,还要参加他最好朋友的婚礼,会有一个很大的party,会有很多啤酒。常年在外,他对很多语言都有所了解,还给我展示了各种语言中数字的读法,但他不懂俄语,我就教他俄语的日常用语。他说了西班牙文、法文的绕口令给我听,我把中文的绕口令“四是四,十是十,十四是十四,四十是四十”说给他听,他听了很兴奋,跟我学了很多次,每次都对中文里面的四个声调叫苦不堪,他用相机录下我说中文绕口令的情景,要带回比利时给朋友们听。他还说了英文绕口令“any noise annoy an oyster, but a noisy noise annoy an oyster more”,我也跟着学了很多遍。离京前,师兄买了好多水果给我,我把这些水果分给马克西姆一些,而他把饼干、斯里兰卡红茶分给我,我们交换着食物,相处得很愉快。 156比利时人给我看他的各种签证,我才知道他叫马克西姆,他的护照上有好多签证,中国的、韩国的、蒙古的、澳大利亚的、新西兰的、俄罗斯的、日本的,还有好多看不懂的。他向我展示比利时护照的防伪技术,确实很棒,护照底页内涵一块电子芯片,马克西姆告诉我他的护照合人民币1000多,我告诉他我的护照只有200人民币,他很喜欢中国的签证,觉得长城背景很漂亮。马克西姆说,他已经在外面旅游两年多了,现在他没钱了,要回比利时工作了,还要参加他最好朋友的婚礼,会有一个很大的party,会有很多啤酒。常年在外,他对很多语言都有所了解,还给我展示了各种语言中数字的读法,但他不懂俄语,我就教他俄语的日常用语。他说了西班牙文、法文的绕口令给我听,我把中文的绕口令“四是四,十是十,十四是十四,四十是四十”说给他听,他听了很兴奋,跟我学了很多次,每次都对中文里面的四个声调叫苦不堪,他用相机录下我说中文绕口令的情景,要带回比利时给朋友们听。他还说了英文绕口令“any noise annoy an oyster, but a noisy noise annoy an oyster more”,我也跟着学了很多遍。离京前,师兄买了好多水果给我,我把这些水果分给马克西姆一些,而他把饼干、斯里兰卡红茶分给我,我们交换着食物,相处得很愉快。
157每到大站,马克西姆都想下去买点东西,在蒙古国想买Mongolian milk,结果买了面包和香肠。列车一进入俄罗斯,他就嚷着要买伏特加尝尝,但各车站只收卢布,所以他在列车上到处兑换卢布。在新西伯利亚(Новосибирск.莫斯科时间10月6日16:00左右),马克西姆终于买了一大瓶俄罗斯啤酒(биво),我们举杯畅饮,那一晚我们都喝醉了,所以说了更多话。我们聊起比利时的巧克力和奶酪,马克希姆很想念家乡的这些食品。他说起两年前在公司的经历,有一个bad boss避开法律解除了他和一些朋友的劳动合同,他很生气,然后就决定旅游。我们说起美国,他非常鄙夷,他问我信仰宗教吗,并愤慨地拿出美元,指责在钞票上印刷“in god we trust”太过分。我说我不信仰宗教,但我信nature,尤其我在外面旅游时,我说“maybe, every traveler must trust in nature”,他非常赞同,并举例说一只小船在大海上,大海随时可以杀了你,这就是大自然的力量。马克希姆喜欢中国、俄罗斯、欧洲,他最常用的是词是crazy,中国的人口crazy,俄罗斯的疆域crazy,埃及的金字塔crazy,他不喜欢美国,认为那是capitalism, just money。批评了美国对伊拉克的战争,并希望中国强大起来与之抗衡,关于社会主义,他认为苏联、中国、古巴有一个好的开端和想法,但后面的发展方向错了,出现了集权,我们都认为互联网会推动社会更加民主,因为人们拥有更多的信息来源,来辨别信息的真伪。马克希姆还批评了电视,认为人们总是坐在电视机前,只会被动地接受电视里的内容,而电视节目总是由政府控制的,所以他希望人们离开电视,出来旅游“眼见为实”。他还讲到2008年奥运会,认为那会是一个巨大的盛会,很多人会来到中国亲眼看到中国所发生的变化。我告诉他,奥运会也带来了中国房价的大幅上涨,我很担心之后的经济危机,但马克希姆认为中国经济增长会放慢速度,逐渐趋于平稳,他用英语和手势表达了这个意思。 157每到大站,马克西姆都想下去买点东西,在蒙古国想买Mongolian milk,结果买了面包和香肠。列车一进入俄罗斯,他就嚷着要买伏特加尝尝,但各车站只收卢布,所以他在列车上到处兑换卢布。在新西伯利亚(Новосибирск.莫斯科时间10月6日16:00左右),马克西姆终于买了一大瓶俄罗斯啤酒(биво),我们举杯畅饮,那一晚我们都喝醉了,所以说了更多话。我们聊起比利时的巧克力和奶酪,马克希姆很想念家乡的这些食品。他说起两年前在公司的经历,有一个bad boss避开法律解除了他和一些朋友的劳动合同,他很生气,然后就决定旅游。我们说起美国,他非常鄙夷,他问我信仰宗教吗,并愤慨地拿出美元,指责在钞票上印刷“in god we trust”太过分。我说我不信仰宗教,但我信nature,尤其我在外面旅游时,我说“maybe, every traveler must trust in nature”,他非常赞同,并举例说一只小船在大海上,大海随时可以杀了你,这就是大自然的力量。马克希姆喜欢中国、俄罗斯、欧洲,他最常用的是词是crazy,中国的人口crazy,俄罗斯的疆域crazy,埃及的金字塔crazy,他不喜欢美国,认为那是capitalism, just money。批评了美国对伊拉克的战争,并希望中国强大起来与之抗衡,关于社会主义,他认为苏联、中国、古巴有一个好的开端和想法,但后面的发展方向错了,出现了集权,我们都认为互联网会推动社会更加民主,因为人们拥有更多的信息来源,来辨别信息的真伪。马克希姆还批评了电视,认为人们总是坐在电视机前,只会被动地接受电视里的内容,而电视节目总是由政府控制的,所以他希望人们离开电视,出来旅游“眼见为实”。他还讲到2008年奥运会,认为那会是一个巨大的盛会,很多人会来到中国亲眼看到中国所发生的变化。我告诉他,奥运会也带来了中国房价的大幅上涨,我很担心之后的经济危机,但马克希姆认为中国经济增长会放慢速度,逐渐趋于平稳,他用英语和手势表达了这个意思。
158关于电影,我们谈了很多。他说他离开朋友去旅行时,把300多张电影送给了朋友,他的朋友非常happy。我们谈到电影《伯恩的身份》、《天使艾米丽》、《泰坦尼克》、《骇客帝国》、《指环王》、《美丽人生》……他还模仿了《美丽人生》里面的高个子男主角。我们都喜欢南斯拉夫电影《地下》,他告诉我《地下》的导演本身就是音乐制作人,他直叹服电影中的音乐crazy,我也有同感。他提到阿莫多瓦的《关于我妈妈的一切》、《不良教育》,不过我没有看过这两部片子,但我看过阿莫多瓦的《Talk to her》,可马克希姆没有看过。我们还说起南美电影《摩托日记》,于是说起切•格瓦拉,我告诉他几年前切•格瓦拉的传记在中国也很流行。不过马克希姆对俄罗斯电影、中国电影和伊朗电影了解不多,我告诉他前苏联导演梁赞诺夫的电影《办公室的故事》很有趣,中国电影他仅仅知道《少林寺》。我们还共同缅怀了逝去的伯格曼和安东尼奥尼,我说台湾的大导演杨德昌也是刚刚去世。他不喜欢美国商业电影,但也承认美国电影中有些精品…… 158关于电影,我们谈了很多。他说他离开朋友去旅行时,把300多张电影送给了朋友,他的朋友非常happy。我们谈到电影《伯恩的身份》、《天使艾米丽》、《泰坦尼克》、《骇客帝国》、《指环王》、《美丽人生》……他还模仿了《美丽人生》里面的高个子男主角。我们都喜欢南斯拉夫电影《地下》,他告诉我《地下》的导演本身就是音乐制作人,他直叹服电影中的音乐crazy,我也有同感。他提到阿莫多瓦的《关于我妈妈的一切》、《不良教育》,不过我没有看过这两部片子,但我看过阿莫多瓦的《Talk to her》,可马克希姆没有看过。我们还说起南美电影《摩托日记》,于是说起切•格瓦拉,我告诉他几年前切•格瓦拉的传记在中国也很流行。不过马克希姆对俄罗斯电影、中国电影和伊朗电影了解不多,我告诉他前苏联导演梁赞诺夫的电影《办公室的故事》很有趣,中国电影他仅仅知道《少林寺》。我们还共同缅怀了逝去的伯格曼和安东尼奥尼,我说台湾的大导演杨德昌也是刚刚去世。他不喜欢美国商业电影,但也承认美国电影中有些精品……
159最后我有些醉了,马克西姆取笑我,但他也晕菜了,然后他连续睡了20个小时,而我却失眠了。4个小时候后我醒来,在卧席上我辗转反侧,回想着离开北京前的情形,想起爸爸妈妈,想起琳岚,想起妹妹,想起老师、同学和朋友……马克西姆也是个很好的朋友,我们之间似乎有很多相似之处,但他有西方人的爽朗,而我是内敛的东方人,马克西姆说“You can be open-minded”,他说得对,我需要“open-mind”,在莫斯科我更需要。 159最后我有些醉了,马克西姆取笑我,但他也晕菜了,然后他连续睡了20个小时,而我却失眠了。4个小时候后我醒来,在卧席上我辗转反侧,回想着离开北京前的情形,想起爸爸妈妈,想起琳岚,想起妹妹,想起老师、同学和朋友……马克西姆也是个很好的朋友,我们之间似乎有很多相似之处,但他有西方人的爽朗,而我是内敛的东方人,马克西姆说“You can be open-minded”,他说得对,我需要“open-mind”,在莫斯科我更需要。
160</p> 160</p>
161 </div> 161 </div>
162 </div> 162 </div>
163 163
164 <div class="f-page"> 164 <div class="f-page">
165 <div class="f-title"> 165 <div class="f-title">
166 166
167 <h2>从北京到莫斯科</h2> 167 <h2>从北京到莫斯科</h2>
168 168
169 </div> 169 </div>
170 <div class="box w-30 h-60 box-b-r title-top"> 170 <div class="box w-30 h-60 box-b-r title-top">
171 <h3>(九)城市<span>Published May 3, 2012</span></h3> 171 <h3>(九)城市<span>Published May 3, 2012</span></h3>
172 <p>马克西姆安静的时候,我经常翻看地图,查找我们正在经过的城市,熟悉俄罗斯的基本国情。 172 <p>马克西姆安静的时候,我经常翻看地图,查找我们正在经过的城市,熟悉俄罗斯的基本国情。
173俄罗斯幅员辽阔,东西跨度极大,如果全国都使用莫斯科时间,产生的时间差将会很大。莫斯科一般早晨8、9点钟亮天,人们通常到凌晨1、2点钟才睡觉,而贝加尔湖畔凌晨3点多太阳已经照屁股,更东边的太平洋沿岸海港城市海参崴,这里的日出时间肯定比贝加尔湖还要早。乘坐火车横穿西伯利亚可以真切地感受到这种时间变化。据说远东地区有自己的时间,如果这样,与莫斯科交流信息时不知会产生多少麻烦。 173俄罗斯幅员辽阔,东西跨度极大,如果全国都使用莫斯科时间,产生的时间差将会很大。莫斯科一般早晨8、9点钟亮天,人们通常到凌晨1、2点钟才睡觉,而贝加尔湖畔凌晨3点多太阳已经照屁股,更东边的太平洋沿岸海港城市海参崴,这里的日出时间肯定比贝加尔湖还要早。乘坐火车横穿西伯利亚可以真切地感受到这种时间变化。据说远东地区有自己的时间,如果这样,与莫斯科交流信息时不知会产生多少麻烦。
174俄罗斯的地势大体东高西低,最西边是东欧平原,向东依次是乌兰尔山、西西伯利亚平原、中西伯利亚高原和东西伯利亚山地。我们熟知的蒙古高原向北可以逐渐过渡到中西伯利亚高原,中国东北的大小兴安岭与俄罗斯的东西伯利亚山地也是一脉相承的。东高西低的地势造就了俄罗斯全国气温大体东低西高的特点,所以贝加尔湖正在下雪,西伯利亚这个时候也出现了零下2度的气温,铁路沿线经常看到积雪,但随着列车逐渐西行,积雪不再有,翻过乌拉尔山,东欧平原秋意盎然。 174俄罗斯的地势大体东高西低,最西边是东欧平原,向东依次是乌兰尔山、西西伯利亚平原、中西伯利亚高原和东西伯利亚山地。我们熟知的蒙古高原向北可以逐渐过渡到中西伯利亚高原,中国东北的大小兴安岭与俄罗斯的东西伯利亚山地也是一脉相承的。东高西低的地势造就了俄罗斯全国气温大体东低西高的特点,所以贝加尔湖正在下雪,西伯利亚这个时候也出现了零下2度的气温,铁路沿线经常看到积雪,但随着列车逐渐西行,积雪不再有,翻过乌拉尔山,东欧平原秋意盎然。
175K3国际列车实际上沿着俄罗斯的南部边缘行驶,而西西伯利亚平原和中西伯利亚高原的南部边缘属多山地带,植被以针叶林和白桦树为主,所以铁路沿线的白桦林和针叶林延绵不断,几乎未间断过,列车从森林深处驶来,进入城市,离开城市又迅速钻进广袤的森林。一路上,我除了赞叹俄罗斯壮美的自然风光,对俄罗斯丰富的自然资源也羡慕不已。也许是我的错觉,我感觉每隔几分钟、十几分钟都会有俄罗斯的货运列车疾驰而过,列车上装满石油、汽油、煤炭、木材、机械……可见这条铁路的繁忙,货运和客运调度之紧张。事实上,俄罗斯最发达的铁路网在乌拉尔山以西的欧洲部分,广袤的西伯利亚-远东地区只有西伯利亚大铁路和贝(贝加尔湖)阿(阿穆尔河,即黑龙江)铁路。这两条铁路在西伯利亚-远东地区的南部边缘构成一条狭长的运输带,而辽阔的北方几乎再没有什么铁路了,那里主要依靠公路运输、空运和短期的航运(俄罗斯北方河流结冰期较长),而这些运输方式都承担不了大宗的自然资源运输任务,所以西伯利亚-远东地区的自然资源会有相当一部分汇集到贝阿铁路和西伯利亚大铁路附近,再从这里输向东欧平原、中国、太平洋沿岸港口。 175K3国际列车实际上沿着俄罗斯的南部边缘行驶,而西西伯利亚平原和中西伯利亚高原的南部边缘属多山地带,植被以针叶林和白桦树为主,所以铁路沿线的白桦林和针叶林延绵不断,几乎未间断过,列车从森林深处驶来,进入城市,离开城市又迅速钻进广袤的森林。一路上,我除了赞叹俄罗斯壮美的自然风光,对俄罗斯丰富的自然资源也羡慕不已。也许是我的错觉,我感觉每隔几分钟、十几分钟都会有俄罗斯的货运列车疾驰而过,列车上装满石油、汽油、煤炭、木材、机械……可见这条铁路的繁忙,货运和客运调度之紧张。事实上,俄罗斯最发达的铁路网在乌拉尔山以西的欧洲部分,广袤的西伯利亚-远东地区只有西伯利亚大铁路和贝(贝加尔湖)阿(阿穆尔河,即黑龙江)铁路。这两条铁路在西伯利亚-远东地区的南部边缘构成一条狭长的运输带,而辽阔的北方几乎再没有什么铁路了,那里主要依靠公路运输、空运和短期的航运(俄罗斯北方河流结冰期较长),而这些运输方式都承担不了大宗的自然资源运输任务,所以西伯利亚-远东地区的自然资源会有相当一部分汇集到贝阿铁路和西伯利亚大铁路附近,再从这里输向东欧平原、中国、太平洋沿岸港口。
176俄罗斯共有88个行政单位,包括各种共和国、边疆区、州、自治州、直辖市、民族自治区,众多行政单位在地图上看起来十分凌乱。但有一点很明显,东欧平原、西伯利亚-远东地区南部的行政区划最为密集,每个行政区的面积也比较小,这实在是因为这些地区人口稠密;而气候寒冷、人口稀少的极地地区,那里的行政单位十分辽阔。行政区划永远都是一种管理人口的手段。国际列车经过的南部地区、东欧平原正是俄罗斯城市化最高的地区,所以铁路沿线的大城市大部分是俄罗斯的能源基地、工业基地、地区经济中心: 176俄罗斯共有88个行政单位,包括各种共和国、边疆区、州、自治州、直辖市、民族自治区,众多行政单位在地图上看起来十分凌乱。但有一点很明显,东欧平原、西伯利亚-远东地区南部的行政区划最为密集,每个行政区的面积也比较小,这实在是因为这些地区人口稠密;而气候寒冷、人口稀少的极地地区,那里的行政单位十分辽阔。行政区划永远都是一种管理人口的手段。国际列车经过的南部地区、东欧平原正是俄罗斯城市化最高的地区,所以铁路沿线的大城市大部分是俄罗斯的能源基地、工业基地、地区经济中心:
177伊尔库茨克(Иркутск,莫斯科时间10月5日11:00左右经过),位于伊尔库特河和安哥拉河交汇处,距贝加尔湖66公里,而贝加尔湖的淡水储量占全俄地表淡水总储量4/5;该市生产的采金船和金刚石开采设备直接供远东地区使用,而远东地区是俄罗斯最大的黄金储备区和金刚石生产区。 177伊尔库茨克(Иркутск,莫斯科时间10月5日11:00左右经过),位于伊尔库特河和安哥拉河交汇处,距贝加尔湖66公里,而贝加尔湖的淡水储量占全俄地表淡水总储量4/5;该市生产的采金船和金刚石开采设备直接供远东地区使用,而远东地区是俄罗斯最大的黄金储备区和金刚石生产区。
178克拉斯诺雅尔斯克(Красноярск,莫斯科时间10月6日凌晨4:00点左右经过),位于叶尼塞河畔,东西伯利亚地区最大的城市,而东西伯利亚地区的木材储量占全俄第一位,且多为优质木材。 178克拉斯诺雅尔斯克(Красноярск,莫斯科时间10月6日凌晨4:00点左右经过),位于叶尼塞河畔,东西伯利亚地区最大的城市,而东西伯利亚地区的木材储量占全俄第一位,且多为优质木材。
179新西伯利亚(Новосибирск,莫斯科时间10月6日16:00左右经过),位于鄂毕河畔,是整个西伯利亚地区最大的城市,西西伯利亚地区的经济中心,而西西伯利亚地区的石油储量占俄罗斯60%以上,天然气储量近90%,俄罗斯最大的煤田库兹巴斯也在该区。 179新西伯利亚(Новосибирск,莫斯科时间10月6日16:00左右经过),位于鄂毕河畔,是整个西伯利亚地区最大的城市,西西伯利亚地区的经济中心,而西西伯利亚地区的石油储量占俄罗斯60%以上,天然气储量近90%,俄罗斯最大的煤田库兹巴斯也在该区。
180秋明(Тюмень,莫斯科时间10月7日上午7:00左右经过),位于图拉河畔,属西西伯利亚经济区,附近地区的石油、天然气储量是美国阿拉斯加、德克萨斯、加利福尼亚三大油田的总和。该油田的开发,使俄罗斯赶超美国,成为世界上最大的石油生产国和出口国。 180秋明(Тюмень,莫斯科时间10月7日上午7:00左右经过),位于图拉河畔,属西西伯利亚经济区,附近地区的石油、天然气储量是美国阿拉斯加、德克萨斯、加利福尼亚三大油田的总和。该油田的开发,使俄罗斯赶超美国,成为世界上最大的石油生产国和出口国。
181叶卡捷林堡,现称斯维尔德洛夫斯克(Свердловск,莫斯科时间10月7日上午12:00左右经过),位于乌拉尔山区伊谢季河畔,乌拉尔经济区最大的城市。该区钢铁产量占俄罗斯2/3,原铜产量占俄罗斯90%,是俄罗斯第一大冶金基地。该区一半面积为针叶林覆盖。 181叶卡捷林堡,现称斯维尔德洛夫斯克(Свердловск,莫斯科时间10月7日上午12:00左右经过),位于乌拉尔山区伊谢季河畔,乌拉尔经济区最大的城市。该区钢铁产量占俄罗斯2/3,原铜产量占俄罗斯90%,是俄罗斯第一大冶金基地。该区一半面积为针叶林覆盖。
182…… 182……
183当列车经过这些城市的时候,我总会首先想到这又是一个能源聚集地和工业中心,然后马上就可以看高耸的烟囱、巨大的吊车、粗壮的输油道,在车站又总会看到长长的货运列车,一派繁忙景象。我不禁为这个国家丰富的自然资源、扎实的重工业水平连连感叹,这样的国家,怎能不会重新崛起?又连连咂舌,如此幅员辽阔,俄罗斯还在向北极扩张……我还常常想,坐拥资源,俄罗斯的经济发展模式岂不应该很简单,找个油田、煤田、气田,或者林区,坐下来开采、深加工不就行了?能源依托型的发展模式在乌拉尔、西伯利亚-远东地区到处都可以复制。哪里像中国,不知道有多少城市在为发展模式发愁,谋求产业转型,寄希望于旅游业、服务业等等。中国所承受的各种压力决定了中国要在发展模式上“精耕细作”,而几十年内俄罗斯不需要这样,恐怕这既是它的优势,也是它的劣势。 183当列车经过这些城市的时候,我总会首先想到这又是一个能源聚集地和工业中心,然后马上就可以看高耸的烟囱、巨大的吊车、粗壮的输油道,在车站又总会看到长长的货运列车,一派繁忙景象。我不禁为这个国家丰富的自然资源、扎实的重工业水平连连感叹,这样的国家,怎能不会重新崛起?又连连咂舌,如此幅员辽阔,俄罗斯还在向北极扩张……我还常常想,坐拥资源,俄罗斯的经济发展模式岂不应该很简单,找个油田、煤田、气田,或者林区,坐下来开采、深加工不就行了?能源依托型的发展模式在乌拉尔、西伯利亚-远东地区到处都可以复制。哪里像中国,不知道有多少城市在为发展模式发愁,谋求产业转型,寄希望于旅游业、服务业等等。中国所承受的各种压力决定了中国要在发展模式上“精耕细作”,而几十年内俄罗斯不需要这样,恐怕这既是它的优势,也是它的劣势。
184仅从铁路两侧看俄罗斯的城市是看不出什么明堂的,待到达莫斯科后,我会用更多的时间仔细观察。不过俄罗斯的很多城市都位于河畔,比如伊尔库茨克、克拉斯诺雅尔斯克、新西伯利亚、秋明、叶卡捷林堡城内都有河流穿过,此外,车里雅宾斯克坐落在米阿斯河畔,伏尔加格勒坐落在伏尔加河畔,奥姆斯克坐落在鄂木河畔,莫斯科城内有莫斯科河,圣彼得堡更是“北方威尼斯”……城市有河,就增添了许多灵气,人们的生活也会多几分浪漫和宁静。火车经过新西伯利亚的时候,我拍了长达20分钟的短片,正值暮色降临,天空布满深蓝色的云,只有太阳落山的地方泛出霞红,仿佛是上帝的眼睛窥视苍生,突然经过铁路桥,桥下流淌着一条明亮的河,倒映着天空的深蓝与绯红,岸边安静地泊着轮船,各种吊车高高耸起,远处似乎还有一座大桥,桥上灯火相连,俨然一串白色珍珠……那种感觉,真是静谧、安详、通透。然后我想起北京,未名湖只是一摊小水,墙外的护城河被水泥包裹着,经常看不见蓝天,苍穹是一片混沌,生活也浑浑噩噩,并貌似繁忙,哎…… 184仅从铁路两侧看俄罗斯的城市是看不出什么明堂的,待到达莫斯科后,我会用更多的时间仔细观察。不过俄罗斯的很多城市都位于河畔,比如伊尔库茨克、克拉斯诺雅尔斯克、新西伯利亚、秋明、叶卡捷林堡城内都有河流穿过,此外,车里雅宾斯克坐落在米阿斯河畔,伏尔加格勒坐落在伏尔加河畔,奥姆斯克坐落在鄂木河畔,莫斯科城内有莫斯科河,圣彼得堡更是“北方威尼斯”……城市有河,就增添了许多灵气,人们的生活也会多几分浪漫和宁静。火车经过新西伯利亚的时候,我拍了长达20分钟的短片,正值暮色降临,天空布满深蓝色的云,只有太阳落山的地方泛出霞红,仿佛是上帝的眼睛窥视苍生,突然经过铁路桥,桥下流淌着一条明亮的河,倒映着天空的深蓝与绯红,岸边安静地泊着轮船,各种吊车高高耸起,远处似乎还有一座大桥,桥上灯火相连,俨然一串白色珍珠……那种感觉,真是静谧、安详、通透。然后我想起北京,未名湖只是一摊小水,墙外的护城河被水泥包裹着,经常看不见蓝天,苍穹是一片混沌,生活也浑浑噩噩,并貌似繁忙,哎……
185还是应该走出来。 185还是应该走出来。
186</p> 186</p>
187 </div> 187 </div>
188 <div class="box w-70 h-60 box-img-left title-top"> 188 <div class="box w-70 h-60 box-img-left title-top">
189 <div class="img-cont img-7"></div> 189 <div class="img-cont img-7"></div>
190 <h3>(十)食物<span>Published May 3, 2012</span></h3> 190 <h3>(十)食物<span>Published May 3, 2012</span></h3>
191 <p>大概,列车进入蒙古后就会换上蒙古国的餐车,进入俄罗斯后就会换上俄方的餐车,所以从第二天开始列车上就不再提供免费食物。我自己带了很多食物,约10包方便面、方便馄炖和方便米饭各一包、两大袋切片面包、1大盒蛋黄派、两包饼干、6袋儿牛奶……lan给我买了两大盒德芙巧克力,师兄和好友又买了好多苹果、桔子、香蕉,还有一个大柚子。 列车上我和马克西姆交换着食物,吃得不亦乐乎。马克西姆吃东西静悄悄,我正在低头看书之际,他已经把一碗泡面报销了,而我毫未察觉,出于礼貌,我也静悄悄地吃东西,不再有吃面时的“呲溜呲溜”声音。 191 <p>大概,列车进入蒙古后就会换上蒙古国的餐车,进入俄罗斯后就会换上俄方的餐车,所以从第二天开始列车上就不再提供免费食物。我自己带了很多食物,约10包方便面、方便馄炖和方便米饭各一包、两大袋切片面包、1大盒蛋黄派、两包饼干、6袋儿牛奶……lan给我买了两大盒德芙巧克力,师兄和好友又买了好多苹果、桔子、香蕉,还有一个大柚子。 列车上我和马克西姆交换着食物,吃得不亦乐乎。马克西姆吃东西静悄悄,我正在低头看书之际,他已经把一碗泡面报销了,而我毫未察觉,出于礼貌,我也静悄悄地吃东西,不再有吃面时的“呲溜呲溜”声音。
192我想,我还是会比较适应西餐的吃法儿,包括俄餐。因为在彼得堡餐厅吃面包和奶酪,我觉得很香,而lan觉得不好吃;在列车上,我吃面包夹香肠,我也觉得津津有味,马克西姆也这么吃。如果我能很快适应这种简单的食物,那么我在莫斯科的一日三餐,至少会有一餐很便宜。我觉得,要适应西餐,应该学着适应食物的原味儿,西餐中很多蔬菜是生吃的,肉类的烹调方法也比较简单,调料种类不多,因此这些食物保留原味的可能性更大。与之相比,中国食物的烹调手段过于丰富,煎、炒、炸、炝、煮、蒸、拌、焖等不胜枚举,还大量使用酱油、味精等人工调料,这固然会增加我们的食物多样性,但也使大部分食物丧失了原味,并且我们还经常把多种菜放在一起混合加工以充实味道,这更使我们难以分辨单种食物的原味。在城市里,人们现在不吃麻、辣就觉得不香、没味儿,这多少说明了城市人味觉系统的逐渐麻木。但凡美食家、大厨师,都要从分辨食物的原味开始,然后才会对混合味道进行评判。 192我想,我还是会比较适应西餐的吃法儿,包括俄餐。因为在彼得堡餐厅吃面包和奶酪,我觉得很香,而lan觉得不好吃;在列车上,我吃面包夹香肠,我也觉得津津有味,马克西姆也这么吃。如果我能很快适应这种简单的食物,那么我在莫斯科的一日三餐,至少会有一餐很便宜。我觉得,要适应西餐,应该学着适应食物的原味儿,西餐中很多蔬菜是生吃的,肉类的烹调方法也比较简单,调料种类不多,因此这些食物保留原味的可能性更大。与之相比,中国食物的烹调手段过于丰富,煎、炒、炸、炝、煮、蒸、拌、焖等不胜枚举,还大量使用酱油、味精等人工调料,这固然会增加我们的食物多样性,但也使大部分食物丧失了原味,并且我们还经常把多种菜放在一起混合加工以充实味道,这更使我们难以分辨单种食物的原味。在城市里,人们现在不吃麻、辣就觉得不香、没味儿,这多少说明了城市人味觉系统的逐渐麻木。但凡美食家、大厨师,都要从分辨食物的原味开始,然后才会对混合味道进行评判。
193我觉得,我可能有逐渐喜爱原味食物的趋势。在学校食堂里,我最爱吃的饭菜组合是:米饭,醋熘白菜(或简单的煮白菜)和牛肉片;我最喜欢的牛奶是纯牛奶,咖啡也比较喜欢黑咖啡,各种饮料逐渐不喜欢了,转而喜欢白开水和绿茶。我相信,我的餐饮会逐渐趋于简单,大概我的爱好和性情在逐渐向这个方向变化。 193我觉得,我可能有逐渐喜爱原味食物的趋势。在学校食堂里,我最爱吃的饭菜组合是:米饭,醋熘白菜(或简单的煮白菜)和牛肉片;我最喜欢的牛奶是纯牛奶,咖啡也比较喜欢黑咖啡,各种饮料逐渐不喜欢了,转而喜欢白开水和绿茶。我相信,我的餐饮会逐渐趋于简单,大概我的爱好和性情在逐渐向这个方向变化。
194面包、酸黄瓜、牛肉、香肠、牛奶、鱼罐头、土豆、菜豆、奶酪……我对简单的俄餐生活充满了期待。 194面包、酸黄瓜、牛肉、香肠、牛奶、鱼罐头、土豆、菜豆、奶酪……我对简单的俄餐生活充满了期待。
195</p> 195</p>
196 </div> 196 </div>
197 <div class="box w-40 h-40 box-img-left box-b-r title-top"> 197 <div class="box w-40 h-40 box-img-left box-b-r title-top">
198 <div class="img-cont img-8"></div> 198 <div class="img-cont img-8"></div>
199 <h3>(十一)期待<span>Published May 3, 2012</span></h3> 199 <h3>(十一)期待<span>Published May 3, 2012</span></h3>
200 <p>莫斯科时间10月8日上午,还有几个小时列车就要抵达莫斯科了,六天五夜的旅程即将结束。火车厢内,人心惶惶,隔壁的中国人不断地询问时间,不断埋怨“时间过得真慢”,这些天来,他总来我们包厢“攫取”欢乐,对马克西姆充满好奇,经常要我帮他问马克西姆一些问题,比如“一年挣多少钱”,“怎么还不结婚”。起初马克西姆还经常邀请他一起玩YAHZEE游戏,到了后来,马克西姆朝我挤眉弄眼,要我把门关上,我们两个人悄悄玩YAHZEE。 200 <p>莫斯科时间10月8日上午,还有几个小时列车就要抵达莫斯科了,六天五夜的旅程即将结束。火车厢内,人心惶惶,隔壁的中国人不断地询问时间,不断埋怨“时间过得真慢”,这些天来,他总来我们包厢“攫取”欢乐,对马克西姆充满好奇,经常要我帮他问马克西姆一些问题,比如“一年挣多少钱”,“怎么还不结婚”。起初马克西姆还经常邀请他一起玩YAHZEE游戏,到了后来,马克西姆朝我挤眉弄眼,要我把门关上,我们两个人悄悄玩YAHZEE。
201我和马克西姆也开始收拾行李。马克西姆把剩下的方便面都给了我,还给我了一些药片,他告诉我在野外没有干净水源时,只需舀起河水,放入这些药片就可以杀死水里的病菌。马克西姆给我推荐了旅行网站www.wikipedia.org,在这个网站上可以找到很多城市的免费旅馆、便宜餐厅以及其他方便旅行的信息,他就是利用这个网站开始全球旅行的,我们也交换了email,他邀请我去比利时玩,我答应他几年后肯定会在比利时找到他。 (wikipedia不就是维基百科么。。。怎么会有免费旅馆之类的信息。。。想不通——Jinwei注) 201我和马克西姆也开始收拾行李。马克西姆把剩下的方便面都给了我,还给我了一些药片,他告诉我在野外没有干净水源时,只需舀起河水,放入这些药片就可以杀死水里的病菌。马克西姆给我推荐了旅行网站www.wikipedia.org,在这个网站上可以找到很多城市的免费旅馆、便宜餐厅以及其他方便旅行的信息,他就是利用这个网站开始全球旅行的,我们也交换了email,他邀请我去比利时玩,我答应他几年后肯定会在比利时找到他。 (wikipedia不就是维基百科么。。。怎么会有免费旅馆之类的信息。。。想不通——Jinwei注)
202我整理了我的东西,证件、笔记本、美元都在,箱子里的东西也都不少,但我的经验告诉我,下车的时候有可能会发生些事,但愿什么都不要发生,想到这里,我不由得增加了警觉。但愿有同学在车站接我,但如果同学不能准时到车站呢?幸好昨晚我在乘务员那里换了100卢布,如果在车站我见不到同学,那我就自己去找метро(地铁),然后到университет(大学)站下车,据说下车就是莫斯科大学。 202我整理了我的东西,证件、笔记本、美元都在,箱子里的东西也都不少,但我的经验告诉我,下车的时候有可能会发生些事,但愿什么都不要发生,想到这里,我不由得增加了警觉。但愿有同学在车站接我,但如果同学不能准时到车站呢?幸好昨晚我在乘务员那里换了100卢布,如果在车站我见不到同学,那我就自己去找метро(地铁),然后到университет(大学)站下车,据说下车就是莫斯科大学。
203和马克西姆又说了些话,他说他们全家都是旅游爱好者,他有两个sister,祖母已经80多岁了,结果我听成他母亲80多岁,我们哈哈大笑,他父亲和他一样都是漫画迷。东西收拾完毕,我开始望着窗外的俄罗斯村庄,一座座小木屋从眼前掠过,屋顶很高很大,多是三角形,或者是匀称的五边形,想必屋顶就是阁楼,不知是储藏食物的,还是住着美丽的俄罗斯小女孩。几乎每家农户都有一个菜园,用整齐的木板围成栅栏,菜园里又会有一两个简陋矮屋,大概是仓房。人们并没有把居住区的桦树、松树都砍掉,“夷为平地”似乎不是俄罗斯居民的生活习惯,木屋总是散布在林间,远远望去,村庄常常藏在树林后面,挂满金黄的白桦林又总是让村庄露出一些马脚。不过我有些好奇,这些木屋该怎样取暖呢?又该怎样防火?我想起,初中学俄语的时候,课文里最常出现的描写居住环境的单词就是село(村庄),река(河),лес(森林),береза(白桦树),город(城市),деревня(农村)……正是这些词以及对这些词的想象形成了我对俄罗斯的想象,并逐渐沉淀、凝结为我的俄罗斯情结,这种情结不但没有因为六天来的旅行而消散,反而变得更深更切,我的想象也更加热烈,也许,这就是期待吧。 203和马克西姆又说了些话,他说他们全家都是旅游爱好者,他有两个sister,祖母已经80多岁了,结果我听成他母亲80多岁,我们哈哈大笑,他父亲和他一样都是漫画迷。东西收拾完毕,我开始望着窗外的俄罗斯村庄,一座座小木屋从眼前掠过,屋顶很高很大,多是三角形,或者是匀称的五边形,想必屋顶就是阁楼,不知是储藏食物的,还是住着美丽的俄罗斯小女孩。几乎每家农户都有一个菜园,用整齐的木板围成栅栏,菜园里又会有一两个简陋矮屋,大概是仓房。人们并没有把居住区的桦树、松树都砍掉,“夷为平地”似乎不是俄罗斯居民的生活习惯,木屋总是散布在林间,远远望去,村庄常常藏在树林后面,挂满金黄的白桦林又总是让村庄露出一些马脚。不过我有些好奇,这些木屋该怎样取暖呢?又该怎样防火?我想起,初中学俄语的时候,课文里最常出现的描写居住环境的单词就是село(村庄),река(河),лес(森林),береза(白桦树),город(城市),деревня(农村)……正是这些词以及对这些词的想象形成了我对俄罗斯的想象,并逐渐沉淀、凝结为我的俄罗斯情结,这种情结不但没有因为六天来的旅行而消散,反而变得更深更切,我的想象也更加热烈,也许,这就是期待吧。
204我开始看见很多房屋和更茂密的白桦林……开始看见停在铁路上的货运列车和客运列车……开始看见修剪整齐的草坪……开始看见楼房……开始看见墙上涂抹的镰刀斧头……开始看见立交桥和路边广告牌……我感觉到车速变慢了…… 204我开始看见很多房屋和更茂密的白桦林……开始看见停在铁路上的货运列车和客运列车……开始看见修剪整齐的草坪……开始看见楼房……开始看见墙上涂抹的镰刀斧头……开始看见立交桥和路边广告牌……我感觉到车速变慢了……
205马克西姆拿出比利时国旗,手舞足蹈地唱起被他称为“shit”的比利时国歌。 205马克西姆拿出比利时国旗,手舞足蹈地唱起被他称为“shit”的比利时国歌。
206列车缓缓停下了,乘务员高声说“莫斯科到了”……莫斯科到了,我说不清自己的心情。 206列车缓缓停下了,乘务员高声说“莫斯科到了”……莫斯科到了,我说不清自己的心情。
207马克西姆帮我提一个箱子下车,一个刚上车的中国胖子对乘务员说:“这是3000多卢布,在国内肯定能换1000多人民币”,乘务员说:“有什么需求再给我打电话”,然后胖子搬走了很多食品,那些食品就放在没有旅客的包厢里。 207马克西姆帮我提一个箱子下车,一个刚上车的中国胖子对乘务员说:“这是3000多卢布,在国内肯定能换1000多人民币”,乘务员说:“有什么需求再给我打电话”,然后胖子搬走了很多食品,那些食品就放在没有旅客的包厢里。
208莫斯科好像刚下过雨,站台上湿漉漉的,我跟马克西姆握手告别,see you in Belgium!然后马克西姆背起双肩包,消失在行色匆匆的人群中。 208莫斯科好像刚下过雨,站台上湿漉漉的,我跟马克西姆握手告别,see you in Belgium!然后马克西姆背起双肩包,消失在行色匆匆的人群中。
209我在站台上没有看到同学,有些失望,正打算拖着两个箱子自己走,忽见前方一个瘦高男子迎面走来,撑着伞,头略低,手里拿着一张硬纸,上面写着汉字“莫大”,我急忙迎上去。“Здравствуйте(你好)”!“你是北京来的”?“Да(是的)”!“是研究生吗”?“yeah,аспирант(研究生)”,“一路辛苦哩”……我的语言系统又乱了,而这个俄罗斯人的汉语讲得真地道! 209我在站台上没有看到同学,有些失望,正打算拖着两个箱子自己走,忽见前方一个瘦高男子迎面走来,撑着伞,头略低,手里拿着一张硬纸,上面写着汉字“莫大”,我急忙迎上去。“Здравствуйте(你好)”!“你是北京来的”?“Да(是的)”!“是研究生吗”?“yeah,аспирант(研究生)”,“一路辛苦哩”……我的语言系统又乱了,而这个俄罗斯人的汉语讲得真地道!
210“我们坐地铁去莫大吧”! 210“我们坐地铁去莫大吧”!
211“太好了”! 211“太好了”!
212出火车站无需任何检查,这出乎我的意料。俄罗斯大个子告诉我,“前面不远处的高大建筑就是地铁”,我知道这肯定是комсомольская(共青团)站。 212出火车站无需任何检查,这出乎我的意料。俄罗斯大个子告诉我,“前面不远处的高大建筑就是地铁”,我知道这肯定是комсомольская(共青团)站。
213我跟着大个子径直向传说中的莫斯科地铁走去。 213我跟着大个子径直向传说中的莫斯科地铁走去。
214[email protected] 214[email protected]
215莫斯科时间10月21日 (完) 215莫斯科时间10月21日 (完)
216</p> 216</p>
217 </div> 217 </div>
218 <div class="box w-30 h-40 box-b-r title-top"> 218 <div class="box w-30 h-40 box-b-r title-top">
219 <h3>(十二)Ich Lieb Dich Immer Noch So Sehr <span>Published May 3, 2012</span></h3> 219 <h3>(十二)Ich Lieb Dich Immer Noch So Sehr <span>Published May 3, 2012</span></h3>
220 <p>我仍然如此爱你 220 <p>我仍然如此爱你
221你将自己锁进我心里 221你将自己锁进我心里
222悄悄地在我心里越走越深 222悄悄地在我心里越走越深
223我失去对自己意志的控制 223我失去对自己意志的控制
224只有你控制着我的感觉 224只有你控制着我的感觉
225你将我们连在了一起 225你将我们连在了一起
226许诺过永远不离开我 226许诺过永远不离开我
227你点燃了我的热情 227你点燃了我的热情
228却让我独自燃烧 228却让我独自燃烧
229我仍然如此爱你 229我仍然如此爱你
230仍然如此深爱你 230仍然如此深爱你
231你的眼神诱惑了我,让我们的灵魂彼此触摸 231你的眼神诱惑了我,让我们的灵魂彼此触摸
232我仍然如此爱你 232我仍然如此爱你
233我泪流满面,心中空白, 233我泪流满面,心中空白,
234因为没有你,一切都没有意义 234因为没有你,一切都没有意义
235 235
236围着你我狂奔十万英里 236围着你我狂奔十万英里
237我们所不能分担的痛楚让我双倍疼痛 237我们所不能分担的痛楚让我双倍疼痛
238在每一条路上我寻找着你 238在每一条路上我寻找着你
239你将永在我心 239你将永在我心
240你是倾盆大雨 240你是倾盆大雨
241我因你而哭泣 241我因你而哭泣
242 242
243我仍然如此爱你 243我仍然如此爱你
244仍然如此深爱你 244仍然如此深爱你
245你的眼神诱惑了我,让我们的灵魂彼此触摸 245你的眼神诱惑了我,让我们的灵魂彼此触摸
246我仍然如此爱你 246我仍然如此爱你
247我泪流满面,心中空白, 247我泪流满面,心中空白,
248因为没有你,一切都没有意义 248因为没有你,一切都没有意义
249你是一场暴雨 249你是一场暴雨
250我因你而哭泣 250我因你而哭泣
251我仍然如此爱你 251我仍然如此爱你
252仍然如此深爱你 252仍然如此深爱你
253你的眼神诱惑了我,让我们的灵魂彼此触摸 253你的眼神诱惑了我,让我们的灵魂彼此触摸
254 254
255我仍然如此爱你 255我仍然如此爱你
256我泪流满面,心中空白 256我泪流满面,心中空白
257因为没有你,一切都没有意义 257因为没有你,一切都没有意义
258我的每个细胞 258我的每个细胞
259都爱着你的每个细胞 259都爱着你的每个细胞
260别人代替了我你会很难过吗</p> 260别人代替了我你会很难过吗</p>
261 </div> 261 </div>
262 <div class="box w-30 h-40 title-top"> 262 <div class="box w-30 h-40 title-top">
263 <h3>L&R <span>Published May 3, 2012</span></h3> 263 <h3>L&R <span>Published May 3, 2012</span></h3>
264 <p>”I can’t see anything”</p> 264 <p>”I can’t see anything”</p>
265 <p> “No,you can.Just try” </p> 265 <p> “No,you can.Just try” </p>
266 <p>“I ‘m so scared”</p> 266 <p>“I ‘m so scared”</p>
267 <p> “I ‘m here” </p> 267 <p> “I ‘m here” </p>
268 <p>“What if……”</p> 268 <p>“What if……”</p>
269 <p> “I won’t leave”</p> 269 <p> “I won’t leave”</p>
270 <p> “Really?” </p> 270 <p> “Really?” </p>
271 <p>“I just said it”</p> 271 <p>“I just said it”</p>
272 <p> “But……” </p> 272 <p> “But……” </p>
273 <p>“But what?”</p> 273 <p>“But what?”</p>
274 <p> “Thank you.”</p> 274 <p> “Thank you.”</p>
275 </div> 275 </div>
276 </div> 276 </div>
277 277
278 <div class="f-page f-cover-back"> 278 <div class="f-page f-cover-back">
279 <div id="codrops-ad-wrapper"> 279 <div id="codrops-ad-wrapper">
280 280
281 </div> 281 </div>
282 </div> 282 </div>
283 </div> 283 </div>
284 284
285 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 285 <script type="text/javascript" src="./js/jquery.min.js"></script>
286 <script type="text/javascript"> 286 <script type="text/javascript">
287 287
288 var $container = $( '#flip' ), 288 var $container = $( '#flip' ),
289 $pages = $container.children().hide(); 289 $pages = $container.children().hide();
290 290
291 Modernizr.load({ 291 Modernizr.load({
292 test: Modernizr.csstransforms3d && Modernizr.csstransitions, 292 test: Modernizr.csstransforms3d && Modernizr.csstransitions,
293 yep : ['js/jquery.tmpl.min.js','js/jquery.history.js','js/core.string.js','js/jquery.touchSwipe-1.2.5.js','js/jquery.flips.js'], 293 yep : ['js/jquery.tmpl.min.js','js/jquery.history.js','js/core.string.js','js/jquery.touchSwipe-1.2.5.js','js/jquery.flips.js'],
294 nope: 'css/fallback.css', 294 nope: 'css/fallback.css',
295 callback : function( url, result, key ) { 295 callback : function( url, result, key ) {
296 296
297 if( url === 'css/fallback.css' ) { 297 if( url === 'css/fallback.css' ) {
298 $pages.show(); 298 $pages.show();
299 } 299 }
300 else if( url === 'js/jquery.flips.js' ) { 300 else if( url === 'js/jquery.flips.js' ) {
301 $container.flips(); 301 $container.flips();
302 } 302 }
303 303
304 } 304 }
305 }); 305 });
306 306
307 </script> 307 </script>
308 308
309<!-- jinwei.me Baidu tongji analytics --> 309<!-- jinwei.me Baidu tongji analytics -->
310<script type="text/javascript"> 310<script type="text/javascript">
311var _bdhmProtocol = (("https:" == document.location.protocol) ? " https://" : " http://"); 311var _bdhmProtocol = (("https:" == document.location.protocol) ? " https://" : " http://");
312document.write(unescape("%3Cscript src='" + _bdhmProtocol + "hm.baidu.com/h.js%3F91918ac6d6854623883a2b546ebc00ac' type='text/javascript'%3E%3C/script%3E")); 312
313</script> 313document.write(unescape("%3Cscript src='" + _bdhmProtocol + "hm.baidu.com/h.js%3F91918ac6d6854623883a2b546ebc00ac' type='text/javascript'%3E%3C/script%3E"));
314 314
315</body> 315</script>
316
317</body>
316</html> \ No newline at end of file 318</html> \ No newline at end of file
diff --git a/Blocks/Flipboard/js/core.string.js b/Back/Blocks/Flipboard/js/core.string.js
index 312a42e..312a42e 100644
--- a/Blocks/Flipboard/js/core.string.js
+++ b/Back/Blocks/Flipboard/js/core.string.js
diff --git a/Blocks/Flipboard/js/jquery.flips.js b/Back/Blocks/Flipboard/js/jquery.flips.js
index 5c25d87..5c25d87 100644
--- a/Blocks/Flipboard/js/jquery.flips.js
+++ b/Back/Blocks/Flipboard/js/jquery.flips.js
diff --git a/Blocks/Flipboard/js/jquery.history.js b/Back/Blocks/Flipboard/js/jquery.history.js
index 8d4edcd..8d4edcd 100644
--- a/Blocks/Flipboard/js/jquery.history.js
+++ b/Back/Blocks/Flipboard/js/jquery.history.js
diff --git a/Back/Blocks/Flipboard/js/jquery.min.js b/Back/Blocks/Flipboard/js/jquery.min.js
new file mode 100644
index 0000000..93adea1
--- /dev/null
+++ b/Back/Blocks/Flipboard/js/jquery.min.js
@@ -0,0 +1,4 @@
1/*! jQuery v1.7.2 jquery.com | jquery.org/license */
2(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cu(a){if(!cj[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?"<!doctype html>":"")+"<html><body>"),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function ca(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function b_(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bD.test(a)?d(a,e):b_(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&f.type(b)==="object")for(var e in b)b_(a+"["+e+"]",b[e],c,d);else d(a,b)}function b$(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function bZ(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bS,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bZ(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bZ(a,c,d,e,"*",g));return l}function bY(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bO),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bB(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?1:0,g=4;if(d>0){if(c!=="border")for(;e<g;e+=2)c||(d-=parseFloat(f.css(a,"padding"+bx[e]))||0),c==="margin"?d+=parseFloat(f.css(a,c+bx[e]))||0:d-=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0;return d+"px"}d=by(a,b);if(d<0||d==null)d=a.style[b];if(bt.test(d))return d;d=parseFloat(d)||0;if(c)for(;e<g;e+=2)d+=parseFloat(f.css(a,"padding"+bx[e]))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+bx[e]))||0);return d+"px"}function bo(a){var b=c.createElement("div");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bm)}function bm(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bk(a,b){var c;b.nodeType===1&&(b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase(),c==="object"?b.outerHTML=a.outerHTML:c!=="input"||a.type!=="checkbox"&&a.type!=="radio"?c==="option"?b.selected=a.defaultSelected:c==="input"||c==="textarea"?b.defaultValue=a.defaultValue:c==="script"&&b.text!==a.text&&(b.text=a.text):(a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value)),b.removeAttribute(f.expando),b.removeAttribute("_submit_attached"),b.removeAttribute("_change_attached"))}function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c,i[c][d])}h.data&&(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?+d:j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){if(typeof c!="string"||!c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h,i){var j,k=d==null,l=0,m=a.length;if(d&&typeof d=="object"){for(l in d)e.access(a,c,l,d[l],1,h,f);g=1}else if(f!==b){j=i===b&&e.isFunction(f),k&&(j?(j=c,c=function(a,b,c){return j.call(e(a),c)}):(c.call(a,f),c=null));if(c)for(;l<m;l++)c(a[l],d,j?f.call(a[l],l,c(a[l],d)):f,i);g=1}return g?a:k?c.call(a):m?c(a[0],d):h},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m,n=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?n(g):h==="function"&&(!a.unique||!p.has(g))&&c.push(g)},o=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,j=!0,m=k||0,k=0,l=c.length;for(;c&&m<l;m++)if(c[m].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}j=!1,c&&(a.once?e===!0?p.disable():c=[]:d&&d.length&&(e=d.shift(),p.fireWith(e[0],e[1])))},p={add:function(){if(c){var a=c.length;n(arguments),j?l=c.length:e&&e!==!0&&(k=a,o(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){j&&f<=l&&(l--,f<=m&&m--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&p.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(j?a.once||d.push([b,c]):(!a.once||!e)&&o(b,c));return this},fire:function(){p.fireWith(this,arguments);return this},fired:function(){return!!i}};return p};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p=c.createElement("div"),q=c.documentElement;p.setAttribute("className","t"),p.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=p.getElementsByTagName("*"),e=p.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=p.getElementsByTagName("input")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:p.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},f.boxModel=b.boxModel=c.compatMode==="CSS1Compat",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),i.setAttribute("name","t"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m="on"+n,o=m in p,o||(p.setAttribute(m,"return;"),o=typeof p[m]=="function"),b[n+"Bubbles"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName("body")[0];!u||(m=1,t="padding:0;margin:0;border:",r="position:absolute;top:0;left:0;width:1px;height:1px;",s=t+"0;visibility:hidden;",n="style='"+r+t+"5px solid #000;",q="<div "+n+"display:block;'><div style='"+t+"0;display:block;overflow:hidden;'></div></div>"+"<table "+n+"' cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>",d=c.createElement("div"),d.style.cssText=s+"width:0;height:0;position:static;top:0;margin-top:"+m+"px",u.insertBefore(d,u.firstChild),p=c.createElement("div"),d.appendChild(p),p.innerHTML="<table><tr><td style='"+t+"0;display:none'></td><td>t</td></tr></table>",k=p.getElementsByTagName("td"),o=k[0].offsetHeight===0,k[0].style.display="",k[1].style.display="none",b.reliableHiddenOffsets=o&&k[0].offsetHeight===0,a.getComputedStyle&&(p.innerHTML="",l=c.createElement("div"),l.style.width="0",l.style.marginRight="0",p.style.width="2px",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!="undefined"&&(p.innerHTML="",p.style.width=p.style.padding="1px",p.style.border=0,p.style.overflow="hidden",p.style.display="inline",p.style.zoom=1,b.inlineBlockNeedsLayout=p.offsetWidth===3,p.style.display="block",p.style.overflow="visible",p.innerHTML="<div style='width:5px;'></div>",b.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChild,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,doesAddBorderForTableAndCells:i.offsetTop===5},g.style.position="fixed",g.style.top="20px",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.position=g.style.top="",e.style.overflow="hidden",e.style.position="relative",j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginInBodyOffset=u.offsetTop!==m,a.getComputedStyle&&(p.style.marginTop="1%",b.pixelMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!=="1%"),typeof d.style.zoom!="undefined"&&(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.extend(b,j))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h,i,j=this[0],k=0,m=null;if(a===b){if(this.length){m=f.data(j);if(j.nodeType===1&&!f._data(j,"parsedAttrs")){g=j.attributes;for(i=g.length;k<i;k++)h=g[k].name,h.indexOf("data-")===0&&(h=f.camelCase(h.substring(5)),l(j,h,m[h]));f._data(j,"parsedAttrs",!0)}}return m}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split(".",2),d[1]=d[1]?"."+d[1]:"",e=d[1]+"!";return f.access(this,function(c){if(c===b){m=this.triggerHandler("getData"+e,[d[0]]),m===b&&j&&(m=f.data(j,a),m=l(j,a,m));return m===b&&d[1]?this.data(d[0]):m}d[1]=c,this.each(function(){var b=f(this);b.triggerHandler("setData"+e,d),f.data(this,a,c),b.triggerHandler("changeData"+e,d)})},null,c,arguments.length>1,null,!1)},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof a!="string"&&(c=a,a="fx",d--);if(arguments.length<d)return f.queue(this[0],a);return c===b?this:this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise(c)}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,f.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length>1)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h,i=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;i<g;i++)e=d[i],e&&(c=f.propFix[e]||e,h=u.test(e),h||f.attr(a,e,""),a.removeAttribute(v?e:c),h&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0,coords:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/(?:^|\s)hover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(
3a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler,g=p.selector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:g&&G(g),namespace:n.join(".")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g.events)){b=f.trim(I(b||"")).split(" ");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp("(^|\\.)"+l.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(n=0;n<r.length;n++)s=r[n],(e||k===s.origType)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace))&&(!d||d===s.selector||d==="**"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p.remove&&p.remove.call(a,s));r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a,l)===!1)&&f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&&(q=g.handle,q&&(q.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&&!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d)===!1&&c.preventDefault();c.type=h,!g&&!c.isDefaultPrevented()&&(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=f.event.special[c.type]||{},j=[],k,l,m,n,o,p,q,r,s,t,u;g[0]=c,c.delegateTarget=this;if(!i.preDispatch||i.preDispatch.call(this,c)!==!1){if(e&&(!c.button||c.type!=="click")){n=f(this),n.context=this.ownerDocument||this;for(m=c.target;m!=this;m=m.parentNode||this)if(m.disabled!==!0){p={},r=[],n[0]=m;for(k=0;k<e;k++)s=d[k],t=s.selector,p[t]===b&&(p[t]=s.quick?H(m,s.quick):n.is(t)),p[t]&&r.push(s);r.length&&j.push({elem:m,matches:r})}}d.length>e&&j.push({elem:this,matches:d.slice(e)});for(k=0;k<j.length&&!c.isPropagationStopped();k++){q=j[k],c.currentTarget=q.elem;for(l=0;l<q.matches.length&&!c.isImmediatePropagationStopped();l++){s=q.matches[l];if(h||!c.namespace&&!s.namespace||c.namespace_re&&c.namespace_re.test(s.namespace))c.data=s.data,c.handleObj=s,o=((f.event.special[s.origType]||{}).handle||s.handler).apply(q.elem,g),o!==b&&(c.result=o,o===!1&&(c.preventDefault(),c.stopPropagation()))}}i.postDispatch&&i.postDispatch.call(this,c);return c.result}},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:J):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){a._submit_bubble=!0}),d._submit_attached=!0)})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;z.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=d||c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.origType+"."+e.namespace:e.origType,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1||d===9||d===11){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));o.match.globalPOS=p;var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.globalPOS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),"not",a)},filter:function(a){return this.pushStack(T(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?Q.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|style)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new RegExp("<(?:"+V+")[\\s/>]","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){return f.access(this,function(a){return a===b?f.text(this):this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f
4.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){return f.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(;d<e;d++)c=this[d]||{},c.nodeType===1&&(f.cleanData(c.getElementsByTagName("*")),c.innerHTML=a);c=0}catch(g){}}c&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,function(a,b){b.src?f.ajax({type:"GET",global:!1,url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)})}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test("<"+a.nodeName+">")?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g,h,i,j=[];b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof l=="number"&&(l+="");if(!l)continue;if(typeof l=="string")if(!_.test(l))l=b.createTextNode(l);else{l=l.replace(Y,"<$1></$2>");var m=(Z.exec(l)||["",""])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement("div"),q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m==="table"&&!s?p.firstChild&&p.firstChild.childNodes:n[1]==="<table>"&&!s?p.childNodes:[];for(i=t.length-1;i>=0;--i)f.nodeName(t[i],"tbody")&&!t[i].childNodes.length&&t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&&X.test(l)&&p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p&&(p.parentNode.removeChild(p),q.length>0&&(r=q[q.length-1],r&&r.parentNode&&r.parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]&&typeof (u=l.length)=="number")for(i=0;i<u;i++)bn(l[i]);else bn(l);l.nodeType?j.push(l):j=f.merge(j,l)}if(d){g=function(a){return!a.type||be.test(a.type)};for(k=0;j[k];k++){h=j[k];if(e&&f.nodeName(h,"script")&&(!h.type||be.test(h.type)))e.push(h.parentNode?h.parentNode.removeChild(h):h);else{if(h.nodeType===1){var v=f.grep(h.getElementsByTagName("script"),g);j.splice.apply(j,[k+1,0].concat(v))}d.appendChild(h)}}}return j},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bp=/alpha\([^)]*\)/i,bq=/opacity=([^)]*)/,br=/([A-Z]|^ms)/g,bs=/^[\-+]?(?:\d*\.)?\d+$/i,bt=/^-?(?:\d*\.)?\d+(?!px)[^\d\s]+$/i,bu=/^([\-+])=([\-+.\de]+)/,bv=/^margin/,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Top","Right","Bottom","Left"],by,bz,bA;f.fn.css=function(a,c){return f.access(this,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)},a,c,arguments.length>1)},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,"opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bu.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(by)return by(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defaultView&&c.defaultView.getComputedStyle&&(bz=function(a,b){var c,d,e,g,h=a.style;b=b.replace(br,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b))),!f.support.pixelMargin&&e&&bv.test(b)&&bt.test(c)&&(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.documentElement.currentStyle&&(bA=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f==null&&g&&(e=g[b])&&(f=e),bt.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),by=bz||bA,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.test(b)?b+"px":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bq.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bp,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bp.test(g)?g.replace(bp,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){return f.swap(a,{display:"inline-block"},function(){return b?by(a,"margin-right"):a.style.marginRight})}})}),f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)}),f.each({margin:"",padding:"",border:"Width"},function(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}});var bC=/%20/g,bD=/\[\]$/,bE=/\r?\n/g,bF=/#.*$/,bG=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\/\//,bL=/\?/,bM=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV,bW=["*/"]+["*"];try{bU=e.href}catch(bX){bU=c.createElement("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bM,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,"\r\n")}}):{name:b.name,value:c.replace(bE,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b$(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b$(a,b);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bW},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bY(bS),ajaxTransport:bY(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?ca(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cb(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bW+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bZ(bT,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=typeof b.data=="string"&&/^application\/x\-www\-form\-urlencoded/.test(b.contentType);if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n);try{m.text=h.responseText}catch(a){}try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(ct("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),(e===""&&f.css(d,"display")==="none"||!f.contains(d.ownerDocument.documentElement,d))&&f._data(d,"olddisplay",cu(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(ct("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(ct("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o,p,q;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]);if((k=f.cssHooks[g])&&"expand"in k){l=k.expand(a[g]),delete a[g];for(i in l)i in a||(a[i]=l[i])}}for(g in a){h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cu(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cm.test(h)?(q=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),q?(f._data(this,"toggle"+i,q==="show"?"hide":"show"),j[q]()):j[h]()):(m=cn.exec(h),n=j.cur(),m?(o=parseFloat(m[2]),p=m[3]||(f.cssNumber[i]?"":"px"),p!=="px"&&(f.style(this,i,(o||1)+p),n=(o||1)/j.cur()*n,f.style(this,i,n+p)),m[1]&&(o=(m[1]==="-="?-1:1)*o+n),j.custom(n,o,p)):j.custom(n,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:ct("show",1),slideUp:ct("hide",1),slideToggle:ct("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a){return a},swing:function(a){return-Math.cos(a*Math.PI)/2+.5}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cq||cr(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){f._data(e.elem,"fxshow"+e.prop)===b&&(e.options.hide?f._data(e.elem,"fxshow"+e.prop,e.start):e.options.show&&f._data(e.elem,"fxshow"+e.prop,e.end))},h()&&f.timers.push(h)&&!co&&(co=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cq||cr(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(co),co=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(cp.concat.apply([],cp),function(a,b){b.indexOf("margin")&&(f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)})}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cv,cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?cv=function(a,b,c,d){try{d=a.getBoundingClientRect()}catch(e){}if(!d||!f.contains(c,a))return d?{top:d.top,left:d.left}:{top:0,left:0};var g=b.body,h=cy(b),i=c.clientTop||g.clientTop||0,j=c.clientLeft||g.clientLeft||0,k=h.pageYOffset||f.support.boxModel&&c.scrollTop||g.scrollTop,l=h.pageXOffset||f.support.boxModel&&c.scrollLeft||g.scrollLeft,m=d.top+k-i,n=d.left+l-j;return{top:m,left:n}}:cv=function(a,b,c){var d,e=a.offsetParent,g=a,h=b.body,i=b.defaultView,j=i?i.getComputedStyle(a,null):a.currentStyle,k=a.offsetTop,l=a.offsetLeft;while((a=a.parentNode)&&a!==h&&a!==c){if(f.support.fixedPosition&&j.position==="fixed")break;d=i?i.getComputedStyle(a,null):a.currentStyle,k-=a.scrollTop,l-=a.scrollLeft,a===e&&(k+=a.offsetTop,l+=a.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cw.test(a.nodeName))&&(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),g=e,e=a.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&d.overflow!=="visible"&&(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),j=d}if(j.position==="relative"||j.position==="static")k+=h.offsetTop,l+=h.offsetLeft;f.support.fixedPosition&&j.position==="fixed"&&(k+=Math.max(c.scrollTop,h.scrollTop),l+=Math.max(c.scrollLeft,h.scrollLeft));return{top:k,left:l}},f.fn.offset=function(a){if(arguments.length)return a===b?this:this.each(function(b){f.offset.setOffset(this,a,b)});var c=this[0],d=c&&c.ownerDocument;if(!d)return null;if(c===d.body)return f.offset.bodyOffset(c);return cv(c,d,d.documentElement)},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);f.fn[a]=function(e){return f.access(this,function(a,e,g){var h=cy(a);if(g===b)return h?c in h?h[c]:f.support.boxModel&&h.document.documentElement[e]||h.document.body[e]:a[e];h?h.scrollTo(d?f(h).scrollLeft():g,d?g:f(h).scrollTop()):a[e]=g},a,e,arguments.length,null)}}),f.each({Height:"height",Width:"width"},function(a,c){var d="client"+a,e="scroll"+a,g="offset"+a;f.fn["inner"+a]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,c,"padding")):this[c]():null},f.fn["outer"+a]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,c,a?"margin":"border")):this[c]():null},f.fn[c]=function(a){return f.access(this,function(a,c,h){var i,j,k,l;if(f.isWindow(a)){i=a.document,j=i.documentElement[d];return f.support.boxModel&&j||i.body&&i.body[d]||j}if(a.nodeType===9){i=a.documentElement;if(i[d]>=i[e])return i[d];return Math.max(a.body[e],i[e],a.body[g],i[g])}if(h===b){k=f.css(a,c),l=parseFloat(k);return f.isNumeric(l)?l:k}f(a).css(c,h)},c,a,arguments.length,null)}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file
diff --git a/Blocks/Flipboard/js/jquery.tmpl.min.js b/Back/Blocks/Flipboard/js/jquery.tmpl.min.js
index f08e81d..f08e81d 100644
--- a/Blocks/Flipboard/js/jquery.tmpl.min.js
+++ b/Back/Blocks/Flipboard/js/jquery.tmpl.min.js
diff --git a/Blocks/Flipboard/js/jquery.touchSwipe-1.2.5.js b/Back/Blocks/Flipboard/js/jquery.touchSwipe-1.2.5.js
index f007f55..f007f55 100644
--- a/Blocks/Flipboard/js/jquery.touchSwipe-1.2.5.js
+++ b/Back/Blocks/Flipboard/js/jquery.touchSwipe-1.2.5.js
diff --git a/Blocks/Flipboard/js/modernizr.custom.08464.js b/Back/Blocks/Flipboard/js/modernizr.custom.08464.js
index 5325668..5325668 100644
--- a/Blocks/Flipboard/js/modernizr.custom.08464.js
+++ b/Back/Blocks/Flipboard/js/modernizr.custom.08464.js
diff --git a/Blocks/For U_files/_notes/dwsync.xml b/Back/Blocks/For U_files/_notes/dwsync.xml
index bc9aad9..bc9aad9 100644
--- a/Blocks/For U_files/_notes/dwsync.xml
+++ b/Back/Blocks/For U_files/_notes/dwsync.xml
diff --git a/Blocks/For U_files/future.png b/Back/Blocks/For U_files/future.png
index 7722341..7722341 100644
--- a/Blocks/For U_files/future.png
+++ b/Back/Blocks/For U_files/future.png
Binary files differ
diff --git a/Blocks/For U_files/life.png b/Back/Blocks/For U_files/life.png
index ebfe8d2..ebfe8d2 100644
--- a/Blocks/For U_files/life.png
+++ b/Back/Blocks/For U_files/life.png
Binary files differ
diff --git a/Blocks/For U_files/love.png b/Back/Blocks/For U_files/love.png
index 7e914b8..7e914b8 100644
--- a/Blocks/For U_files/love.png
+++ b/Back/Blocks/For U_files/love.png
Binary files differ
diff --git a/Blocks/For U_files/python.png b/Back/Blocks/For U_files/python.png
index 1ff51c3..1ff51c3 100644
--- a/Blocks/For U_files/python.png
+++ b/Back/Blocks/For U_files/python.png
Binary files differ
diff --git a/Blocks/For U_files/time.png b/Back/Blocks/For U_files/time.png
index b4196cd..b4196cd 100644
--- a/Blocks/For U_files/time.png
+++ b/Back/Blocks/For U_files/time.png
Binary files differ
diff --git a/Blocks/For U_files/train.png b/Back/Blocks/For U_files/train.png
index 9a668b9..9a668b9 100644
--- a/Blocks/For U_files/train.png
+++ b/Back/Blocks/For U_files/train.png
Binary files differ
diff --git a/Blocks/For U_files/world.png b/Back/Blocks/For U_files/world.png
index f1e1d5d..f1e1d5d 100644
--- a/Blocks/For U_files/world.png
+++ b/Back/Blocks/For U_files/world.png
Binary files differ
diff --git a/Back/Blocks/alphabet.js b/Back/Blocks/alphabet.js
new file mode 100644
index 0000000..f67304a
--- /dev/null
+++ b/Back/Blocks/alphabet.js
@@ -0,0 +1,1603 @@
1document.alphabet = {
2 A79: {
3 W: 75,
4 P: [
5 [64, 89, 9, -102],
6 [57, 103, 9, -102],
7 [5, 89, 9, -79],
8 [16, 104, 8, -35],
9 [51, 122, 8, -35],
10 [23, 118, 8, -35],
11 [31, 133, 8, 50],
12 [46, 136, 8, 50],
13 [34, 153, 8, 69],
14 [28, 168, 7, 112],
15 [21, 183, 7, 112]
16 ]
17 },
18 A78: {
19 W: 85,
20 P: [
21 [10, 148, 8, -103],
22 [21, 137, 8, -92],
23 [33, 125, 7, -79],
24 [50, 124, 7, -35],
25 [58, 135, 7, -35],
26 [68, 148, 7, -35],
27 [40, 111, 7, 51],
28 [33, 103, 7, 51],
29 [21, 86, 7, 51],
30 [56, 106, 7, 51],
31 [67, 92, 7, 112]
32 ]
33 },
34 A77: {
35 W: 98,
36 P: [
37 [24, 148, 10, -102],
38 [67, 151, 10, -102],
39 [34, 133, 9, -36],
40 [61, 134, 9, -36],
41 [76, 132, 8, -36],
42 [16, 130, 8, -36],
43 [14, 112, 7, 50],
44 [40, 118, 7, 50],
45 [58, 117, 7, 50],
46 [82, 117, 7, 83],
47 [86, 100, 7, 83],
48 [51, 101, 7, 83],
49 [11, 95, 7, 83]
50 ]
51 },
52 A76: {
53 W: 70,
54 P: [
55 [12, 88, 9, -84],
56 [32, 138, 5, -84],
57 [36, 148, 9, -84],
58 [44, 133, 8, -84],
59 [60, 84, 6, 119],
60 [57, 96, 6, 102],
61 [53, 107, 6, 50],
62 [50, 120, 7, -35],
63 [26, 115, 7, 51],
64 [29, 127, 6, 69],
65 [20, 101, 8, 11]
66 ]
67 },
68 A75: {
69 W: 75,
70 P: [
71 [58, 148, 9, -103],
72 [60, 128, 8, -84],
73 [38, 150, 8, -35],
74 [21, 147, 7, -35],
75 [61, 109, 7, -35],
76 [17, 128, 7, 42],
77 [13, 110, 7, 80],
78 [62, 92, 7, 80],
79 [14, 90, 7, 80]
80 ]
81 },
82 A74: {
83 W: 68,
84 P: [
85 [33, 149, 9, -103],
86 [35, 130, 9, -79],
87 [34, 108, 9, -36],
88 [33, 90, 8, 5],
89 [48, 89, 8, 50],
90 [14, 89, 8, 56],
91 [34, 68, 8, 112]
92 ]
93 },
94 A73: {
95 W: 70,
96 P: [
97 [10, 143, 8, -103],
98 [23, 150, 8, -92],
99 [44, 149, 8, -79],
100 [57, 135, 8, -38],
101 [44, 122, 8, -35],
102 [25, 114, 8, 39],
103 [17, 98, 7, 39],
104 [33, 91, 7, 56],
105 [45, 88, 7, 102],
106 [57, 91, 7, 102]
107 ]
108 },
109 A72: {
110 W: 69,
111 P: [
112 [58, 105, 7, -102],
113 [56, 88, 8, -35],
114 [42, 91, 7, 51],
115 [29, 96, 7, 91],
116 [16, 90, 7, 91],
117 [18, 105, 8, 37],
118 [17, 120, 7, -50],
119 [17, 134, 6, -79],
120 [17, 149, 8, -102]
121 ]
122 },
123 A71: {
124 W: 75,
125 P: [
126 [51, 182, 10, -103],
127 [51, 159, 9, -79],
128 [55, 138, 9, -79],
129 [35, 149, 8, -35],
130 [18, 143, 7, 11],
131 [58, 123, 7, 11],
132 [12, 126, 7, 50],
133 [57, 103, 7, 69],
134 [16, 109, 6, 69],
135 [26, 95, 6, 69],
136 [49, 88, 6, 69],
137 [37, 88, 6, 119]
138 ]
139 },
140 A70: {
141 W: 77,
142 P: [
143 [15, 88, 10, -103],
144 [18, 108, 9, -91],
145 [31, 97, 9, -50],
146 [18, 126, 8, -50],
147 [45, 96, 7, -35],
148 [57, 103, 7, 5],
149 [17, 143, 7, 5],
150 [60, 117, 7, 56],
151 [60, 131, 7, 56],
152 [20, 158, 7, 50],
153 [51, 143, 7, 50],
154 [31, 148, 6, 102],
155 [17, 172, 6, 102],
156 [16, 186, 5, 119]
157 ]
158 },
159 A6d: {
160 W: 111,
161 P: [
162 [15, 148, 10, -102],
163 [58, 152, 10, -102],
164 [98, 151, 10, -50],
165 [98, 134, 9, -50],
166 [56, 133, 9, -50],
167 [15, 129, 8, 11],
168 [94, 116, 8, 11],
169 [56, 113, 8, 11],
170 [14, 111, 7, 51],
171 [15, 93, 7, 51],
172 [25, 105, 7, 51],
173 [55, 98, 7, 51],
174 [89, 99, 7, 83],
175 [77, 92, 7, 112],
176 [36, 94, 7, 112]
177 ]
178 },
179 A6e: {
180 W: 75,
181 P: [
182 [17, 148, 10, -92],
183 [62, 149, 10, -92],
184 [17, 125, 9, -50],
185 [62, 127, 9, -35],
186 [61, 107, 8, 29],
187 [23, 104, 8, 69],
188 [15, 86, 7, 69],
189 [36, 94, 7, 69],
190 [55, 92, 7, 69]
191 ]
192 },
193 A6f: {
194 W: 76,
195 P: [
196 [24, 147, 10, -103],
197 [46, 149, 9, -84],
198 [14, 129, 9, -50],
199 [58, 134, 8, -35],
200 [18, 107, 8, 29],
201 [61, 114, 7, 51],
202 [56, 98, 7, 51],
203 [31, 92, 7, 102],
204 [45, 91, 7, 102]
205 ]
206 },
207 A6a: {
208 W: 58,
209 P: [
210 [34, 62, 10, -92],
211 [35, 95, 9, -92],
212 [37, 117, 8, -35],
213 [38, 133, 8, -35],
214 [37, 152, 8, 37],
215 [36, 168, 8, 56],
216 [29, 185, 7, 56],
217 [14, 181, 6, 112],
218 [6, 170, 5, 119]
219 ]
220 },
221 A6b: {
222 W: 78,
223 P: [
224 [19, 148, 8, -84],
225 [20, 131, 7, -84],
226 [68, 149, 10, -84],
227 [58, 134, 8, -84],
228 [50, 123, 6, -84],
229 [65, 83, 6, -35],
230 [21, 44, 7, 51],
231 [21, 59, 6, 83],
232 [21, 72, 5, 112],
233 [21, 85, 6, 112],
234 [21, 99, 6, 69],
235 [53, 99, 5, 102],
236 [59, 90, 6, 50],
237 [42, 110, 10, 29],
238 [20, 115, 7, -35],
239 [31, 122, 5, 5]
240 ]
241 },
242 A6c: {
243 W: 40,
244 P: [
245 [20, 150, 10, 56],
246 [22, 52, 10, 56],
247 [20, 71, 9, -35],
248 [21, 133, 8, -50],
249 [21, 88, 7, -84],
250 [21, 120, 6, -103],
251 [20, 104, 6, -103]
252 ]
253 },
254 A68: {
255 W: 83,
256 P: [
257 [18, 149, 10, -102],
258 [69, 147, 10, -102],
259 [18, 131, 9, -36],
260 [64, 126, 8, -36],
261 [65, 109, 8, -36],
262 [19, 109, 8, 51],
263 [57, 93, 7, 69],
264 [39, 94, 8, 37],
265 [20, 89, 8, 37],
266 [18, 69, 8, 91],
267 [17, 52, 7, 119]
268 ]
269 },
270 A69: {
271 W: 41,
272 P: [
273 [23, 60, 10, -92],
274 [22, 91, 9, -36],
275 [21, 111, 8, 39],
276 [19, 130, 7, 56],
277 [21, 148, 6, 112]
278 ]
279 },
280 A64: {
281 W: 84,
282 P: [
283 [68, 147, 10, -103],
284 [45, 151, 9, -92],
285 [22, 145, 9, -50],
286 [15, 124, 8, -50],
287 [17, 104, 8, 39],
288 [29, 91, 8, 39],
289 [46, 90, 8, 39],
290 [59, 96, 8, -50],
291 [67, 129, 8, -50],
292 [68, 110, 8, 69],
293 [68, 83, 7, 69],
294 [70, 68, 7, 102],
295 [71, 47, 7, 119]
296 ]
297 },
298 A65: {
299 W: 79,
300 P: [
301 [16, 127, 10, -103],
302 [23, 145, 9, -50],
303 [41, 151, 8, 11],
304 [54, 148, 7, 102],
305 [70, 142, 6, 119],
306 [61, 96, 7, 51],
307 [54, 109, 7, 51],
308 [44, 90, 8, 51],
309 [41, 117, 8, -50],
310 [27, 92, 8, -50],
311 [17, 107, 8, -50]
312 ]
313 },
314 A66: {
315 W: 73,
316 P: [
317 [29, 156, 10, -103],
318 [31, 136, 9, -84],
319 [31, 116, 9, -50],
320 [30, 95, 8, -35],
321 [45, 93, 7, -35],
322 [58, 92, 7, 39],
323 [14, 95, 7, 39],
324 [33, 79, 7, 69],
325 [36, 67, 7, 69],
326 [47, 55, 7, 69],
327 [65, 52, 6, 119]
328 ]
329 },
330 A67: {
331 W: 76,
332 P: [
333 [61, 97, 10, -102],
334 [61, 118, 9, -102],
335 [42, 90, 9, -79],
336 [24, 97, 8, -35],
337 [53, 137, 8, -35],
338 [12, 110, 8, -35],
339 [40, 148, 7, 29],
340 [26, 151, 7, 42],
341 [11, 124, 6, 56],
342 [13, 139, 6, 83],
343 [60, 156, 7, -50],
344 [54, 172, 7, 50],
345 [42, 185, 7, 69],
346 [25, 187, 7, 102],
347 [7, 183, 7, 119]
348 ]
349 },
350 A61: {
351 W: 74,
352 P: [
353 [58, 94, 8, 42],
354 [45, 89, 7, 69],
355 [31, 91, 7, 119],
356 [20, 99, 7, 91],
357 [12, 111, 7, 51],
358 [11, 124, 8, -35],
359 [29, 151, 8, -35],
360 [45, 149, 7, -35],
361 [65, 153, 6, -35],
362 [57, 126, 6, -35],
363 [57, 112, 6, -102],
364 [58, 142, 8, -102],
365 [15, 140, 9, -102]
366 ]
367 },
368 A62: {
369 W: 85,
370 P: [
371 [17, 143, 8, -102],
372 [31, 148, 8, -102],
373 [44, 152, 7, -102],
374 [60, 147, 6, -36],
375 [67, 133, 6, -36],
376 [73, 116, 6, 39],
377 [65, 98, 6, 83],
378 [56, 90, 6, 119],
379 [42, 89, 6, 51],
380 [30, 93, 7, 11],
381 [17, 102, 8, -35],
382 [18, 124, 10, -72],
383 [17, 79, 7, 51],
384 [17, 60, 7, 51],
385 [17, 47, 7, 102]
386 ]
387 },
388 A63: {
389 W: 74,
390 P: [
391 [24, 142, 9, -103],
392 [37, 152, 8, -38],
393 [54, 150, 7, 50],
394 [66, 143, 6, 56],
395 [14, 123, 8, -79],
396 [20, 106, 7, 5],
397 [32, 92, 6, 29],
398 [47, 88, 6, 102],
399 [59, 94, 6, 102]
400 ]
401 },
402 A7e: {
403 W: 86,
404 P: [
405 [13, 113, 5, -103],
406 [22, 103, 5, -103],
407 [31, 96, 5, 11],
408 [40, 98, 5, 11],
409 [44, 108, 5, 11],
410 [52, 115, 7, 11],
411 [66, 116, 7, 11],
412 [72, 99, 9, 11]
413 ]
414 },
415 A7d: {
416 W: 53,
417 P: [
418 [42, 115, 9, -103],
419 [31, 104, 7, 5],
420 [30, 86, 7, 5],
421 [30, 72, 7, 5],
422 [25, 57, 7, 5],
423 [32, 128, 7, 5],
424 [30, 144, 7, 5],
425 [27, 158, 7, 5],
426 [24, 170, 7, 5],
427 [11, 174, 5, 112],
428 [12, 51, 5, 112]
429 ]
430 },
431 A7c: {
432 W: 61,
433 P: [
434 [33, 41, 5, -161],
435 [33, 53, 5, 5],
436 [31, 65, 5, 5],
437 [32, 79, 5, 69],
438 [32, 92, 5, 69],
439 [31, 107, 5, 112],
440 [30, 122, 5, 50],
441 [29, 136, 5, -50],
442 [28, 147, 5, -50],
443 [28, 159, 5, -91],
444 [27, 171, 5, -91]
445 ]
446 },
447 A7b: {
448 W: 53,
449 P: [
450 [6, 115, 10, -50],
451 [20, 105, 7, -50],
452 [20, 89, 7, -50],
453 [20, 73, 7, -50],
454 [22, 58, 7, -50],
455 [18, 126, 7, -50],
456 [20, 140, 7, -50],
457 [21, 152, 7, -50],
458 [23, 166, 6, 80],
459 [31, 172, 6, 80],
460 [44, 172, 6, 80],
461 [33, 49, 6, 80],
462 [47, 49, 6, 80]
463 ]
464 },
465 A7a: {
466 W: 77,
467 P: [
468 [19, 152, 10, -103],
469 [37, 150, 9, -79],
470 [53, 150, 8, -35],
471 [31, 132, 8, -35],
472 [42, 121, 7, 50],
473 [53, 109, 7, 50],
474 [61, 92, 7, 50],
475 [40, 89, 7, 83],
476 [23, 89, 7, 112]
477 ]
478 },
479 A4f: {
480 W: 114,
481 P: [
482 [40, 147, 10, -102],
483 [82, 142, 10, -102],
484 [16, 119, 9, -72],
485 [63, 151, 9, -72],
486 [22, 136, 8, 11],
487 [91, 122, 8, 11],
488 [17, 96, 8, 11],
489 [97, 108, 7, 11],
490 [97, 89, 7, 11],
491 [24, 78, 7, 69],
492 [94, 71, 7, 69],
493 [40, 66, 6, 69],
494 [54, 60, 6, 69],
495 [87, 60, 6, 112],
496 [73, 59, 6, 112]
497 ]
498 },
499 A4d: {
500 W: 126,
501 P: [
502 [38, 60, 10, -72],
503 [92, 59, 10, -72],
504 [112, 150, 8, -72],
505 [83, 75, 5, -72],
506 [81, 87, 6, -72],
507 [78, 100, 6, -72],
508 [74, 113, 6, -72],
509 [69, 128, 7, -72],
510 [54, 129, 7, -72],
511 [50, 113, 6, -72],
512 [46, 100, 5, -72],
513 [43, 86, 6, -72],
514 [31, 78, 7, -72],
515 [43, 74, 6, 112],
516 [28, 94, 8, -72],
517 [16, 150, 10, -72],
518 [20, 131, 9, 51],
519 [23, 113, 8, 69],
520 [103, 106, 6, 119],
521 [100, 93, 6, 56],
522 [104, 119, 7, 83],
523 [108, 134, 8, 39],
524 [97, 79, 7, 50],
525 [61, 146, 9, 112]
526 ]
527 },
528 A4e: {
529 W: 114,
530 P: [
531 [16, 151, 8, -91],
532 [19, 55, 8, -91],
533 [95, 59, 8, -91],
534 [98, 147, 8, -91],
535 [98, 132, 7, -91],
536 [16, 133, 7, -91],
537 [17, 71, 7, -91],
538 [100, 72, 7, 5],
539 [101, 119, 7, 5],
540 [103, 86, 7, 5],
541 [17, 119, 7, 5],
542 [84, 138, 7, 5],
543 [74, 126, 7, 5],
544 [32, 68, 6, 56],
545 [37, 80, 6, 56],
546 [45, 90, 6, 56],
547 [63, 112, 6, 56],
548 [101, 102, 6, 56],
549 [17, 108, 6, 112],
550 [54, 101, 6, 112],
551 [18, 93, 6, 112],
552 [16, 81, 6, 112]
553 ]
554 },
555 A4b: {
556 W: 88,
557 P: [
558 [24, 155, 9, -92],
559 [78, 150, 9, -92],
560 [23, 135, 8, -92],
561 [61, 136, 8, -92],
562 [46, 126, 8, -36],
563 [22, 117, 8, -36],
564 [36, 110, 8, 5],
565 [22, 95, 7, 50],
566 [43, 92, 7, 50],
567 [52, 82, 7, 50],
568 [21, 78, 7, 83],
569 [23, 59, 7, 83],
570 [67, 71, 7, 83],
571 [75, 57, 7, 83]
572 ]
573 },
574 A4c: {
575 W: 79,
576 P: [
577 [16, 152, 9, -50],
578 [15, 135, 8, -50],
579 [16, 118, 8, -50],
580 [17, 86, 7, -50],
581 [19, 71, 6, -50],
582 [18, 55, 7, -50],
583 [68, 145, 10, -50],
584 [56, 148, 9, 69],
585 [44, 151, 7, 119],
586 [32, 153, 7, 50],
587 [17, 101, 7, 69]
588 ]
589 },
590 A4a: {
591 W: 95,
592 P: [
593 [32, 55, 10, -103],
594 [84, 57, 9, -84],
595 [49, 59, 9, -84],
596 [65, 58, 8, -36],
597 [60, 71, 8, -36],
598 [60, 90, 8, 11],
599 [61, 105, 8, 11],
600 [55, 126, 8, 50],
601 [54, 141, 7, 56],
602 [46, 153, 7, 56],
603 [28, 151, 7, 112],
604 [14, 136, 7, 112]
605 ]
606 },
607 A51: {
608 W: 125,
609 P: [
610 [113, 176, 10, -92],
611 [97, 161, 9, -92],
612 [82, 147, 9, -92],
613 [64, 133, 7, -50],
614 [97, 136, 7, -50],
615 [62, 154, 7, -35],
616 [106, 120, 7, -35],
617 [41, 151, 6, 11],
618 [108, 103, 6, 11],
619 [24, 142, 6, 11],
620 [103, 88, 6, 11],
621 [15, 124, 6, 50],
622 [97, 73, 6, 50],
623 [12, 107, 6, 50],
624 [15, 94, 6, 69],
625 [84, 61, 6, 69],
626 [24, 80, 6, 69],
627 [35, 71, 5, 112],
628 [71, 57, 5, 112],
629 [55, 58, 5, 112],
630 [43, 63, 5, 112]
631 ]
632 },
633 A50: {
634 W: 75,
635 P: [
636 [49, 56, 5, -161],
637 [56, 65, 5, -102],
638 [62, 78, 5, -102],
639 [34, 54, 6, -102],
640 [56, 93, 6, -72],
641 [17, 51, 6, -72],
642 [17, 64, 6, -72],
643 [49, 100, 6, 11],
644 [34, 104, 6, 11],
645 [15, 78, 7, 11],
646 [19, 96, 7, 11],
647 [16, 111, 7, 83],
648 [13, 125, 7, 83],
649 [13, 140, 7, 83]
650 ]
651 },
652 A53: {
653 W: 99,
654 P: [
655 [18, 139, 8, -84],
656 [32, 149, 7, -84],
657 [47, 150, 6, -84],
658 [65, 146, 6, -84],
659 [79, 138, 6, 50],
660 [86, 126, 6, 50],
661 [81, 112, 6, 50],
662 [69, 103, 6, 102],
663 [58, 101, 6, 102],
664 [44, 98, 6, 102],
665 [30, 92, 7, 50],
666 [29, 76, 6, 5],
667 [42, 63, 6, 5],
668 [56, 62, 6, -84],
669 [70, 60, 6, -84],
670 [81, 64, 6, -84]
671 ]
672 },
673 A52: {
674 W: 90,
675 P: [
676 [17, 148, 8, -161],
677 [17, 134, 7, 39],
678 [17, 120, 8, -72],
679 [18, 71, 8, -72],
680 [19, 57, 10, -72],
681 [51, 63, 8, -72],
682 [64, 72, 8, -72],
683 [30, 114, 8, -72],
684 [42, 124, 5, -72],
685 [54, 127, 6, -72],
686 [64, 134, 7, -72],
687 [75, 145, 8, -72],
688 [73, 85, 8, 51],
689 [70, 98, 8, 119],
690 [59, 108, 8, 83],
691 [46, 114, 8, 56],
692 [18, 86, 8, 102],
693 [18, 103, 9, 51],
694 [35, 59, 9, 11]
695 ]
696 },
697 A55: {
698 W: 105,
699 P: [
700 [34, 145, 9, -92],
701 [51, 151, 8, -92],
702 [20, 128, 7, -92],
703 [67, 145, 7, -50],
704 [19, 107, 7, -35],
705 [80, 137, 7, 37],
706 [86, 122, 7, 37],
707 [18, 88, 7, 37],
708 [89, 105, 6, 80],
709 [19, 68, 6, 80],
710 [88, 87, 6, 80],
711 [91, 70, 6, 119]
712 ]
713 },
714 A54: {
715 W: 97,
716 P: [
717 [14, 57, 9, -102],
718 [92, 59, 9, -102],
719 [54, 144, 9, -50],
720 [55, 125, 8, -50],
721 [75, 60, 7, 29],
722 [30, 59, 7, 29],
723 [58, 59, 6, 29],
724 [46, 59, 6, 51],
725 [51, 72, 6, 69],
726 [53, 109, 6, 69],
727 [53, 97, 6, 102],
728 [53, 85, 6, 119]
729 ]
730 },
731 A57: {
732 W: 148,
733 P: [
734 [45, 143, 10, -72],
735 [78, 62, 10, -72],
736 [100, 150, 10, -72],
737 [137, 58, 10, -72],
738 [92, 133, 9, -72],
739 [54, 126, 9, -72],
740 [37, 126, 9, -72],
741 [67, 81, 9, -72],
742 [82, 81, 8, -72],
743 [59, 112, 8, -72],
744 [63, 97, 7, -72],
745 [33, 109, 7, -72],
746 [87, 99, 7, -72],
747 [120, 104, 7, 119],
748 [113, 120, 8, 112],
749 [127, 90, 8, 83],
750 [132, 76, 9, 39],
751 [109, 134, 9, 56],
752 [88, 118, 7, 69],
753 [23, 76, 9, 112],
754 [30, 91, 8, 51],
755 [20, 58, 10, 50]
756 ]
757 },
758 A56: {
759 W: 93,
760 P: [
761 [47, 146, 10, -72],
762 [38, 128, 9, -72],
763 [33, 111, 8, -72],
764 [26, 81, 8, -72],
765 [22, 66, 7, -72],
766 [19, 54, 8, -72],
767 [56, 130, 8, -72],
768 [86, 55, 8, -72],
769 [77, 70, 8, 42],
770 [72, 85, 8, 56],
771 [66, 100, 8, 119],
772 [61, 115, 8, 56],
773 [30, 96, 8, 56]
774 ]
775 },
776 A59: {
777 W: 91,
778 P: [
779 [8, 59, 9, -102],
780 [77, 58, 9, -102],
781 [34, 151, 8, -50],
782 [43, 135, 8, -50],
783 [71, 73, 7, 5],
784 [18, 71, 7, 5],
785 [25, 80, 7, 50],
786 [63, 89, 7, 50],
787 [34, 95, 7, 50],
788 [48, 121, 6, 102],
789 [57, 102, 6, 102],
790 [39, 109, 6, 102]
791 ]
792 },
793 A58: {
794 W: 103,
795 P: [
796 [11, 149, 8, -103],
797 [23, 140, 8, -103],
798 [87, 148, 8, -84],
799 [76, 134, 7, -50],
800 [69, 121, 7, -50],
801 [34, 126, 7, -50],
802 [45, 114, 6, 5],
803 [62, 109, 6, 5],
804 [53, 99, 6, 29],
805 [65, 92, 6, 29],
806 [41, 86, 6, 69],
807 [76, 77, 6, 69],
808 [32, 78, 6, 69],
809 [87, 64, 6, 69],
810 [25, 64, 6, 69],
811 [14, 57, 6, 69],
812 [94, 55, 6, 69]
813 ]
814 },
815 A5a: {
816 W: 99,
817 P: [
818 [15, 146, 10, -92],
819 [89, 148, 10, -92],
820 [33, 149, 9, -92],
821 [52, 150, 9, -92],
822 [69, 150, 8, -36],
823 [27, 129, 8, -36],
824 [38, 112, 7, 11],
825 [47, 97, 7, 11],
826 [57, 87, 7, 56],
827 [67, 74, 7, 56],
828 [79, 68, 7, 56],
829 [91, 61, 7, 119],
830 [15, 56, 7, -35],
831 [29, 58, 7, 11],
832 [45, 60, 7, 50],
833 [61, 58, 7, 112],
834 [75, 55, 7, 56]
835 ]
836 },
837 A5c: {
838 W: 79,
839 P: [
840 [19, 58, 5, -35],
841 [25, 67, 5, -35],
842 [31, 76, 6, -35],
843 [35, 86, 6, -35],
844 [40, 95, 7, -35],
845 [45, 106, 6, -35],
846 [48, 116, 6, -35],
847 [54, 125, 6, -35],
848 [58, 136, 5, -35],
849 [63, 146, 5, -35],
850 [65, 152, 5, -35]
851 ]
852 },
853 A5b: {
854 W: 55,
855 P: [
856 [40, 57, 5, -35],
857 [31, 58, 5, -35],
858 [20, 57, 8, -35],
859 [20, 72, 8, -35],
860 [20, 85, 8, -35],
861 [20, 100, 8, -35],
862 [20, 115, 8, -35],
863 [20, 127, 8, -35],
864 [19, 144, 8, -35],
865 [17, 160, 8, -35],
866 [17, 175, 8, -35],
867 [29, 177, 6, -35],
868 [41, 176, 5, -35]
869 ]
870 },
871 A5e: {
872 W: 83,
873 P: [
874 [20, 70, 9, -79],
875 [65, 68, 9, -79],
876 [33, 58, 7, 50],
877 [52, 58, 7, 50],
878 [42, 48, 6, 112]
879 ]
880 },
881 A5d: {
882 W: 55,
883 P: [
884 [20, 58, 5, -35],
885 [30, 58, 5, -35],
886 [40, 58, 8, -35],
887 [41, 74, 8, -35],
888 [41, 92, 8, -35],
889 [41, 109, 8, -35],
890 [41, 127, 8, -35],
891 [41, 144, 8, -35],
892 [40, 159, 8, -35],
893 [40, 172, 8, -35],
894 [27, 174, 6, -35],
895 [15, 175, 6, -35]
896 ]
897 },
898 A5f: {
899 W: 90,
900 P: [
901 [0, 172, 5, -35],
902 [11, 171, 5, -35],
903 [21, 169, 5, -35],
904 [33, 172, 5, -35],
905 [45, 172, 5, -35],
906 [55, 170, 5, -35],
907 [66, 172, 5, -35],
908 [74, 170, 5, -35],
909 [85, 170, 5, -35]
910 ]
911 },
912 A46: {
913 W: 87,
914 P: [
915 [20, 149, 9, -103],
916 [20, 128, 8, -84],
917 [20, 108, 8, -84],
918 [33, 98, 8, -36],
919 [20, 86, 8, -36],
920 [51, 96, 7, 29],
921 [68, 98, 7, 29],
922 [21, 63, 7, 56],
923 [35, 54, 7, 56],
924 [52, 54, 7, 112],
925 [68, 53, 7, 112]
926 ]
927 },
928 A47: {
929 W: 97,
930 P: [
931 [25, 148, 8, -103],
932 [61, 145, 8, -103],
933 [16, 109, 8, -79],
934 [43, 151, 8, -79],
935 [15, 132, 7, -36],
936 [77, 132, 7, -36],
937 [23, 83, 7, 37],
938 [83, 110, 7, 37],
939 [36, 66, 6, 37],
940 [49, 53, 6, 37],
941 [67, 106, 6, 56],
942 [53, 112, 6, 56],
943 [63, 57, 6, 112],
944 [40, 114, 6, 112],
945 [76, 59, 6, 112]
946 ]
947 },
948 A44: {
949 W: 103,
950 P: [
951 [19, 148, 8, -161],
952 [34, 154, 8, -79],
953 [60, 149, 8, -36],
954 [80, 141, 7, -36],
955 [86, 123, 7, 29],
956 [20, 128, 8, -92],
957 [20, 110, 8, -92],
958 [21, 91, 8, -50],
959 [21, 73, 8, 5],
960 [23, 57, 8, 42],
961 [37, 63, 8, 51],
962 [52, 70, 7, 69],
963 [66, 78, 7, 69],
964 [86, 109, 7, 112],
965 [79, 90, 7, 112]
966 ]
967 },
968 A45: {
969 W: 89,
970 P: [
971 [19, 149, 10, -102],
972 [18, 103, 10, -102],
973 [22, 55, 9, -72],
974 [17, 126, 9, -72],
975 [20, 79, 8, 5],
976 [36, 155, 8, 5],
977 [38, 101, 8, 5],
978 [40, 52, 7, 50],
979 [54, 157, 7, 50],
980 [53, 100, 7, 50],
981 [56, 53, 7, 91],
982 [71, 155, 7, 91],
983 [70, 99, 7, 91],
984 [73, 51, 7, 91]
985 ]
986 },
987 A42: {
988 W: 90,
989 P: [
990 [26, 56, 9, -102],
991 [22, 68, 5, -102],
992 [23, 79, 5, -102],
993 [21, 92, 5, -84],
994 [22, 103, 6, -50],
995 [20, 114, 6, -50],
996 [22, 125, 6, 91],
997 [22, 137, 6, 91],
998 [32, 104, 7, -35],
999 [24, 151, 7, -35],
1000 [48, 148, 7, -35],
1001 [68, 115, 7, -35],
1002 [35, 152, 6, 51],
1003 [43, 110, 6, 51],
1004 [61, 144, 6, 51],
1005 [76, 124, 6, 51],
1006 [72, 137, 9, 119],
1007 [52, 107, 9, -79],
1008 [66, 81, 7, 80],
1009 [66, 92, 9, 11],
1010 [42, 52, 9, 42],
1011 [64, 64, 9, -102],
1012 [55, 54, 6, -102]
1013 ]
1014 },
1015 A43: {
1016 W: 86,
1017 P: [
1018 [77, 69, 8, -103],
1019 [76, 56, 7, 56],
1020 [64, 60, 7, 119],
1021 [50, 61, 7, 29],
1022 [30, 78, 7, -72],
1023 [23, 88, 7, -35],
1024 [17, 100, 8, -35],
1025 [15, 116, 8, 50],
1026 [39, 69, 6, 83],
1027 [17, 131, 9, -72],
1028 [29, 145, 9, -72],
1029 [46, 147, 8, 29],
1030 [61, 142, 8, 83],
1031 [72, 134, 8, -103]
1032 ]
1033 },
1034 A40: {
1035 W: 132,
1036 P: [
1037 [95, 150, 7, 51],
1038 [81, 154, 8, 11],
1039 [64, 156, 9, 11],
1040 [46, 151, 9, -79],
1041 [29, 140, 9, -79],
1042 [20, 123, 9, -103],
1043 [17, 104, 9, -103],
1044 [19, 85, 9, 50],
1045 [28, 68, 9, 56],
1046 [41, 55, 9, 80],
1047 [58, 49, 9, 112],
1048 [75, 51, 8, 119],
1049 [91, 56, 8, 91],
1050 [104, 66, 8, 51],
1051 [113, 80, 8, 50],
1052 [113, 97, 8, 5],
1053 [107, 113, 8, -36],
1054 [90, 118, 9, -36],
1055 [75, 113, 7, -36],
1056 [68, 108, 5, 5],
1057 [60, 115, 7, -79],
1058 [47, 114, 7, -79],
1059 [42, 102, 7, -103],
1060 [47, 91, 7, -35],
1061 [55, 81, 6, -35],
1062 [67, 77, 8, -103],
1063 [76, 97, 8, -79]
1064 ]
1065 },
1066 A41: {
1067 W: 104,
1068 P: [
1069 [88, 148, 10, -102],
1070 [29, 118, 10, -102],
1071 [68, 57, 5, -102],
1072 [23, 134, 8, 11],
1073 [16, 148, 8, 119],
1074 [39, 103, 8, 51],
1075 [47, 90, 7, 51],
1076 [55, 77, 7, 51],
1077 [62, 67, 6, 83],
1078 [76, 95, 5, -35],
1079 [77, 107, 6, -35],
1080 [73, 83, 5, 83],
1081 [71, 71, 5, 83],
1082 [79, 121, 7, -35],
1083 [84, 134, 8, -50],
1084 [65, 111, 6, -50],
1085 [52, 114, 6, -50]
1086 ]
1087 },
1088 A48: {
1089 W: 110,
1090 P: [
1091 [16, 152, 10, -103],
1092 [92, 148, 9, -91],
1093 [92, 129, 9, -91],
1094 [18, 130, 8, -50],
1095 [90, 109, 8, -50],
1096 [19, 109, 8, -50],
1097 [33, 110, 8, 11],
1098 [53, 106, 8, 11],
1099 [70, 104, 8, 11],
1100 [94, 90, 8, 51],
1101 [95, 68, 8, 51],
1102 [18, 85, 7, 102],
1103 [22, 66, 7, 102],
1104 [22, 47, 7, 102],
1105 [95, 49, 7, 102]
1106 ]
1107 },
1108 A49: {
1109 W: 78,
1110 P: [
1111 [13, 152, 9, -103],
1112 [36, 146, 9, -84],
1113 [53, 146, 8, 11],
1114 [68, 145, 8, 11],
1115 [35, 125, 8, -36],
1116 [38, 105, 7, -36],
1117 [37, 88, 7, 56],
1118 [38, 72, 7, 56],
1119 [52, 61, 7, 91],
1120 [65, 60, 7, 119],
1121 [40, 58, 7, 50],
1122 [24, 58, 6, -72],
1123 [12, 59, 6, -102]
1124 ]
1125 },
1126 A33: {
1127 W: 87,
1128 P: [
1129 [22, 65, 10, -35],
1130 [16, 136, 10, -35],
1131 [32, 100, 10, -35],
1132 [38, 56, 8, -35],
1133 [54, 57, 7, -35],
1134 [63, 67, 6, -35],
1135 [66, 80, 6, -35],
1136 [57, 91, 7, -35],
1137 [47, 99, 7, -35],
1138 [56, 106, 7, -35],
1139 [64, 117, 6, -35],
1140 [65, 129, 6, -35],
1141 [59, 138, 7, -35],
1142 [49, 144, 7, -35],
1143 [31, 144, 7, -35]
1144 ]
1145 },
1146 A32: {
1147 W: 87,
1148 P: [
1149 [69, 148, 10, -35],
1150 [51, 149, 9, -35],
1151 [33, 149, 9, -35],
1152 [14, 149, 8, -35],
1153 [19, 133, 8, -35],
1154 [28, 118, 8, -35],
1155 [42, 109, 8, -35],
1156 [56, 100, 7, -35],
1157 [66, 88, 7, -35],
1158 [68, 73, 7, -35],
1159 [60, 57, 6, -35],
1160 [47, 56, 6, -35],
1161 [34, 57, 6, -35],
1162 [24, 65, 6, -35],
1163 [16, 72, 6, -35]
1164 ]
1165 },
1166 A31: {
1167 W: 65,
1168 P: [
1169 [19, 149, 9, -35],
1170 [51, 148, 9, -35],
1171 [39, 53, 9, -35],
1172 [36, 147, 6, -35],
1173 [35, 135, 6, -35],
1174 [34, 120, 5, -35],
1175 [34, 109, 5, -35],
1176 [34, 98, 6, -35],
1177 [35, 84, 6, -35],
1178 [37, 69, 6, -35],
1179 [27, 62, 6, -35],
1180 [19, 68, 6, -35]
1181 ]
1182 },
1183 A30: {
1184 W: 87,
1185 P: [
1186 [67, 138, 10, -102],
1187 [48, 148, 10, -102],
1188 [73, 117, 9, -50],
1189 [74, 95, 9, -50],
1190 [22, 144, 8, 11],
1191 [69, 76, 8, 11],
1192 [15, 126, 8, 11],
1193 [12, 104, 7, 56],
1194 [58, 63, 7, 56],
1195 [13, 87, 6, 56],
1196 [46, 57, 6, 56],
1197 [20, 75, 6, 112],
1198 [27, 64, 6, 112]
1199 ]
1200 },
1201 A37: {
1202 W: 87,
1203 P: [
1204 [26, 152, 10, -102],
1205 [36, 133, 9, -102],
1206 [47, 116, 9, -50],
1207 [57, 100, 9, 5],
1208 [66, 86, 9, 5],
1209 [80, 70, 8, 56],
1210 [62, 65, 8, 56],
1211 [44, 63, 7, 56],
1212 [26, 64, 6, 56],
1213 [11, 64, 6, 56]
1214 ]
1215 },
1216 A36: {
1217 W: 87,
1218 P: [
1219 [65, 145, 10, -79],
1220 [46, 151, 9, -79],
1221 [70, 127, 8, -79],
1222 [66, 111, 8, -79],
1223 [26, 148, 7, -79],
1224 [52, 100, 7, -79],
1225 [18, 131, 7, 11],
1226 [15, 114, 7, 11],
1227 [37, 97, 7, 51],
1228 [20, 102, 7, 51],
1229 [23, 86, 7, 51],
1230 [34, 72, 7, 80],
1231 [44, 61, 7, 112],
1232 [55, 49, 7, 112]
1233 ]
1234 },
1235 A35: {
1236 W: 87,
1237 P: [
1238 [21, 55, 9, -50],
1239 [38, 56, 9, -50],
1240 [53, 57, 9, -50],
1241 [69, 55, 9, -50],
1242 [20, 71, 8, -50],
1243 [18, 87, 8, -50],
1244 [18, 104, 8, -50],
1245 [32, 95, 8, -50],
1246 [46, 89, 7, -50],
1247 [57, 91, 7, 50],
1248 [64, 101, 7, 50],
1249 [71, 113, 7, 83],
1250 [69, 127, 7, 83],
1251 [61, 140, 7, 83],
1252 [49, 146, 6, 83],
1253 [34, 146, 6, 83],
1254 [22, 140, 6, 83]
1255 ]
1256 },
1257 A34: {
1258 W: 87,
1259 P: [
1260 [10, 117, 9, -35],
1261 [25, 118, 9, -35],
1262 [39, 117, 9, -35],
1263 [55, 117, 9, -35],
1264 [70, 117, 9, -35],
1265 [61, 98, 8, -35],
1266 [61, 78, 7, -35],
1267 [61, 58, 7, -35],
1268 [46, 68, 7, -35],
1269 [36, 82, 7, -35],
1270 [27, 94, 7, -35],
1271 [61, 136, 7, -35],
1272 [61, 149, 7, -35]
1273 ]
1274 },
1275 A39: {
1276 W: 87,
1277 P: [
1278 [69, 103, 10, -103],
1279 [60, 122, 9, -92],
1280 [47, 134, 8, -50],
1281 [33, 144, 8, -50],
1282 [17, 155, 8, -50],
1283 [70, 82, 8, -50],
1284 [48, 106, 7, 51],
1285 [64, 68, 7, 51],
1286 [53, 58, 7, 51],
1287 [34, 107, 7, 51],
1288 [21, 97, 7, 51],
1289 [17, 82, 7, 51],
1290 [38, 59, 7, 51],
1291 [26, 65, 7, 51]
1292 ]
1293 },
1294 A38: {
1295 W: 87,
1296 P: [
1297 [43, 98, 10, -103],
1298 [61, 90, 8, -103],
1299 [58, 105, 8, -79],
1300 [27, 107, 8, -79],
1301 [24, 91, 7, -36],
1302 [67, 73, 7, -36],
1303 [21, 75, 7, -36],
1304 [29, 61, 7, -36],
1305 [58, 61, 6, 102],
1306 [46, 55, 6, 102],
1307 [17, 118, 7, 37],
1308 [67, 118, 7, 37],
1309 [69, 131, 7, 37],
1310 [16, 133, 6, 56],
1311 [66, 142, 6, 56],
1312 [23, 146, 6, 56],
1313 [33, 151, 6, 56],
1314 [57, 151, 5, 119],
1315 [46, 154, 5, 119]
1316 ]
1317 },
1318 A2a: {
1319 W: 76,
1320 P: [
1321 [35, 69, 9, -103],
1322 [44, 83, 7, -35],
1323 [27, 83, 7, -35],
1324 [20, 67, 7, -35],
1325 [36, 54, 7, -35],
1326 [51, 67, 7, -35],
1327 [53, 92, 5, 83],
1328 [17, 92, 5, 83],
1329 [7, 63, 5, 83],
1330 [35, 42, 5, 83],
1331 [63, 67, 5, 83]
1332 ]
1333 },
1334 A2b: {
1335 W: 69,
1336 P: [
1337 [32, 109, 10, -102],
1338 [32, 92, 6, 37],
1339 [47, 109, 6, 37],
1340 [32, 126, 6, 37],
1341 [14, 109, 6, 37],
1342 [33, 137, 6, 37],
1343 [60, 110, 6, 37],
1344 [32, 79, 6, 37],
1345 [4, 109, 6, 37]
1346 ]
1347 },
1348 A2c: {
1349 W: 41,
1350 P: [
1351 [30, 150, 10, -79],
1352 [24, 164, 7, 50],
1353 [17, 177, 6, 102]
1354 ]
1355 },
1356 A2d: {
1357 W: 60,
1358 P: [
1359 [12, 118, 9, -84],
1360 [29, 117, 8, 69],
1361 [46, 117, 6, 5]
1362 ]
1363 },
1364 A2e: {
1365 W: 37,
1366 P: [
1367 [19, 152, 6, -35]
1368 ]
1369 },
1370 A2f: {
1371 W: 74,
1372 P: [
1373 [14, 154, 10, -102],
1374 [23, 133, 9, -72],
1375 [34, 114, 9, 5],
1376 [42, 96, 9, 5],
1377 [50, 77, 8, 83],
1378 [59, 62, 8, 83]
1379 ]
1380 },
1381 A20: {
1382 W: 40,
1383 P: []
1384 },
1385 A21: {
1386 W: 35,
1387 P: [
1388 [17, 151, 9, -35],
1389 [18, 50, 8, -35],
1390 [17, 67, 8, -35],
1391 [17, 85, 7, -35],
1392 [18, 100, 6, -35],
1393 [18, 114, 5, -35],
1394 [19, 128, 5, -35]
1395 ]
1396 },
1397 A22: {
1398 W: 61,
1399 P: [
1400 [15, 51, 5, -35],
1401 [16, 61, 5, -35],
1402 [14, 73, 5, -35],
1403 [14, 85, 5, -35],
1404 [44, 53, 5, -35],
1405 [43, 66, 5, -35],
1406 [42, 77, 5, -35],
1407 [40, 87, 5, -35]
1408 ]
1409 },
1410 A23: {
1411 W: 120,
1412 P: [
1413 [31, 120, 9, -102],
1414 [79, 120, 9, -102],
1415 [90, 79, 9, -102],
1416 [43, 80, 9, -102],
1417 [48, 120, 7, 29],
1418 [62, 121, 7, 29],
1419 [83, 103, 7, 29],
1420 [86, 92, 7, 29],
1421 [73, 79, 7, 29],
1422 [59, 79, 7, 29],
1423 [26, 79, 7, 29],
1424 [11, 79, 7, 29],
1425 [47, 64, 7, 29],
1426 [51, 49, 7, 29],
1427 [94, 62, 7, 29],
1428 [98, 46, 7, 29],
1429 [107, 79, 7, 29],
1430 [118, 79, 7, 29],
1431 [92, 121, 7, 29],
1432 [107, 120, 7, 29],
1433 [75, 137, 7, 29],
1434 [70, 150, 7, 29],
1435 [28, 135, 7, 29],
1436 [23, 147, 7, 29],
1437 [37, 104, 7, 29],
1438 [39, 93, 7, 29],
1439 [17, 121, 7, 29],
1440 [3, 120, 7, 29]
1441 ]
1442 },
1443 A24: {
1444 W: 99,
1445 P: [
1446 [21, 144, 9, -35],
1447 [36, 150, 8, -35],
1448 [54, 150, 8, -35],
1449 [71, 145, 7, -35],
1450 [78, 133, 7, -35],
1451 [81, 118, 6, -35],
1452 [73, 108, 6, -35],
1453 [60, 102, 6, -35],
1454 [46, 101, 7, -35],
1455 [31, 95, 7, -35],
1456 [24, 80, 8, -35],
1457 [37, 67, 8, -35],
1458 [52, 58, 9, -35],
1459 [71, 61, 9, -35],
1460 [51, 39, 6, -35],
1461 [52, 76, 6, -35],
1462 [52, 88, 6, -35],
1463 [51, 115, 6, -35],
1464 [51, 127, 6, -35],
1465 [51, 138, 6, -35],
1466 [51, 165, 6, -35],
1467 [51, 177, 6, -35]
1468 ]
1469 },
1470 A26: {
1471 W: 94,
1472 P: [
1473 [80, 151, 10, -103],
1474 [68, 134, 9, 11],
1475 [58, 117, 9, 11],
1476 [48, 98, 9, 11],
1477 [39, 80, 9, 11],
1478 [32, 99, 7, 91],
1479 [20, 108, 7, 91],
1480 [11, 120, 6, 91],
1481 [10, 133, 6, 91],
1482 [17, 143, 5, 91],
1483 [27, 148, 6, 56],
1484 [40, 150, 6, -72],
1485 [54, 147, 6, -72],
1486 [76, 123, 6, -72],
1487 [81, 108, 6, -72],
1488 [56, 81, 6, -72],
1489 [63, 69, 5, -92],
1490 [60, 57, 5, -92],
1491 [47, 52, 5, -92],
1492 [44, 63, 5, -92]
1493 ]
1494 },
1495 A27: {
1496 W: 56,
1497 P: [
1498 [27, 72, 5, -35],
1499 [25, 62, 5, -35],
1500 [27, 51, 5, -35]
1501 ]
1502 },
1503 A28: {
1504 W: 53,
1505 P: [
1506 [39, 177, 10, -35],
1507 [41, 49, 10, -35],
1508 [27, 63, 9, -35],
1509 [17, 80, 8, -35],
1510 [25, 168, 8, -35],
1511 [14, 152, 8, -35],
1512 [10, 135, 7, -35],
1513 [10, 120, 7, -35],
1514 [13, 93, 7, -35],
1515 [9, 108, 7, -35]
1516 ]
1517 },
1518 A29: {
1519 W: 53,
1520 P: [
1521 [15, 179, 10, -92],
1522 [15, 51, 10, -92],
1523 [29, 165, 9, -35],
1524 [27, 63, 9, -35],
1525 [34, 79, 9, -35],
1526 [37, 151, 8, 56],
1527 [41, 133, 8, 56],
1528 [41, 96, 8, 56],
1529 [44, 113, 7, 119]
1530 ]
1531 },
1532 A3c: {
1533 W: 55,
1534 P: [
1535 [36, 88, 5, -35],
1536 [28, 94, 5, -35],
1537 [20, 100, 5, -35],
1538 [14, 106, 5, -35],
1539 [10, 113, 5, -35],
1540 [16, 116, 5, -35],
1541 [22, 120, 5, -35],
1542 [30, 126, 5, -35],
1543 [36, 133, 5, -35]
1544 ]
1545 },
1546 A3b: {
1547 W: 44,
1548 P: [
1549 [21, 91, 10, -79],
1550 [21, 144, 8, 42],
1551 [11, 155, 6, 102]
1552 ]
1553 },
1554 A3a: {
1555 W: 44,
1556 P: [
1557 [21, 134, 10, -79],
1558 [23, 86, 10, 51]
1559 ]
1560 },
1561 A3f: {
1562 W: 75,
1563 P: [
1564 [24, 150, 10, -103],
1565 [10, 68, 9, 11],
1566 [26, 61, 8, 11],
1567 [41, 61, 8, 11],
1568 [26, 125, 8, 11],
1569 [36, 117, 7, 11],
1570 [48, 108, 7, 11],
1571 [57, 99, 6, 11],
1572 [52, 70, 6, 11],
1573 [59, 84, 6, 11]
1574 ]
1575 },
1576 A3e: {
1577 W: 55,
1578 P: [
1579 [15, 83, 5, -35],
1580 [24, 90, 5, -35],
1581 [31, 97, 5, -35],
1582 [39, 105, 5, -35],
1583 [34, 114, 5, -35],
1584 [26, 120, 5, -35],
1585 [19, 125, 5, -35],
1586 [10, 132, 5, -35]
1587 ]
1588 },
1589 A3d: {
1590 W: 73,
1591 P: [
1592 [11, 91, 9, -50],
1593 [27, 90, 9, -50],
1594 [44, 90, 9, -50],
1595 [59, 90, 9, -50],
1596 [11, 127, 6, 69],
1597 [21, 128, 6, 69],
1598 [33, 129, 6, 69],
1599 [44, 129, 6, 69],
1600 [53, 129, 6, 69]
1601 ]
1602 }
1603}; \ No newline at end of file
diff --git a/Blocks/audiojs/Bandari-Your Smile.mp3 b/Back/Blocks/audiojs/Bandari-Your Smile.mp3
index a964060..a964060 100644
--- a/Blocks/audiojs/Bandari-Your Smile.mp3
+++ b/Back/Blocks/audiojs/Bandari-Your Smile.mp3
Binary files differ
diff --git a/Blocks/audiojs/Richard .mp3 b/Back/Blocks/audiojs/Richard .mp3
index 365839d..365839d 100644
--- a/Blocks/audiojs/Richard .mp3
+++ b/Back/Blocks/audiojs/Richard .mp3
Binary files differ
diff --git a/Blocks/audiojs/The First Snowflake.mp3 b/Back/Blocks/audiojs/The First Snowflake.mp3
index fc43528..fc43528 100644
--- a/Blocks/audiojs/The First Snowflake.mp3
+++ b/Back/Blocks/audiojs/The First Snowflake.mp3
Binary files differ
diff --git a/Blocks/audiojs/audio.min.js b/Back/Blocks/audiojs/audio.min.js
index e5fde2b..e5fde2b 100644
--- a/Blocks/audiojs/audio.min.js
+++ b/Back/Blocks/audiojs/audio.min.js
diff --git a/Blocks/audiojs/audiojs.swf b/Back/Blocks/audiojs/audiojs.swf
index 483599f..483599f 100644
--- a/Blocks/audiojs/audiojs.swf
+++ b/Back/Blocks/audiojs/audiojs.swf
Binary files differ
diff --git a/Blocks/audiojs/player-graphics.gif b/Back/Blocks/audiojs/player-graphics.gif
index 3e4d9d4..3e4d9d4 100644
--- a/Blocks/audiojs/player-graphics.gif
+++ b/Back/Blocks/audiojs/player-graphics.gif
Binary files differ
diff --git a/Blocks/code.html b/Back/Blocks/code.html
index 40ff107..40ff107 100644
--- a/Blocks/code.html
+++ b/Back/Blocks/code.html
diff --git a/Blocks/countdown/audiojs/The First Snowflake.mp3 b/Back/Blocks/countdown/audiojs/The First Snowflake.mp3
index fc43528..fc43528 100644
--- a/Blocks/countdown/audiojs/The First Snowflake.mp3
+++ b/Back/Blocks/countdown/audiojs/The First Snowflake.mp3
Binary files differ
diff --git a/Blocks/countdown/audiojs/audio.min.js b/Back/Blocks/countdown/audiojs/audio.min.js
index e5fde2b..e5fde2b 100644
--- a/Blocks/countdown/audiojs/audio.min.js
+++ b/Back/Blocks/countdown/audiojs/audio.min.js
diff --git a/Blocks/countdown/audiojs/audiojs.swf b/Back/Blocks/countdown/audiojs/audiojs.swf
index 483599f..483599f 100644
--- a/Blocks/countdown/audiojs/audiojs.swf
+++ b/Back/Blocks/countdown/audiojs/audiojs.swf
Binary files differ
diff --git a/Blocks/countdown/audiojs/player-graphics.gif b/Back/Blocks/countdown/audiojs/player-graphics.gif
index 3e4d9d4..3e4d9d4 100644
--- a/Blocks/countdown/audiojs/player-graphics.gif
+++ b/Back/Blocks/countdown/audiojs/player-graphics.gif
Binary files differ
diff --git a/Blocks/countdown/css/countdown.css b/Back/Blocks/countdown/css/countdown.css
index 21974f8..21974f8 100644
--- a/Blocks/countdown/css/countdown.css
+++ b/Back/Blocks/countdown/css/countdown.css
diff --git a/Blocks/countdown/index.html b/Back/Blocks/countdown/index.html
index 6644fb0..6644fb0 100644
--- a/Blocks/countdown/index.html
+++ b/Back/Blocks/countdown/index.html
diff --git a/Blocks/countdown/js/countdown.min.js b/Back/Blocks/countdown/js/countdown.min.js
index 72a3164..72a3164 100644
--- a/Blocks/countdown/js/countdown.min.js
+++ b/Back/Blocks/countdown/js/countdown.min.js
diff --git a/Blocks/countdown/js/jquery-1.10.2.js b/Back/Blocks/countdown/js/jquery-1.10.2.js
index da41706..da41706 100644
--- a/Blocks/countdown/js/jquery-1.10.2.js
+++ b/Back/Blocks/countdown/js/jquery-1.10.2.js
diff --git a/Blocks/countdown/js/jquery.knob.min.js b/Back/Blocks/countdown/js/jquery.knob.min.js
index 103fa51..103fa51 100644
--- a/Blocks/countdown/js/jquery.knob.min.js
+++ b/Back/Blocks/countdown/js/jquery.knob.min.js
diff --git a/Blocks/countdown/js/jquery.min.js b/Back/Blocks/countdown/js/jquery.min.js
index 7c24308..7c24308 100644
--- a/Blocks/countdown/js/jquery.min.js
+++ b/Back/Blocks/countdown/js/jquery.min.js
diff --git a/Blocks/countdown/js/lrtk.js b/Back/Blocks/countdown/js/lrtk.js
index 04fa8c8..04fa8c8 100644
--- a/Blocks/countdown/js/lrtk.js
+++ b/Back/Blocks/countdown/js/lrtk.js
diff --git a/Blocks/countdown/something.png b/Back/Blocks/countdown/something.png
index f571c4a..f571c4a 100644
--- a/Blocks/countdown/something.png
+++ b/Back/Blocks/countdown/something.png
Binary files differ
diff --git a/Blocks/countdown/waiting.png b/Back/Blocks/countdown/waiting.png
index 0b54f92..0b54f92 100644
--- a/Blocks/countdown/waiting.png
+++ b/Back/Blocks/countdown/waiting.png
Binary files differ
diff --git a/Blocks/demo/2(3).jpg b/Back/Blocks/demo/2(3).jpg
index 47e2927..47e2927 100644
--- a/Blocks/demo/2(3).jpg
+++ b/Back/Blocks/demo/2(3).jpg
Binary files differ
diff --git a/Blocks/demo/bg.jpg b/Back/Blocks/demo/bg.jpg
index 45a85e9..45a85e9 100644
--- a/Blocks/demo/bg.jpg
+++ b/Back/Blocks/demo/bg.jpg
Binary files differ
diff --git a/Blocks/demo/cartedeParis1.html b/Back/Blocks/demo/cartedeParis1.html
index a7268ea..a7268ea 100644
--- a/Blocks/demo/cartedeParis1.html
+++ b/Back/Blocks/demo/cartedeParis1.html
diff --git a/Blocks/demo/deibi-webfont.eot b/Back/Blocks/demo/deibi-webfont.eot
index f8fd431..f8fd431 100644
--- a/Blocks/demo/deibi-webfont.eot
+++ b/Back/Blocks/demo/deibi-webfont.eot
Binary files differ
diff --git a/Blocks/demo/deibi-webfont.svg b/Back/Blocks/demo/deibi-webfont.svg
index 6022466..6022466 100644
--- a/Blocks/demo/deibi-webfont.svg
+++ b/Back/Blocks/demo/deibi-webfont.svg
diff --git a/Blocks/demo/deibi-webfont.ttf b/Back/Blocks/demo/deibi-webfont.ttf
index 068664e..068664e 100644
--- a/Blocks/demo/deibi-webfont.ttf
+++ b/Back/Blocks/demo/deibi-webfont.ttf
Binary files differ
diff --git a/Blocks/demo/deibi-webfont.woff b/Back/Blocks/demo/deibi-webfont.woff
index 284be42..284be42 100644
--- a/Blocks/demo/deibi-webfont.woff
+++ b/Back/Blocks/demo/deibi-webfont.woff
Binary files differ
diff --git a/Blocks/demo/images/Paris_eiffel.png b/Back/Blocks/demo/images/Paris_eiffel.png
index c695952..c695952 100644
--- a/Blocks/demo/images/Paris_eiffel.png
+++ b/Back/Blocks/demo/images/Paris_eiffel.png
Binary files differ
diff --git a/Blocks/demo/images/Paris_roofs.png b/Back/Blocks/demo/images/Paris_roofs.png
index abe9ef3..abe9ef3 100644
--- a/Blocks/demo/images/Paris_roofs.png
+++ b/Back/Blocks/demo/images/Paris_roofs.png
Binary files differ
diff --git a/Blocks/demo/images/Paris_sky.jpg b/Back/Blocks/demo/images/Paris_sky.jpg
index 82da08a..82da08a 100644
--- a/Blocks/demo/images/Paris_sky.jpg
+++ b/Back/Blocks/demo/images/Paris_sky.jpg
Binary files differ
diff --git a/Blocks/demo/images/clouds1000.png b/Back/Blocks/demo/images/clouds1000.png
index 155bca5..155bca5 100644
--- a/Blocks/demo/images/clouds1000.png
+++ b/Back/Blocks/demo/images/clouds1000.png
Binary files differ
diff --git a/Blocks/demo/images/clouds1200_1.png b/Back/Blocks/demo/images/clouds1200_1.png
index 54f8d0b..54f8d0b 100644
--- a/Blocks/demo/images/clouds1200_1.png
+++ b/Back/Blocks/demo/images/clouds1200_1.png
Binary files differ
diff --git a/Blocks/demo/images/clouds1200_2.png b/Back/Blocks/demo/images/clouds1200_2.png
index 0b60050..0b60050 100644
--- a/Blocks/demo/images/clouds1200_2.png
+++ b/Back/Blocks/demo/images/clouds1200_2.png
Binary files differ
diff --git a/Blocks/demo/images/eiffel.png b/Back/Blocks/demo/images/eiffel.png
index a2e96af..a2e96af 100644
--- a/Blocks/demo/images/eiffel.png
+++ b/Back/Blocks/demo/images/eiffel.png
Binary files differ
diff --git a/Blocks/demo/images/eiffel1.png b/Back/Blocks/demo/images/eiffel1.png
index 12c18fd..12c18fd 100644
--- a/Blocks/demo/images/eiffel1.png
+++ b/Back/Blocks/demo/images/eiffel1.png
Binary files differ
diff --git a/Blocks/demo/images/eiffel2.png b/Back/Blocks/demo/images/eiffel2.png
index 115fc0a..115fc0a 100644
--- a/Blocks/demo/images/eiffel2.png
+++ b/Back/Blocks/demo/images/eiffel2.png
Binary files differ
diff --git a/Blocks/demo/images/phare.png b/Back/Blocks/demo/images/phare.png
index 67a1675..67a1675 100644
--- a/Blocks/demo/images/phare.png
+++ b/Back/Blocks/demo/images/phare.png
Binary files differ
diff --git a/Blocks/demo/images/sparkling1.png b/Back/Blocks/demo/images/sparkling1.png
index dbc850a..dbc850a 100644
--- a/Blocks/demo/images/sparkling1.png
+++ b/Back/Blocks/demo/images/sparkling1.png
Binary files differ
diff --git a/Blocks/demo/images/sparkling2.png b/Back/Blocks/demo/images/sparkling2.png
index a59fe19..a59fe19 100644
--- a/Blocks/demo/images/sparkling2.png
+++ b/Back/Blocks/demo/images/sparkling2.png
Binary files differ
diff --git a/Back/Blocks/jquery-1.10.2.min.js b/Back/Blocks/jquery-1.10.2.min.js
new file mode 100644
index 0000000..ca3c53d
--- /dev/null
+++ b/Back/Blocks/jquery-1.10.2.min.js
@@ -0,0 +1,3386 @@
1/*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license
2
3//@ sourceMappingURL=jquery-1.10.2.min.map
4
5*/
6
7(function(e, t) {
8 var n, r, i = typeof t,
9 o = e.location,
10 a = e.document,
11 s = a.documentElement,
12 l = e.jQuery,
13 u = e.$,
14 c = {},
15 p = [],
16 f = "1.10.2",
17 d = p.concat,
18 h = p.push,
19 g = p.slice,
20 m = p.indexOf,
21 y = c.toString,
22 v = c.hasOwnProperty,
23 b = f.trim,
24 x = function(e, t) {
25 return new x.fn.init(e, t, r)
26 },
27 w = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
28 T = /\S+/g,
29 C = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
30 N = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
31 k = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
32 E = /^[\],:{}\s]*$/,
33 S = /(?:^|:|,)(?:\s*\[)+/g,
34 A = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,
35 j = /"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,
36 D = /^-ms-/,
37 L = /-([\da-z])/gi,
38 H = function(e, t) {
39 return t.toUpperCase()
40 },
41 q = function(e) {
42 (a.addEventListener || "load" === e.type || "complete" === a.readyState) && (_(), x.ready())
43 },
44 _ = function() {
45 a.addEventListener ? (a.removeEventListener("DOMContentLoaded", q, !1), e.removeEventListener("load", q, !1)) : (a.detachEvent("onreadystatechange", q), e.detachEvent("onload", q))
46 };
47 x.fn = x.prototype = {
48 jquery: f,
49 constructor: x,
50 init: function(e, n, r) {
51 var i, o;
52 if (!e) return this;
53 if ("string" == typeof e) {
54 if (i = "<" === e.charAt(0) && ">" === e.charAt(e.length - 1) && e.length >= 3 ? [null, e, null] : N.exec(e), !i || !i[1] && n) return !n || n.jquery ? (n || r).find(e) : this.constructor(n).find(e);
55 if (i[1]) {
56 if (n = n instanceof x ? n[0] : n, x.merge(this, x.parseHTML(i[1], n && n.nodeType ? n.ownerDocument || n : a, !0)), k.test(i[1]) && x.isPlainObject(n))
57 for (i in n) x.isFunction(this[i]) ? this[i](n[i]) : this.attr(i, n[i]);
58 return this
59 }
60 if (o = a.getElementById(i[2]), o && o.parentNode) {
61 if (o.id !== i[2]) return r.find(e);
62 this.length = 1, this[0] = o
63 }
64 return this.context = a, this.selector = e, this
65 }
66 return e.nodeType ? (this.context = this[0] = e, this.length = 1, this) : x.isFunction(e) ? r.ready(e) : (e.selector !== t && (this.selector = e.selector, this.context = e.context), x.makeArray(e, this))
67 },
68 selector: "",
69 length: 0,
70 toArray: function() {
71 return g.call(this)
72 },
73 get: function(e) {
74 return null == e ? this.toArray() : 0 > e ? this[this.length + e] : this[e]
75 },
76 pushStack: function(e) {
77 var t = x.merge(this.constructor(), e);
78 return t.prevObject = this, t.context = this.context, t
79 },
80 each: function(e, t) {
81 return x.each(this, e, t)
82 },
83 ready: function(e) {
84 return x.ready.promise().done(e), this
85 },
86 slice: function() {
87 return this.pushStack(g.apply(this, arguments))
88 },
89 first: function() {
90 return this.eq(0)
91 },
92 last: function() {
93 return this.eq(-1)
94 },
95 eq: function(e) {
96 var t = this.length,
97 n = +e + (0 > e ? t : 0);
98 return this.pushStack(n >= 0 && t > n ? [this[n]] : [])
99 },
100 map: function(e) {
101 return this.pushStack(x.map(this, function(t, n) {
102 return e.call(t, n, t)
103 }))
104 },
105 end: function() {
106 return this.prevObject || this.constructor(null)
107 },
108 push: h,
109 sort: [].sort,
110 splice: [].splice
111 }, x.fn.init.prototype = x.fn, x.extend = x.fn.extend = function() {
112 var e, n, r, i, o, a, s = arguments[0] || {},
113 l = 1,
114 u = arguments.length,
115 c = !1;
116 for ("boolean" == typeof s && (c = s, s = arguments[1] || {}, l = 2), "object" == typeof s || x.isFunction(s) || (s = {}), u === l && (s = this, --l); u > l; l++)
117 if (null != (o = arguments[l]))
118 for (i in o) e = s[i], r = o[i], s !== r && (c && r && (x.isPlainObject(r) || (n = x.isArray(r))) ? (n ? (n = !1, a = e && x.isArray(e) ? e : []) : a = e && x.isPlainObject(e) ? e : {}, s[i] = x.extend(c, a, r)) : r !== t && (s[i] = r));
119 return s
120 }, x.extend({
121 expando: "jQuery" + (f + Math.random()).replace(/\D/g, ""),
122 noConflict: function(t) {
123 return e.$ === x && (e.$ = u), t && e.jQuery === x && (e.jQuery = l), x
124 },
125 isReady: !1,
126 readyWait: 1,
127 holdReady: function(e) {
128 e ? x.readyWait++ : x.ready(!0)
129 },
130 ready: function(e) {
131 if (e === !0 ? !--x.readyWait : !x.isReady) {
132 if (!a.body) return setTimeout(x.ready);
133 x.isReady = !0, e !== !0 && --x.readyWait > 0 || (n.resolveWith(a, [x]), x.fn.trigger && x(a).trigger("ready").off("ready"))
134 }
135 },
136 isFunction: function(e) {
137 return "function" === x.type(e)
138 },
139 isArray: Array.isArray || function(e) {
140 return "array" === x.type(e)
141 },
142 isWindow: function(e) {
143 return null != e && e == e.window
144 },
145 isNumeric: function(e) {
146 return !isNaN(parseFloat(e)) && isFinite(e)
147 },
148 type: function(e) {
149 return null == e ? e + "" : "object" == typeof e || "function" == typeof e ? c[y.call(e)] || "object" : typeof e
150 },
151 isPlainObject: function(e) {
152 var n;
153 if (!e || "object" !== x.type(e) || e.nodeType || x.isWindow(e)) return !1;
154 try {
155 if (e.constructor && !v.call(e, "constructor") && !v.call(e.constructor.prototype, "isPrototypeOf")) return !1
156 } catch (r) {
157 return !1
158 }
159 if (x.support.ownLast)
160 for (n in e) return v.call(e, n);
161 for (n in e);
162 return n === t || v.call(e, n)
163 },
164 isEmptyObject: function(e) {
165 var t;
166 for (t in e) return !1;
167 return !0
168 },
169 error: function(e) {
170 throw Error(e)
171 },
172 parseHTML: function(e, t, n) {
173 if (!e || "string" != typeof e) return null;
174 "boolean" == typeof t && (n = t, t = !1), t = t || a;
175 var r = k.exec(e),
176 i = !n && [];
177 return r ? [t.createElement(r[1])] : (r = x.buildFragment([e], t, i), i && x(i).remove(), x.merge([], r.childNodes))
178 },
179 parseJSON: function(n) {
180 return e.JSON && e.JSON.parse ? e.JSON.parse(n) : null === n ? n : "string" == typeof n && (n = x.trim(n), n && E.test(n.replace(A, "@").replace(j, "]").replace(S, ""))) ? Function("return " + n)() : (x.error("Invalid JSON: " + n), t)
181 },
182 parseXML: function(n) {
183 var r, i;
184 if (!n || "string" != typeof n) return null;
185 try {
186 e.DOMParser ? (i = new DOMParser, r = i.parseFromString(n, "text/xml")) : (r = new ActiveXObject("Microsoft.XMLDOM"), r.async = "false", r.loadXML(n))
187 } catch (o) {
188 r = t
189 }
190 return r && r.documentElement && !r.getElementsByTagName("parsererror").length || x.error("Invalid XML: " + n), r
191 },
192 noop: function() {},
193 globalEval: function(t) {
194 t && x.trim(t) && (e.execScript || function(t) {
195 e.eval.call(e, t)
196 })(t)
197 },
198 camelCase: function(e) {
199 return e.replace(D, "ms-").replace(L, H)
200 },
201 nodeName: function(e, t) {
202 return e.nodeName && e.nodeName.toLowerCase() === t.toLowerCase()
203 },
204 each: function(e, t, n) {
205 var r, i = 0,
206 o = e.length,
207 a = M(e);
208 if (n) {
209 if (a) {
210 for (; o > i; i++)
211 if (r = t.apply(e[i], n), r === !1) break
212 } else
213 for (i in e)
214 if (r = t.apply(e[i], n), r === !1) break
215 } else if (a) {
216 for (; o > i; i++)
217 if (r = t.call(e[i], i, e[i]), r === !1) break
218 } else
219 for (i in e)
220 if (r = t.call(e[i], i, e[i]), r === !1) break; return e
221 },
222 trim: b && !b.call("\ufeff\u00a0") ? function(e) {
223 return null == e ? "" : b.call(e)
224 } : function(e) {
225 return null == e ? "" : (e + "").replace(C, "")
226 },
227 makeArray: function(e, t) {
228 var n = t || [];
229 return null != e && (M(Object(e)) ? x.merge(n, "string" == typeof e ? [e] : e) : h.call(n, e)), n
230 },
231 inArray: function(e, t, n) {
232 var r;
233 if (t) {
234 if (m) return m.call(t, e, n);
235 for (r = t.length, n = n ? 0 > n ? Math.max(0, r + n) : n : 0; r > n; n++)
236 if (n in t && t[n] === e) return n
237 }
238 return -1
239 },
240 merge: function(e, n) {
241 var r = n.length,
242 i = e.length,
243 o = 0;
244 if ("number" == typeof r)
245 for (; r > o; o++) e[i++] = n[o];
246 else
247 while (n[o] !== t) e[i++] = n[o++];
248 return e.length = i, e
249 },
250 grep: function(e, t, n) {
251 var r, i = [],
252 o = 0,
253 a = e.length;
254 for (n = !!n; a > o; o++) r = !!t(e[o], o), n !== r && i.push(e[o]);
255 return i
256 },
257 map: function(e, t, n) {
258 var r, i = 0,
259 o = e.length,
260 a = M(e),
261 s = [];
262 if (a)
263 for (; o > i; i++) r = t(e[i], i, n), null != r && (s[s.length] = r);
264 else
265 for (i in e) r = t(e[i], i, n), null != r && (s[s.length] = r);
266 return d.apply([], s)
267 },
268 guid: 1,
269 proxy: function(e, n) {
270 var r, i, o;
271 return "string" == typeof n && (o = e[n], n = e, e = o), x.isFunction(e) ? (r = g.call(arguments, 2), i = function() {
272 return e.apply(n || this, r.concat(g.call(arguments)))
273 }, i.guid = e.guid = e.guid || x.guid++, i) : t
274 },
275 access: function(e, n, r, i, o, a, s) {
276 var l = 0,
277 u = e.length,
278 c = null == r;
279 if ("object" === x.type(r)) {
280 o = !0;
281 for (l in r) x.access(e, n, l, r[l], !0, a, s)
282 } else if (i !== t && (o = !0, x.isFunction(i) || (s = !0), c && (s ? (n.call(e, i), n = null) : (c = n, n = function(e, t, n) {
283 return c.call(x(e), n)
284 })), n))
285 for (; u > l; l++) n(e[l], r, s ? i : i.call(e[l], l, n(e[l], r)));
286 return o ? e : c ? n.call(e) : u ? n(e[0], r) : a
287 },
288 now: function() {
289 return (new Date).getTime()
290 },
291 swap: function(e, t, n, r) {
292 var i, o, a = {};
293 for (o in t) a[o] = e.style[o], e.style[o] = t[o];
294 i = n.apply(e, r || []);
295 for (o in t) e.style[o] = a[o];
296 return i
297 }
298 }), x.ready.promise = function(t) {
299 if (!n)
300 if (n = x.Deferred(), "complete" === a.readyState) setTimeout(x.ready);
301 else if (a.addEventListener) a.addEventListener("DOMContentLoaded", q, !1), e.addEventListener("load", q, !1);
302 else {
303 a.attachEvent("onreadystatechange", q), e.attachEvent("onload", q);
304 var r = !1;
305 try {
306 r = null == e.frameElement && a.documentElement
307 } catch (i) {}
308 r && r.doScroll && function o() {
309 if (!x.isReady) {
310 try {
311 r.doScroll("left")
312 } catch (e) {
313 return setTimeout(o, 50)
314 }
315 _(), x.ready()
316 }
317 }()
318 }
319 return n.promise(t)
320 }, x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(e, t) {
321 c["[object " + t + "]"] = t.toLowerCase()
322 });
323
324 function M(e) {
325 var t = e.length,
326 n = x.type(e);
327 return x.isWindow(e) ? !1 : 1 === e.nodeType && t ? !0 : "array" === n || "function" !== n && (0 === t || "number" == typeof t && t > 0 && t - 1 in e)
328 }
329 r = x(a),
330 function(e, t) {
331 var n, r, i, o, a, s, l, u, c, p, f, d, h, g, m, y, v, b = "sizzle" + -new Date,
332 w = e.document,
333 T = 0,
334 C = 0,
335 N = st(),
336 k = st(),
337 E = st(),
338 S = !1,
339 A = function(e, t) {
340 return e === t ? (S = !0, 0) : 0
341 },
342 j = typeof t,
343 D = 1 << 31,
344 L = {}.hasOwnProperty,
345 H = [],
346 q = H.pop,
347 _ = H.push,
348 M = H.push,
349 O = H.slice,
350 F = H.indexOf || function(e) {
351 var t = 0,
352 n = this.length;
353 for (; n > t; t++)
354 if (this[t] === e) return t;
355 return -1
356 },
357 B = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
358 P = "[\\x20\\t\\r\\n\\f]",
359 R = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
360 W = R.replace("w", "w#"),
361 $ = "\\[" + P + "*(" + R + ")" + P + "*(?:([*^$|!~]?=)" + P + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + W + ")|)|)" + P + "*\\]",
362 I = ":(" + R + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + $.replace(3, 8) + ")*)|.*)\\)|)",
363 z = RegExp("^" + P + "+|((?:^|[^\\\\])(?:\\\\.)*)" + P + "+$", "g"),
364 X = RegExp("^" + P + "*," + P + "*"),
365 U = RegExp("^" + P + "*([>+~]|" + P + ")" + P + "*"),
366 V = RegExp(P + "*[+~]"),
367 Y = RegExp("=" + P + "*([^\\]'\"]*)" + P + "*\\]", "g"),
368 J = RegExp(I),
369 G = RegExp("^" + W + "$"),
370 Q = {
371 ID: RegExp("^#(" + R + ")"),
372 CLASS: RegExp("^\\.(" + R + ")"),
373 TAG: RegExp("^(" + R.replace("w", "w*") + ")"),
374 ATTR: RegExp("^" + $),
375 PSEUDO: RegExp("^" + I),
376 CHILD: RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + P + "*(even|odd|(([+-]|)(\\d*)n|)" + P + "*(?:([+-]|)" + P + "*(\\d+)|))" + P + "*\\)|)", "i"),
377 bool: RegExp("^(?:" + B + ")$", "i"),
378 needsContext: RegExp("^" + P + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + P + "*((?:-\\d)?\\d*)" + P + "*\\)|)(?=[^-]|$)", "i")
379 },
380 K = /^[^{]+\{\s*\[native \w/,
381 Z = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
382 et = /^(?:input|select|textarea|button)$/i,
383 tt = /^h\d$/i,
384 nt = /'|\\/g,
385 rt = RegExp("\\\\([\\da-f]{1,6}" + P + "?|(" + P + ")|.)", "ig"),
386 it = function(e, t, n) {
387 var r = "0x" + t - 65536;
388 return r !== r || n ? t : 0 > r ? String.fromCharCode(r + 65536) : String.fromCharCode(55296 | r >> 10, 56320 | 1023 & r)
389 };
390 try {
391 M.apply(H = O.call(w.childNodes), w.childNodes), H[w.childNodes.length].nodeType
392 } catch (ot) {
393 M = {
394 apply: H.length ? function(e, t) {
395 _.apply(e, O.call(t))
396 } : function(e, t) {
397 var n = e.length,
398 r = 0;
399 while (e[n++] = t[r++]);
400 e.length = n - 1
401 }
402 }
403 }
404
405 function at(e, t, n, i) {
406 var o, a, s, l, u, c, d, m, y, x;
407 if ((t ? t.ownerDocument || t : w) !== f && p(t), t = t || f, n = n || [], !e || "string" != typeof e) return n;
408 if (1 !== (l = t.nodeType) && 9 !== l) return [];
409 if (h && !i) {
410 if (o = Z.exec(e))
411 if (s = o[1]) {
412 if (9 === l) {
413 if (a = t.getElementById(s), !a || !a.parentNode) return n;
414 if (a.id === s) return n.push(a), n
415 } else if (t.ownerDocument && (a = t.ownerDocument.getElementById(s)) && v(t, a) && a.id === s) return n.push(a), n
416 } else {
417 if (o[2]) return M.apply(n, t.getElementsByTagName(e)), n;
418 if ((s = o[3]) && r.getElementsByClassName && t.getElementsByClassName) return M.apply(n, t.getElementsByClassName(s)), n
419 }
420 if (r.qsa && (!g || !g.test(e))) {
421 if (m = d = b, y = t, x = 9 === l && e, 1 === l && "object" !== t.nodeName.toLowerCase()) {
422 c = mt(e), (d = t.getAttribute("id")) ? m = d.replace(nt, "\\$&") : t.setAttribute("id", m), m = "[id='" + m + "'] ", u = c.length;
423 while (u--) c[u] = m + yt(c[u]);
424 y = V.test(e) && t.parentNode || t, x = c.join(",")
425 }
426 if (x) try {
427 return M.apply(n, y.querySelectorAll(x)), n
428 } catch (T) {} finally {
429 d || t.removeAttribute("id")
430 }
431 }
432 }
433 return kt(e.replace(z, "$1"), t, n, i)
434 }
435
436 function st() {
437 var e = [];
438
439 function t(n, r) {
440 return e.push(n += " ") > o.cacheLength && delete t[e.shift()], t[n] = r
441 }
442 return t
443 }
444
445 function lt(e) {
446 return e[b] = !0, e
447 }
448
449 function ut(e) {
450 var t = f.createElement("div");
451 try {
452 return !!e(t)
453 } catch (n) {
454 return !1
455 } finally {
456 t.parentNode && t.parentNode.removeChild(t), t = null
457 }
458 }
459
460 function ct(e, t) {
461 var n = e.split("|"),
462 r = e.length;
463 while (r--) o.attrHandle[n[r]] = t
464 }
465
466 function pt(e, t) {
467 var n = t && e,
468 r = n && 1 === e.nodeType && 1 === t.nodeType && (~t.sourceIndex || D) - (~e.sourceIndex || D);
469 if (r) return r;
470 if (n)
471 while (n = n.nextSibling)
472 if (n === t) return -1;
473 return e ? 1 : -1
474 }
475
476 function ft(e) {
477 return function(t) {
478 var n = t.nodeName.toLowerCase();
479 return "input" === n && t.type === e
480 }
481 }
482
483 function dt(e) {
484 return function(t) {
485 var n = t.nodeName.toLowerCase();
486 return ("input" === n || "button" === n) && t.type === e
487 }
488 }
489
490 function ht(e) {
491 return lt(function(t) {
492 return t = +t, lt(function(n, r) {
493 var i, o = e([], n.length, t),
494 a = o.length;
495 while (a--) n[i = o[a]] && (n[i] = !(r[i] = n[i]))
496 })
497 })
498 }
499 s = at.isXML = function(e) {
500 var t = e && (e.ownerDocument || e).documentElement;
501 return t ? "HTML" !== t.nodeName : !1
502 }, r = at.support = {}, p = at.setDocument = function(e) {
503 var n = e ? e.ownerDocument || e : w,
504 i = n.defaultView;
505 return n !== f && 9 === n.nodeType && n.documentElement ? (f = n, d = n.documentElement, h = !s(n), i && i.attachEvent && i !== i.top && i.attachEvent("onbeforeunload", function() {
506 p()
507 }), r.attributes = ut(function(e) {
508 return e.className = "i", !e.getAttribute("className")
509 }), r.getElementsByTagName = ut(function(e) {
510 return e.appendChild(n.createComment("")), !e.getElementsByTagName("*").length
511 }), r.getElementsByClassName = ut(function(e) {
512 return e.innerHTML = "<div class='a'></div><div class='a i'></div>", e.firstChild.className = "i", 2 === e.getElementsByClassName("i").length
513 }), r.getById = ut(function(e) {
514 return d.appendChild(e).id = b, !n.getElementsByName || !n.getElementsByName(b).length
515 }), r.getById ? (o.find.ID = function(e, t) {
516 if (typeof t.getElementById !== j && h) {
517 var n = t.getElementById(e);
518 return n && n.parentNode ? [n] : []
519 }
520 }, o.filter.ID = function(e) {
521 var t = e.replace(rt, it);
522 return function(e) {
523 return e.getAttribute("id") === t
524 }
525 }) : (delete o.find.ID, o.filter.ID = function(e) {
526 var t = e.replace(rt, it);
527 return function(e) {
528 var n = typeof e.getAttributeNode !== j && e.getAttributeNode("id");
529 return n && n.value === t
530 }
531 }), o.find.TAG = r.getElementsByTagName ? function(e, n) {
532 return typeof n.getElementsByTagName !== j ? n.getElementsByTagName(e) : t
533 } : function(e, t) {
534 var n, r = [],
535 i = 0,
536 o = t.getElementsByTagName(e);
537 if ("*" === e) {
538 while (n = o[i++]) 1 === n.nodeType && r.push(n);
539 return r
540 }
541 return o
542 }, o.find.CLASS = r.getElementsByClassName && function(e, n) {
543 return typeof n.getElementsByClassName !== j && h ? n.getElementsByClassName(e) : t
544 }, m = [], g = [], (r.qsa = K.test(n.querySelectorAll)) && (ut(function(e) {
545 e.innerHTML = "<select><option selected=''></option></select>", e.querySelectorAll("[selected]").length || g.push("\\[" + P + "*(?:value|" + B + ")"), e.querySelectorAll(":checked").length || g.push(":checked")
546 }), ut(function(e) {
547 var t = n.createElement("input");
548 t.setAttribute("type", "hidden"), e.appendChild(t).setAttribute("t", ""), e.querySelectorAll("[t^='']").length && g.push("[*^$]=" + P + "*(?:''|\"\")"), e.querySelectorAll(":enabled").length || g.push(":enabled", ":disabled"), e.querySelectorAll("*,:x"), g.push(",.*:")
549 })), (r.matchesSelector = K.test(y = d.webkitMatchesSelector || d.mozMatchesSelector || d.oMatchesSelector || d.msMatchesSelector)) && ut(function(e) {
550 r.disconnectedMatch = y.call(e, "div"), y.call(e, "[s!='']:x"), m.push("!=", I)
551 }), g = g.length && RegExp(g.join("|")), m = m.length && RegExp(m.join("|")), v = K.test(d.contains) || d.compareDocumentPosition ? function(e, t) {
552 var n = 9 === e.nodeType ? e.documentElement : e,
553 r = t && t.parentNode;
554 return e === r || !(!r || 1 !== r.nodeType || !(n.contains ? n.contains(r) : e.compareDocumentPosition && 16 & e.compareDocumentPosition(r)))
555 } : function(e, t) {
556 if (t)
557 while (t = t.parentNode)
558 if (t === e) return !0;
559 return !1
560 }, A = d.compareDocumentPosition ? function(e, t) {
561 if (e === t) return S = !0, 0;
562 var i = t.compareDocumentPosition && e.compareDocumentPosition && e.compareDocumentPosition(t);
563 return i ? 1 & i || !r.sortDetached && t.compareDocumentPosition(e) === i ? e === n || v(w, e) ? -1 : t === n || v(w, t) ? 1 : c ? F.call(c, e) - F.call(c, t) : 0 : 4 & i ? -1 : 1 : e.compareDocumentPosition ? -1 : 1
564 } : function(e, t) {
565 var r, i = 0,
566 o = e.parentNode,
567 a = t.parentNode,
568 s = [e],
569 l = [t];
570 if (e === t) return S = !0, 0;
571 if (!o || !a) return e === n ? -1 : t === n ? 1 : o ? -1 : a ? 1 : c ? F.call(c, e) - F.call(c, t) : 0;
572 if (o === a) return pt(e, t);
573 r = e;
574 while (r = r.parentNode) s.unshift(r);
575 r = t;
576 while (r = r.parentNode) l.unshift(r);
577 while (s[i] === l[i]) i++;
578 return i ? pt(s[i], l[i]) : s[i] === w ? -1 : l[i] === w ? 1 : 0
579 }, n) : f
580 }, at.matches = function(e, t) {
581 return at(e, null, null, t)
582 }, at.matchesSelector = function(e, t) {
583 if ((e.ownerDocument || e) !== f && p(e), t = t.replace(Y, "='$1']"), !(!r.matchesSelector || !h || m && m.test(t) || g && g.test(t))) try {
584 var n = y.call(e, t);
585 if (n || r.disconnectedMatch || e.document && 11 !== e.document.nodeType) return n
586 } catch (i) {}
587 return at(t, f, null, [e]).length > 0
588 }, at.contains = function(e, t) {
589 return (e.ownerDocument || e) !== f && p(e), v(e, t)
590 }, at.attr = function(e, n) {
591 (e.ownerDocument || e) !== f && p(e);
592 var i = o.attrHandle[n.toLowerCase()],
593 a = i && L.call(o.attrHandle, n.toLowerCase()) ? i(e, n, !h) : t;
594 return a === t ? r.attributes || !h ? e.getAttribute(n) : (a = e.getAttributeNode(n)) && a.specified ? a.value : null : a
595 }, at.error = function(e) {
596 throw Error("Syntax error, unrecognized expression: " + e)
597 }, at.uniqueSort = function(e) {
598 var t, n = [],
599 i = 0,
600 o = 0;
601 if (S = !r.detectDuplicates, c = !r.sortStable && e.slice(0), e.sort(A), S) {
602 while (t = e[o++]) t === e[o] && (i = n.push(o));
603 while (i--) e.splice(n[i], 1)
604 }
605 return e
606 }, a = at.getText = function(e) {
607 var t, n = "",
608 r = 0,
609 i = e.nodeType;
610 if (i) {
611 if (1 === i || 9 === i || 11 === i) {
612 if ("string" == typeof e.textContent) return e.textContent;
613 for (e = e.firstChild; e; e = e.nextSibling) n += a(e)
614 } else if (3 === i || 4 === i) return e.nodeValue
615 } else
616 for (; t = e[r]; r++) n += a(t);
617 return n
618 }, o = at.selectors = {
619 cacheLength: 50,
620 createPseudo: lt,
621 match: Q,
622 attrHandle: {},
623 find: {},
624 relative: {
625 ">": {
626 dir: "parentNode",
627 first: !0
628 },
629 " ": {
630 dir: "parentNode"
631 },
632 "+": {
633 dir: "previousSibling",
634 first: !0
635 },
636 "~": {
637 dir: "previousSibling"
638 }
639 },
640 preFilter: {
641 ATTR: function(e) {
642 return e[1] = e[1].replace(rt, it), e[3] = (e[4] || e[5] || "").replace(rt, it), "~=" === e[2] && (e[3] = " " + e[3] + " "), e.slice(0, 4)
643 },
644 CHILD: function(e) {
645 return e[1] = e[1].toLowerCase(), "nth" === e[1].slice(0, 3) ? (e[3] || at.error(e[0]), e[4] = +(e[4] ? e[5] + (e[6] || 1) : 2 * ("even" === e[3] || "odd" === e[3])), e[5] = +(e[7] + e[8] || "odd" === e[3])) : e[3] && at.error(e[0]), e
646 },
647 PSEUDO: function(e) {
648 var n, r = !e[5] && e[2];
649 return Q.CHILD.test(e[0]) ? null : (e[3] && e[4] !== t ? e[2] = e[4] : r && J.test(r) && (n = mt(r, !0)) && (n = r.indexOf(")", r.length - n) - r.length) && (e[0] = e[0].slice(0, n), e[2] = r.slice(0, n)), e.slice(0, 3))
650 }
651 },
652 filter: {
653 TAG: function(e) {
654 var t = e.replace(rt, it).toLowerCase();
655 return "*" === e ? function() {
656 return !0
657 } : function(e) {
658 return e.nodeName && e.nodeName.toLowerCase() === t
659 }
660 },
661 CLASS: function(e) {
662 var t = N[e + " "];
663 return t || (t = RegExp("(^|" + P + ")" + e + "(" + P + "|$)")) && N(e, function(e) {
664 return t.test("string" == typeof e.className && e.className || typeof e.getAttribute !== j && e.getAttribute("class") || "")
665 })
666 },
667 ATTR: function(e, t, n) {
668 return function(r) {
669 var i = at.attr(r, e);
670 return null == i ? "!=" === t : t ? (i += "", "=" === t ? i === n : "!=" === t ? i !== n : "^=" === t ? n && 0 === i.indexOf(n) : "*=" === t ? n && i.indexOf(n) > -1 : "$=" === t ? n && i.slice(-n.length) === n : "~=" === t ? (" " + i + " ").indexOf(n) > -1 : "|=" === t ? i === n || i.slice(0, n.length + 1) === n + "-" : !1) : !0
671 }
672 },
673 CHILD: function(e, t, n, r, i) {
674 var o = "nth" !== e.slice(0, 3),
675 a = "last" !== e.slice(-4),
676 s = "of-type" === t;
677 return 1 === r && 0 === i ? function(e) {
678 return !!e.parentNode
679 } : function(t, n, l) {
680 var u, c, p, f, d, h, g = o !== a ? "nextSibling" : "previousSibling",
681 m = t.parentNode,
682 y = s && t.nodeName.toLowerCase(),
683 v = !l && !s;
684 if (m) {
685 if (o) {
686 while (g) {
687 p = t;
688 while (p = p[g])
689 if (s ? p.nodeName.toLowerCase() === y : 1 === p.nodeType) return !1;
690 h = g = "only" === e && !h && "nextSibling"
691 }
692 return !0
693 }
694 if (h = [a ? m.firstChild : m.lastChild], a && v) {
695 c = m[b] || (m[b] = {}), u = c[e] || [], d = u[0] === T && u[1], f = u[0] === T && u[2], p = d && m.childNodes[d];
696 while (p = ++d && p && p[g] || (f = d = 0) || h.pop())
697 if (1 === p.nodeType && ++f && p === t) {
698 c[e] = [T, d, f];
699 break
700 }
701 } else if (v && (u = (t[b] || (t[b] = {}))[e]) && u[0] === T) f = u[1];
702 else
703 while (p = ++d && p && p[g] || (f = d = 0) || h.pop())
704 if ((s ? p.nodeName.toLowerCase() === y : 1 === p.nodeType) && ++f && (v && ((p[b] || (p[b] = {}))[e] = [T, f]), p === t)) break; return f -= i, f === r || 0 === f % r && f / r >= 0
705 }
706 }
707 },
708 PSEUDO: function(e, t) {
709 var n, r = o.pseudos[e] || o.setFilters[e.toLowerCase()] || at.error("unsupported pseudo: " + e);
710 return r[b] ? r(t) : r.length > 1 ? (n = [e, e, "", t], o.setFilters.hasOwnProperty(e.toLowerCase()) ? lt(function(e, n) {
711 var i, o = r(e, t),
712 a = o.length;
713 while (a--) i = F.call(e, o[a]), e[i] = !(n[i] = o[a])
714 }) : function(e) {
715 return r(e, 0, n)
716 }) : r
717 }
718 },
719 pseudos: {
720 not: lt(function(e) {
721 var t = [],
722 n = [],
723 r = l(e.replace(z, "$1"));
724 return r[b] ? lt(function(e, t, n, i) {
725 var o, a = r(e, null, i, []),
726 s = e.length;
727 while (s--)(o = a[s]) && (e[s] = !(t[s] = o))
728 }) : function(e, i, o) {
729 return t[0] = e, r(t, null, o, n), !n.pop()
730 }
731 }),
732 has: lt(function(e) {
733 return function(t) {
734 return at(e, t).length > 0
735 }
736 }),
737 contains: lt(function(e) {
738 return function(t) {
739 return (t.textContent || t.innerText || a(t)).indexOf(e) > -1
740 }
741 }),
742 lang: lt(function(e) {
743 return G.test(e || "") || at.error("unsupported lang: " + e), e = e.replace(rt, it).toLowerCase(),
744 function(t) {
745 var n;
746 do
747 if (n = h ? t.lang : t.getAttribute("xml:lang") || t.getAttribute("lang")) return n = n.toLowerCase(), n === e || 0 === n.indexOf(e + "-");
748 while ((t = t.parentNode) && 1 === t.nodeType);
749 return !1
750 }
751 }),
752 target: function(t) {
753 var n = e.location && e.location.hash;
754 return n && n.slice(1) === t.id
755 },
756 root: function(e) {
757 return e === d
758 },
759 focus: function(e) {
760 return e === f.activeElement && (!f.hasFocus || f.hasFocus()) && !!(e.type || e.href || ~e.tabIndex)
761 },
762 enabled: function(e) {
763 return e.disabled === !1
764 },
765 disabled: function(e) {
766 return e.disabled === !0
767 },
768 checked: function(e) {
769 var t = e.nodeName.toLowerCase();
770 return "input" === t && !!e.checked || "option" === t && !!e.selected
771 },
772 selected: function(e) {
773 return e.parentNode && e.parentNode.selectedIndex, e.selected === !0
774 },
775 empty: function(e) {
776 for (e = e.firstChild; e; e = e.nextSibling)
777 if (e.nodeName > "@" || 3 === e.nodeType || 4 === e.nodeType) return !1;
778 return !0
779 },
780 parent: function(e) {
781 return !o.pseudos.empty(e)
782 },
783 header: function(e) {
784 return tt.test(e.nodeName)
785 },
786 input: function(e) {
787 return et.test(e.nodeName)
788 },
789 button: function(e) {
790 var t = e.nodeName.toLowerCase();
791 return "input" === t && "button" === e.type || "button" === t
792 },
793 text: function(e) {
794 var t;
795 return "input" === e.nodeName.toLowerCase() && "text" === e.type && (null == (t = e.getAttribute("type")) || t.toLowerCase() === e.type)
796 },
797 first: ht(function() {
798 return [0]
799 }),
800 last: ht(function(e, t) {
801 return [t - 1]
802 }),
803 eq: ht(function(e, t, n) {
804 return [0 > n ? n + t : n]
805 }),
806 even: ht(function(e, t) {
807 var n = 0;
808 for (; t > n; n += 2) e.push(n);
809 return e
810 }),
811 odd: ht(function(e, t) {
812 var n = 1;
813 for (; t > n; n += 2) e.push(n);
814 return e
815 }),
816 lt: ht(function(e, t, n) {
817 var r = 0 > n ? n + t : n;
818 for (; --r >= 0;) e.push(r);
819 return e
820 }),
821 gt: ht(function(e, t, n) {
822 var r = 0 > n ? n + t : n;
823 for (; t > ++r;) e.push(r);
824 return e
825 })
826 }
827 }, o.pseudos.nth = o.pseudos.eq;
828 for (n in {
829 radio: !0,
830 checkbox: !0,
831 file: !0,
832 password: !0,
833 image: !0
834 }) o.pseudos[n] = ft(n);
835 for (n in {
836 submit: !0,
837 reset: !0
838 }) o.pseudos[n] = dt(n);
839
840 function gt() {}
841 gt.prototype = o.filters = o.pseudos, o.setFilters = new gt;
842
843 function mt(e, t) {
844 var n, r, i, a, s, l, u, c = k[e + " "];
845 if (c) return t ? 0 : c.slice(0);
846 s = e, l = [], u = o.preFilter;
847 while (s) {
848 (!n || (r = X.exec(s))) && (r && (s = s.slice(r[0].length) || s), l.push(i = [])), n = !1, (r = U.exec(s)) && (n = r.shift(), i.push({
849 value: n,
850 type: r[0].replace(z, " ")
851 }), s = s.slice(n.length));
852 for (a in o.filter)!(r = Q[a].exec(s)) || u[a] && !(r = u[a](r)) || (n = r.shift(), i.push({
853 value: n,
854 type: a,
855 matches: r
856 }), s = s.slice(n.length));
857 if (!n) break
858 }
859 return t ? s.length : s ? at.error(e) : k(e, l).slice(0)
860 }
861
862 function yt(e) {
863 var t = 0,
864 n = e.length,
865 r = "";
866 for (; n > t; t++) r += e[t].value;
867 return r
868 }
869
870 function vt(e, t, n) {
871 var r = t.dir,
872 o = n && "parentNode" === r,
873 a = C++;
874 return t.first ? function(t, n, i) {
875 while (t = t[r])
876 if (1 === t.nodeType || o) return e(t, n, i)
877 } : function(t, n, s) {
878 var l, u, c, p = T + " " + a;
879 if (s) {
880 while (t = t[r])
881 if ((1 === t.nodeType || o) && e(t, n, s)) return !0
882 } else
883 while (t = t[r])
884 if (1 === t.nodeType || o)
885 if (c = t[b] || (t[b] = {}), (u = c[r]) && u[0] === p) {
886 if ((l = u[1]) === !0 || l === i) return l === !0
887 } else if (u = c[r] = [p], u[1] = e(t, n, s) || i, u[1] === !0) return !0
888 }
889 }
890
891 function bt(e) {
892 return e.length > 1 ? function(t, n, r) {
893 var i = e.length;
894 while (i--)
895 if (!e[i](t, n, r)) return !1;
896 return !0
897 } : e[0]
898 }
899
900 function xt(e, t, n, r, i) {
901 var o, a = [],
902 s = 0,
903 l = e.length,
904 u = null != t;
905 for (; l > s; s++)(o = e[s]) && (!n || n(o, r, i)) && (a.push(o), u && t.push(s));
906 return a
907 }
908
909 function wt(e, t, n, r, i, o) {
910 return r && !r[b] && (r = wt(r)), i && !i[b] && (i = wt(i, o)), lt(function(o, a, s, l) {
911 var u, c, p, f = [],
912 d = [],
913 h = a.length,
914 g = o || Nt(t || "*", s.nodeType ? [s] : s, []),
915 m = !e || !o && t ? g : xt(g, f, e, s, l),
916 y = n ? i || (o ? e : h || r) ? [] : a : m;
917 if (n && n(m, y, s, l), r) {
918 u = xt(y, d), r(u, [], s, l), c = u.length;
919 while (c--)(p = u[c]) && (y[d[c]] = !(m[d[c]] = p))
920 }
921 if (o) {
922 if (i || e) {
923 if (i) {
924 u = [], c = y.length;
925 while (c--)(p = y[c]) && u.push(m[c] = p);
926 i(null, y = [], u, l)
927 }
928 c = y.length;
929 while (c--)(p = y[c]) && (u = i ? F.call(o, p) : f[c]) > -1 && (o[u] = !(a[u] = p))
930 }
931 } else y = xt(y === a ? y.splice(h, y.length) : y), i ? i(null, a, y, l) : M.apply(a, y)
932 })
933 }
934
935 function Tt(e) {
936 var t, n, r, i = e.length,
937 a = o.relative[e[0].type],
938 s = a || o.relative[" "],
939 l = a ? 1 : 0,
940 c = vt(function(e) {
941 return e === t
942 }, s, !0),
943 p = vt(function(e) {
944 return F.call(t, e) > -1
945 }, s, !0),
946 f = [
947
948 function(e, n, r) {
949 return !a && (r || n !== u) || ((t = n).nodeType ? c(e, n, r) : p(e, n, r))
950 }
951 ];
952 for (; i > l; l++)
953 if (n = o.relative[e[l].type]) f = [vt(bt(f), n)];
954 else {
955 if (n = o.filter[e[l].type].apply(null, e[l].matches), n[b]) {
956 for (r = ++l; i > r; r++)
957 if (o.relative[e[r].type]) break;
958 return wt(l > 1 && bt(f), l > 1 && yt(e.slice(0, l - 1).concat({
959 value: " " === e[l - 2].type ? "*" : ""
960 })).replace(z, "$1"), n, r > l && Tt(e.slice(l, r)), i > r && Tt(e = e.slice(r)), i > r && yt(e))
961 }
962 f.push(n)
963 }
964 return bt(f)
965 }
966
967 function Ct(e, t) {
968 var n = 0,
969 r = t.length > 0,
970 a = e.length > 0,
971 s = function(s, l, c, p, d) {
972 var h, g, m, y = [],
973 v = 0,
974 b = "0",
975 x = s && [],
976 w = null != d,
977 C = u,
978 N = s || a && o.find.TAG("*", d && l.parentNode || l),
979 k = T += null == C ? 1 : Math.random() || .1;
980 for (w && (u = l !== f && l, i = n); null != (h = N[b]); b++) {
981 if (a && h) {
982 g = 0;
983 while (m = e[g++])
984 if (m(h, l, c)) {
985 p.push(h);
986 break
987 }
988 w && (T = k, i = ++n)
989 }
990 r && ((h = !m && h) && v--, s && x.push(h))
991 }
992 if (v += b, r && b !== v) {
993 g = 0;
994 while (m = t[g++]) m(x, y, l, c);
995 if (s) {
996 if (v > 0)
997 while (b--) x[b] || y[b] || (y[b] = q.call(p));
998 y = xt(y)
999 }
1000 M.apply(p, y), w && !s && y.length > 0 && v + t.length > 1 && at.uniqueSort(p)
1001 }
1002 return w && (T = k, u = C), x
1003 };
1004 return r ? lt(s) : s
1005 }
1006 l = at.compile = function(e, t) {
1007 var n, r = [],
1008 i = [],
1009 o = E[e + " "];
1010 if (!o) {
1011 t || (t = mt(e)), n = t.length;
1012 while (n--) o = Tt(t[n]), o[b] ? r.push(o) : i.push(o);
1013 o = E(e, Ct(i, r))
1014 }
1015 return o
1016 };
1017
1018 function Nt(e, t, n) {
1019 var r = 0,
1020 i = t.length;
1021 for (; i > r; r++) at(e, t[r], n);
1022 return n
1023 }
1024
1025 function kt(e, t, n, i) {
1026 var a, s, u, c, p, f = mt(e);
1027 if (!i && 1 === f.length) {
1028 if (s = f[0] = f[0].slice(0), s.length > 2 && "ID" === (u = s[0]).type && r.getById && 9 === t.nodeType && h && o.relative[s[1].type]) {
1029 if (t = (o.find.ID(u.matches[0].replace(rt, it), t) || [])[0], !t) return n;
1030 e = e.slice(s.shift().value.length)
1031 }
1032 a = Q.needsContext.test(e) ? 0 : s.length;
1033 while (a--) {
1034 if (u = s[a], o.relative[c = u.type]) break;
1035 if ((p = o.find[c]) && (i = p(u.matches[0].replace(rt, it), V.test(s[0].type) && t.parentNode || t))) {
1036 if (s.splice(a, 1), e = i.length && yt(s), !e) return M.apply(n, i), n;
1037 break
1038 }
1039 }
1040 }
1041 return l(e, f)(i, t, !h, n, V.test(e)), n
1042 }
1043 r.sortStable = b.split("").sort(A).join("") === b, r.detectDuplicates = S, p(), r.sortDetached = ut(function(e) {
1044 return 1 & e.compareDocumentPosition(f.createElement("div"))
1045 }), ut(function(e) {
1046 return e.innerHTML = "<a href='#'></a>", "#" === e.firstChild.getAttribute("href")
1047 }) || ct("type|href|height|width", function(e, n, r) {
1048 return r ? t : e.getAttribute(n, "type" === n.toLowerCase() ? 1 : 2)
1049 }), r.attributes && ut(function(e) {
1050 return e.innerHTML = "<input/>", e.firstChild.setAttribute("value", ""), "" === e.firstChild.getAttribute("value")
1051 }) || ct("value", function(e, n, r) {
1052 return r || "input" !== e.nodeName.toLowerCase() ? t : e.defaultValue
1053 }), ut(function(e) {
1054 return null == e.getAttribute("disabled")
1055 }) || ct(B, function(e, n, r) {
1056 var i;
1057 return r ? t : (i = e.getAttributeNode(n)) && i.specified ? i.value : e[n] === !0 ? n.toLowerCase() : null
1058 }), x.find = at, x.expr = at.selectors, x.expr[":"] = x.expr.pseudos, x.unique = at.uniqueSort, x.text = at.getText, x.isXMLDoc = at.isXML, x.contains = at.contains
1059 }(e);
1060 var O = {};
1061
1062 function F(e) {
1063 var t = O[e] = {};
1064 return x.each(e.match(T) || [], function(e, n) {
1065 t[n] = !0
1066 }), t
1067 }
1068 x.Callbacks = function(e) {
1069 e = "string" == typeof e ? O[e] || F(e) : x.extend({}, e);
1070 var n, r, i, o, a, s, l = [],
1071 u = !e.once && [],
1072 c = function(t) {
1073 for (r = e.memory && t, i = !0, a = s || 0, s = 0, o = l.length, n = !0; l && o > a; a++)
1074 if (l[a].apply(t[0], t[1]) === !1 && e.stopOnFalse) {
1075 r = !1;
1076 break
1077 }
1078 n = !1, l && (u ? u.length && c(u.shift()) : r ? l = [] : p.disable())
1079 },
1080 p = {
1081 add: function() {
1082 if (l) {
1083 var t = l.length;
1084 (function i(t) {
1085 x.each(t, function(t, n) {
1086 var r = x.type(n);
1087 "function" === r ? e.unique && p.has(n) || l.push(n) : n && n.length && "string" !== r && i(n)
1088 })
1089 })(arguments), n ? o = l.length : r && (s = t, c(r))
1090 }
1091 return this
1092 },
1093 remove: function() {
1094 return l && x.each(arguments, function(e, t) {
1095 var r;
1096 while ((r = x.inArray(t, l, r)) > -1) l.splice(r, 1), n && (o >= r && o--, a >= r && a--)
1097 }), this
1098 },
1099 has: function(e) {
1100 return e ? x.inArray(e, l) > -1 : !(!l || !l.length)
1101 },
1102 empty: function() {
1103 return l = [], o = 0, this
1104 },
1105 disable: function() {
1106 return l = u = r = t, this
1107 },
1108 disabled: function() {
1109 return !l
1110 },
1111 lock: function() {
1112 return u = t, r || p.disable(), this
1113 },
1114 locked: function() {
1115 return !u
1116 },
1117 fireWith: function(e, t) {
1118 return !l || i && !u || (t = t || [], t = [e, t.slice ? t.slice() : t], n ? u.push(t) : c(t)), this
1119 },
1120 fire: function() {
1121 return p.fireWith(this, arguments), this
1122 },
1123 fired: function() {
1124 return !!i
1125 }
1126 };
1127 return p
1128 }, x.extend({
1129 Deferred: function(e) {
1130 var t = [
1131 ["resolve", "done", x.Callbacks("once memory"), "resolved"],
1132 ["reject", "fail", x.Callbacks("once memory"), "rejected"],
1133 ["notify", "progress", x.Callbacks("memory")]
1134 ],
1135 n = "pending",
1136 r = {
1137 state: function() {
1138 return n
1139 },
1140 always: function() {
1141 return i.done(arguments).fail(arguments), this
1142 },
1143 then: function() {
1144 var e = arguments;
1145 return x.Deferred(function(n) {
1146 x.each(t, function(t, o) {
1147 var a = o[0],
1148 s = x.isFunction(e[t]) && e[t];
1149 i[o[1]](function() {
1150 var e = s && s.apply(this, arguments);
1151 e && x.isFunction(e.promise) ? e.promise().done(n.resolve).fail(n.reject).progress(n.notify) : n[a + "With"](this === r ? n.promise() : this, s ? [e] : arguments)
1152 })
1153 }), e = null
1154 }).promise()
1155 },
1156 promise: function(e) {
1157 return null != e ? x.extend(e, r) : r
1158 }
1159 },
1160 i = {};
1161 return r.pipe = r.then, x.each(t, function(e, o) {
1162 var a = o[2],
1163 s = o[3];
1164 r[o[1]] = a.add, s && a.add(function() {
1165 n = s
1166 }, t[1 ^ e][2].disable, t[2][2].lock), i[o[0]] = function() {
1167 return i[o[0] + "With"](this === i ? r : this, arguments), this
1168 }, i[o[0] + "With"] = a.fireWith
1169 }), r.promise(i), e && e.call(i, i), i
1170 },
1171 when: function(e) {
1172 var t = 0,
1173 n = g.call(arguments),
1174 r = n.length,
1175 i = 1 !== r || e && x.isFunction(e.promise) ? r : 0,
1176 o = 1 === i ? e : x.Deferred(),
1177 a = function(e, t, n) {
1178 return function(r) {
1179 t[e] = this, n[e] = arguments.length > 1 ? g.call(arguments) : r, n === s ? o.notifyWith(t, n) : --i || o.resolveWith(t, n)
1180 }
1181 },
1182 s, l, u;
1183 if (r > 1)
1184 for (s = Array(r), l = Array(r), u = Array(r); r > t; t++) n[t] && x.isFunction(n[t].promise) ? n[t].promise().done(a(t, u, n)).fail(o.reject).progress(a(t, l, s)) : --i;
1185 return i || o.resolveWith(u, n), o.promise()
1186 }
1187 }), x.support = function(t) {
1188 var n, r, o, s, l, u, c, p, f, d = a.createElement("div");
1189 if (d.setAttribute("className", "t"), d.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>", n = d.getElementsByTagName("*") || [], r = d.getElementsByTagName("a")[0], !r || !r.style || !n.length) return t;
1190 s = a.createElement("select"), u = s.appendChild(a.createElement("option")), o = d.getElementsByTagName("input")[0], r.style.cssText = "top:1px;float:left;opacity:.5", t.getSetAttribute = "t" !== d.className, t.leadingWhitespace = 3 === d.firstChild.nodeType, t.tbody = !d.getElementsByTagName("tbody").length, t.htmlSerialize = !!d.getElementsByTagName("link").length, t.style = /top/.test(r.getAttribute("style")), t.hrefNormalized = "/a" === r.getAttribute("href"), t.opacity = /^0.5/.test(r.style.opacity), t.cssFloat = !!r.style.cssFloat, t.checkOn = !!o.value, t.optSelected = u.selected, t.enctype = !!a.createElement("form").enctype, t.html5Clone = "<:nav></:nav>" !== a.createElement("nav").cloneNode(!0).outerHTML, t.inlineBlockNeedsLayout = !1, t.shrinkWrapBlocks = !1, t.pixelPosition = !1, t.deleteExpando = !0, t.noCloneEvent = !0, t.reliableMarginRight = !0, t.boxSizingReliable = !0, o.checked = !0, t.noCloneChecked = o.cloneNode(!0).checked, s.disabled = !0, t.optDisabled = !u.disabled;
1191 try {
1192 delete d.test
1193 } catch (h) {
1194 t.deleteExpando = !1
1195 }
1196 o = a.createElement("input"), o.setAttribute("value", ""), t.input = "" === o.getAttribute("value"), o.value = "t", o.setAttribute("type", "radio"), t.radioValue = "t" === o.value, o.setAttribute("checked", "t"), o.setAttribute("name", "t"), l = a.createDocumentFragment(), l.appendChild(o), t.appendChecked = o.checked, t.checkClone = l.cloneNode(!0).cloneNode(!0).lastChild.checked, d.attachEvent && (d.attachEvent("onclick", function() {
1197 t.noCloneEvent = !1
1198 }), d.cloneNode(!0).click());
1199 for (f in {
1200 submit: !0,
1201 change: !0,
1202 focusin: !0
1203 }) d.setAttribute(c = "on" + f, "t"), t[f + "Bubbles"] = c in e || d.attributes[c].expando === !1;
1204 d.style.backgroundClip = "content-box", d.cloneNode(!0).style.backgroundClip = "", t.clearCloneStyle = "content-box" === d.style.backgroundClip;
1205 for (f in x(t)) break;
1206 return t.ownLast = "0" !== f, x(function() {
1207 var n, r, o, s = "padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",
1208 l = a.getElementsByTagName("body")[0];
1209 l && (n = a.createElement("div"), n.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px", l.appendChild(n).appendChild(d), d.innerHTML = "<table><tr><td></td><td>t</td></tr></table>", o = d.getElementsByTagName("td"), o[0].style.cssText = "padding:0;margin:0;border:0;display:none", p = 0 === o[0].offsetHeight, o[0].style.display = "", o[1].style.display = "none", t.reliableHiddenOffsets = p && 0 === o[0].offsetHeight, d.innerHTML = "", d.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;", x.swap(l, null != l.style.zoom ? {
1210 zoom: 1
1211 } : {}, function() {
1212 t.boxSizing = 4 === d.offsetWidth
1213 }), e.getComputedStyle && (t.pixelPosition = "1%" !== (e.getComputedStyle(d, null) || {}).top, t.boxSizingReliable = "4px" === (e.getComputedStyle(d, null) || {
1214 width: "4px"
1215 }).width, r = d.appendChild(a.createElement("div")), r.style.cssText = d.style.cssText = s, r.style.marginRight = r.style.width = "0", d.style.width = "1px", t.reliableMarginRight = !parseFloat((e.getComputedStyle(r, null) || {}).marginRight)), typeof d.style.zoom !== i && (d.innerHTML = "", d.style.cssText = s + "width:1px;padding:1px;display:inline;zoom:1", t.inlineBlockNeedsLayout = 3 === d.offsetWidth, d.style.display = "block", d.innerHTML = "<div></div>", d.firstChild.style.width = "5px", t.shrinkWrapBlocks = 3 !== d.offsetWidth, t.inlineBlockNeedsLayout && (l.style.zoom = 1)), l.removeChild(n), n = d = o = r = null)
1216 }), n = s = l = u = r = o = null, t
1217
1218 }({});
1219 var B = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/,
1220 P = /([A-Z])/g;
1221
1222 function R(e, n, r, i) {
1223 if (x.acceptData(e)) {
1224 var o, a, s = x.expando,
1225 l = e.nodeType,
1226 u = l ? x.cache : e,
1227 c = l ? e[s] : e[s] && s;
1228 if (c && u[c] && (i || u[c].data) || r !== t || "string" != typeof n) return c || (c = l ? e[s] = p.pop() || x.guid++ : s), u[c] || (u[c] = l ? {} : {
1229 toJSON: x.noop
1230 }), ("object" == typeof n || "function" == typeof n) && (i ? u[c] = x.extend(u[c], n) : u[c].data = x.extend(u[c].data, n)), a = u[c], i || (a.data || (a.data = {}), a = a.data), r !== t && (a[x.camelCase(n)] = r), "string" == typeof n ? (o = a[n], null == o && (o = a[x.camelCase(n)])) : o = a, o
1231 }
1232 }
1233
1234 function W(e, t, n) {
1235 if (x.acceptData(e)) {
1236 var r, i, o = e.nodeType,
1237 a = o ? x.cache : e,
1238 s = o ? e[x.expando] : x.expando;
1239 if (a[s]) {
1240 if (t && (r = n ? a[s] : a[s].data)) {
1241 x.isArray(t) ? t = t.concat(x.map(t, x.camelCase)) : t in r ? t = [t] : (t = x.camelCase(t), t = t in r ? [t] : t.split(" ")), i = t.length;
1242 while (i--) delete r[t[i]];
1243 if (n ? !I(r) : !x.isEmptyObject(r)) return
1244 }(n || (delete a[s].data, I(a[s]))) && (o ? x.cleanData([e], !0) : x.support.deleteExpando || a != a.window ? delete a[s] : a[s] = null)
1245 }
1246 }
1247 }
1248 x.extend({
1249 cache: {},
1250 noData: {
1251 applet: !0,
1252 embed: !0,
1253 object: "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
1254 },
1255 hasData: function(e) {
1256 return e = e.nodeType ? x.cache[e[x.expando]] : e[x.expando], !!e && !I(e)
1257 },
1258 data: function(e, t, n) {
1259 return R(e, t, n)
1260 },
1261 removeData: function(e, t) {
1262 return W(e, t)
1263 },
1264 _data: function(e, t, n) {
1265 return R(e, t, n, !0)
1266 },
1267 _removeData: function(e, t) {
1268 return W(e, t, !0)
1269 },
1270 acceptData: function(e) {
1271 if (e.nodeType && 1 !== e.nodeType && 9 !== e.nodeType) return !1;
1272 var t = e.nodeName && x.noData[e.nodeName.toLowerCase()];
1273 return !t || t !== !0 && e.getAttribute("classid") === t
1274 }
1275 }), x.fn.extend({
1276 data: function(e, n) {
1277 var r, i, o = null,
1278 a = 0,
1279 s = this[0];
1280 if (e === t) {
1281 if (this.length && (o = x.data(s), 1 === s.nodeType && !x._data(s, "parsedAttrs"))) {
1282 for (r = s.attributes; r.length > a; a++) i = r[a].name, 0 === i.indexOf("data-") && (i = x.camelCase(i.slice(5)), $(s, i, o[i]));
1283 x._data(s, "parsedAttrs", !0)
1284 }
1285 return o
1286 }
1287 return "object" == typeof e ? this.each(function() {
1288 x.data(this, e)
1289 }) : arguments.length > 1 ? this.each(function() {
1290 x.data(this, e, n)
1291 }) : s ? $(s, e, x.data(s, e)) : null
1292 },
1293 removeData: function(e) {
1294 return this.each(function() {
1295 x.removeData(this, e)
1296 })
1297 }
1298 });
1299
1300 function $(e, n, r) {
1301 if (r === t && 1 === e.nodeType) {
1302 var i = "data-" + n.replace(P, "-$1").toLowerCase();
1303 if (r = e.getAttribute(i), "string" == typeof r) {
1304 try {
1305 r = "true" === r ? !0 : "false" === r ? !1 : "null" === r ? null : +r + "" === r ? +r : B.test(r) ? x.parseJSON(r) : r
1306 } catch (o) {}
1307 x.data(e, n, r)
1308 } else r = t
1309 }
1310 return r
1311 }
1312
1313 function I(e) {
1314 var t;
1315 for (t in e)
1316 if (("data" !== t || !x.isEmptyObject(e[t])) && "toJSON" !== t) return !1;
1317 return !0
1318 }
1319 x.extend({
1320 queue: function(e, n, r) {
1321 var i;
1322 return e ? (n = (n || "fx") + "queue", i = x._data(e, n), r && (!i || x.isArray(r) ? i = x._data(e, n, x.makeArray(r)) : i.push(r)), i || []) : t
1323 },
1324 dequeue: function(e, t) {
1325 t = t || "fx";
1326 var n = x.queue(e, t),
1327 r = n.length,
1328 i = n.shift(),
1329 o = x._queueHooks(e, t),
1330 a = function() {
1331 x.dequeue(e, t)
1332 };
1333 "inprogress" === i && (i = n.shift(), r--), i && ("fx" === t && n.unshift("inprogress"), delete o.stop, i.call(e, a, o)), !r && o && o.empty.fire()
1334 },
1335 _queueHooks: function(e, t) {
1336 var n = t + "queueHooks";
1337 return x._data(e, n) || x._data(e, n, {
1338 empty: x.Callbacks("once memory").add(function() {
1339 x._removeData(e, t + "queue"), x._removeData(e, n)
1340 })
1341 })
1342 }
1343 }), x.fn.extend({
1344 queue: function(e, n) {
1345 var r = 2;
1346 return "string" != typeof e && (n = e, e = "fx", r--), r > arguments.length ? x.queue(this[0], e) : n === t ? this : this.each(function() {
1347 var t = x.queue(this, e, n);
1348 x._queueHooks(this, e), "fx" === e && "inprogress" !== t[0] && x.dequeue(this, e)
1349 })
1350 },
1351 dequeue: function(e) {
1352 return this.each(function() {
1353 x.dequeue(this, e)
1354 })
1355 },
1356 delay: function(e, t) {
1357 return e = x.fx ? x.fx.speeds[e] || e : e, t = t || "fx", this.queue(t, function(t, n) {
1358 var r = setTimeout(t, e);
1359 n.stop = function() {
1360 clearTimeout(r)
1361 }
1362 })
1363 },
1364 clearQueue: function(e) {
1365 return this.queue(e || "fx", [])
1366 },
1367 promise: function(e, n) {
1368 var r, i = 1,
1369 o = x.Deferred(),
1370 a = this,
1371 s = this.length,
1372 l = function() {
1373 --i || o.resolveWith(a, [a])
1374 };
1375 "string" != typeof e && (n = e, e = t), e = e || "fx";
1376 while (s--) r = x._data(a[s], e + "queueHooks"), r && r.empty && (i++, r.empty.add(l));
1377 return l(), o.promise(n)
1378 }
1379 });
1380 var z, X, U = /[\t\r\n\f]/g,
1381 V = /\r/g,
1382 Y = /^(?:input|select|textarea|button|object)$/i,
1383 J = /^(?:a|area)$/i,
1384 G = /^(?:checked|selected)$/i,
1385 Q = x.support.getSetAttribute,
1386 K = x.support.input;
1387 x.fn.extend({
1388 attr: function(e, t) {
1389 return x.access(this, x.attr, e, t, arguments.length > 1)
1390 },
1391 removeAttr: function(e) {
1392 return this.each(function() {
1393 x.removeAttr(this, e)
1394 })
1395 },
1396 prop: function(e, t) {
1397 return x.access(this, x.prop, e, t, arguments.length > 1)
1398 },
1399 removeProp: function(e) {
1400 return e = x.propFix[e] || e, this.each(function() {
1401 try {
1402 this[e] = t, delete this[e]
1403 } catch (n) {}
1404 })
1405 },
1406 addClass: function(e) {
1407 var t, n, r, i, o, a = 0,
1408 s = this.length,
1409 l = "string" == typeof e && e;
1410 if (x.isFunction(e)) return this.each(function(t) {
1411 x(this).addClass(e.call(this, t, this.className))
1412 });
1413 if (l)
1414 for (t = (e || "").match(T) || []; s > a; a++)
1415 if (n = this[a], r = 1 === n.nodeType && (n.className ? (" " + n.className + " ").replace(U, " ") : " ")) {
1416 o = 0;
1417 while (i = t[o++]) 0 > r.indexOf(" " + i + " ") && (r += i + " ");
1418 n.className = x.trim(r)
1419 }
1420 return this
1421 },
1422 removeClass: function(e) {
1423 var t, n, r, i, o, a = 0,
1424 s = this.length,
1425 l = 0 === arguments.length || "string" == typeof e && e;
1426 if (x.isFunction(e)) return this.each(function(t) {
1427 x(this).removeClass(e.call(this, t, this.className))
1428 });
1429 if (l)
1430 for (t = (e || "").match(T) || []; s > a; a++)
1431 if (n = this[a], r = 1 === n.nodeType && (n.className ? (" " + n.className + " ").replace(U, " ") : "")) {
1432 o = 0;
1433 while (i = t[o++])
1434 while (r.indexOf(" " + i + " ") >= 0) r = r.replace(" " + i + " ", " ");
1435 n.className = e ? x.trim(r) : ""
1436 }
1437 return this
1438 },
1439 toggleClass: function(e, t) {
1440 var n = typeof e;
1441 return "boolean" == typeof t && "string" === n ? t ? this.addClass(e) : this.removeClass(e) : x.isFunction(e) ? this.each(function(n) {
1442 x(this).toggleClass(e.call(this, n, this.className, t), t)
1443 }) : this.each(function() {
1444 if ("string" === n) {
1445 var t, r = 0,
1446 o = x(this),
1447 a = e.match(T) || [];
1448 while (t = a[r++]) o.hasClass(t) ? o.removeClass(t) : o.addClass(t)
1449 } else(n === i || "boolean" === n) && (this.className && x._data(this, "__className__", this.className), this.className = this.className || e === !1 ? "" : x._data(this, "__className__") || "")
1450 })
1451 },
1452 hasClass: function(e) {
1453 var t = " " + e + " ",
1454 n = 0,
1455 r = this.length;
1456 for (; r > n; n++)
1457 if (1 === this[n].nodeType && (" " + this[n].className + " ").replace(U, " ").indexOf(t) >= 0) return !0;
1458 return !1
1459 },
1460 val: function(e) {
1461 var n, r, i, o = this[0]; {
1462 if (arguments.length) return i = x.isFunction(e), this.each(function(n) {
1463 var o;
1464 1 === this.nodeType && (o = i ? e.call(this, n, x(this).val()) : e, null == o ? o = "" : "number" == typeof o ? o += "" : x.isArray(o) && (o = x.map(o, function(e) {
1465 return null == e ? "" : e + ""
1466 })), r = x.valHooks[this.type] || x.valHooks[this.nodeName.toLowerCase()], r && "set" in r && r.set(this, o, "value") !== t || (this.value = o))
1467 });
1468 if (o) return r = x.valHooks[o.type] || x.valHooks[o.nodeName.toLowerCase()], r && "get" in r && (n = r.get(o, "value")) !== t ? n : (n = o.value, "string" == typeof n ? n.replace(V, "") : null == n ? "" : n)
1469 }
1470 }
1471 }), x.extend({
1472 valHooks: {
1473 option: {
1474 get: function(e) {
1475 var t = x.find.attr(e, "value");
1476 return null != t ? t : e.text
1477 }
1478 },
1479 select: {
1480 get: function(e) {
1481 var t, n, r = e.options,
1482 i = e.selectedIndex,
1483 o = "select-one" === e.type || 0 > i,
1484 a = o ? null : [],
1485 s = o ? i + 1 : r.length,
1486 l = 0 > i ? s : o ? i : 0;
1487 for (; s > l; l++)
1488 if (n = r[l], !(!n.selected && l !== i || (x.support.optDisabled ? n.disabled : null !== n.getAttribute("disabled")) || n.parentNode.disabled && x.nodeName(n.parentNode, "optgroup"))) {
1489 if (t = x(n).val(), o) return t;
1490 a.push(t)
1491 }
1492 return a
1493 },
1494 set: function(e, t) {
1495 var n, r, i = e.options,
1496 o = x.makeArray(t),
1497 a = i.length;
1498 while (a--) r = i[a], (r.selected = x.inArray(x(r).val(), o) >= 0) && (n = !0);
1499 return n || (e.selectedIndex = -1), o
1500 }
1501 }
1502 },
1503 attr: function(e, n, r) {
1504 var o, a, s = e.nodeType;
1505 if (e && 3 !== s && 8 !== s && 2 !== s) return typeof e.getAttribute === i ? x.prop(e, n, r) : (1 === s && x.isXMLDoc(e) || (n = n.toLowerCase(), o = x.attrHooks[n] || (x.expr.match.bool.test(n) ? X : z)), r === t ? o && "get" in o && null !== (a = o.get(e, n)) ? a : (a = x.find.attr(e, n), null == a ? t : a) : null !== r ? o && "set" in o && (a = o.set(e, r, n)) !== t ? a : (e.setAttribute(n, r + ""), r) : (x.removeAttr(e, n), t))
1506 },
1507 removeAttr: function(e, t) {
1508 var n, r, i = 0,
1509 o = t && t.match(T);
1510 if (o && 1 === e.nodeType)
1511 while (n = o[i++]) r = x.propFix[n] || n, x.expr.match.bool.test(n) ? K && Q || !G.test(n) ? e[r] = !1 : e[x.camelCase("default-" + n)] = e[r] = !1 : x.attr(e, n, ""), e.removeAttribute(Q ? n : r)
1512 },
1513 attrHooks: {
1514 type: {
1515 set: function(e, t) {
1516 if (!x.support.radioValue && "radio" === t && x.nodeName(e, "input")) {
1517 var n = e.value;
1518 return e.setAttribute("type", t), n && (e.value = n), t
1519 }
1520 }
1521 }
1522 },
1523 propFix: {
1524 "for": "htmlFor",
1525 "class": "className"
1526 },
1527 prop: function(e, n, r) {
1528 var i, o, a, s = e.nodeType;
1529 if (e && 3 !== s && 8 !== s && 2 !== s) return a = 1 !== s || !x.isXMLDoc(e), a && (n = x.propFix[n] || n, o = x.propHooks[n]), r !== t ? o && "set" in o && (i = o.set(e, r, n)) !== t ? i : e[n] = r : o && "get" in o && null !== (i = o.get(e, n)) ? i : e[n]
1530 },
1531 propHooks: {
1532 tabIndex: {
1533 get: function(e) {
1534 var t = x.find.attr(e, "tabindex");
1535 return t ? parseInt(t, 10) : Y.test(e.nodeName) || J.test(e.nodeName) && e.href ? 0 : -1
1536 }
1537 }
1538 }
1539 }), X = {
1540 set: function(e, t, n) {
1541 return t === !1 ? x.removeAttr(e, n) : K && Q || !G.test(n) ? e.setAttribute(!Q && x.propFix[n] || n, n) : e[x.camelCase("default-" + n)] = e[n] = !0, n
1542 }
1543 }, x.each(x.expr.match.bool.source.match(/\w+/g), function(e, n) {
1544 var r = x.expr.attrHandle[n] || x.find.attr;
1545 x.expr.attrHandle[n] = K && Q || !G.test(n) ? function(e, n, i) {
1546 var o = x.expr.attrHandle[n],
1547 a = i ? t : (x.expr.attrHandle[n] = t) != r(e, n, i) ? n.toLowerCase() : null;
1548 return x.expr.attrHandle[n] = o, a
1549 } : function(e, n, r) {
1550 return r ? t : e[x.camelCase("default-" + n)] ? n.toLowerCase() : null
1551 }
1552 }), K && Q || (x.attrHooks.value = {
1553 set: function(e, n, r) {
1554 return x.nodeName(e, "input") ? (e.defaultValue = n, t) : z && z.set(e, n, r)
1555 }
1556 }), Q || (z = {
1557 set: function(e, n, r) {
1558 var i = e.getAttributeNode(r);
1559 return i || e.setAttributeNode(i = e.ownerDocument.createAttribute(r)), i.value = n += "", "value" === r || n === e.getAttribute(r) ? n : t
1560 }
1561 }, x.expr.attrHandle.id = x.expr.attrHandle.name = x.expr.attrHandle.coords = function(e, n, r) {
1562 var i;
1563 return r ? t : (i = e.getAttributeNode(n)) && "" !== i.value ? i.value : null
1564 }, x.valHooks.button = {
1565 get: function(e, n) {
1566 var r = e.getAttributeNode(n);
1567 return r && r.specified ? r.value : t
1568 },
1569 set: z.set
1570 }, x.attrHooks.contenteditable = {
1571 set: function(e, t, n) {
1572 z.set(e, "" === t ? !1 : t, n)
1573 }
1574 }, x.each(["width", "height"], function(e, n) {
1575 x.attrHooks[n] = {
1576 set: function(e, r) {
1577 return "" === r ? (e.setAttribute(n, "auto"), r) : t
1578 }
1579 }
1580 })), x.support.hrefNormalized || x.each(["href", "src"], function(e, t) {
1581 x.propHooks[t] = {
1582 get: function(e) {
1583 return e.getAttribute(t, 4)
1584 }
1585 }
1586 }), x.support.style || (x.attrHooks.style = {
1587 get: function(e) {
1588 return e.style.cssText || t
1589 },
1590 set: function(e, t) {
1591 return e.style.cssText = t + ""
1592 }
1593 }), x.support.optSelected || (x.propHooks.selected = {
1594 get: function(e) {
1595 var t = e.parentNode;
1596 return t && (t.selectedIndex, t.parentNode && t.parentNode.selectedIndex), null
1597 }
1598 }), x.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], function() {
1599 x.propFix[this.toLowerCase()] = this
1600 }), x.support.enctype || (x.propFix.enctype = "encoding"), x.each(["radio", "checkbox"], function() {
1601 x.valHooks[this] = {
1602 set: function(e, n) {
1603 return x.isArray(n) ? e.checked = x.inArray(x(e).val(), n) >= 0 : t
1604 }
1605 }, x.support.checkOn || (x.valHooks[this].get = function(e) {
1606 return null === e.getAttribute("value") ? "on" : e.value
1607 })
1608 });
1609 var Z = /^(?:input|select|textarea)$/i,
1610 et = /^key/,
1611 tt = /^(?:mouse|contextmenu)|click/,
1612 nt = /^(?:focusinfocus|focusoutblur)$/,
1613 rt = /^([^.]*)(?:\.(.+)|)$/;
1614
1615 function it() {
1616 return !0
1617 }
1618
1619 function ot() {
1620 return !1
1621 }
1622
1623 function at() {
1624 try {
1625 return a.activeElement
1626 } catch (e) {}
1627 }
1628 x.event = {
1629 global: {},
1630 add: function(e, n, r, o, a) {
1631 var s, l, u, c, p, f, d, h, g, m, y, v = x._data(e);
1632 if (v) {
1633 r.handler && (c = r, r = c.handler, a = c.selector), r.guid || (r.guid = x.guid++), (l = v.events) || (l = v.events = {}), (f = v.handle) || (f = v.handle = function(e) {
1634 return typeof x === i || e && x.event.triggered === e.type ? t : x.event.dispatch.apply(f.elem, arguments)
1635 }, f.elem = e), n = (n || "").match(T) || [""], u = n.length;
1636 while (u--) s = rt.exec(n[u]) || [], g = y = s[1], m = (s[2] || "").split(".").sort(), g && (p = x.event.special[g] || {}, g = (a ? p.delegateType : p.bindType) || g, p = x.event.special[g] || {}, d = x.extend({
1637 type: g,
1638 origType: y,
1639 data: o,
1640 handler: r,
1641 guid: r.guid,
1642 selector: a,
1643 needsContext: a && x.expr.match.needsContext.test(a),
1644 namespace: m.join(".")
1645 }, c), (h = l[g]) || (h = l[g] = [], h.delegateCount = 0, p.setup && p.setup.call(e, o, m, f) !== !1 || (e.addEventListener ? e.addEventListener(g, f, !1) : e.attachEvent && e.attachEvent("on" + g, f))), p.add && (p.add.call(e, d), d.handler.guid || (d.handler.guid = r.guid)), a ? h.splice(h.delegateCount++, 0, d) : h.push(d), x.event.global[g] = !0);
1646 e = null
1647 }
1648 },
1649 remove: function(e, t, n, r, i) {
1650 var o, a, s, l, u, c, p, f, d, h, g, m = x.hasData(e) && x._data(e);
1651 if (m && (c = m.events)) {
1652 t = (t || "").match(T) || [""], u = t.length;
1653 while (u--)
1654 if (s = rt.exec(t[u]) || [], d = g = s[1], h = (s[2] || "").split(".").sort(), d) {
1655 p = x.event.special[d] || {}, d = (r ? p.delegateType : p.bindType) || d, f = c[d] || [], s = s[2] && RegExp("(^|\\.)" + h.join("\\.(?:.*\\.|)") + "(\\.|$)"), l = o = f.length;
1656 while (o--) a = f[o], !i && g !== a.origType || n && n.guid !== a.guid || s && !s.test(a.namespace) || r && r !== a.selector && ("**" !== r || !a.selector) || (f.splice(o, 1), a.selector && f.delegateCount--, p.remove && p.remove.call(e, a));
1657 l && !f.length && (p.teardown && p.teardown.call(e, h, m.handle) !== !1 || x.removeEvent(e, d, m.handle), delete c[d])
1658 } else
1659 for (d in c) x.event.remove(e, d + t[u], n, r, !0);
1660 x.isEmptyObject(c) && (delete m.handle, x._removeData(e, "events"))
1661 }
1662 },
1663 trigger: function(n, r, i, o) {
1664 var s, l, u, c, p, f, d, h = [i || a],
1665 g = v.call(n, "type") ? n.type : n,
1666 m = v.call(n, "namespace") ? n.namespace.split(".") : [];
1667 if (u = f = i = i || a, 3 !== i.nodeType && 8 !== i.nodeType && !nt.test(g + x.event.triggered) && (g.indexOf(".") >= 0 && (m = g.split("."), g = m.shift(), m.sort()), l = 0 > g.indexOf(":") && "on" + g, n = n[x.expando] ? n : new x.Event(g, "object" == typeof n && n), n.isTrigger = o ? 2 : 3, n.namespace = m.join("."), n.namespace_re = n.namespace ? RegExp("(^|\\.)" + m.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, n.result = t, n.target || (n.target = i), r = null == r ? [n] : x.makeArray(r, [n]), p = x.event.special[g] || {}, o || !p.trigger || p.trigger.apply(i, r) !== !1)) {
1668 if (!o && !p.noBubble && !x.isWindow(i)) {
1669 for (c = p.delegateType || g, nt.test(c + g) || (u = u.parentNode); u; u = u.parentNode) h.push(u), f = u;
1670 f === (i.ownerDocument || a) && h.push(f.defaultView || f.parentWindow || e)
1671 }
1672 d = 0;
1673 while ((u = h[d++]) && !n.isPropagationStopped()) n.type = d > 1 ? c : p.bindType || g, s = (x._data(u, "events") || {})[n.type] && x._data(u, "handle"), s && s.apply(u, r), s = l && u[l], s && x.acceptData(u) && s.apply && s.apply(u, r) === !1 && n.preventDefault();
1674 if (n.type = g, !o && !n.isDefaultPrevented() && (!p._default || p._default.apply(h.pop(), r) === !1) && x.acceptData(i) && l && i[g] && !x.isWindow(i)) {
1675 f = i[l], f && (i[l] = null), x.event.triggered = g;
1676 try {
1677 i[g]()
1678 } catch (y) {}
1679 x.event.triggered = t, f && (i[l] = f)
1680 }
1681 return n.result
1682 }
1683 },
1684 dispatch: function(e) {
1685 e = x.event.fix(e);
1686 var n, r, i, o, a, s = [],
1687 l = g.call(arguments),
1688 u = (x._data(this, "events") || {})[e.type] || [],
1689 c = x.event.special[e.type] || {};
1690 if (l[0] = e, e.delegateTarget = this, !c.preDispatch || c.preDispatch.call(this, e) !== !1) {
1691 s = x.event.handlers.call(this, e, u), n = 0;
1692 while ((o = s[n++]) && !e.isPropagationStopped()) {
1693 e.currentTarget = o.elem, a = 0;
1694 while ((i = o.handlers[a++]) && !e.isImmediatePropagationStopped())(!e.namespace_re || e.namespace_re.test(i.namespace)) && (e.handleObj = i, e.data = i.data, r = ((x.event.special[i.origType] || {}).handle || i.handler).apply(o.elem, l), r !== t && (e.result = r) === !1 && (e.preventDefault(), e.stopPropagation()))
1695 }
1696 return c.postDispatch && c.postDispatch.call(this, e), e.result
1697 }
1698 },
1699 handlers: function(e, n) {
1700 var r, i, o, a, s = [],
1701 l = n.delegateCount,
1702 u = e.target;
1703 if (l && u.nodeType && (!e.button || "click" !== e.type))
1704 for (; u != this; u = u.parentNode || this)
1705 if (1 === u.nodeType && (u.disabled !== !0 || "click" !== e.type)) {
1706 for (o = [], a = 0; l > a; a++) i = n[a], r = i.selector + " ", o[r] === t && (o[r] = i.needsContext ? x(r, this).index(u) >= 0 : x.find(r, this, null, [u]).length), o[r] && o.push(i);
1707 o.length && s.push({
1708 elem: u,
1709 handlers: o
1710 })
1711 }
1712 return n.length > l && s.push({
1713 elem: this,
1714 handlers: n.slice(l)
1715 }), s
1716 },
1717 fix: function(e) {
1718 if (e[x.expando]) return e;
1719 var t, n, r, i = e.type,
1720 o = e,
1721 s = this.fixHooks[i];
1722 s || (this.fixHooks[i] = s = tt.test(i) ? this.mouseHooks : et.test(i) ? this.keyHooks : {}), r = s.props ? this.props.concat(s.props) : this.props, e = new x.Event(o), t = r.length;
1723 while (t--) n = r[t], e[n] = o[n];
1724 return e.target || (e.target = o.srcElement || a), 3 === e.target.nodeType && (e.target = e.target.parentNode), e.metaKey = !!e.metaKey, s.filter ? s.filter(e, o) : e
1725 },
1726 props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
1727 fixHooks: {},
1728 keyHooks: {
1729 props: "char charCode key keyCode".split(" "),
1730 filter: function(e, t) {
1731 return null == e.which && (e.which = null != t.charCode ? t.charCode : t.keyCode), e
1732 }
1733 },
1734 mouseHooks: {
1735 props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
1736 filter: function(e, n) {
1737 var r, i, o, s = n.button,
1738 l = n.fromElement;
1739 return null == e.pageX && null != n.clientX && (i = e.target.ownerDocument || a, o = i.documentElement, r = i.body, e.pageX = n.clientX + (o && o.scrollLeft || r && r.scrollLeft || 0) - (o && o.clientLeft || r && r.clientLeft || 0), e.pageY = n.clientY + (o && o.scrollTop || r && r.scrollTop || 0) - (o && o.clientTop || r && r.clientTop || 0)), !e.relatedTarget && l && (e.relatedTarget = l === e.target ? n.toElement : l), e.which || s === t || (e.which = 1 & s ? 1 : 2 & s ? 3 : 4 & s ? 2 : 0), e
1740 }
1741 },
1742 special: {
1743 load: {
1744 noBubble: !0
1745 },
1746 focus: {
1747 trigger: function() {
1748 if (this !== at() && this.focus) try {
1749 return this.focus(), !1
1750 } catch (e) {}
1751 },
1752 delegateType: "focusin"
1753 },
1754 blur: {
1755 trigger: function() {
1756 return this === at() && this.blur ? (this.blur(), !1) : t
1757 },
1758 delegateType: "focusout"
1759 },
1760 click: {
1761 trigger: function() {
1762 return x.nodeName(this, "input") && "checkbox" === this.type && this.click ? (this.click(), !1) : t
1763 },
1764 _default: function(e) {
1765 return x.nodeName(e.target, "a")
1766 }
1767 },
1768 beforeunload: {
1769 postDispatch: function(e) {
1770 e.result !== t && (e.originalEvent.returnValue = e.result)
1771 }
1772 }
1773 },
1774 simulate: function(e, t, n, r) {
1775 var i = x.extend(new x.Event, n, {
1776 type: e,
1777 isSimulated: !0,
1778 originalEvent: {}
1779 });
1780 r ? x.event.trigger(i, null, t) : x.event.dispatch.call(t, i), i.isDefaultPrevented() && n.preventDefault()
1781 }
1782 }, x.removeEvent = a.removeEventListener ? function(e, t, n) {
1783 e.removeEventListener && e.removeEventListener(t, n, !1)
1784 } : function(e, t, n) {
1785 var r = "on" + t;
1786 e.detachEvent && (typeof e[r] === i && (e[r] = null), e.detachEvent(r, n))
1787 }, x.Event = function(e, n) {
1788 return this instanceof x.Event ? (e && e.type ? (this.originalEvent = e, this.type = e.type, this.isDefaultPrevented = e.defaultPrevented || e.returnValue === !1 || e.getPreventDefault && e.getPreventDefault() ? it : ot) : this.type = e, n && x.extend(this, n), this.timeStamp = e && e.timeStamp || x.now(), this[x.expando] = !0, t) : new x.Event(e, n)
1789 }, x.Event.prototype = {
1790 isDefaultPrevented: ot,
1791 isPropagationStopped: ot,
1792 isImmediatePropagationStopped: ot,
1793 preventDefault: function() {
1794 var e = this.originalEvent;
1795 this.isDefaultPrevented = it, e && (e.preventDefault ? e.preventDefault() : e.returnValue = !1)
1796 },
1797 stopPropagation: function() {
1798 var e = this.originalEvent;
1799 this.isPropagationStopped = it, e && (e.stopPropagation && e.stopPropagation(), e.cancelBubble = !0)
1800 },
1801 stopImmediatePropagation: function() {
1802 this.isImmediatePropagationStopped = it, this.stopPropagation()
1803 }
1804 }, x.each({
1805 mouseenter: "mouseover",
1806 mouseleave: "mouseout"
1807 }, function(e, t) {
1808 x.event.special[e] = {
1809 delegateType: t,
1810 bindType: t,
1811 handle: function(e) {
1812 var n, r = this,
1813 i = e.relatedTarget,
1814 o = e.handleObj;
1815 return (!i || i !== r && !x.contains(r, i)) && (e.type = o.origType, n = o.handler.apply(this, arguments), e.type = t), n
1816 }
1817 }
1818 }), x.support.submitBubbles || (x.event.special.submit = {
1819 setup: function() {
1820 return x.nodeName(this, "form") ? !1 : (x.event.add(this, "click._submit keypress._submit", function(e) {
1821 var n = e.target,
1822 r = x.nodeName(n, "input") || x.nodeName(n, "button") ? n.form : t;
1823 r && !x._data(r, "submitBubbles") && (x.event.add(r, "submit._submit", function(e) {
1824 e._submit_bubble = !0
1825 }), x._data(r, "submitBubbles", !0))
1826 }), t)
1827 },
1828 postDispatch: function(e) {
1829 e._submit_bubble && (delete e._submit_bubble, this.parentNode && !e.isTrigger && x.event.simulate("submit", this.parentNode, e, !0))
1830 },
1831 teardown: function() {
1832 return x.nodeName(this, "form") ? !1 : (x.event.remove(this, "._submit"), t)
1833 }
1834 }), x.support.changeBubbles || (x.event.special.change = {
1835 setup: function() {
1836 return Z.test(this.nodeName) ? (("checkbox" === this.type || "radio" === this.type) && (x.event.add(this, "propertychange._change", function(e) {
1837 "checked" === e.originalEvent.propertyName && (this._just_changed = !0)
1838 }), x.event.add(this, "click._change", function(e) {
1839 this._just_changed && !e.isTrigger && (this._just_changed = !1), x.event.simulate("change", this, e, !0)
1840 })), !1) : (x.event.add(this, "beforeactivate._change", function(e) {
1841 var t = e.target;
1842 Z.test(t.nodeName) && !x._data(t, "changeBubbles") && (x.event.add(t, "change._change", function(e) {
1843 !this.parentNode || e.isSimulated || e.isTrigger || x.event.simulate("change", this.parentNode, e, !0)
1844 }), x._data(t, "changeBubbles", !0))
1845 }), t)
1846 },
1847 handle: function(e) {
1848 var n = e.target;
1849 return this !== n || e.isSimulated || e.isTrigger || "radio" !== n.type && "checkbox" !== n.type ? e.handleObj.handler.apply(this, arguments) : t
1850 },
1851 teardown: function() {
1852 return x.event.remove(this, "._change"), !Z.test(this.nodeName)
1853 }
1854 }), x.support.focusinBubbles || x.each({
1855 focus: "focusin",
1856 blur: "focusout"
1857 }, function(e, t) {
1858 var n = 0,
1859 r = function(e) {
1860 x.event.simulate(t, e.target, x.event.fix(e), !0)
1861 };
1862 x.event.special[t] = {
1863 setup: function() {
1864 0 === n++ && a.addEventListener(e, r, !0)
1865 },
1866 teardown: function() {
1867 0 === --n && a.removeEventListener(e, r, !0)
1868 }
1869 }
1870 }), x.fn.extend({
1871 on: function(e, n, r, i, o) {
1872 var a, s;
1873 if ("object" == typeof e) {
1874 "string" != typeof n && (r = r || n, n = t);
1875 for (a in e) this.on(a, n, r, e[a], o);
1876 return this
1877 }
1878 if (null == r && null == i ? (i = n, r = n = t) : null == i && ("string" == typeof n ? (i = r, r = t) : (i = r, r = n, n = t)), i === !1) i = ot;
1879 else if (!i) return this;
1880 return 1 === o && (s = i, i = function(e) {
1881 return x().off(e), s.apply(this, arguments)
1882 }, i.guid = s.guid || (s.guid = x.guid++)), this.each(function() {
1883 x.event.add(this, e, i, r, n)
1884 })
1885 },
1886 one: function(e, t, n, r) {
1887 return this.on(e, t, n, r, 1)
1888 },
1889 off: function(e, n, r) {
1890 var i, o;
1891 if (e && e.preventDefault && e.handleObj) return i = e.handleObj, x(e.delegateTarget).off(i.namespace ? i.origType + "." + i.namespace : i.origType, i.selector, i.handler), this;
1892 if ("object" == typeof e) {
1893 for (o in e) this.off(o, n, e[o]);
1894 return this
1895 }
1896 return (n === !1 || "function" == typeof n) && (r = n, n = t), r === !1 && (r = ot), this.each(function() {
1897 x.event.remove(this, e, r, n)
1898 })
1899 },
1900 trigger: function(e, t) {
1901 return this.each(function() {
1902 x.event.trigger(e, t, this)
1903 })
1904 },
1905 triggerHandler: function(e, n) {
1906 var r = this[0];
1907 return r ? x.event.trigger(e, n, r, !0) : t
1908 }
1909 });
1910 var st = /^.[^:#\[\.,]*$/,
1911 lt = /^(?:parents|prev(?:Until|All))/,
1912 ut = x.expr.match.needsContext,
1913 ct = {
1914 children: !0,
1915 contents: !0,
1916 next: !0,
1917 prev: !0
1918 };
1919 x.fn.extend({
1920 find: function(e) {
1921 var t, n = [],
1922 r = this,
1923 i = r.length;
1924 if ("string" != typeof e) return this.pushStack(x(e).filter(function() {
1925 for (t = 0; i > t; t++)
1926 if (x.contains(r[t], this)) return !0
1927 }));
1928 for (t = 0; i > t; t++) x.find(e, r[t], n);
1929 return n = this.pushStack(i > 1 ? x.unique(n) : n), n.selector = this.selector ? this.selector + " " + e : e, n
1930 },
1931 has: function(e) {
1932 var t, n = x(e, this),
1933 r = n.length;
1934 return this.filter(function() {
1935 for (t = 0; r > t; t++)
1936 if (x.contains(this, n[t])) return !0
1937 })
1938 },
1939 not: function(e) {
1940 return this.pushStack(ft(this, e || [], !0))
1941 },
1942 filter: function(e) {
1943 return this.pushStack(ft(this, e || [], !1))
1944 },
1945 is: function(e) {
1946 return !!ft(this, "string" == typeof e && ut.test(e) ? x(e) : e || [], !1).length
1947 },
1948 closest: function(e, t) {
1949 var n, r = 0,
1950 i = this.length,
1951 o = [],
1952 a = ut.test(e) || "string" != typeof e ? x(e, t || this.context) : 0;
1953 for (; i > r; r++)
1954 for (n = this[r]; n && n !== t; n = n.parentNode)
1955 if (11 > n.nodeType && (a ? a.index(n) > -1 : 1 === n.nodeType && x.find.matchesSelector(n, e))) {
1956 n = o.push(n);
1957 break
1958 }
1959 return this.pushStack(o.length > 1 ? x.unique(o) : o)
1960 },
1961 index: function(e) {
1962 return e ? "string" == typeof e ? x.inArray(this[0], x(e)) : x.inArray(e.jquery ? e[0] : e, this) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1
1963 },
1964 add: function(e, t) {
1965 var n = "string" == typeof e ? x(e, t) : x.makeArray(e && e.nodeType ? [e] : e),
1966 r = x.merge(this.get(), n);
1967 return this.pushStack(x.unique(r))
1968 },
1969 addBack: function(e) {
1970 return this.add(null == e ? this.prevObject : this.prevObject.filter(e))
1971 }
1972 });
1973
1974 function pt(e, t) {
1975 do e = e[t]; while (e && 1 !== e.nodeType);
1976 return e
1977 }
1978 x.each({
1979 parent: function(e) {
1980 var t = e.parentNode;
1981 return t && 11 !== t.nodeType ? t : null
1982 },
1983 parents: function(e) {
1984 return x.dir(e, "parentNode")
1985 },
1986 parentsUntil: function(e, t, n) {
1987 return x.dir(e, "parentNode", n)
1988 },
1989 next: function(e) {
1990 return pt(e, "nextSibling")
1991 },
1992 prev: function(e) {
1993 return pt(e, "previousSibling")
1994 },
1995 nextAll: function(e) {
1996 return x.dir(e, "nextSibling")
1997 },
1998 prevAll: function(e) {
1999 return x.dir(e, "previousSibling")
2000 },
2001 nextUntil: function(e, t, n) {
2002 return x.dir(e, "nextSibling", n)
2003 },
2004 prevUntil: function(e, t, n) {
2005 return x.dir(e, "previousSibling", n)
2006 },
2007 siblings: function(e) {
2008 return x.sibling((e.parentNode || {}).firstChild, e)
2009 },
2010 children: function(e) {
2011 return x.sibling(e.firstChild)
2012 },
2013 contents: function(e) {
2014 return x.nodeName(e, "iframe") ? e.contentDocument || e.contentWindow.document : x.merge([], e.childNodes)
2015 }
2016 }, function(e, t) {
2017 x.fn[e] = function(n, r) {
2018 var i = x.map(this, t, n);
2019 return "Until" !== e.slice(-5) && (r = n), r && "string" == typeof r && (i = x.filter(r, i)), this.length > 1 && (ct[e] || (i = x.unique(i)), lt.test(e) && (i = i.reverse())), this.pushStack(i)
2020 }
2021 }), x.extend({
2022 filter: function(e, t, n) {
2023 var r = t[0];
2024 return n && (e = ":not(" + e + ")"), 1 === t.length && 1 === r.nodeType ? x.find.matchesSelector(r, e) ? [r] : [] : x.find.matches(e, x.grep(t, function(e) {
2025 return 1 === e.nodeType
2026 }))
2027 },
2028 dir: function(e, n, r) {
2029 var i = [],
2030 o = e[n];
2031 while (o && 9 !== o.nodeType && (r === t || 1 !== o.nodeType || !x(o).is(r))) 1 === o.nodeType && i.push(o), o = o[n];
2032 return i
2033 },
2034 sibling: function(e, t) {
2035 var n = [];
2036 for (; e; e = e.nextSibling) 1 === e.nodeType && e !== t && n.push(e);
2037 return n
2038 }
2039 });
2040
2041 function ft(e, t, n) {
2042 if (x.isFunction(t)) return x.grep(e, function(e, r) {
2043 return !!t.call(e, r, e) !== n
2044 });
2045 if (t.nodeType) return x.grep(e, function(e) {
2046 return e === t !== n
2047 });
2048 if ("string" == typeof t) {
2049 if (st.test(t)) return x.filter(t, e, n);
2050 t = x.filter(t, e)
2051 }
2052 return x.grep(e, function(e) {
2053 return x.inArray(e, t) >= 0 !== n
2054 })
2055 }
2056
2057 function dt(e) {
2058 var t = ht.split("|"),
2059 n = e.createDocumentFragment();
2060 if (n.createElement)
2061 while (t.length) n.createElement(t.pop());
2062 return n
2063 }
2064 var ht = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
2065 gt = / jQuery\d+="(?:null|\d+)"/g,
2066 mt = RegExp("<(?:" + ht + ")[\\s/>]", "i"),
2067 yt = /^\s+/,
2068 vt = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
2069 bt = /<([\w:]+)/,
2070 xt = /<tbody/i,
2071 wt = /<|&#?\w+;/,
2072 Tt = /<(?:script|style|link)/i,
2073 Ct = /^(?:checkbox|radio)$/i,
2074 Nt = /checked\s*(?:[^=]|=\s*.checked.)/i,
2075 kt = /^$|\/(?:java|ecma)script/i,
2076 Et = /^true\/(.*)/,
2077 St = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
2078 At = {
2079 option: [1, "<select multiple='multiple'>", "</select>"],
2080 legend: [1, "<fieldset>", "</fieldset>"],
2081 area: [1, "<map>", "</map>"],
2082 param: [1, "<object>", "</object>"],
2083 thead: [1, "<table>", "</table>"],
2084 tr: [2, "<table><tbody>", "</tbody></table>"],
2085 col: [2, "<table><tbody></tbody><colgroup>", "</colgroup></table>"],
2086 td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
2087 _default: x.support.htmlSerialize ? [0, "", ""] : [1, "X<div>", "</div>"]
2088 },
2089 jt = dt(a),
2090 Dt = jt.appendChild(a.createElement("div"));
2091 At.optgroup = At.option, At.tbody = At.tfoot = At.colgroup = At.caption = At.thead, At.th = At.td, x.fn.extend({
2092 text: function(e) {
2093 return x.access(this, function(e) {
2094 return e === t ? x.text(this) : this.empty().append((this[0] && this[0].ownerDocument || a).createTextNode(e))
2095 }, null, e, arguments.length)
2096 },
2097 append: function() {
2098 return this.domManip(arguments, function(e) {
2099 if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
2100 var t = Lt(this, e);
2101 t.appendChild(e)
2102 }
2103 })
2104 },
2105 prepend: function() {
2106 return this.domManip(arguments, function(e) {
2107 if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
2108 var t = Lt(this, e);
2109 t.insertBefore(e, t.firstChild)
2110 }
2111 })
2112 },
2113 before: function() {
2114 return this.domManip(arguments, function(e) {
2115 this.parentNode && this.parentNode.insertBefore(e, this)
2116 })
2117 },
2118 after: function() {
2119 return this.domManip(arguments, function(e) {
2120 this.parentNode && this.parentNode.insertBefore(e, this.nextSibling)
2121 })
2122 },
2123 remove: function(e, t) {
2124 var n, r = e ? x.filter(e, this) : this,
2125 i = 0;
2126 for (; null != (n = r[i]); i++) t || 1 !== n.nodeType || x.cleanData(Ft(n)), n.parentNode && (t && x.contains(n.ownerDocument, n) && _t(Ft(n, "script")), n.parentNode.removeChild(n));
2127 return this
2128 },
2129 empty: function() {
2130 var e, t = 0;
2131 for (; null != (e = this[t]); t++) {
2132 1 === e.nodeType && x.cleanData(Ft(e, !1));
2133 while (e.firstChild) e.removeChild(e.firstChild);
2134 e.options && x.nodeName(e, "select") && (e.options.length = 0)
2135 }
2136 return this
2137 },
2138 clone: function(e, t) {
2139 return e = null == e ? !1 : e, t = null == t ? e : t, this.map(function() {
2140 return x.clone(this, e, t)
2141 })
2142 },
2143 html: function(e) {
2144 return x.access(this, function(e) {
2145 var n = this[0] || {},
2146 r = 0,
2147 i = this.length;
2148 if (e === t) return 1 === n.nodeType ? n.innerHTML.replace(gt, "") : t;
2149 if (!("string" != typeof e || Tt.test(e) || !x.support.htmlSerialize && mt.test(e) || !x.support.leadingWhitespace && yt.test(e) || At[(bt.exec(e) || ["", ""])[1].toLowerCase()])) {
2150 e = e.replace(vt, "<$1></$2>");
2151 try {
2152 for (; i > r; r++) n = this[r] || {}, 1 === n.nodeType && (x.cleanData(Ft(n, !1)), n.innerHTML = e);
2153 n = 0
2154 } catch (o) {}
2155 }
2156 n && this.empty().append(e)
2157 }, null, e, arguments.length)
2158 },
2159 replaceWith: function() {
2160 var e = x.map(this, function(e) {
2161 return [e.nextSibling, e.parentNode]
2162 }),
2163 t = 0;
2164 return this.domManip(arguments, function(n) {
2165 var r = e[t++],
2166 i = e[t++];
2167 i && (r && r.parentNode !== i && (r = this.nextSibling), x(this).remove(), i.insertBefore(n, r))
2168 }, !0), t ? this : this.remove()
2169 },
2170 detach: function(e) {
2171 return this.remove(e, !0)
2172 },
2173 domManip: function(e, t, n) {
2174 e = d.apply([], e);
2175 var r, i, o, a, s, l, u = 0,
2176 c = this.length,
2177 p = this,
2178 f = c - 1,
2179 h = e[0],
2180 g = x.isFunction(h);
2181 if (g || !(1 >= c || "string" != typeof h || x.support.checkClone) && Nt.test(h)) return this.each(function(r) {
2182 var i = p.eq(r);
2183 g && (e[0] = h.call(this, r, i.html())), i.domManip(e, t, n)
2184 });
2185 if (c && (l = x.buildFragment(e, this[0].ownerDocument, !1, !n && this), r = l.firstChild, 1 === l.childNodes.length && (l = r), r)) {
2186 for (a = x.map(Ft(l, "script"), Ht), o = a.length; c > u; u++) i = l, u !== f && (i = x.clone(i, !0, !0), o && x.merge(a, Ft(i, "script"))), t.call(this[u], i, u);
2187 if (o)
2188 for (s = a[a.length - 1].ownerDocument, x.map(a, qt), u = 0; o > u; u++) i = a[u], kt.test(i.type || "") && !x._data(i, "globalEval") && x.contains(s, i) && (i.src ? x._evalUrl(i.src) : x.globalEval((i.text || i.textContent || i.innerHTML || "").replace(St, "")));
2189 l = r = null
2190 }
2191 return this
2192 }
2193 });
2194
2195 function Lt(e, t) {
2196 return x.nodeName(e, "table") && x.nodeName(1 === t.nodeType ? t : t.firstChild, "tr") ? e.getElementsByTagName("tbody")[0] || e.appendChild(e.ownerDocument.createElement("tbody")) : e
2197 }
2198
2199 function Ht(e) {
2200 return e.type = (null !== x.find.attr(e, "type")) + "/" + e.type, e
2201 }
2202
2203 function qt(e) {
2204 var t = Et.exec(e.type);
2205 return t ? e.type = t[1] : e.removeAttribute("type"), e
2206 }
2207
2208 function _t(e, t) {
2209 var n, r = 0;
2210 for (; null != (n = e[r]); r++) x._data(n, "globalEval", !t || x._data(t[r], "globalEval"))
2211 }
2212
2213 function Mt(e, t) {
2214 if (1 === t.nodeType && x.hasData(e)) {
2215 var n, r, i, o = x._data(e),
2216 a = x._data(t, o),
2217 s = o.events;
2218 if (s) {
2219 delete a.handle, a.events = {};
2220 for (n in s)
2221 for (r = 0, i = s[n].length; i > r; r++) x.event.add(t, n, s[n][r])
2222 }
2223 a.data && (a.data = x.extend({}, a.data))
2224 }
2225 }
2226
2227 function Ot(e, t) {
2228 var n, r, i;
2229 if (1 === t.nodeType) {
2230 if (n = t.nodeName.toLowerCase(), !x.support.noCloneEvent && t[x.expando]) {
2231 i = x._data(t);
2232 for (r in i.events) x.removeEvent(t, r, i.handle);
2233 t.removeAttribute(x.expando)
2234 }
2235 "script" === n && t.text !== e.text ? (Ht(t).text = e.text, qt(t)) : "object" === n ? (t.parentNode && (t.outerHTML = e.outerHTML), x.support.html5Clone && e.innerHTML && !x.trim(t.innerHTML) && (t.innerHTML = e.innerHTML)) : "input" === n && Ct.test(e.type) ? (t.defaultChecked = t.checked = e.checked, t.value !== e.value && (t.value = e.value)) : "option" === n ? t.defaultSelected = t.selected = e.defaultSelected : ("input" === n || "textarea" === n) && (t.defaultValue = e.defaultValue)
2236 }
2237 }
2238 x.each({
2239 appendTo: "append",
2240 prependTo: "prepend",
2241 insertBefore: "before",
2242 insertAfter: "after",
2243 replaceAll: "replaceWith"
2244 }, function(e, t) {
2245 x.fn[e] = function(e) {
2246 var n, r = 0,
2247 i = [],
2248 o = x(e),
2249 a = o.length - 1;
2250 for (; a >= r; r++) n = r === a ? this : this.clone(!0), x(o[r])[t](n), h.apply(i, n.get());
2251 return this.pushStack(i)
2252 }
2253 });
2254
2255 function Ft(e, n) {
2256 var r, o, a = 0,
2257 s = typeof e.getElementsByTagName !== i ? e.getElementsByTagName(n || "*") : typeof e.querySelectorAll !== i ? e.querySelectorAll(n || "*") : t;
2258 if (!s)
2259 for (s = [], r = e.childNodes || e; null != (o = r[a]); a++)!n || x.nodeName(o, n) ? s.push(o) : x.merge(s, Ft(o, n));
2260 return n === t || n && x.nodeName(e, n) ? x.merge([e], s) : s
2261 }
2262
2263 function Bt(e) {
2264 Ct.test(e.type) && (e.defaultChecked = e.checked)
2265 }
2266 x.extend({
2267 clone: function(e, t, n) {
2268 var r, i, o, a, s, l = x.contains(e.ownerDocument, e);
2269 if (x.support.html5Clone || x.isXMLDoc(e) || !mt.test("<" + e.nodeName + ">") ? o = e.cloneNode(!0) : (Dt.innerHTML = e.outerHTML, Dt.removeChild(o = Dt.firstChild)), !(x.support.noCloneEvent && x.support.noCloneChecked || 1 !== e.nodeType && 11 !== e.nodeType || x.isXMLDoc(e)))
2270 for (r = Ft(o), s = Ft(e), a = 0; null != (i = s[a]); ++a) r[a] && Ot(i, r[a]);
2271 if (t)
2272 if (n)
2273 for (s = s || Ft(e), r = r || Ft(o), a = 0; null != (i = s[a]); a++) Mt(i, r[a]);
2274 else Mt(e, o);
2275 return r = Ft(o, "script"), r.length > 0 && _t(r, !l && Ft(e, "script")), r = s = i = null, o
2276 },
2277 buildFragment: function(e, t, n, r) {
2278 var i, o, a, s, l, u, c, p = e.length,
2279 f = dt(t),
2280 d = [],
2281 h = 0;
2282 for (; p > h; h++)
2283 if (o = e[h], o || 0 === o)
2284 if ("object" === x.type(o)) x.merge(d, o.nodeType ? [o] : o);
2285 else if (wt.test(o)) {
2286 s = s || f.appendChild(t.createElement("div")), l = (bt.exec(o) || ["", ""])[1].toLowerCase(), c = At[l] || At._default, s.innerHTML = c[1] + o.replace(vt, "<$1></$2>") + c[2], i = c[0];
2287 while (i--) s = s.lastChild;
2288 if (!x.support.leadingWhitespace && yt.test(o) && d.push(t.createTextNode(yt.exec(o)[0])), !x.support.tbody) {
2289 o = "table" !== l || xt.test(o) ? "<table>" !== c[1] || xt.test(o) ? 0 : s : s.firstChild, i = o && o.childNodes.length;
2290 while (i--) x.nodeName(u = o.childNodes[i], "tbody") && !u.childNodes.length && o.removeChild(u)
2291 }
2292 x.merge(d, s.childNodes), s.textContent = "";
2293 while (s.firstChild) s.removeChild(s.firstChild);
2294 s = f.lastChild
2295 } else d.push(t.createTextNode(o));
2296 s && f.removeChild(s), x.support.appendChecked || x.grep(Ft(d, "input"), Bt), h = 0;
2297 while (o = d[h++])
2298 if ((!r || -1 === x.inArray(o, r)) && (a = x.contains(o.ownerDocument, o), s = Ft(f.appendChild(o), "script"), a && _t(s), n)) {
2299 i = 0;
2300 while (o = s[i++]) kt.test(o.type || "") && n.push(o)
2301 }
2302 return s = null, f
2303 },
2304 cleanData: function(e, t) {
2305 var n, r, o, a, s = 0,
2306 l = x.expando,
2307 u = x.cache,
2308 c = x.support.deleteExpando,
2309 f = x.event.special;
2310 for (; null != (n = e[s]); s++)
2311 if ((t || x.acceptData(n)) && (o = n[l], a = o && u[o])) {
2312 if (a.events)
2313 for (r in a.events) f[r] ? x.event.remove(n, r) : x.removeEvent(n, r, a.handle);
2314
2315 u[o] && (delete u[o], c ? delete n[l] : typeof n.removeAttribute !== i ? n.removeAttribute(l) : n[l] = null, p.push(o))
2316 }
2317 },
2318 _evalUrl: function(e) {
2319 return x.ajax({
2320 url: e,
2321 type: "GET",
2322 dataType: "script",
2323 async: !1,
2324 global: !1,
2325 "throws": !0
2326 })
2327 }
2328 }), x.fn.extend({
2329 wrapAll: function(e) {
2330 if (x.isFunction(e)) return this.each(function(t) {
2331 x(this).wrapAll(e.call(this, t))
2332 });
2333 if (this[0]) {
2334 var t = x(e, this[0].ownerDocument).eq(0).clone(!0);
2335 this[0].parentNode && t.insertBefore(this[0]), t.map(function() {
2336 var e = this;
2337 while (e.firstChild && 1 === e.firstChild.nodeType) e = e.firstChild;
2338 return e
2339 }).append(this)
2340 }
2341 return this
2342 },
2343 wrapInner: function(e) {
2344 return x.isFunction(e) ? this.each(function(t) {
2345 x(this).wrapInner(e.call(this, t))
2346 }) : this.each(function() {
2347 var t = x(this),
2348 n = t.contents();
2349 n.length ? n.wrapAll(e) : t.append(e)
2350 })
2351 },
2352 wrap: function(e) {
2353 var t = x.isFunction(e);
2354 return this.each(function(n) {
2355 x(this).wrapAll(t ? e.call(this, n) : e)
2356 })
2357 },
2358 unwrap: function() {
2359 return this.parent().each(function() {
2360 x.nodeName(this, "body") || x(this).replaceWith(this.childNodes)
2361 }).end()
2362 }
2363 });
2364 var Pt, Rt, Wt, $t = /alpha\([^)]*\)/i,
2365 It = /opacity\s*=\s*([^)]*)/,
2366 zt = /^(top|right|bottom|left)$/,
2367 Xt = /^(none|table(?!-c[ea]).+)/,
2368 Ut = /^margin/,
2369 Vt = RegExp("^(" + w + ")(.*)$", "i"),
2370 Yt = RegExp("^(" + w + ")(?!px)[a-z%]+$", "i"),
2371 Jt = RegExp("^([+-])=(" + w + ")", "i"),
2372 Gt = {
2373 BODY: "block"
2374 },
2375 Qt = {
2376 position: "absolute",
2377 visibility: "hidden",
2378 display: "block"
2379 },
2380 Kt = {
2381 letterSpacing: 0,
2382 fontWeight: 400
2383 },
2384 Zt = ["Top", "Right", "Bottom", "Left"],
2385 en = ["Webkit", "O", "Moz", "ms"];
2386
2387 function tn(e, t) {
2388 if (t in e) return t;
2389 var n = t.charAt(0).toUpperCase() + t.slice(1),
2390 r = t,
2391 i = en.length;
2392 while (i--)
2393 if (t = en[i] + n, t in e) return t;
2394 return r
2395 }
2396
2397 function nn(e, t) {
2398 return e = t || e, "none" === x.css(e, "display") || !x.contains(e.ownerDocument, e)
2399 }
2400
2401 function rn(e, t) {
2402 var n, r, i, o = [],
2403 a = 0,
2404 s = e.length;
2405 for (; s > a; a++) r = e[a], r.style && (o[a] = x._data(r, "olddisplay"), n = r.style.display, t ? (o[a] || "none" !== n || (r.style.display = ""), "" === r.style.display && nn(r) && (o[a] = x._data(r, "olddisplay", ln(r.nodeName)))) : o[a] || (i = nn(r), (n && "none" !== n || !i) && x._data(r, "olddisplay", i ? n : x.css(r, "display"))));
2406 for (a = 0; s > a; a++) r = e[a], r.style && (t && "none" !== r.style.display && "" !== r.style.display || (r.style.display = t ? o[a] || "" : "none"));
2407 return e
2408 }
2409 x.fn.extend({
2410 css: function(e, n) {
2411 return x.access(this, function(e, n, r) {
2412 var i, o, a = {},
2413 s = 0;
2414 if (x.isArray(n)) {
2415 for (o = Rt(e), i = n.length; i > s; s++) a[n[s]] = x.css(e, n[s], !1, o);
2416 return a
2417 }
2418 return r !== t ? x.style(e, n, r) : x.css(e, n)
2419 }, e, n, arguments.length > 1)
2420 },
2421 show: function() {
2422 return rn(this, !0)
2423 },
2424 hide: function() {
2425 return rn(this)
2426 },
2427 toggle: function(e) {
2428 return "boolean" == typeof e ? e ? this.show() : this.hide() : this.each(function() {
2429 nn(this) ? x(this).show() : x(this).hide()
2430 })
2431 }
2432 }), x.extend({
2433 cssHooks: {
2434 opacity: {
2435 get: function(e, t) {
2436 if (t) {
2437 var n = Wt(e, "opacity");
2438 return "" === n ? "1" : n
2439 }
2440 }
2441 }
2442 },
2443 cssNumber: {
2444 columnCount: !0,
2445 fillOpacity: !0,
2446 fontWeight: !0,
2447 lineHeight: !0,
2448 opacity: !0,
2449 order: !0,
2450 orphans: !0,
2451 widows: !0,
2452 zIndex: !0,
2453 zoom: !0
2454 },
2455 cssProps: {
2456 "float": x.support.cssFloat ? "cssFloat" : "styleFloat"
2457 },
2458 style: function(e, n, r, i) {
2459 if (e && 3 !== e.nodeType && 8 !== e.nodeType && e.style) {
2460 var o, a, s, l = x.camelCase(n),
2461 u = e.style;
2462 if (n = x.cssProps[l] || (x.cssProps[l] = tn(u, l)), s = x.cssHooks[n] || x.cssHooks[l], r === t) return s && "get" in s && (o = s.get(e, !1, i)) !== t ? o : u[n];
2463 if (a = typeof r, "string" === a && (o = Jt.exec(r)) && (r = (o[1] + 1) * o[2] + parseFloat(x.css(e, n)), a = "number"), !(null == r || "number" === a && isNaN(r) || ("number" !== a || x.cssNumber[l] || (r += "px"), x.support.clearCloneStyle || "" !== r || 0 !== n.indexOf("background") || (u[n] = "inherit"), s && "set" in s && (r = s.set(e, r, i)) === t))) try {
2464 u[n] = r
2465 } catch (c) {}
2466 }
2467 },
2468 css: function(e, n, r, i) {
2469 var o, a, s, l = x.camelCase(n);
2470 return n = x.cssProps[l] || (x.cssProps[l] = tn(e.style, l)), s = x.cssHooks[n] || x.cssHooks[l], s && "get" in s && (a = s.get(e, !0, r)), a === t && (a = Wt(e, n, i)), "normal" === a && n in Kt && (a = Kt[n]), "" === r || r ? (o = parseFloat(a), r === !0 || x.isNumeric(o) ? o || 0 : a) : a
2471 }
2472 }), e.getComputedStyle ? (Rt = function(t) {
2473 return e.getComputedStyle(t, null)
2474 }, Wt = function(e, n, r) {
2475 var i, o, a, s = r || Rt(e),
2476 l = s ? s.getPropertyValue(n) || s[n] : t,
2477 u = e.style;
2478 return s && ("" !== l || x.contains(e.ownerDocument, e) || (l = x.style(e, n)), Yt.test(l) && Ut.test(n) && (i = u.width, o = u.minWidth, a = u.maxWidth, u.minWidth = u.maxWidth = u.width = l, l = s.width, u.width = i, u.minWidth = o, u.maxWidth = a)), l
2479 }) : a.documentElement.currentStyle && (Rt = function(e) {
2480 return e.currentStyle
2481 }, Wt = function(e, n, r) {
2482 var i, o, a, s = r || Rt(e),
2483 l = s ? s[n] : t,
2484 u = e.style;
2485 return null == l && u && u[n] && (l = u[n]), Yt.test(l) && !zt.test(n) && (i = u.left, o = e.runtimeStyle, a = o && o.left, a && (o.left = e.currentStyle.left), u.left = "fontSize" === n ? "1em" : l, l = u.pixelLeft + "px", u.left = i, a && (o.left = a)), "" === l ? "auto" : l
2486 });
2487
2488 function on(e, t, n) {
2489 var r = Vt.exec(t);
2490 return r ? Math.max(0, r[1] - (n || 0)) + (r[2] || "px") : t
2491 }
2492
2493 function an(e, t, n, r, i) {
2494 var o = n === (r ? "border" : "content") ? 4 : "width" === t ? 1 : 0,
2495 a = 0;
2496 for (; 4 > o; o += 2) "margin" === n && (a += x.css(e, n + Zt[o], !0, i)), r ? ("content" === n && (a -= x.css(e, "padding" + Zt[o], !0, i)), "margin" !== n && (a -= x.css(e, "border" + Zt[o] + "Width", !0, i))) : (a += x.css(e, "padding" + Zt[o], !0, i), "padding" !== n && (a += x.css(e, "border" + Zt[o] + "Width", !0, i)));
2497 return a
2498 }
2499
2500 function sn(e, t, n) {
2501 var r = !0,
2502 i = "width" === t ? e.offsetWidth : e.offsetHeight,
2503 o = Rt(e),
2504 a = x.support.boxSizing && "border-box" === x.css(e, "boxSizing", !1, o);
2505 if (0 >= i || null == i) {
2506 if (i = Wt(e, t, o), (0 > i || null == i) && (i = e.style[t]), Yt.test(i)) return i;
2507 r = a && (x.support.boxSizingReliable || i === e.style[t]), i = parseFloat(i) || 0
2508 }
2509 return i + an(e, t, n || (a ? "border" : "content"), r, o) + "px"
2510 }
2511
2512 function ln(e) {
2513 var t = a,
2514 n = Gt[e];
2515 return n || (n = un(e, t), "none" !== n && n || (Pt = (Pt || x("<iframe frameborder='0' width='0' height='0'/>").css("cssText", "display:block !important")).appendTo(t.documentElement), t = (Pt[0].contentWindow || Pt[0].contentDocument).document, t.write("<!doctype html><html><body>"), t.close(), n = un(e, t), Pt.detach()), Gt[e] = n), n
2516 }
2517
2518 function un(e, t) {
2519 var n = x(t.createElement(e)).appendTo(t.body),
2520 r = x.css(n[0], "display");
2521 return n.remove(), r
2522 }
2523 x.each(["height", "width"], function(e, n) {
2524 x.cssHooks[n] = {
2525 get: function(e, r, i) {
2526 return r ? 0 === e.offsetWidth && Xt.test(x.css(e, "display")) ? x.swap(e, Qt, function() {
2527 return sn(e, n, i)
2528 }) : sn(e, n, i) : t
2529 },
2530 set: function(e, t, r) {
2531 var i = r && Rt(e);
2532 return on(e, t, r ? an(e, n, r, x.support.boxSizing && "border-box" === x.css(e, "boxSizing", !1, i), i) : 0)
2533 }
2534 }
2535 }), x.support.opacity || (x.cssHooks.opacity = {
2536 get: function(e, t) {
2537 return It.test((t && e.currentStyle ? e.currentStyle.filter : e.style.filter) || "") ? .01 * parseFloat(RegExp.$1) + "" : t ? "1" : ""
2538 },
2539 set: function(e, t) {
2540 var n = e.style,
2541 r = e.currentStyle,
2542 i = x.isNumeric(t) ? "alpha(opacity=" + 100 * t + ")" : "",
2543 o = r && r.filter || n.filter || "";
2544 n.zoom = 1, (t >= 1 || "" === t) && "" === x.trim(o.replace($t, "")) && n.removeAttribute && (n.removeAttribute("filter"), "" === t || r && !r.filter) || (n.filter = $t.test(o) ? o.replace($t, i) : o + " " + i)
2545 }
2546 }), x(function() {
2547 x.support.reliableMarginRight || (x.cssHooks.marginRight = {
2548 get: function(e, n) {
2549 return n ? x.swap(e, {
2550 display: "inline-block"
2551 }, Wt, [e, "marginRight"]) : t
2552 }
2553 }), !x.support.pixelPosition && x.fn.position && x.each(["top", "left"], function(e, n) {
2554 x.cssHooks[n] = {
2555 get: function(e, r) {
2556 return r ? (r = Wt(e, n), Yt.test(r) ? x(e).position()[n] + "px" : r) : t
2557 }
2558 }
2559 })
2560 }), x.expr && x.expr.filters && (x.expr.filters.hidden = function(e) {
2561 return 0 >= e.offsetWidth && 0 >= e.offsetHeight || !x.support.reliableHiddenOffsets && "none" === (e.style && e.style.display || x.css(e, "display"))
2562 }, x.expr.filters.visible = function(e) {
2563 return !x.expr.filters.hidden(e)
2564 }), x.each({
2565 margin: "",
2566 padding: "",
2567 border: "Width"
2568 }, function(e, t) {
2569 x.cssHooks[e + t] = {
2570 expand: function(n) {
2571 var r = 0,
2572 i = {},
2573 o = "string" == typeof n ? n.split(" ") : [n];
2574 for (; 4 > r; r++) i[e + Zt[r] + t] = o[r] || o[r - 2] || o[0];
2575 return i
2576 }
2577 }, Ut.test(e) || (x.cssHooks[e + t].set = on)
2578 });
2579 var cn = /%20/g,
2580 pn = /\[\]$/,
2581 fn = /\r?\n/g,
2582 dn = /^(?:submit|button|image|reset|file)$/i,
2583 hn = /^(?:input|select|textarea|keygen)/i;
2584 x.fn.extend({
2585 serialize: function() {
2586 return x.param(this.serializeArray())
2587 },
2588 serializeArray: function() {
2589 return this.map(function() {
2590 var e = x.prop(this, "elements");
2591 return e ? x.makeArray(e) : this
2592 }).filter(function() {
2593 var e = this.type;
2594 return this.name && !x(this).is(":disabled") && hn.test(this.nodeName) && !dn.test(e) && (this.checked || !Ct.test(e))
2595 }).map(function(e, t) {
2596 var n = x(this).val();
2597 return null == n ? null : x.isArray(n) ? x.map(n, function(e) {
2598 return {
2599 name: t.name,
2600 value: e.replace(fn, "\r\n")
2601 }
2602 }) : {
2603 name: t.name,
2604 value: n.replace(fn, "\r\n")
2605 }
2606 }).get()
2607 }
2608 }), x.param = function(e, n) {
2609 var r, i = [],
2610 o = function(e, t) {
2611 t = x.isFunction(t) ? t() : null == t ? "" : t, i[i.length] = encodeURIComponent(e) + "=" + encodeURIComponent(t)
2612 };
2613 if (n === t && (n = x.ajaxSettings && x.ajaxSettings.traditional), x.isArray(e) || e.jquery && !x.isPlainObject(e)) x.each(e, function() {
2614 o(this.name, this.value)
2615 });
2616 else
2617 for (r in e) gn(r, e[r], n, o);
2618 return i.join("&").replace(cn, "+")
2619 };
2620
2621 function gn(e, t, n, r) {
2622 var i;
2623 if (x.isArray(t)) x.each(t, function(t, i) {
2624 n || pn.test(e) ? r(e, i) : gn(e + "[" + ("object" == typeof i ? t : "") + "]", i, n, r)
2625 });
2626 else if (n || "object" !== x.type(t)) r(e, t);
2627 else
2628 for (i in t) gn(e + "[" + i + "]", t[i], n, r)
2629 }
2630 x.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "), function(e, t) {
2631 x.fn[t] = function(e, n) {
2632 return arguments.length > 0 ? this.on(t, null, e, n) : this.trigger(t)
2633 }
2634 }), x.fn.extend({
2635 hover: function(e, t) {
2636 return this.mouseenter(e).mouseleave(t || e)
2637 },
2638 bind: function(e, t, n) {
2639 return this.on(e, null, t, n)
2640 },
2641 unbind: function(e, t) {
2642 return this.off(e, null, t)
2643 },
2644 delegate: function(e, t, n, r) {
2645 return this.on(t, e, n, r)
2646 },
2647 undelegate: function(e, t, n) {
2648 return 1 === arguments.length ? this.off(e, "**") : this.off(t, e || "**", n)
2649 }
2650 });
2651 var mn, yn, vn = x.now(),
2652 bn = /\?/,
2653 xn = /#.*$/,
2654 wn = /([?&])_=[^&]*/,
2655 Tn = /^(.*?):[ \t]*([^\r\n]*)\r?$/gm,
2656 Cn = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
2657 Nn = /^(?:GET|HEAD)$/,
2658 kn = /^\/\//,
2659 En = /^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,
2660 Sn = x.fn.load,
2661 An = {},
2662 jn = {},
2663 Dn = "*/".concat("*");
2664 try {
2665 yn = o.href
2666 } catch (Ln) {
2667 yn = a.createElement("a"), yn.href = "", yn = yn.href
2668 }
2669 mn = En.exec(yn.toLowerCase()) || [];
2670
2671 function Hn(e) {
2672 return function(t, n) {
2673 "string" != typeof t && (n = t, t = "*");
2674 var r, i = 0,
2675 o = t.toLowerCase().match(T) || [];
2676 if (x.isFunction(n))
2677 while (r = o[i++]) "+" === r[0] ? (r = r.slice(1) || "*", (e[r] = e[r] || []).unshift(n)) : (e[r] = e[r] || []).push(n)
2678 }
2679 }
2680
2681 function qn(e, n, r, i) {
2682 var o = {},
2683 a = e === jn;
2684
2685 function s(l) {
2686 var u;
2687 return o[l] = !0, x.each(e[l] || [], function(e, l) {
2688 var c = l(n, r, i);
2689 return "string" != typeof c || a || o[c] ? a ? !(u = c) : t : (n.dataTypes.unshift(c), s(c), !1)
2690 }), u
2691 }
2692 return s(n.dataTypes[0]) || !o["*"] && s("*")
2693 }
2694
2695 function _n(e, n) {
2696 var r, i, o = x.ajaxSettings.flatOptions || {};
2697 for (i in n) n[i] !== t && ((o[i] ? e : r || (r = {}))[i] = n[i]);
2698 return r && x.extend(!0, e, r), e
2699 }
2700 x.fn.load = function(e, n, r) {
2701 if ("string" != typeof e && Sn) return Sn.apply(this, arguments);
2702 var i, o, a, s = this,
2703 l = e.indexOf(" ");
2704 return l >= 0 && (i = e.slice(l, e.length), e = e.slice(0, l)), x.isFunction(n) ? (r = n, n = t) : n && "object" == typeof n && (a = "POST"), s.length > 0 && x.ajax({
2705 url: e,
2706 type: a,
2707 dataType: "html",
2708 data: n
2709 }).done(function(e) {
2710 o = arguments, s.html(i ? x("<div>").append(x.parseHTML(e)).find(i) : e)
2711 }).complete(r && function(e, t) {
2712 s.each(r, o || [e.responseText, t, e])
2713 }), this
2714 }, x.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function(e, t) {
2715 x.fn[t] = function(e) {
2716 return this.on(t, e)
2717 }
2718 }), x.extend({
2719 active: 0,
2720 lastModified: {},
2721 etag: {},
2722 ajaxSettings: {
2723 url: yn,
2724 type: "GET",
2725 isLocal: Cn.test(mn[1]),
2726 global: !0,
2727 processData: !0,
2728 async: !0,
2729 contentType: "application/x-www-form-urlencoded; charset=UTF-8",
2730 accepts: {
2731 "*": Dn,
2732 text: "text/plain",
2733 html: "text/html",
2734 xml: "application/xml, text/xml",
2735 json: "application/json, text/javascript"
2736 },
2737 contents: {
2738 xml: /xml/,
2739 html: /html/,
2740 json: /json/
2741 },
2742 responseFields: {
2743 xml: "responseXML",
2744 text: "responseText",
2745 json: "responseJSON"
2746 },
2747 converters: {
2748 "* text": String,
2749 "text html": !0,
2750 "text json": x.parseJSON,
2751 "text xml": x.parseXML
2752 },
2753 flatOptions: {
2754 url: !0,
2755 context: !0
2756 }
2757 },
2758 ajaxSetup: function(e, t) {
2759 return t ? _n(_n(e, x.ajaxSettings), t) : _n(x.ajaxSettings, e)
2760 },
2761 ajaxPrefilter: Hn(An),
2762 ajaxTransport: Hn(jn),
2763 ajax: function(e, n) {
2764 "object" == typeof e && (n = e, e = t), n = n || {};
2765 var r, i, o, a, s, l, u, c, p = x.ajaxSetup({}, n),
2766 f = p.context || p,
2767 d = p.context && (f.nodeType || f.jquery) ? x(f) : x.event,
2768 h = x.Deferred(),
2769 g = x.Callbacks("once memory"),
2770 m = p.statusCode || {},
2771 y = {},
2772 v = {},
2773 b = 0,
2774 w = "canceled",
2775 C = {
2776 readyState: 0,
2777 getResponseHeader: function(e) {
2778 var t;
2779 if (2 === b) {
2780 if (!c) {
2781 c = {};
2782 while (t = Tn.exec(a)) c[t[1].toLowerCase()] = t[2]
2783 }
2784 t = c[e.toLowerCase()]
2785 }
2786 return null == t ? null : t
2787 },
2788 getAllResponseHeaders: function() {
2789 return 2 === b ? a : null
2790 },
2791 setRequestHeader: function(e, t) {
2792 var n = e.toLowerCase();
2793 return b || (e = v[n] = v[n] || e, y[e] = t), this
2794 },
2795 overrideMimeType: function(e) {
2796 return b || (p.mimeType = e), this
2797 },
2798 statusCode: function(e) {
2799 var t;
2800 if (e)
2801 if (2 > b)
2802 for (t in e) m[t] = [m[t], e[t]];
2803 else C.always(e[C.status]);
2804 return this
2805 },
2806 abort: function(e) {
2807 var t = e || w;
2808 return u && u.abort(t), k(0, t), this
2809 }
2810 };
2811 if (h.promise(C).complete = g.add, C.success = C.done, C.error = C.fail, p.url = ((e || p.url || yn) + "").replace(xn, "").replace(kn, mn[1] + "//"), p.type = n.method || n.type || p.method || p.type, p.dataTypes = x.trim(p.dataType || "*").toLowerCase().match(T) || [""], null == p.crossDomain && (r = En.exec(p.url.toLowerCase()), p.crossDomain = !(!r || r[1] === mn[1] && r[2] === mn[2] && (r[3] || ("http:" === r[1] ? "80" : "443")) === (mn[3] || ("http:" === mn[1] ? "80" : "443")))), p.data && p.processData && "string" != typeof p.data && (p.data = x.param(p.data, p.traditional)), qn(An, p, n, C), 2 === b) return C;
2812 l = p.global, l && 0 === x.active++ && x.event.trigger("ajaxStart"), p.type = p.type.toUpperCase(), p.hasContent = !Nn.test(p.type), o = p.url, p.hasContent || (p.data && (o = p.url += (bn.test(o) ? "&" : "?") + p.data, delete p.data), p.cache === !1 && (p.url = wn.test(o) ? o.replace(wn, "$1_=" + vn++) : o + (bn.test(o) ? "&" : "?") + "_=" + vn++)), p.ifModified && (x.lastModified[o] && C.setRequestHeader("If-Modified-Since", x.lastModified[o]), x.etag[o] && C.setRequestHeader("If-None-Match", x.etag[o])), (p.data && p.hasContent && p.contentType !== !1 || n.contentType) && C.setRequestHeader("Content-Type", p.contentType), C.setRequestHeader("Accept", p.dataTypes[0] && p.accepts[p.dataTypes[0]] ? p.accepts[p.dataTypes[0]] + ("*" !== p.dataTypes[0] ? ", " + Dn + "; q=0.01" : "") : p.accepts["*"]);
2813 for (i in p.headers) C.setRequestHeader(i, p.headers[i]);
2814 if (p.beforeSend && (p.beforeSend.call(f, C, p) === !1 || 2 === b)) return C.abort();
2815 w = "abort";
2816 for (i in {
2817 success: 1,
2818 error: 1,
2819 complete: 1
2820 }) C[i](p[i]);
2821 if (u = qn(jn, p, n, C)) {
2822 C.readyState = 1, l && d.trigger("ajaxSend", [C, p]), p.async && p.timeout > 0 && (s = setTimeout(function() {
2823 C.abort("timeout")
2824 }, p.timeout));
2825 try {
2826 b = 1, u.send(y, k)
2827 } catch (N) {
2828 if (!(2 > b)) throw N;
2829 k(-1, N)
2830 }
2831 } else k(-1, "No Transport");
2832
2833 function k(e, n, r, i) {
2834 var c, y, v, w, T, N = n;
2835 2 !== b && (b = 2, s && clearTimeout(s), u = t, a = i || "", C.readyState = e > 0 ? 4 : 0, c = e >= 200 && 300 > e || 304 === e, r && (w = Mn(p, C, r)), w = On(p, w, C, c), c ? (p.ifModified && (T = C.getResponseHeader("Last-Modified"), T && (x.lastModified[o] = T), T = C.getResponseHeader("etag"), T && (x.etag[o] = T)), 204 === e || "HEAD" === p.type ? N = "nocontent" : 304 === e ? N = "notmodified" : (N = w.state, y = w.data, v = w.error, c = !v)) : (v = N, (e || !N) && (N = "error", 0 > e && (e = 0))), C.status = e, C.statusText = (n || N) + "", c ? h.resolveWith(f, [y, N, C]) : h.rejectWith(f, [C, N, v]), C.statusCode(m), m = t, l && d.trigger(c ? "ajaxSuccess" : "ajaxError", [C, p, c ? y : v]), g.fireWith(f, [C, N]), l && (d.trigger("ajaxComplete", [C, p]), --x.active || x.event.trigger("ajaxStop")))
2836 }
2837 return C
2838 },
2839 getJSON: function(e, t, n) {
2840 return x.get(e, t, n, "json")
2841 },
2842 getScript: function(e, n) {
2843 return x.get(e, t, n, "script")
2844 }
2845 }), x.each(["get", "post"], function(e, n) {
2846 x[n] = function(e, r, i, o) {
2847 return x.isFunction(r) && (o = o || i, i = r, r = t), x.ajax({
2848 url: e,
2849 type: n,
2850 dataType: o,
2851 data: r,
2852 success: i
2853 })
2854 }
2855 });
2856
2857 function Mn(e, n, r) {
2858 var i, o, a, s, l = e.contents,
2859 u = e.dataTypes;
2860 while ("*" === u[0]) u.shift(), o === t && (o = e.mimeType || n.getResponseHeader("Content-Type"));
2861 if (o)
2862 for (s in l)
2863 if (l[s] && l[s].test(o)) {
2864 u.unshift(s);
2865 break
2866 }
2867 if (u[0] in r) a = u[0];
2868 else {
2869 for (s in r) {
2870 if (!u[0] || e.converters[s + " " + u[0]]) {
2871 a = s;
2872 break
2873 }
2874 i || (i = s)
2875 }
2876 a = a || i
2877 }
2878 return a ? (a !== u[0] && u.unshift(a), r[a]) : t
2879 }
2880
2881 function On(e, t, n, r) {
2882 var i, o, a, s, l, u = {},
2883 c = e.dataTypes.slice();
2884 if (c[1])
2885 for (a in e.converters) u[a.toLowerCase()] = e.converters[a];
2886 o = c.shift();
2887 while (o)
2888 if (e.responseFields[o] && (n[e.responseFields[o]] = t), !l && r && e.dataFilter && (t = e.dataFilter(t, e.dataType)), l = o, o = c.shift())
2889 if ("*" === o) o = l;
2890 else if ("*" !== l && l !== o) {
2891 if (a = u[l + " " + o] || u["* " + o], !a)
2892 for (i in u)
2893 if (s = i.split(" "), s[1] === o && (a = u[l + " " + s[0]] || u["* " + s[0]])) {
2894 a === !0 ? a = u[i] : u[i] !== !0 && (o = s[0], c.unshift(s[1]));
2895 break
2896 }
2897 if (a !== !0)
2898 if (a && e["throws"]) t = a(t);
2899 else try {
2900 t = a(t)
2901 } catch (p) {
2902 return {
2903 state: "parsererror",
2904 error: a ? p : "No conversion from " + l + " to " + o
2905 }
2906 }
2907 }
2908 return {
2909 state: "success",
2910 data: t
2911 }
2912 }
2913 x.ajaxSetup({
2914 accepts: {
2915 script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
2916 },
2917 contents: {
2918 script: /(?:java|ecma)script/
2919 },
2920 converters: {
2921 "text script": function(e) {
2922 return x.globalEval(e), e
2923 }
2924 }
2925 }), x.ajaxPrefilter("script", function(e) {
2926 e.cache === t && (e.cache = !1), e.crossDomain && (e.type = "GET", e.global = !1)
2927 }), x.ajaxTransport("script", function(e) {
2928 if (e.crossDomain) {
2929 var n, r = a.head || x("head")[0] || a.documentElement;
2930 return {
2931 send: function(t, i) {
2932 n = a.createElement("script"), n.async = !0, e.scriptCharset && (n.charset = e.scriptCharset), n.src = e.url, n.onload = n.onreadystatechange = function(e, t) {
2933 (t || !n.readyState || /loaded|complete/.test(n.readyState)) && (n.onload = n.onreadystatechange = null, n.parentNode && n.parentNode.removeChild(n), n = null, t || i(200, "success"))
2934 }, r.insertBefore(n, r.firstChild)
2935 },
2936 abort: function() {
2937 n && n.onload(t, !0)
2938 }
2939 }
2940 }
2941 });
2942 var Fn = [],
2943 Bn = /(=)\?(?=&|$)|\?\?/;
2944 x.ajaxSetup({
2945 jsonp: "callback",
2946 jsonpCallback: function() {
2947 var e = Fn.pop() || x.expando + "_" + vn++;
2948 return this[e] = !0, e
2949 }
2950 }), x.ajaxPrefilter("json jsonp", function(n, r, i) {
2951 var o, a, s, l = n.jsonp !== !1 && (Bn.test(n.url) ? "url" : "string" == typeof n.data && !(n.contentType || "").indexOf("application/x-www-form-urlencoded") && Bn.test(n.data) && "data");
2952 return l || "jsonp" === n.dataTypes[0] ? (o = n.jsonpCallback = x.isFunction(n.jsonpCallback) ? n.jsonpCallback() : n.jsonpCallback, l ? n[l] = n[l].replace(Bn, "$1" + o) : n.jsonp !== !1 && (n.url += (bn.test(n.url) ? "&" : "?") + n.jsonp + "=" + o), n.converters["script json"] = function() {
2953 return s || x.error(o + " was not called"), s[0]
2954 }, n.dataTypes[0] = "json", a = e[o], e[o] = function() {
2955 s = arguments
2956 }, i.always(function() {
2957 e[o] = a, n[o] && (n.jsonpCallback = r.jsonpCallback, Fn.push(o)), s && x.isFunction(a) && a(s[0]), s = a = t
2958 }), "script") : t
2959 });
2960 var Pn, Rn, Wn = 0,
2961 $n = e.ActiveXObject && function() {
2962 var e;
2963 for (e in Pn) Pn[e](t, !0)
2964 };
2965
2966 function In() {
2967 try {
2968 return new e.XMLHttpRequest
2969 } catch (t) {}
2970 }
2971
2972 function zn() {
2973 try {
2974 return new e.ActiveXObject("Microsoft.XMLHTTP")
2975 } catch (t) {}
2976 }
2977 x.ajaxSettings.xhr = e.ActiveXObject ? function() {
2978 return !this.isLocal && In() || zn()
2979 } : In, Rn = x.ajaxSettings.xhr(), x.support.cors = !!Rn && "withCredentials" in Rn, Rn = x.support.ajax = !!Rn, Rn && x.ajaxTransport(function(n) {
2980 if (!n.crossDomain || x.support.cors) {
2981 var r;
2982 return {
2983 send: function(i, o) {
2984 var a, s, l = n.xhr();
2985 if (n.username ? l.open(n.type, n.url, n.async, n.username, n.password) : l.open(n.type, n.url, n.async), n.xhrFields)
2986 for (s in n.xhrFields) l[s] = n.xhrFields[s];
2987 n.mimeType && l.overrideMimeType && l.overrideMimeType(n.mimeType), n.crossDomain || i["X-Requested-With"] || (i["X-Requested-With"] = "XMLHttpRequest");
2988 try {
2989 for (s in i) l.setRequestHeader(s, i[s])
2990 } catch (u) {}
2991 l.send(n.hasContent && n.data || null), r = function(e, i) {
2992 var s, u, c, p;
2993 try {
2994 if (r && (i || 4 === l.readyState))
2995 if (r = t, a && (l.onreadystatechange = x.noop, $n && delete Pn[a]), i) 4 !== l.readyState && l.abort();
2996 else {
2997 p = {}, s = l.status, u = l.getAllResponseHeaders(), "string" == typeof l.responseText && (p.text = l.responseText);
2998 try {
2999 c = l.statusText
3000 } catch (f) {
3001 c = ""
3002 }
3003 s || !n.isLocal || n.crossDomain ? 1223 === s && (s = 204) : s = p.text ? 200 : 404
3004 }
3005 } catch (d) {
3006 i || o(-1, d)
3007 }
3008 p && o(s, c, p, u)
3009 }, n.async ? 4 === l.readyState ? setTimeout(r) : (a = ++Wn, $n && (Pn || (Pn = {}, x(e).unload($n)), Pn[a] = r), l.onreadystatechange = r) : r()
3010 },
3011 abort: function() {
3012 r && r(t, !0)
3013 }
3014 }
3015 }
3016 });
3017 var Xn, Un, Vn = /^(?:toggle|show|hide)$/,
3018 Yn = RegExp("^(?:([+-])=|)(" + w + ")([a-z%]*)$", "i"),
3019 Jn = /queueHooks$/,
3020 Gn = [nr],
3021 Qn = {
3022 "*": [
3023
3024 function(e, t) {
3025 var n = this.createTween(e, t),
3026 r = n.cur(),
3027 i = Yn.exec(t),
3028 o = i && i[3] || (x.cssNumber[e] ? "" : "px"),
3029 a = (x.cssNumber[e] || "px" !== o && +r) && Yn.exec(x.css(n.elem, e)),
3030 s = 1,
3031 l = 20;
3032 if (a && a[3] !== o) {
3033 o = o || a[3], i = i || [], a = +r || 1;
3034 do s = s || ".5", a /= s, x.style(n.elem, e, a + o); while (s !== (s = n.cur() / r) && 1 !== s && --l)
3035 }
3036 return i && (a = n.start = +a || +r || 0, n.unit = o, n.end = i[1] ? a + (i[1] + 1) * i[2] : +i[2]), n
3037 }
3038 ]
3039 };
3040
3041 function Kn() {
3042 return setTimeout(function() {
3043 Xn = t
3044 }), Xn = x.now()
3045 }
3046
3047 function Zn(e, t, n) {
3048 var r, i = (Qn[t] || []).concat(Qn["*"]),
3049 o = 0,
3050 a = i.length;
3051 for (; a > o; o++)
3052 if (r = i[o].call(n, t, e)) return r
3053 }
3054
3055 function er(e, t, n) {
3056 var r, i, o = 0,
3057 a = Gn.length,
3058 s = x.Deferred().always(function() {
3059 delete l.elem
3060 }),
3061 l = function() {
3062 if (i) return !1;
3063 var t = Xn || Kn(),
3064 n = Math.max(0, u.startTime + u.duration - t),
3065 r = n / u.duration || 0,
3066 o = 1 - r,
3067 a = 0,
3068 l = u.tweens.length;
3069 for (; l > a; a++) u.tweens[a].run(o);
3070 return s.notifyWith(e, [u, o, n]), 1 > o && l ? n : (s.resolveWith(e, [u]), !1)
3071 },
3072 u = s.promise({
3073 elem: e,
3074 props: x.extend({}, t),
3075 opts: x.extend(!0, {
3076 specialEasing: {}
3077 }, n),
3078 originalProperties: t,
3079 originalOptions: n,
3080 startTime: Xn || Kn(),
3081 duration: n.duration,
3082 tweens: [],
3083 createTween: function(t, n) {
3084 var r = x.Tween(e, u.opts, t, n, u.opts.specialEasing[t] || u.opts.easing);
3085 return u.tweens.push(r), r
3086 },
3087 stop: function(t) {
3088 var n = 0,
3089 r = t ? u.tweens.length : 0;
3090 if (i) return this;
3091 for (i = !0; r > n; n++) u.tweens[n].run(1);
3092 return t ? s.resolveWith(e, [u, t]) : s.rejectWith(e, [u, t]), this
3093 }
3094 }),
3095 c = u.props;
3096 for (tr(c, u.opts.specialEasing); a > o; o++)
3097 if (r = Gn[o].call(u, e, c, u.opts)) return r;
3098 return x.map(c, Zn, u), x.isFunction(u.opts.start) && u.opts.start.call(e, u), x.fx.timer(x.extend(l, {
3099 elem: e,
3100 anim: u,
3101 queue: u.opts.queue
3102 })), u.progress(u.opts.progress).done(u.opts.done, u.opts.complete).fail(u.opts.fail).always(u.opts.always)
3103 }
3104
3105 function tr(e, t) {
3106 var n, r, i, o, a;
3107 for (n in e)
3108 if (r = x.camelCase(n), i = t[r], o = e[n], x.isArray(o) && (i = o[1], o = e[n] = o[0]), n !== r && (e[r] = o, delete e[n]), a = x.cssHooks[r], a && "expand" in a) {
3109 o = a.expand(o), delete e[r];
3110 for (n in o) n in e || (e[n] = o[n], t[n] = i)
3111 } else t[r] = i
3112 }
3113 x.Animation = x.extend(er, {
3114 tweener: function(e, t) {
3115 x.isFunction(e) ? (t = e, e = ["*"]) : e = e.split(" ");
3116 var n, r = 0,
3117 i = e.length;
3118 for (; i > r; r++) n = e[r], Qn[n] = Qn[n] || [], Qn[n].unshift(t)
3119 },
3120 prefilter: function(e, t) {
3121 t ? Gn.unshift(e) : Gn.push(e)
3122 }
3123 });
3124
3125 function nr(e, t, n) {
3126 var r, i, o, a, s, l, u = this,
3127 c = {},
3128 p = e.style,
3129 f = e.nodeType && nn(e),
3130 d = x._data(e, "fxshow");
3131 n.queue || (s = x._queueHooks(e, "fx"), null == s.unqueued && (s.unqueued = 0, l = s.empty.fire, s.empty.fire = function() {
3132 s.unqueued || l()
3133 }), s.unqueued++, u.always(function() {
3134 u.always(function() {
3135 s.unqueued--, x.queue(e, "fx").length || s.empty.fire()
3136 })
3137 })), 1 === e.nodeType && ("height" in t || "width" in t) && (n.overflow = [p.overflow, p.overflowX, p.overflowY], "inline" === x.css(e, "display") && "none" === x.css(e, "float") && (x.support.inlineBlockNeedsLayout && "inline" !== ln(e.nodeName) ? p.zoom = 1 : p.display = "inline-block")), n.overflow && (p.overflow = "hidden", x.support.shrinkWrapBlocks || u.always(function() {
3138 p.overflow = n.overflow[0], p.overflowX = n.overflow[1], p.overflowY = n.overflow[2]
3139 }));
3140 for (r in t)
3141 if (i = t[r], Vn.exec(i)) {
3142 if (delete t[r], o = o || "toggle" === i, i === (f ? "hide" : "show")) continue;
3143 c[r] = d && d[r] || x.style(e, r)
3144 }
3145 if (!x.isEmptyObject(c)) {
3146 d ? "hidden" in d && (f = d.hidden) : d = x._data(e, "fxshow", {}), o && (d.hidden = !f), f ? x(e).show() : u.done(function() {
3147 x(e).hide()
3148 }), u.done(function() {
3149 var t;
3150 x._removeData(e, "fxshow");
3151 for (t in c) x.style(e, t, c[t])
3152 });
3153 for (r in c) a = Zn(f ? d[r] : 0, r, u), r in d || (d[r] = a.start, f && (a.end = a.start, a.start = "width" === r || "height" === r ? 1 : 0))
3154 }
3155 }
3156
3157 function rr(e, t, n, r, i) {
3158 return new rr.prototype.init(e, t, n, r, i)
3159 }
3160 x.Tween = rr, rr.prototype = {
3161 constructor: rr,
3162 init: function(e, t, n, r, i, o) {
3163 this.elem = e, this.prop = n, this.easing = i || "swing", this.options = t, this.start = this.now = this.cur(), this.end = r, this.unit = o || (x.cssNumber[n] ? "" : "px")
3164 },
3165 cur: function() {
3166 var e = rr.propHooks[this.prop];
3167 return e && e.get ? e.get(this) : rr.propHooks._default.get(this)
3168 },
3169 run: function(e) {
3170 var t, n = rr.propHooks[this.prop];
3171 return this.pos = t = this.options.duration ? x.easing[this.easing](e, this.options.duration * e, 0, 1, this.options.duration) : e, this.now = (this.end - this.start) * t + this.start, this.options.step && this.options.step.call(this.elem, this.now, this), n && n.set ? n.set(this) : rr.propHooks._default.set(this), this
3172 }
3173 }, rr.prototype.init.prototype = rr.prototype, rr.propHooks = {
3174 _default: {
3175 get: function(e) {
3176 var t;
3177 return null == e.elem[e.prop] || e.elem.style && null != e.elem.style[e.prop] ? (t = x.css(e.elem, e.prop, ""), t && "auto" !== t ? t : 0) : e.elem[e.prop]
3178 },
3179 set: function(e) {
3180 x.fx.step[e.prop] ? x.fx.step[e.prop](e) : e.elem.style && (null != e.elem.style[x.cssProps[e.prop]] || x.cssHooks[e.prop]) ? x.style(e.elem, e.prop, e.now + e.unit) : e.elem[e.prop] = e.now
3181 }
3182 }
3183 }, rr.propHooks.scrollTop = rr.propHooks.scrollLeft = {
3184 set: function(e) {
3185 e.elem.nodeType && e.elem.parentNode && (e.elem[e.prop] = e.now)
3186 }
3187 }, x.each(["toggle", "show", "hide"], function(e, t) {
3188 var n = x.fn[t];
3189 x.fn[t] = function(e, r, i) {
3190 return null == e || "boolean" == typeof e ? n.apply(this, arguments) : this.animate(ir(t, !0), e, r, i)
3191 }
3192 }), x.fn.extend({
3193 fadeTo: function(e, t, n, r) {
3194 return this.filter(nn).css("opacity", 0).show().end().animate({
3195 opacity: t
3196 }, e, n, r)
3197 },
3198 animate: function(e, t, n, r) {
3199 var i = x.isEmptyObject(e),
3200 o = x.speed(t, n, r),
3201 a = function() {
3202 var t = er(this, x.extend({}, e), o);
3203 (i || x._data(this, "finish")) && t.stop(!0)
3204 };
3205 return a.finish = a, i || o.queue === !1 ? this.each(a) : this.queue(o.queue, a)
3206 },
3207 stop: function(e, n, r) {
3208 var i = function(e) {
3209 var t = e.stop;
3210 delete e.stop, t(r)
3211 };
3212 return "string" != typeof e && (r = n, n = e, e = t), n && e !== !1 && this.queue(e || "fx", []), this.each(function() {
3213 var t = !0,
3214 n = null != e && e + "queueHooks",
3215 o = x.timers,
3216 a = x._data(this);
3217 if (n) a[n] && a[n].stop && i(a[n]);
3218 else
3219 for (n in a) a[n] && a[n].stop && Jn.test(n) && i(a[n]);
3220 for (n = o.length; n--;) o[n].elem !== this || null != e && o[n].queue !== e || (o[n].anim.stop(r), t = !1, o.splice(n, 1));
3221 (t || !r) && x.dequeue(this, e)
3222 })
3223 },
3224 finish: function(e) {
3225 return e !== !1 && (e = e || "fx"), this.each(function() {
3226 var t, n = x._data(this),
3227 r = n[e + "queue"],
3228 i = n[e + "queueHooks"],
3229 o = x.timers,
3230 a = r ? r.length : 0;
3231 for (n.finish = !0, x.queue(this, e, []), i && i.stop && i.stop.call(this, !0), t = o.length; t--;) o[t].elem === this && o[t].queue === e && (o[t].anim.stop(!0), o.splice(t, 1));
3232 for (t = 0; a > t; t++) r[t] && r[t].finish && r[t].finish.call(this);
3233 delete n.finish
3234 })
3235 }
3236 });
3237
3238 function ir(e, t) {
3239 var n, r = {
3240 height: e
3241 },
3242 i = 0;
3243 for (t = t ? 1 : 0; 4 > i; i += 2 - t) n = Zt[i], r["margin" + n] = r["padding" + n] = e;
3244 return t && (r.opacity = r.width = e), r
3245 }
3246 x.each({
3247 slideDown: ir("show"),
3248 slideUp: ir("hide"),
3249 slideToggle: ir("toggle"),
3250 fadeIn: {
3251 opacity: "show"
3252 },
3253 fadeOut: {
3254 opacity: "hide"
3255 },
3256 fadeToggle: {
3257 opacity: "toggle"
3258 }
3259 }, function(e, t) {
3260 x.fn[e] = function(e, n, r) {
3261 return this.animate(t, e, n, r)
3262 }
3263 }), x.speed = function(e, t, n) {
3264 var r = e && "object" == typeof e ? x.extend({}, e) : {
3265 complete: n || !n && t || x.isFunction(e) && e,
3266 duration: e,
3267 easing: n && t || t && !x.isFunction(t) && t
3268 };
3269 return r.duration = x.fx.off ? 0 : "number" == typeof r.duration ? r.duration : r.duration in x.fx.speeds ? x.fx.speeds[r.duration] : x.fx.speeds._default, (null == r.queue || r.queue === !0) && (r.queue = "fx"), r.old = r.complete, r.complete = function() {
3270 x.isFunction(r.old) && r.old.call(this), r.queue && x.dequeue(this, r.queue)
3271 }, r
3272 }, x.easing = {
3273 linear: function(e) {
3274 return e
3275 },
3276 swing: function(e) {
3277 return .5 - Math.cos(e * Math.PI) / 2
3278 }
3279 }, x.timers = [], x.fx = rr.prototype.init, x.fx.tick = function() {
3280 var e, n = x.timers,
3281 r = 0;
3282 for (Xn = x.now(); n.length > r; r++) e = n[r], e() || n[r] !== e || n.splice(r--, 1);
3283 n.length || x.fx.stop(), Xn = t
3284 }, x.fx.timer = function(e) {
3285 e() && x.timers.push(e) && x.fx.start()
3286 }, x.fx.interval = 13, x.fx.start = function() {
3287 Un || (Un = setInterval(x.fx.tick, x.fx.interval))
3288 }, x.fx.stop = function() {
3289 clearInterval(Un), Un = null
3290 }, x.fx.speeds = {
3291 slow: 600,
3292 fast: 200,
3293 _default: 400
3294 }, x.fx.step = {}, x.expr && x.expr.filters && (x.expr.filters.animated = function(e) {
3295 return x.grep(x.timers, function(t) {
3296 return e === t.elem
3297 }).length
3298 }), x.fn.offset = function(e) {
3299 if (arguments.length) return e === t ? this : this.each(function(t) {
3300 x.offset.setOffset(this, e, t)
3301 });
3302 var n, r, o = {
3303 top: 0,
3304 left: 0
3305 },
3306 a = this[0],
3307 s = a && a.ownerDocument;
3308 if (s) return n = s.documentElement, x.contains(n, a) ? (typeof a.getBoundingClientRect !== i && (o = a.getBoundingClientRect()), r = or(s), {
3309 top: o.top + (r.pageYOffset || n.scrollTop) - (n.clientTop || 0),
3310 left: o.left + (r.pageXOffset || n.scrollLeft) - (n.clientLeft || 0)
3311 }) : o
3312 }, x.offset = {
3313 setOffset: function(e, t, n) {
3314 var r = x.css(e, "position");
3315 "static" === r && (e.style.position = "relative");
3316 var i = x(e),
3317 o = i.offset(),
3318 a = x.css(e, "top"),
3319 s = x.css(e, "left"),
3320 l = ("absolute" === r || "fixed" === r) && x.inArray("auto", [a, s]) > -1,
3321 u = {},
3322 c = {},
3323 p, f;
3324 l ? (c = i.position(), p = c.top, f = c.left) : (p = parseFloat(a) || 0, f = parseFloat(s) || 0), x.isFunction(t) && (t = t.call(e, n, o)), null != t.top && (u.top = t.top - o.top + p), null != t.left && (u.left = t.left - o.left + f), "using" in t ? t.using.call(e, u) : i.css(u)
3325 }
3326 }, x.fn.extend({
3327 position: function() {
3328 if (this[0]) {
3329 var e, t, n = {
3330 top: 0,
3331 left: 0
3332 },
3333 r = this[0];
3334 return "fixed" === x.css(r, "position") ? t = r.getBoundingClientRect() : (e = this.offsetParent(), t = this.offset(), x.nodeName(e[0], "html") || (n = e.offset()), n.top += x.css(e[0], "borderTopWidth", !0), n.left += x.css(e[0], "borderLeftWidth", !0)), {
3335 top: t.top - n.top - x.css(r, "marginTop", !0),
3336 left: t.left - n.left - x.css(r, "marginLeft", !0)
3337 }
3338 }
3339 },
3340 offsetParent: function() {
3341 return this.map(function() {
3342 var e = this.offsetParent || s;
3343 while (e && !x.nodeName(e, "html") && "static" === x.css(e, "position")) e = e.offsetParent;
3344 return e || s
3345 })
3346 }
3347 }), x.each({
3348 scrollLeft: "pageXOffset",
3349 scrollTop: "pageYOffset"
3350 }, function(e, n) {
3351 var r = /Y/.test(n);
3352 x.fn[e] = function(i) {
3353 return x.access(this, function(e, i, o) {
3354 var a = or(e);
3355 return o === t ? a ? n in a ? a[n] : a.document.documentElement[i] : e[i] : (a ? a.scrollTo(r ? x(a).scrollLeft() : o, r ? o : x(a).scrollTop()) : e[i] = o, t)
3356 }, e, i, arguments.length, null)
3357 }
3358 });
3359
3360 function or(e) {
3361 return x.isWindow(e) ? e : 9 === e.nodeType ? e.defaultView || e.parentWindow : !1
3362 }
3363 x.each({
3364 Height: "height",
3365 Width: "width"
3366 }, function(e, n) {
3367 x.each({
3368 padding: "inner" + e,
3369 content: n,
3370 "": "outer" + e
3371 }, function(r, i) {
3372 x.fn[i] = function(i, o) {
3373 var a = arguments.length && (r || "boolean" != typeof i),
3374 s = r || (i === !0 || o === !0 ? "margin" : "border");
3375 return x.access(this, function(n, r, i) {
3376 var o;
3377 return x.isWindow(n) ? n.document.documentElement["client" + e] : 9 === n.nodeType ? (o = n.documentElement, Math.max(n.body["scroll" + e], o["scroll" + e], n.body["offset" + e], o["offset" + e], o["client" + e])) : i === t ? x.css(n, r, s) : x.style(n, r, i, s)
3378 }, n, a ? i : t, a, null)
3379 }
3380 })
3381 }), x.fn.size = function() {
3382 return this.length
3383 }, x.fn.andSelf = x.fn.addBack, "object" == typeof module && module && "object" == typeof module.exports ? module.exports = x : (e.jQuery = e.$ = x, "function" == typeof define && define.amd && define("jquery", [], function() {
3384 return x
3385 }))
3386})(window); \ No newline at end of file
diff --git a/Blocks/life.html b/Back/Blocks/life.html
index 23a1324..65f4875 100644
--- a/Blocks/life.html
+++ b/Back/Blocks/life.html
@@ -1,54 +1,103 @@
1<!doctype html> 1<!doctype html>
2<html> 2
3<head> 3<html>
4<meta charset="utf-8"> 4
5<title>无标题文档</title> 5<head>
6<style type="text/css"> 6
7body { 7<meta charset="utf-8">
8 background-color: #E7E7E7; 8
9} 9<title>Life</title>
10.pp { 10
11 text-align:left; 11<style type="text/css">
12} 12
13.pp { 13body {
14 font-family: "微软雅黑"; 14
15} 15 background-color: #E7E7E7;
16</style> 16
17</head> 17}
18 18
19<body> 19.pp {
20<div align="center"><img src="life/6597074164702513006.png" width="800" height="34"></div> 20
21<p align="center"><img src="life/shming.png" width="282" height="167"></p> 21 text-align:left;
22<p align="center"><img src="life/148337312826694352.jpg" width="1024" height="683"></p> 22
23<p>&nbsp;</p> 23}
24<p align="center"><img src="life/1713901133291362836.jpg" width="1024" height="683"></p> 24
25<p>&nbsp;</p> 25.pp {
26<p align="center"><img src="life/1903615267594677472.jpg" width="1024" height="683"></p> 26
27<p>&nbsp;</p> 27 font-family: "微软雅黑";
28<p align="center"><img src="life/3374040545930946866.jpg" width="1024" height="683"></p> 28
29<p>&nbsp;</p> 29}
30<p align="center"><img src="life/gqj.png" width="1031" height="726"></p> 30
31<p>&nbsp;</p> 31</style>
32<p class="pp">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="pp">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 现在是2013年11月29日23:29</span></p> 32
33<p class="pp">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 还记得所谓的玛雅世界末日吗?</p> 33</head>
34<p class="pp">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 已过去342天。</p> 34
35<p class="pp">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我们依然幸福地生活在这个世界上,趁我们还能去爱,还能去闯,放开自己的心,大胆去爱,大胆去闯荡这个世界。去爱</p> 35
36<p class="pp">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 你值得爱的人,为了自己的 梦想去努力,去</p> 36
37<p class="pp"></p> 37<body>
38<p class="pp">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 为了做这一系列的网页,前前后后拉开了很长的时间线。到现在算是一个阶段了吧。学到了很多知识,得到了很多不一样的</p> 38
39<p class="pp">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 收获。我的语言始终是苍白无力的,在所有美好的事物和感动面前,文字也无法承载更多。只有心中的体会吧。</p> 39<div align="center"><img src="life/6597074164702513006.png" width="800" height="34"></div>
40 40
41<p class="pp">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我们都是幸福的孩子。</p> 41<p align="center"><img src="life/shming.png" width="282" height="167"></p>
42<p class="pp"> </p> 42
43<p class="pp">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 珍惜。</p> 43<p align="center"><img src="life/148337312826694352.jpg" width="1024" height="683"></p>
44<p class="pp"> </p> 44
45<p class="pp">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ——Jinwei</p> 45<p>&nbsp;</p>
46 46
47<!-- jinwei.me Baidu tongji analytics --> 47<p align="center"><img src="life/1713901133291362836.jpg" width="1024" height="683"></p>
48<script type="text/javascript"> 48
49var _bdhmProtocol = (("https:" == document.location.protocol) ? " https://" : " http://"); 49<p>&nbsp;</p>
50document.write(unescape("%3Cscript src='" + _bdhmProtocol + "hm.baidu.com/h.js%3F91918ac6d6854623883a2b546ebc00ac' type='text/javascript'%3E%3C/script%3E")); 50
51</script> 51<p align="center"><img src="life/1903615267594677472.jpg" width="1024" height="683"></p>
52 52
53</body> 53<p>&nbsp;</p>
54</html> 54
55<p align="center"><img src="life/3374040545930946866.jpg" width="1024" height="683"></p>
56
57<p>&nbsp;</p>
58
59<p align="center"><img src="life/gqj.png" width="1031" height="726"></p>
60
61<p>&nbsp;</p>
62
63<p class="pp">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="pp">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 现在是2013年11月29日23:29</span></p>
64
65<p class="pp">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 还记得所谓的玛雅世界末日吗?</p>
66
67<p class="pp">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 已过去342天。</p>
68
69<p class="pp">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我们依然幸福地生活在这个世界上,趁我们还能去爱,还能去闯,放开自己的心,大胆去爱,大胆去闯荡这个世界。去爱</p>
70
71<p class="pp">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 你值得爱的人,为了自己的 梦想去努力,去奋斗。</p>
72
73<p class="pp"></p>
74
75<p class="pp">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 为了做这一系列的网页,前前后后拉开了很长的时间线。到现在算是一个阶段了吧。学到了很多知识,得到了很多不一样的</p>
76
77<p class="pp">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 收获。我的语言始终是苍白无力的,在所有美好的事物和感动面前,文字也无法承载更多。只有心中的体会吧。</p>
78
79
80
81<p class="pp">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我们都是幸福的孩子。</p>
82
83<p class="pp"> </p>
84
85<p class="pp">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 珍惜。</p>
86
87<p class="pp"> </p>
88
89<p class="pp">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ——Jinwei</p>
90
91
92<!-- jinwei.me Baidu tongji analytics -->
93<script type="text/javascript">
94var _bdhmProtocol = (("https:" == document.location.protocol) ? " https://" : " http://");
95
96document.write(unescape("%3Cscript src='" + _bdhmProtocol + "hm.baidu.com/h.js%3F91918ac6d6854623883a2b546ebc00ac' type='text/javascript'%3E%3C/script%3E"));
97
98</script>
99
100</body>
101
102</html>
103
diff --git a/Blocks/life/148337312826694352.jpg b/Back/Blocks/life/148337312826694352.jpg
index 3dfbeec..3dfbeec 100644
--- a/Blocks/life/148337312826694352.jpg
+++ b/Back/Blocks/life/148337312826694352.jpg
Binary files differ
diff --git a/Blocks/life/1713901133291362836.jpg b/Back/Blocks/life/1713901133291362836.jpg
index 889cb42..889cb42 100644
--- a/Blocks/life/1713901133291362836.jpg
+++ b/Back/Blocks/life/1713901133291362836.jpg
Binary files differ
diff --git a/Blocks/life/1903615267594677472.jpg b/Back/Blocks/life/1903615267594677472.jpg
index d88394c..d88394c 100644
--- a/Blocks/life/1903615267594677472.jpg
+++ b/Back/Blocks/life/1903615267594677472.jpg
Binary files differ
diff --git a/Blocks/life/2041819481159275260.jpg b/Back/Blocks/life/2041819481159275260.jpg
index 639ed66..639ed66 100644
--- a/Blocks/life/2041819481159275260.jpg
+++ b/Back/Blocks/life/2041819481159275260.jpg
Binary files differ
diff --git a/Blocks/life/3014878475648013989.jpg b/Back/Blocks/life/3014878475648013989.jpg
index d94796a..d94796a 100644
--- a/Blocks/life/3014878475648013989.jpg
+++ b/Back/Blocks/life/3014878475648013989.jpg
Binary files differ
diff --git a/Blocks/life/3374040545930946866.jpg b/Back/Blocks/life/3374040545930946866.jpg
index afc5569..afc5569 100644
--- a/Blocks/life/3374040545930946866.jpg
+++ b/Back/Blocks/life/3374040545930946866.jpg
Binary files differ
diff --git a/Blocks/life/3911939226425011954.jpg b/Back/Blocks/life/3911939226425011954.jpg
index 8842ec2..8842ec2 100644
--- a/Blocks/life/3911939226425011954.jpg
+++ b/Back/Blocks/life/3911939226425011954.jpg
Binary files differ
diff --git a/Blocks/life/6597074164702513006.png b/Back/Blocks/life/6597074164702513006.png
index 4e9e1e2..4e9e1e2 100644
--- a/Blocks/life/6597074164702513006.png
+++ b/Back/Blocks/life/6597074164702513006.png
Binary files differ
diff --git a/Blocks/life/6597305062146155801.jpg b/Back/Blocks/life/6597305062146155801.jpg
index b60c6f3..b60c6f3 100644
--- a/Blocks/life/6597305062146155801.jpg
+++ b/Back/Blocks/life/6597305062146155801.jpg
Binary files differ
diff --git a/Blocks/life/6598086814913787340.jpg b/Back/Blocks/life/6598086814913787340.jpg
index 66168a1..66168a1 100644
--- a/Blocks/life/6598086814913787340.jpg
+++ b/Back/Blocks/life/6598086814913787340.jpg
Binary files differ
diff --git a/Blocks/life/6598256139704465765.jpg b/Back/Blocks/life/6598256139704465765.jpg
index 69c1d56..69c1d56 100644
--- a/Blocks/life/6598256139704465765.jpg
+++ b/Back/Blocks/life/6598256139704465765.jpg
Binary files differ
diff --git a/Blocks/life/gqj.png b/Back/Blocks/life/gqj.png
index fabb4ea..fabb4ea 100644
--- a/Blocks/life/gqj.png
+++ b/Back/Blocks/life/gqj.png
Binary files differ
diff --git a/Blocks/life/icon.jpg b/Back/Blocks/life/icon.jpg
index 4ca5e23..4ca5e23 100644
--- a/Blocks/life/icon.jpg
+++ b/Back/Blocks/life/icon.jpg
Binary files differ
diff --git a/Blocks/life/shming.png b/Back/Blocks/life/shming.png
index 7618553..7618553 100644
--- a/Blocks/life/shming.png
+++ b/Back/Blocks/life/shming.png
Binary files differ
diff --git a/Blocks/main.css b/Back/Blocks/main.css
index 367da59..367da59 100644
--- a/Blocks/main.css
+++ b/Back/Blocks/main.css
diff --git a/Back/Blocks/main.js b/Back/Blocks/main.js
new file mode 100644
index 0000000..ff65105
--- /dev/null
+++ b/Back/Blocks/main.js
@@ -0,0 +1,39 @@
1var myName = "@spearmint";
2
3
4
5var red = [0, 100, 63];
6
7var orange = [40, 100, 60];
8
9var green = [75, 100, 40];
10
11var blue = [196, 77, 55];
12
13var purple = [280, 50, 60];
14
15var letterColors = [red, orange, green, blue, purple];
16
17
18
19drawName(myName, letterColors);
20
21
22
23if (10 < 3)
24
25{
26
27 bubbleShape = 'square';
28
29} else
30
31{
32
33 bubbleShape = 'circle';
34
35}
36
37
38
39bounceBubbles(); \ No newline at end of file
diff --git a/Blocks/pics/2012_03.jpg b/Back/Blocks/pics/2012_03.jpg
index 3bfc81a..3bfc81a 100644
--- a/Blocks/pics/2012_03.jpg
+++ b/Back/Blocks/pics/2012_03.jpg
Binary files differ
diff --git a/Blocks/pics/20130228192941_rm3ky.jpg b/Back/Blocks/pics/20130228192941_rm3ky.jpg
index fd39ce9..fd39ce9 100644
--- a/Blocks/pics/20130228192941_rm3ky.jpg
+++ b/Back/Blocks/pics/20130228192941_rm3ky.jpg
Binary files differ
diff --git a/Blocks/pics/QQ截图20131123002119.png b/Back/Blocks/pics/QQ截图20131123002119.png
index 2615b2a..2615b2a 100644
--- a/Blocks/pics/QQ截图20131123002119.png
+++ b/Back/Blocks/pics/QQ截图20131123002119.png
Binary files differ
diff --git a/Blocks/pics/QQ截图20131123002203.png b/Back/Blocks/pics/QQ截图20131123002203.png
index d02c4c7..d02c4c7 100644
--- a/Blocks/pics/QQ截图20131123002203.png
+++ b/Back/Blocks/pics/QQ截图20131123002203.png
Binary files differ
diff --git a/Blocks/pics/QQ截图20131123002213.png b/Back/Blocks/pics/QQ截图20131123002213.png
index 93c7cd2..93c7cd2 100644
--- a/Blocks/pics/QQ截图20131123002213.png
+++ b/Back/Blocks/pics/QQ截图20131123002213.png
Binary files differ
diff --git a/Blocks/pics/siteinfo.png b/Back/Blocks/pics/siteinfo.png
index 5240289..5240289 100644
--- a/Blocks/pics/siteinfo.png
+++ b/Back/Blocks/pics/siteinfo.png
Binary files differ
diff --git a/Back/Blocks/post/BraFEMRumMsVbWgqTQIWRPesZW2xOQ-xsNqO47m55DA.woff b/Back/Blocks/post/BraFEMRumMsVbWgqTQIWRPesZW2xOQ-xsNqO47m55DA.woff
new file mode 100644
index 0000000..1de9c10
--- /dev/null
+++ b/Back/Blocks/post/BraFEMRumMsVbWgqTQIWRPesZW2xOQ-xsNqO47m55DA.woff
Binary files differ
diff --git a/Back/Blocks/post/font.css b/Back/Blocks/post/font.css
new file mode 100644
index 0000000..8b561f2
--- /dev/null
+++ b/Back/Blocks/post/font.css
@@ -0,0 +1,6 @@
1@font-face {
2 font-family: 'Codystar';
3 font-style: normal;
4 font-weight: 400;
5 src: local('Codystar'), url(BraFEMRumMsVbWgqTQIWRPesZW2xOQ-xsNqO47m55DA.woff) format('woff');
6} \ No newline at end of file
diff --git a/Blocks/post/index.html b/Back/Blocks/post/index.html
index 8a8b491..89666c7 100644
--- a/Blocks/post/index.html
+++ b/Back/Blocks/post/index.html
@@ -1,33 +1,35 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<html> 2<html>
3 <head> 3 <head>
4 <title>Happy Holidays!</title> 4 <title>Happy Holidays!</title>
5 <link rel="stylesheet" href="style.css" type="text/css"> 5 <link rel="stylesheet" href="style.css" type="text/css">
6 <script src="jquery.min.js"></script> 6 <script src="jquery.min.js"></script>
7 <script src="snowfall.min.js"></script> 7 <script src="snowfall.min.js"></script>
8 <script src="script.js"></script> 8 <script src="script.js"></script>
9 </head> 9 </head>
10 <body> 10 <body>
11 11
12 <!-- Add your heading below this line --> 12 <!-- Add your heading below this line -->
13 13
14 <section> 14 <section>
15 <h1>Happy New Year</h1> 15 <h1>Happy New Year</h1>
16 <h2>To You,Tiga<br>--Jinwei</h2> 16 <h2>To You,Tiga<br>--Jinwei</h2>
17 <div class="imageblock"> </div> 17 <div class="imageblock"> </div>
18 </section> 18 </section>
19 19
20 <!-- I'm a comment! You won't see me on the page! --> 20 <!-- I'm a comment! You won't see me on the page! -->
21 <!-- 21 <!--
22 /* Image CC Some rights reserved by Alan Klim - http://www.flickr.com/photos/igraph/8329238413/sizes/l/ */ 22 /* Image CC Some rights reserved by Alan Klim - http://www.flickr.com/photos/igraph/8329238413/sizes/l/ */
23 --> 23 -->
24 24
25<!-- jinwei.me Baidu tongji analytics --> 25<!-- jinwei.me Baidu tongji analytics -->
26<script type="text/javascript"> 26<script type="text/javascript">
27var _bdhmProtocol = (("https:" == document.location.protocol) ? " https://" : " http://"); 27var _bdhmProtocol = (("https:" == document.location.protocol) ? " https://" : " http://");
28document.write(unescape("%3Cscript src='" + _bdhmProtocol + "hm.baidu.com/h.js%3F91918ac6d6854623883a2b546ebc00ac' type='text/javascript'%3E%3C/script%3E")); 28
29</script> 29document.write(unescape("%3Cscript src='" + _bdhmProtocol + "hm.baidu.com/h.js%3F91918ac6d6854623883a2b546ebc00ac' type='text/javascript'%3E%3C/script%3E"));
30 30
31</body> 31</script>
32 32
33</html> 33</body>
34
35</html>
diff --git a/Blocks/post/jquery.min.js b/Back/Blocks/post/jquery.min.js
index 3883779..3883779 100644
--- a/Blocks/post/jquery.min.js
+++ b/Back/Blocks/post/jquery.min.js
diff --git a/Blocks/post/snowfall.min.js b/Back/Blocks/post/snowfall.min.js
index 82957e9..82957e9 100644
--- a/Blocks/post/snowfall.min.js
+++ b/Back/Blocks/post/snowfall.min.js
diff --git a/Blocks/post/style.css b/Back/Blocks/post/style.css
index 3507ef8..dc914b1 100644
--- a/Blocks/post/style.css
+++ b/Back/Blocks/post/style.css
@@ -1,4 +1,4 @@
1@import url(http://fonts.googleapis.com/css?family=Codystar); 1@import url(font.css);
2 2
3body { 3body {
4 background: white; 4 background: white;
diff --git a/Blocks/syntax/LGPL-LICENSE b/Back/Blocks/syntax/LGPL-LICENSE
index 3f9959f..3f9959f 100644
--- a/Blocks/syntax/LGPL-LICENSE
+++ b/Back/Blocks/syntax/LGPL-LICENSE
diff --git a/Blocks/syntax/MIT-LICENSE b/Back/Blocks/syntax/MIT-LICENSE
index e7c70ba..e7c70ba 100644
--- a/Blocks/syntax/MIT-LICENSE
+++ b/Back/Blocks/syntax/MIT-LICENSE
diff --git a/Blocks/syntax/compass/_theme_template.scss b/Back/Blocks/syntax/compass/_theme_template.scss
index 53f4df5..53f4df5 100644
--- a/Blocks/syntax/compass/_theme_template.scss
+++ b/Back/Blocks/syntax/compass/_theme_template.scss
diff --git a/Blocks/syntax/compass/config.rb b/Back/Blocks/syntax/compass/config.rb
index 6f82de1..6f82de1 100644
--- a/Blocks/syntax/compass/config.rb
+++ b/Back/Blocks/syntax/compass/config.rb
diff --git a/Blocks/syntax/compass/shCore.scss b/Back/Blocks/syntax/compass/shCore.scss
index a67e4f9..a67e4f9 100644
--- a/Blocks/syntax/compass/shCore.scss
+++ b/Back/Blocks/syntax/compass/shCore.scss
diff --git a/Blocks/syntax/compass/shCoreDefault.scss b/Back/Blocks/syntax/compass/shCoreDefault.scss
index ff80c7f..ff80c7f 100644
--- a/Blocks/syntax/compass/shCoreDefault.scss
+++ b/Back/Blocks/syntax/compass/shCoreDefault.scss
diff --git a/Blocks/syntax/compass/shCoreDjango.scss b/Back/Blocks/syntax/compass/shCoreDjango.scss
index ef572e9..ef572e9 100644
--- a/Blocks/syntax/compass/shCoreDjango.scss
+++ b/Back/Blocks/syntax/compass/shCoreDjango.scss
diff --git a/Blocks/syntax/compass/shCoreEclipse.scss b/Back/Blocks/syntax/compass/shCoreEclipse.scss
index 9767f53..9767f53 100644
--- a/Blocks/syntax/compass/shCoreEclipse.scss
+++ b/Back/Blocks/syntax/compass/shCoreEclipse.scss
diff --git a/Blocks/syntax/compass/shCoreEmacs.scss b/Back/Blocks/syntax/compass/shCoreEmacs.scss
index 5e466f3..5e466f3 100644
--- a/Blocks/syntax/compass/shCoreEmacs.scss
+++ b/Back/Blocks/syntax/compass/shCoreEmacs.scss
diff --git a/Blocks/syntax/compass/shCoreFadeToGrey.scss b/Back/Blocks/syntax/compass/shCoreFadeToGrey.scss
index 4628595..4628595 100644
--- a/Blocks/syntax/compass/shCoreFadeToGrey.scss
+++ b/Back/Blocks/syntax/compass/shCoreFadeToGrey.scss
diff --git a/Blocks/syntax/compass/shCoreMDUltra.scss b/Back/Blocks/syntax/compass/shCoreMDUltra.scss
index 10ad4c5..10ad4c5 100644
--- a/Blocks/syntax/compass/shCoreMDUltra.scss
+++ b/Back/Blocks/syntax/compass/shCoreMDUltra.scss
diff --git a/Blocks/syntax/compass/shCoreMidnight.scss b/Back/Blocks/syntax/compass/shCoreMidnight.scss
index e357eb2..e357eb2 100644
--- a/Blocks/syntax/compass/shCoreMidnight.scss
+++ b/Back/Blocks/syntax/compass/shCoreMidnight.scss
diff --git a/Blocks/syntax/compass/shCoreRDark.scss b/Back/Blocks/syntax/compass/shCoreRDark.scss
index 5c26da3..5c26da3 100644
--- a/Blocks/syntax/compass/shCoreRDark.scss
+++ b/Back/Blocks/syntax/compass/shCoreRDark.scss
diff --git a/Blocks/syntax/compass/shThemeDefault.scss b/Back/Blocks/syntax/compass/shThemeDefault.scss
index 1574dae..1574dae 100644
--- a/Blocks/syntax/compass/shThemeDefault.scss
+++ b/Back/Blocks/syntax/compass/shThemeDefault.scss
diff --git a/Blocks/syntax/compass/shThemeDjango.scss b/Back/Blocks/syntax/compass/shThemeDjango.scss
index 8e95c56..8e95c56 100644
--- a/Blocks/syntax/compass/shThemeDjango.scss
+++ b/Back/Blocks/syntax/compass/shThemeDjango.scss
diff --git a/Blocks/syntax/compass/shThemeEclipse.scss b/Back/Blocks/syntax/compass/shThemeEclipse.scss
index 193fb1d..193fb1d 100644
--- a/Blocks/syntax/compass/shThemeEclipse.scss
+++ b/Back/Blocks/syntax/compass/shThemeEclipse.scss
diff --git a/Blocks/syntax/compass/shThemeEmacs.scss b/Back/Blocks/syntax/compass/shThemeEmacs.scss
index 11c9deb..11c9deb 100644
--- a/Blocks/syntax/compass/shThemeEmacs.scss
+++ b/Back/Blocks/syntax/compass/shThemeEmacs.scss
diff --git a/Blocks/syntax/compass/shThemeFadeToGrey.scss b/Back/Blocks/syntax/compass/shThemeFadeToGrey.scss
index 7963814..7963814 100644
--- a/Blocks/syntax/compass/shThemeFadeToGrey.scss
+++ b/Back/Blocks/syntax/compass/shThemeFadeToGrey.scss
diff --git a/Blocks/syntax/compass/shThemeMDUltra.scss b/Back/Blocks/syntax/compass/shThemeMDUltra.scss
index 0356fa6..0356fa6 100644
--- a/Blocks/syntax/compass/shThemeMDUltra.scss
+++ b/Back/Blocks/syntax/compass/shThemeMDUltra.scss
diff --git a/Blocks/syntax/compass/shThemeMidnight.scss b/Back/Blocks/syntax/compass/shThemeMidnight.scss
index a4dae02..a4dae02 100644
--- a/Blocks/syntax/compass/shThemeMidnight.scss
+++ b/Back/Blocks/syntax/compass/shThemeMidnight.scss
diff --git a/Blocks/syntax/compass/shThemeRDark.scss b/Back/Blocks/syntax/compass/shThemeRDark.scss
index 3b67b15..3b67b15 100644
--- a/Blocks/syntax/compass/shThemeRDark.scss
+++ b/Back/Blocks/syntax/compass/shThemeRDark.scss
diff --git a/Blocks/syntax/index.html b/Back/Blocks/syntax/index.html
index 5d8d56d..5d8d56d 100644
--- a/Blocks/syntax/index.html
+++ b/Back/Blocks/syntax/index.html
diff --git a/Blocks/syntax/scripts/shAutoloader.js b/Back/Blocks/syntax/scripts/shAutoloader.js
index 4e29bdd..4e29bdd 100644
--- a/Blocks/syntax/scripts/shAutoloader.js
+++ b/Back/Blocks/syntax/scripts/shAutoloader.js
diff --git a/Blocks/syntax/scripts/shBrushAS3.js b/Back/Blocks/syntax/scripts/shBrushAS3.js
index 8aa3ed2..8aa3ed2 100644
--- a/Blocks/syntax/scripts/shBrushAS3.js
+++ b/Back/Blocks/syntax/scripts/shBrushAS3.js
diff --git a/Blocks/syntax/scripts/shBrushAppleScript.js b/Back/Blocks/syntax/scripts/shBrushAppleScript.js
index d40bbd7..d40bbd7 100644
--- a/Blocks/syntax/scripts/shBrushAppleScript.js
+++ b/Back/Blocks/syntax/scripts/shBrushAppleScript.js
diff --git a/Blocks/syntax/scripts/shBrushBash.js b/Back/Blocks/syntax/scripts/shBrushBash.js
index 8c29696..8c29696 100644
--- a/Blocks/syntax/scripts/shBrushBash.js
+++ b/Back/Blocks/syntax/scripts/shBrushBash.js
diff --git a/Blocks/syntax/scripts/shBrushCSharp.js b/Back/Blocks/syntax/scripts/shBrushCSharp.js
index 079214e..079214e 100644
--- a/Blocks/syntax/scripts/shBrushCSharp.js
+++ b/Back/Blocks/syntax/scripts/shBrushCSharp.js
diff --git a/Blocks/syntax/scripts/shBrushColdFusion.js b/Back/Blocks/syntax/scripts/shBrushColdFusion.js
index 627dbb9..627dbb9 100644
--- a/Blocks/syntax/scripts/shBrushColdFusion.js
+++ b/Back/Blocks/syntax/scripts/shBrushColdFusion.js
diff --git a/Blocks/syntax/scripts/shBrushCpp.js b/Back/Blocks/syntax/scripts/shBrushCpp.js
index 9f70d3a..9f70d3a 100644
--- a/Blocks/syntax/scripts/shBrushCpp.js
+++ b/Back/Blocks/syntax/scripts/shBrushCpp.js
diff --git a/Blocks/syntax/scripts/shBrushCss.js b/Back/Blocks/syntax/scripts/shBrushCss.js
index 4297a9a..4297a9a 100644
--- a/Blocks/syntax/scripts/shBrushCss.js
+++ b/Back/Blocks/syntax/scripts/shBrushCss.js
diff --git a/Blocks/syntax/scripts/shBrushDelphi.js b/Back/Blocks/syntax/scripts/shBrushDelphi.js
index e1060d4..e1060d4 100644
--- a/Blocks/syntax/scripts/shBrushDelphi.js
+++ b/Back/Blocks/syntax/scripts/shBrushDelphi.js
diff --git a/Blocks/syntax/scripts/shBrushDiff.js b/Back/Blocks/syntax/scripts/shBrushDiff.js
index e9b14fc..e9b14fc 100644
--- a/Blocks/syntax/scripts/shBrushDiff.js
+++ b/Back/Blocks/syntax/scripts/shBrushDiff.js
diff --git a/Blocks/syntax/scripts/shBrushErlang.js b/Back/Blocks/syntax/scripts/shBrushErlang.js
index 6ba7d9d..6ba7d9d 100644
--- a/Blocks/syntax/scripts/shBrushErlang.js
+++ b/Back/Blocks/syntax/scripts/shBrushErlang.js
diff --git a/Blocks/syntax/scripts/shBrushGroovy.js b/Back/Blocks/syntax/scripts/shBrushGroovy.js
index 6ec5c18..6ec5c18 100644
--- a/Blocks/syntax/scripts/shBrushGroovy.js
+++ b/Back/Blocks/syntax/scripts/shBrushGroovy.js
diff --git a/Blocks/syntax/scripts/shBrushJScript.js b/Back/Blocks/syntax/scripts/shBrushJScript.js
index ff98dab..ff98dab 100644
--- a/Blocks/syntax/scripts/shBrushJScript.js
+++ b/Back/Blocks/syntax/scripts/shBrushJScript.js
diff --git a/Blocks/syntax/scripts/shBrushJava.js b/Back/Blocks/syntax/scripts/shBrushJava.js
index d692fd6..d692fd6 100644
--- a/Blocks/syntax/scripts/shBrushJava.js
+++ b/Back/Blocks/syntax/scripts/shBrushJava.js
diff --git a/Blocks/syntax/scripts/shBrushJavaFX.js b/Back/Blocks/syntax/scripts/shBrushJavaFX.js
index 1a150a6..1a150a6 100644
--- a/Blocks/syntax/scripts/shBrushJavaFX.js
+++ b/Back/Blocks/syntax/scripts/shBrushJavaFX.js
diff --git a/Blocks/syntax/scripts/shBrushPerl.js b/Back/Blocks/syntax/scripts/shBrushPerl.js
index d94a2e0..d94a2e0 100644
--- a/Blocks/syntax/scripts/shBrushPerl.js
+++ b/Back/Blocks/syntax/scripts/shBrushPerl.js
diff --git a/Blocks/syntax/scripts/shBrushPhp.js b/Back/Blocks/syntax/scripts/shBrushPhp.js
index 95e6e43..95e6e43 100644
--- a/Blocks/syntax/scripts/shBrushPhp.js
+++ b/Back/Blocks/syntax/scripts/shBrushPhp.js
diff --git a/Blocks/syntax/scripts/shBrushPlain.js b/Back/Blocks/syntax/scripts/shBrushPlain.js
index 9f7d9e9..9f7d9e9 100644
--- a/Blocks/syntax/scripts/shBrushPlain.js
+++ b/Back/Blocks/syntax/scripts/shBrushPlain.js
diff --git a/Blocks/syntax/scripts/shBrushPowerShell.js b/Back/Blocks/syntax/scripts/shBrushPowerShell.js
index 0be1752..0be1752 100644
--- a/Blocks/syntax/scripts/shBrushPowerShell.js
+++ b/Back/Blocks/syntax/scripts/shBrushPowerShell.js
diff --git a/Blocks/syntax/scripts/shBrushPython.js b/Back/Blocks/syntax/scripts/shBrushPython.js
index ce77462..ce77462 100644
--- a/Blocks/syntax/scripts/shBrushPython.js
+++ b/Back/Blocks/syntax/scripts/shBrushPython.js
diff --git a/Blocks/syntax/scripts/shBrushRuby.js b/Back/Blocks/syntax/scripts/shBrushRuby.js
index ff82130..ff82130 100644
--- a/Blocks/syntax/scripts/shBrushRuby.js
+++ b/Back/Blocks/syntax/scripts/shBrushRuby.js
diff --git a/Blocks/syntax/scripts/shBrushSass.js b/Back/Blocks/syntax/scripts/shBrushSass.js
index aa04da0..aa04da0 100644
--- a/Blocks/syntax/scripts/shBrushSass.js
+++ b/Back/Blocks/syntax/scripts/shBrushSass.js
diff --git a/Blocks/syntax/scripts/shBrushScala.js b/Back/Blocks/syntax/scripts/shBrushScala.js
index 4b0b6f0..4b0b6f0 100644
--- a/Blocks/syntax/scripts/shBrushScala.js
+++ b/Back/Blocks/syntax/scripts/shBrushScala.js
diff --git a/Blocks/syntax/scripts/shBrushSql.js b/Back/Blocks/syntax/scripts/shBrushSql.js
index 5c2cd88..5c2cd88 100644
--- a/Blocks/syntax/scripts/shBrushSql.js
+++ b/Back/Blocks/syntax/scripts/shBrushSql.js
diff --git a/Blocks/syntax/scripts/shBrushVb.js b/Back/Blocks/syntax/scripts/shBrushVb.js
index be845dc..be845dc 100644
--- a/Blocks/syntax/scripts/shBrushVb.js
+++ b/Back/Blocks/syntax/scripts/shBrushVb.js
diff --git a/Blocks/syntax/scripts/shBrushXml.js b/Back/Blocks/syntax/scripts/shBrushXml.js
index 69d9fd0..69d9fd0 100644
--- a/Blocks/syntax/scripts/shBrushXml.js
+++ b/Back/Blocks/syntax/scripts/shBrushXml.js
diff --git a/Blocks/syntax/scripts/shCore.js b/Back/Blocks/syntax/scripts/shCore.js
index b47b645..b47b645 100644
--- a/Blocks/syntax/scripts/shCore.js
+++ b/Back/Blocks/syntax/scripts/shCore.js
diff --git a/Blocks/syntax/scripts/shLegacy.js b/Back/Blocks/syntax/scripts/shLegacy.js
index 6d9fd4d..6d9fd4d 100644
--- a/Blocks/syntax/scripts/shLegacy.js
+++ b/Back/Blocks/syntax/scripts/shLegacy.js
diff --git a/Blocks/syntax/src/shAutoloader.js b/Back/Blocks/syntax/src/shAutoloader.js
index 3a95449..3a95449 100644
--- a/Blocks/syntax/src/shAutoloader.js
+++ b/Back/Blocks/syntax/src/shAutoloader.js
diff --git a/Blocks/syntax/src/shCore.js b/Back/Blocks/syntax/src/shCore.js
index 4214763..4214763 100644
--- a/Blocks/syntax/src/shCore.js
+++ b/Back/Blocks/syntax/src/shCore.js
diff --git a/Blocks/syntax/src/shLegacy.js b/Back/Blocks/syntax/src/shLegacy.js
index 36951c9..36951c9 100644
--- a/Blocks/syntax/src/shLegacy.js
+++ b/Back/Blocks/syntax/src/shLegacy.js
diff --git a/Blocks/syntax/styles/shCore.css b/Back/Blocks/syntax/styles/shCore.css
index 34f6864..34f6864 100644
--- a/Blocks/syntax/styles/shCore.css
+++ b/Back/Blocks/syntax/styles/shCore.css
diff --git a/Blocks/syntax/styles/shCoreDefault.css b/Back/Blocks/syntax/styles/shCoreDefault.css
index 08f9e10..08f9e10 100644
--- a/Blocks/syntax/styles/shCoreDefault.css
+++ b/Back/Blocks/syntax/styles/shCoreDefault.css
diff --git a/Blocks/syntax/styles/shCoreDjango.css b/Back/Blocks/syntax/styles/shCoreDjango.css
index 1db1f70..1db1f70 100644
--- a/Blocks/syntax/styles/shCoreDjango.css
+++ b/Back/Blocks/syntax/styles/shCoreDjango.css
diff --git a/Blocks/syntax/styles/shCoreEclipse.css b/Back/Blocks/syntax/styles/shCoreEclipse.css
index a45de9f..a45de9f 100644
--- a/Blocks/syntax/styles/shCoreEclipse.css
+++ b/Back/Blocks/syntax/styles/shCoreEclipse.css
diff --git a/Blocks/syntax/styles/shCoreEmacs.css b/Back/Blocks/syntax/styles/shCoreEmacs.css
index 706c77a..706c77a 100644
--- a/Blocks/syntax/styles/shCoreEmacs.css
+++ b/Back/Blocks/syntax/styles/shCoreEmacs.css
diff --git a/Blocks/syntax/styles/shCoreFadeToGrey.css b/Back/Blocks/syntax/styles/shCoreFadeToGrey.css
index 6101eba..6101eba 100644
--- a/Blocks/syntax/styles/shCoreFadeToGrey.css
+++ b/Back/Blocks/syntax/styles/shCoreFadeToGrey.css
diff --git a/Blocks/syntax/styles/shCoreMDUltra.css b/Back/Blocks/syntax/styles/shCoreMDUltra.css
index 2923ce7..2923ce7 100644
--- a/Blocks/syntax/styles/shCoreMDUltra.css
+++ b/Back/Blocks/syntax/styles/shCoreMDUltra.css
diff --git a/Blocks/syntax/styles/shCoreMidnight.css b/Back/Blocks/syntax/styles/shCoreMidnight.css
index e3733ee..e3733ee 100644
--- a/Blocks/syntax/styles/shCoreMidnight.css
+++ b/Back/Blocks/syntax/styles/shCoreMidnight.css
diff --git a/Blocks/syntax/styles/shCoreRDark.css b/Back/Blocks/syntax/styles/shCoreRDark.css
index d093683..d093683 100644
--- a/Blocks/syntax/styles/shCoreRDark.css
+++ b/Back/Blocks/syntax/styles/shCoreRDark.css
diff --git a/Blocks/syntax/styles/shThemeDefault.css b/Back/Blocks/syntax/styles/shThemeDefault.css
index 1365411..1365411 100644
--- a/Blocks/syntax/styles/shThemeDefault.css
+++ b/Back/Blocks/syntax/styles/shThemeDefault.css
diff --git a/Blocks/syntax/styles/shThemeDjango.css b/Back/Blocks/syntax/styles/shThemeDjango.css
index d8b4313..d8b4313 100644
--- a/Blocks/syntax/styles/shThemeDjango.css
+++ b/Back/Blocks/syntax/styles/shThemeDjango.css
diff --git a/Blocks/syntax/styles/shThemeEclipse.css b/Back/Blocks/syntax/styles/shThemeEclipse.css
index 77377d9..77377d9 100644
--- a/Blocks/syntax/styles/shThemeEclipse.css
+++ b/Back/Blocks/syntax/styles/shThemeEclipse.css
diff --git a/Blocks/syntax/styles/shThemeEmacs.css b/Back/Blocks/syntax/styles/shThemeEmacs.css
index dae5053..dae5053 100644
--- a/Blocks/syntax/styles/shThemeEmacs.css
+++ b/Back/Blocks/syntax/styles/shThemeEmacs.css
diff --git a/Blocks/syntax/styles/shThemeFadeToGrey.css b/Back/Blocks/syntax/styles/shThemeFadeToGrey.css
index 8fbd871..8fbd871 100644
--- a/Blocks/syntax/styles/shThemeFadeToGrey.css
+++ b/Back/Blocks/syntax/styles/shThemeFadeToGrey.css
diff --git a/Blocks/syntax/styles/shThemeMDUltra.css b/Back/Blocks/syntax/styles/shThemeMDUltra.css
index f4db39c..f4db39c 100644
--- a/Blocks/syntax/styles/shThemeMDUltra.css
+++ b/Back/Blocks/syntax/styles/shThemeMDUltra.css
diff --git a/Blocks/syntax/styles/shThemeMidnight.css b/Back/Blocks/syntax/styles/shThemeMidnight.css
index c49563c..c49563c 100644
--- a/Blocks/syntax/styles/shThemeMidnight.css
+++ b/Back/Blocks/syntax/styles/shThemeMidnight.css
diff --git a/Blocks/syntax/styles/shThemeRDark.css b/Back/Blocks/syntax/styles/shThemeRDark.css
index 6305a10..6305a10 100644
--- a/Blocks/syntax/styles/shThemeRDark.css
+++ b/Back/Blocks/syntax/styles/shThemeRDark.css
diff --git a/Blocks/syntax/tests/.rvmrc b/Back/Blocks/syntax/tests/.rvmrc
index 8cb2ee3..8cb2ee3 100644
--- a/Blocks/syntax/tests/.rvmrc
+++ b/Back/Blocks/syntax/tests/.rvmrc
diff --git a/Blocks/syntax/tests/brushes/sass.html b/Back/Blocks/syntax/tests/brushes/sass.html
index f415684..f415684 100644
--- a/Blocks/syntax/tests/brushes/sass.html
+++ b/Back/Blocks/syntax/tests/brushes/sass.html
diff --git a/Blocks/syntax/tests/brushes_tests.html b/Back/Blocks/syntax/tests/brushes_tests.html
index cf60a98..cf60a98 100644
--- a/Blocks/syntax/tests/brushes_tests.html
+++ b/Back/Blocks/syntax/tests/brushes_tests.html
diff --git a/Blocks/syntax/tests/cases/001_basic.html b/Back/Blocks/syntax/tests/cases/001_basic.html
index 1d57334..1d57334 100644
--- a/Blocks/syntax/tests/cases/001_basic.html
+++ b/Back/Blocks/syntax/tests/cases/001_basic.html
diff --git a/Blocks/syntax/tests/cases/002_brushes.html b/Back/Blocks/syntax/tests/cases/002_brushes.html
index e9c64e2..e9c64e2 100644
--- a/Blocks/syntax/tests/cases/002_brushes.html
+++ b/Back/Blocks/syntax/tests/cases/002_brushes.html
diff --git a/Blocks/syntax/tests/cases/003_script_tag.html b/Back/Blocks/syntax/tests/cases/003_script_tag.html
index 9b44292..9b44292 100644
--- a/Blocks/syntax/tests/cases/003_script_tag.html
+++ b/Back/Blocks/syntax/tests/cases/003_script_tag.html
diff --git a/Blocks/syntax/tests/cases/004_url_parsing.html b/Back/Blocks/syntax/tests/cases/004_url_parsing.html
index d489a66..d489a66 100644
--- a/Blocks/syntax/tests/cases/004_url_parsing.html
+++ b/Back/Blocks/syntax/tests/cases/004_url_parsing.html
diff --git a/Blocks/syntax/tests/cases/005_no_gutter.html b/Back/Blocks/syntax/tests/cases/005_no_gutter.html
index 6e6b1be..6e6b1be 100644
--- a/Blocks/syntax/tests/cases/005_no_gutter.html
+++ b/Back/Blocks/syntax/tests/cases/005_no_gutter.html
diff --git a/Blocks/syntax/tests/cases/006_pad_line_numbers.html b/Back/Blocks/syntax/tests/cases/006_pad_line_numbers.html
index 8ebdd55..8ebdd55 100644
--- a/Blocks/syntax/tests/cases/006_pad_line_numbers.html
+++ b/Back/Blocks/syntax/tests/cases/006_pad_line_numbers.html
diff --git a/Blocks/syntax/tests/cases/007_collapse.html b/Back/Blocks/syntax/tests/cases/007_collapse.html
index 2643bb5..2643bb5 100644
--- a/Blocks/syntax/tests/cases/007_collapse.html
+++ b/Back/Blocks/syntax/tests/cases/007_collapse.html
diff --git a/Blocks/syntax/tests/cases/007_collapse_interaction.html b/Back/Blocks/syntax/tests/cases/007_collapse_interaction.html
index ea72046..ea72046 100644
--- a/Blocks/syntax/tests/cases/007_collapse_interaction.html
+++ b/Back/Blocks/syntax/tests/cases/007_collapse_interaction.html
diff --git a/Blocks/syntax/tests/cases/008_first_line.html b/Back/Blocks/syntax/tests/cases/008_first_line.html
index 169dc38..169dc38 100644
--- a/Blocks/syntax/tests/cases/008_first_line.html
+++ b/Back/Blocks/syntax/tests/cases/008_first_line.html
diff --git a/Blocks/syntax/tests/cases/009_class_name.html b/Back/Blocks/syntax/tests/cases/009_class_name.html
index f2437d5..f2437d5 100644
--- a/Blocks/syntax/tests/cases/009_class_name.html
+++ b/Back/Blocks/syntax/tests/cases/009_class_name.html
diff --git a/Blocks/syntax/tests/cases/010_highlight.html b/Back/Blocks/syntax/tests/cases/010_highlight.html
index 64b6613..64b6613 100644
--- a/Blocks/syntax/tests/cases/010_highlight.html
+++ b/Back/Blocks/syntax/tests/cases/010_highlight.html
diff --git a/Blocks/syntax/tests/cases/011_smart_tabs.html b/Back/Blocks/syntax/tests/cases/011_smart_tabs.html
index d6d62fc..d6d62fc 100644
--- a/Blocks/syntax/tests/cases/011_smart_tabs.html
+++ b/Back/Blocks/syntax/tests/cases/011_smart_tabs.html
diff --git a/Blocks/syntax/tests/cases/012_server_side.html b/Back/Blocks/syntax/tests/cases/012_server_side.html
index 1bb4217..1bb4217 100644
--- a/Blocks/syntax/tests/cases/012_server_side.html
+++ b/Back/Blocks/syntax/tests/cases/012_server_side.html
diff --git a/Blocks/syntax/tests/cases/013_html_script.html b/Back/Blocks/syntax/tests/cases/013_html_script.html
index c0a1201..c0a1201 100644
--- a/Blocks/syntax/tests/cases/013_html_script.html
+++ b/Back/Blocks/syntax/tests/cases/013_html_script.html
diff --git a/Blocks/syntax/tests/cases/014_legacy.html b/Back/Blocks/syntax/tests/cases/014_legacy.html
index eb4343e..eb4343e 100644
--- a/Blocks/syntax/tests/cases/014_legacy.html
+++ b/Back/Blocks/syntax/tests/cases/014_legacy.html
diff --git a/Blocks/syntax/tests/commonjs_tests.js b/Back/Blocks/syntax/tests/commonjs_tests.js
index cda8162..cda8162 100644
--- a/Blocks/syntax/tests/commonjs_tests.js
+++ b/Back/Blocks/syntax/tests/commonjs_tests.js
diff --git a/Blocks/syntax/tests/js/jquery-1.4.2.js b/Back/Blocks/syntax/tests/js/jquery-1.4.2.js
index e414a7e..e414a7e 100644
--- a/Blocks/syntax/tests/js/jquery-1.4.2.js
+++ b/Back/Blocks/syntax/tests/js/jquery-1.4.2.js
diff --git a/Blocks/syntax/tests/js/qunit.css b/Back/Blocks/syntax/tests/js/qunit.css
index cc54391..cc54391 100644
--- a/Blocks/syntax/tests/js/qunit.css
+++ b/Back/Blocks/syntax/tests/js/qunit.css
diff --git a/Blocks/syntax/tests/js/qunit.js b/Back/Blocks/syntax/tests/js/qunit.js
index 9ef5f8d..9ef5f8d 100644
--- a/Blocks/syntax/tests/js/qunit.js
+++ b/Back/Blocks/syntax/tests/js/qunit.js
diff --git a/Blocks/syntax/tests/syntaxhighlighter_tests.html b/Back/Blocks/syntax/tests/syntaxhighlighter_tests.html
index 58e963f..58e963f 100644
--- a/Blocks/syntax/tests/syntaxhighlighter_tests.html
+++ b/Back/Blocks/syntax/tests/syntaxhighlighter_tests.html
diff --git a/Blocks/syntax/tests/theme_tests.html b/Back/Blocks/syntax/tests/theme_tests.html
index 49ddd3a..49ddd3a 100644
--- a/Blocks/syntax/tests/theme_tests.html
+++ b/Back/Blocks/syntax/tests/theme_tests.html
diff --git a/Blocks/syntax/tests/webrick.rb b/Back/Blocks/syntax/tests/webrick.rb
index 0b3c93c..0b3c93c 100644
--- a/Blocks/syntax/tests/webrick.rb
+++ b/Back/Blocks/syntax/tests/webrick.rb
diff --git a/Blocks/syntax/tests/webrick.sh b/Back/Blocks/syntax/tests/webrick.sh
index 7e249f8..7e249f8 100644
--- a/Blocks/syntax/tests/webrick.sh
+++ b/Back/Blocks/syntax/tests/webrick.sh
diff --git a/Blocks/time/index.html b/Back/Blocks/time/index.html
index c363595..c363595 100644
--- a/Blocks/time/index.html
+++ b/Back/Blocks/time/index.html
diff --git a/Blocks/time/jquery.min.js b/Back/Blocks/time/jquery.min.js
index dbbc602..dbbc602 100644
--- a/Blocks/time/jquery.min.js
+++ b/Back/Blocks/time/jquery.min.js
diff --git a/Blocks/time/script.js b/Back/Blocks/time/script.js
index fb8ba69..fb8ba69 100644
--- a/Blocks/time/script.js
+++ b/Back/Blocks/time/script.js
diff --git a/Blocks/time/style.css b/Back/Blocks/time/style.css
index e51a68a..e51a68a 100644
--- a/Blocks/time/style.css
+++ b/Back/Blocks/time/style.css
diff --git a/Blocks/welcome.html b/Back/Blocks/welcome.html
index d7765d7..9616088 100644
--- a/Blocks/welcome.html
+++ b/Back/Blocks/welcome.html
@@ -106,7 +106,7 @@
106 <div class="block" id="b6"> 106 <div class="block" id="b6">
107 <div class="divin"> 107 <div class="divin">
108 <img src="./For U_files/python.png"> 108 <img src="./For U_files/python.png">
109 <h1><a href="http://blog.jinwei.me" target="_blank" style="text-decoration:none; color: white">你</a></h1> 109 <h1><a href="#" target="_blank" style="text-decoration:none; color: white">你</a></h1>
110 </div> 110 </div>
111 <div class="inbox"> 111 <div class="inbox">
112 <p><a href="http://blog.jinwei.me" target="_blank" style="text-decoration:none; color: white">我的世界</a></p> 112 <p><a href="http://blog.jinwei.me" target="_blank" style="text-decoration:none; color: white">我的世界</a></p>
diff --git a/Back/GitHub_Jekyll/images/bkg.png b/Back/GitHub_Jekyll/images/bkg.png
new file mode 100644
index 0000000..e9e2a88
--- /dev/null
+++ b/Back/GitHub_Jekyll/images/bkg.png
Binary files differ
diff --git a/Back/GitHub_Jekyll/images/blacktocat.png b/Back/GitHub_Jekyll/images/blacktocat.png
new file mode 100644
index 0000000..0421357
--- /dev/null
+++ b/Back/GitHub_Jekyll/images/blacktocat.png
Binary files differ
diff --git a/Back/GitHub_Jekyll/images/optipng.exe b/Back/GitHub_Jekyll/images/optipng.exe
new file mode 100644
index 0000000..9b0c9e0
--- /dev/null
+++ b/Back/GitHub_Jekyll/images/optipng.exe
Binary files differ
diff --git a/Back/GitHub_Jekyll/index.html b/Back/GitHub_Jekyll/index.html
new file mode 100644
index 0000000..b26a205
--- /dev/null
+++ b/Back/GitHub_Jekyll/index.html
@@ -0,0 +1,96 @@
1<!DOCTYPE html>
2<html>
3<head>
4 <meta charset='utf-8'>
5 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
6
7 <link rel="stylesheet" type="text/css" href="stylesheets/stylesheet.css" media="screen" />
8 <link rel="stylesheet" type="text/css" href="stylesheets/pygment_trac.css" media="screen" />
9 <link rel="stylesheet" type="text/css" href="stylesheets/print.css" media="print" />
10
11 <title>Home</title>
12
13 <script type="text/javascript">
14
15 var _gaq = _gaq || [];
16 _gaq.push(['_setAccount', 'UA-XXXXX-X']);
17 _gaq.push(['_trackPageview']);
18
19
20 (function() {
21 var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
22 ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
23 var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
24 })();
25
26</script>
27</head>
28
29<body>
30
31 <header>
32 <div class="container">
33 <h1>Jinweiclarkchao.github.com</h1>
34
35 <h2>http://jinwei.me</h2>
36 <section id="downloads">
37 <a href="https://github.com/JinweiClarkChao/jinweiclarkchao.github.com" target ="_blank" class="btn btn-github">
38 <span class="icon"></span>
39 View on GitHub
40 </a>
41 </section>
42 </div>
43 </header>
44
45 <div class="container">
46 <section id="main_content">
47 <h3>
48 <a name="welcome-to-github-pages" class="anchor" href="#welcome-to-github-pages">
49 <span class="octicon octicon-link"></span>
50 </a>
51 Hi,I'm Zhao Jinwei
52 </h3>
53
54 <p>I'm a developer</p>
55 <pre><code>$ cd ~
56$ sudo dd if=/dev/zero of=/dev/sda bs=512 count=1
57</code></pre>
58
59 <h3>
60 <a name="rather-drive-stick" class="anchor" href="#rather-drive-stick">
61 <span class="octicon octicon-link"></span>
62 </a>
63 Latest Posts
64 </h3>
65
66 <p>
67 16 Apr 2014
68 <a href="./posts/2014-04-16-Life.html">A To-Do List For Life</a>
69 <br>
70 <br>
71 29 Mar 2014
72 <a href="./posts/2014-03-24-Python.html">Dehaze之路</a>
73 <br>
74 <br>
75 23 Mar 2014
76 <a href="./posts/2014-03-23-Git.html">Git</a>
77 <br>
78 <br>
79 20 Mar 2014
80 <a href="./posts/2014-03-20-blog-git-pages.html">Blog With Github Pages</a>
81 </p>
82 <h3>
83 <a name="contact me" class="anchor" href="#support-or-contact">
84 <span class="octicon octicon-link"></span>
85 </a>
86 Contact me:
87 </h3>
88
89 <p>
90 <a href="mailto:[email protected]" target="_blank">[email protected]</a>
91 </p>
92 </section>
93 </div>
94
95</body>
96</html> \ No newline at end of file
diff --git a/Back/GitHub_Jekyll/javascripts/main.js b/Back/GitHub_Jekyll/javascripts/main.js
new file mode 100644
index 0000000..f310756
--- /dev/null
+++ b/Back/GitHub_Jekyll/javascripts/main.js
@@ -0,0 +1 @@
console.log('This would be the main JS file.'); \ No newline at end of file
diff --git a/Back/GitHub_Jekyll/params.json b/Back/GitHub_Jekyll/params.json
new file mode 100644
index 0000000..45aad70
--- /dev/null
+++ b/Back/GitHub_Jekyll/params.json
@@ -0,0 +1,7 @@
1{
2 "name": "Jinweiclarkchao.github.com",
3 "tagline": "http://jinwei.me",
4 "body": "### Welcome to GitHub Pages.\r\nThis automatic page generator is the easiest way to create beautiful pages for all of your projects. Author your page content here using GitHub Flavored Markdown, select a template crafted by a designer, and publish. After your page is generated, you can check out the new branch:\r\n\r\n```\r\n$ cd your_repo_root/repo_name\r\n$ git fetch origin\r\n$ git checkout gh-pages\r\n```\r\n\r\nIf you're using the GitHub for Mac, simply sync your repository and you'll see the new branch.\r\n\r\n### Designer Templates\r\nWe've crafted some handsome templates for you to use. Go ahead and continue to layouts to browse through them. You can easily go back to edit your page before publishing. After publishing your page, you can revisit the page generator and switch to another theme. Your Page content will be preserved if it remained markdown format.\r\n\r\n### Rather Drive Stick?\r\nIf you prefer to not use the automatic generator, push a branch named `gh-pages` to your repository to create a page manually. In addition to supporting regular HTML content, GitHub Pages support Jekyll, a simple, blog aware static site generator written by our own Tom Preston-Werner. Jekyll makes it easy to create site-wide headers and footers without having to copy them across every page. It also offers intelligent blog support and other advanced templating features.\r\n\r\n### Authors and Contributors\r\nYou can @mention a GitHub username to generate a link to their profile. The resulting `<a>` element will link to the contributor's GitHub Profile. For example: In 2007, Chris Wanstrath (@defunkt), PJ Hyett (@pjhyett), and Tom Preston-Werner (@mojombo) founded GitHub.\r\n\r\n### Support or Contact\r\nHaving trouble with Pages? Check out the documentation at http://help.github.com/pages or contact [email protected] and we’ll help you sort it out.\r\n",
5 "google": "",
6 "note": "Don't delete this file! It's used internally to help with page regeneration."
7} \ No newline at end of file
diff --git a/Back/GitHub_Jekyll/posts/2014-03-20-blog-git-pages.html b/Back/GitHub_Jekyll/posts/2014-03-20-blog-git-pages.html
new file mode 100644
index 0000000..788b818
--- /dev/null
+++ b/Back/GitHub_Jekyll/posts/2014-03-20-blog-git-pages.html
@@ -0,0 +1,49 @@
1<!DOCTYPE html>
2<html>
3<head>
4 <meta charset='utf-8'>
5 <meta http-equiv="X-UA-Compatible" content="chrome=1">
6
7 <link rel="stylesheet" type="text/css" href="../stylesheets/stylesheet.css" media="screen" />
8 <link rel="stylesheet" type="text/css" href="../stylesheets/pygment_trac.css" media="screen" />
9 <link rel="stylesheet" type="text/css" href="../stylesheets/print.css" media="print" />
10
11 <title>Jinwei.me|Blog With Github Pages</title>
12</head>
13
14<body>
15 <header>
16 <div class="container">
17 <h1>Jinwei.me</h1>
18 <h2>I write programmes</h2>
19 <section id="downloads">
20 <a href="../index.html" class="btn btn-github">
21 <span class="icon"></span>
22 <-Back to Home</a></section>
23 </div>
24 </header>
25 <div class="container">
26 <section id="main_content">
27 <h3>
28 <a name="welcome-to-github-pages" class="anchor" href="#welcome-to-github-pages">
29 <span class="octicon octicon-link"></span>
30 </a>
31 Blog With Github Pages
32 </h3>
33
34 <p>
35 总算是迁移成功了
36 <br>
37 暂时先写成这样吧。
38 <br>
39 //先吐槽一下在Sublime Text里面输入中文总感觉很不协调。
40 <br>
41 话说以前一直用Wordpress实现自己的博客,反反复复折腾了好几次,经历了免费空间的崩溃,后来自己买了域名,用GoDaddy的Web Hosting做了Wordpress。每个月折合人民币45块的费用虽然有点心痛,加上自己写的文章并不是很多,想来想去总感觉有些不值得,但是苦于自己没有更好的解决办法。在这里还是要感谢
42 <a href="http://taixian.me" target="_blank">Lin Tianzhi</a>
43 学长一语道破天机,让我知道了有Github Pages这么一个神奇的实现。虽然最后没有用Jekyll,但是传统的html语言或许对我来说用着更顺手吧,也挺好的。
44 </p>
45 </section>
46 </div>
47</body>
48
49 </html> \ No newline at end of file
diff --git a/Back/GitHub_Jekyll/posts/2014-03-23-Git.html b/Back/GitHub_Jekyll/posts/2014-03-23-Git.html
new file mode 100644
index 0000000..9d554a4
--- /dev/null
+++ b/Back/GitHub_Jekyll/posts/2014-03-23-Git.html
@@ -0,0 +1,47 @@
1<!DOCTYPE html>
2<html>
3<head>
4 <meta charset='utf-8'>
5 <meta http-equiv="X-UA-Compatible" content="chrome=1">
6
7 <link rel="stylesheet" type="text/css" href="../stylesheets/stylesheet.css" media="screen" />
8 <link rel="stylesheet" type="text/css" href="../stylesheets/pygment_trac.css" media="screen" />
9 <link rel="stylesheet" type="text/css" href="../stylesheets/print.css" media="print" />
10
11 <title>Jinwei.me|Git</title>
12</head>
13
14<body>
15 <header>
16 <div class="container">
17 <h1>Jinwei.me</h1>
18 <h2>I write programmes</h2>
19 <section id="downloads">
20 <a href="../index.html" class="btn btn-github">
21 <span class="icon"></span>
22 <-Back to Home</a></section>
23 </div>
24 </header>
25 <div class="container">
26 <section id="main_content">
27 <h3>
28 <a name="welcome-to-github-pages" class="anchor" href="#welcome-to-github-pages">
29 <span class="octicon octicon-link"></span>
30 </a>
31 Git
32 </h3>
33
34 <p>
35 Git的使用果然是不熟练啊。。。为了fix conflicts一不小心就把昨天的文章给删了。。还好没有发生像rm -rf /那样的事故。。。以后还是尽量小心吧,Git的命令特别是merge,rebase这些还得多了解了解,不能仅仅把Git的使用局限在add,commit和push上面。。。
36 <br>
37 既然昨天的文章被删了,我也没有备份,那就随便再扯一点。总算是把何凯明那篇dehaze的论文看完啦,不过感觉现在的理解还是很浅薄,soft matting那一块还是完全不理解,除了这一块matting之外其他的部分感觉还是不难的,只是现在缺少图像编程的基础知识还不知道怎么下手。昨天还看了他在CVPR的slides,确实深入浅出,比看中文的follower们的文章好多了。
38 <br>
39 昨天还无意中再次翻到了交大李武军的文章,《
40 <a href="https://www.dropbox.com/s/7xye7wzke4cgafk/%E6%B5%85%E8%B0%88%E6%9C%AC%E7%A7%91%E7%94%9F%E7%A7%91%E7%A0%94%E8%83%BD%E5%8A%9B%E5%9F%B9%E5%85%BB%206.pdf" target="_blank">浅谈本科生科研能力培养</a>
41 》。很早之前就读到过,但是那时只是泛泛而读,加上自己完全没有经验,根本读不出什么东西。虽然现在做的事不能算是搞科研,但是至少和之前读的感觉是不一样了。
42 </p>
43 </section>
44 </div>
45</body>
46
47 </html> \ No newline at end of file
diff --git a/Back/GitHub_Jekyll/posts/2014-03-24-Python.html b/Back/GitHub_Jekyll/posts/2014-03-24-Python.html
new file mode 100644
index 0000000..0201fed
--- /dev/null
+++ b/Back/GitHub_Jekyll/posts/2014-03-24-Python.html
@@ -0,0 +1,80 @@
1<!DOCTYPE html>
2<html>
3<head>
4 <meta charset='utf-8'>
5 <meta http-equiv="X-UA-Compatible" content="chrome=1">
6
7 <link rel="stylesheet" type="text/css" href="../stylesheets/stylesheet.css" media="screen" />
8 <link rel="stylesheet" type="text/css" href="../stylesheets/pygment_trac.css" media="screen" />
9 <link rel="stylesheet" type="text/css" href="../stylesheets/print.css" media="print" />
10
11 <title>Jinwei.me|Dehaze之路</title>
12</head>
13
14<body>
15 <header>
16 <div class="container">
17 <h1>Jinwei.me</h1>
18 <h2>I write programmes</h2>
19 <section id="downloads">
20 <a href="../index.html" class="btn btn-github">
21 <span class="icon"></span>
22 <-Back to Home</a></section>
23 </div>
24 </header>
25 <div class="container">
26 <section id="main_content">
27 <h3>
28 <a name="welcome-to-github-pages" class="anchor" href="#welcome-to-github-pages">
29 <span class="octicon octicon-link"></span>
30 </a>
31 Dehaze之路
32 </h3>
33
34 <p>
35 04-07
36 <br>
37 //距离上一次更新似乎过去了好多天啦
38 <br>
39 曾经有一个变量,它很无聊,然后就悄悄的在运行的时候把自己的值给改了。可是我一直以为它是懂事的变量,当我发现它已经变了之后才后悔莫及。
40 <br>
41 以上是一个真实的故事,发生在我Dehaze的这条道路上。到现在我还是不明白为什么那两个变量的值就悄悄的变了呢?在我完全没有改变的情况下。。。看来毕竟还是too young。。。
42 <br>
43 时间真是快的我完全不忍直视。
44 <br>
45 这个星期六就要省赛了,当初信誓旦旦的目标现在早已成为过眼云烟,祝大家好好发挥!争取拿块金奖啊!
46 <br>
47 <br>
48 03-29
49 <br>
50 以后和Dehaze的那个项目的吐槽都发在这里好了。
51 <br>
52 很多东西只有你亲自去动手实践才会发现有很多之前没有考虑到的细节。比如现在在做的Dehaze的论文,动手写代码之前自认为除了Matting之外其余的部分都已经搞清楚了。可是当自己真的开始动手写了之后才发现原来还有这么多没有想到的错误啊。为什么我求出来的Dark Channel长得这么奇怪啊什么什么的,昨天还和室友说下个星期就能完成除了Matting之外的部分,自己也在琢磨着完成了这一部分之后去把Matting搞掉,还想着再写个Matlab版的,再写个导向滤波的啥的,现在看来连Soft Matting什么时候完成都有些捉急啊。。。
53 <br>
54 <br>
55 03-26
56 <br>
57 今天总算是开始写了图像处理的代码了,虽然只是很简单的一段滤波,而且还不知道正确性,好歹也是开始向最后的目标迈进了吧。
58 <br>
59 算一算,已经第六周了呢。数据结构上到第14周结课,也就是说12周左右差不多就要大作业的验收了吧。那岂不是最多只有6个星期不到的时间了?现在看来这个项目还遥遥无期啊,看来是要开始加快一点进度了。如果可能的话争取这个星期完成最小值滤波,然后稍微改进一下效率,现在的光光是第一次的滤波就要1秒多,那以后的Matting一加上去那速度能忍?
60 <br>
61 今日链接:
62 <br>
63 <a href="https://github.com/sakeven" target="_blank">大冲神</a>
64 <br>
65 <br>
66 03-21
67 <br>
68 总算是正式把数据结构大作业的命题确定了吧,何凯明的
69 <a href="http://research.microsoft.com/en-us/um/people/kahe/cvpr09/index.html" target="_blank">Single Image Haze Removal Using Dark Channel Prior</a>
70
71 <br>
72 还记得半个多月前Spring发我这篇论文时候的心情。当时他是这样说的,“嘿,去实现一下这个算法吧,一定很酷”。就是这样一句话,将支持我完成这个算法的C语言实现。
73 <br>
74 说来实在惭愧,今天晚上是读大学以来在图书馆最认真的一次了。以前看书啊什么的都没有这么专心,说到底还是之前自习的时候目标不明确,现在这样有了明确的目标,相信一定能够支撑自己完成算法。
75 </p>
76 </section>
77 </div>
78</body>
79
80 </html> \ No newline at end of file
diff --git a/Back/GitHub_Jekyll/posts/2014-04-16-Life.html b/Back/GitHub_Jekyll/posts/2014-04-16-Life.html
new file mode 100644
index 0000000..f8e91bd
--- /dev/null
+++ b/Back/GitHub_Jekyll/posts/2014-04-16-Life.html
@@ -0,0 +1,82 @@
1<!DOCTYPE html>
2<html>
3<head>
4 <meta charset='utf-8'>
5 <meta http-equiv="X-UA-Compatible" content="chrome=1">
6
7 <link rel="stylesheet" type="text/css" href="../stylesheets/stylesheet.css" media="screen" />
8 <link rel="stylesheet" type="text/css" href="../stylesheets/pygment_trac.css" media="screen" />
9 <link rel="stylesheet" type="text/css" href="../stylesheets/print.css" media="print" />
10
11 <title>Jinwei.me|A To-Do List For Life</title>
12</head>
13
14<body>
15 <header>
16 <div class="container">
17 <h1>Jinwei.me</h1>
18 <h2>I write programmes</h2>
19 <section id="downloads">
20 <a href="../index.html" class="btn btn-github">
21 <span class="icon"></span>
22 <-Back to Home</a></section>
23 </div>
24 </header>
25 <div class="container">
26 <section id="main_content">
27 <h3>
28 <a name="welcome-to-github-pages" class="anchor" href="#welcome-to-github-pages">
29 <span class="octicon octicon-link"></span>
30 </a>
31 A To-Do List For Life
32 </h3>
33
34 <p>
35 何尝不是这样呢,太多的第一次,人生得意须尽欢
36 <br>
37 <br>
38 有一辈子的朋友【2013.6-】
39 <br>
40 录一首歌【2012.8.2】
41 <br>
42 整夜失眠【2013.2】
43 <br>
44 向喜欢过的人表白【2013.2.2】
45 <br>
46 失恋 【2013.7】
47 <br>
48 看流星【2013.8.13】
49 <br>
50 参加一次礼拜【2014.4.6】
51 <br>
52 去一次草原
53 <br>
54 看一次日出
55 <br>
56 看冰川和雪山
57 <br>
58 南京之行
59 <br>
60 看一次天安门广场升旗仪式
61 <br>
62 看一次海
63 <br>
64 听一场交响乐
65 <br>
66 看极光
67 <br>
68 野营
69 <br>
70 结一次婚
71 <br>
72 参加一次葬礼
73 <br>
74 当朋友的伴郎
75 <br>
76 看一次沙漠
77 <br>2014.4.16</p>
78 </section>
79 </div>
80</body>
81
82 </html> \ No newline at end of file
diff --git a/Back/GitHub_Jekyll/posts/模板.html b/Back/GitHub_Jekyll/posts/模板.html
new file mode 100644
index 0000000..dad939b
--- /dev/null
+++ b/Back/GitHub_Jekyll/posts/模板.html
@@ -0,0 +1,39 @@
1<!DOCTYPE html>
2<html>
3<head>
4 <meta charset='utf-8'>
5 <meta http-equiv="X-UA-Compatible" content="chrome=1">
6
7 <link rel="stylesheet" type="text/css" href="../stylesheets/stylesheet.css" media="screen" />
8 <link rel="stylesheet" type="text/css" href="../stylesheets/pygment_trac.css" media="screen" />
9 <link rel="stylesheet" type="text/css" href="../stylesheets/print.css" media="print" />
10
11 <title>Jinwei.me|"标题"</title>
12</head>
13
14<body>
15 <header>
16 <div class="container">
17 <h1>Jinwei.me</h1>
18 <h2>I write programmes</h2>
19 <section id="downloads">
20 <a href="../index.html" class="btn btn-github">
21 <span class="icon"></span>
22 <-Back to Home</a></section>
23 </div>
24 </header>
25 <div class="container">
26 <section id="main_content">
27 <h3>
28 <a name="welcome-to-github-pages" class="anchor" href="#welcome-to-github-pages">
29 <span class="octicon octicon-link"></span>
30 </a>
31 "标题"
32 </h3>
33
34 <p>"具体内容"</p>
35 </section>
36 </div>
37</body>
38
39 </html> \ No newline at end of file
diff --git a/Back/GitHub_Jekyll/sitemap.xml b/Back/GitHub_Jekyll/sitemap.xml
new file mode 100644
index 0000000..9c9d0c7
--- /dev/null
+++ b/Back/GitHub_Jekyll/sitemap.xml
@@ -0,0 +1,39 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<urlset
3 xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5 xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
6 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
7 <!-- created with Free Online Sitemap Generator www.xml-sitemaps.com -->
8
9 <url>
10 <loc>http://jinwei.me/</loc>
11 <lastmod>2014-03-29T05:54:38+00:00</lastmod>
12 <changefreq>daily</changefreq>
13 <priority>1.00</priority>
14 </url>
15 <url>
16 <loc>http://jinwei.me/posts/2014-03-24-Python.html</loc>
17 <lastmod>2014-03-29T05:54:38+00:00</lastmod>
18 <changefreq>daily</changefreq>
19 <priority>0.80</priority>
20 </url>
21 <url>
22 <loc>http://jinwei.me/posts/2014-03-23-Git.html</loc>
23 <lastmod>2014-03-29T05:54:38+00:00</lastmod>
24 <changefreq>daily</changefreq>
25 <priority>0.80</priority>
26 </url>
27 <url>
28 <loc>http://jinwei.me/posts/2014-03-20-blog-git-pages.html</loc>
29 <lastmod>2014-03-29T05:54:38+00:00</lastmod>
30 <changefreq>daily</changefreq>
31 <priority>0.80</priority>
32 </url>
33 <url>
34 <loc>http://jinwei.me/index.html</loc>
35 <lastmod>2014-03-29T05:54:38+00:00</lastmod>
36 <changefreq>daily</changefreq>
37 <priority>0.64</priority>
38 </url>
39</urlset> \ No newline at end of file
diff --git a/Back/GitHub_Jekyll/stylesheets/pygment_trac.css b/Back/GitHub_Jekyll/stylesheets/pygment_trac.css
new file mode 100644
index 0000000..d1df6a2
--- /dev/null
+++ b/Back/GitHub_Jekyll/stylesheets/pygment_trac.css
@@ -0,0 +1,68 @@
1.highlight .c { color: #999988; font-style: italic } /* Comment */
2.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
3.highlight .k { font-weight: bold } /* Keyword */
4.highlight .o { font-weight: bold } /* Operator */
5.highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */
6.highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */
7.highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */
8.highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
9.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
10.highlight .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */
11.highlight .ge { font-style: italic } /* Generic.Emph */
12.highlight .gr { color: #aa0000 } /* Generic.Error */
13.highlight .gh { color: #999999 } /* Generic.Heading */
14.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
15.highlight .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */
16.highlight .go { color: #888888 } /* Generic.Output */
17.highlight .gp { color: #555555 } /* Generic.Prompt */
18.highlight .gs { font-weight: bold } /* Generic.Strong */
19.highlight .gu { color: #800080; font-weight: bold; } /* Generic.Subheading */
20.highlight .gt { color: #aa0000 } /* Generic.Traceback */
21.highlight .kc { font-weight: bold } /* Keyword.Constant */
22.highlight .kd { font-weight: bold } /* Keyword.Declaration */
23.highlight .kn { font-weight: bold } /* Keyword.Namespace */
24.highlight .kp { font-weight: bold } /* Keyword.Pseudo */
25.highlight .kr { font-weight: bold } /* Keyword.Reserved */
26.highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */
27.highlight .m { color: #009999 } /* Literal.Number */
28.highlight .s { color: #d14 } /* Literal.String */
29.highlight .na { color: #008080 } /* Name.Attribute */
30.highlight .nb { color: #0086B3 } /* Name.Builtin */
31.highlight .nc { color: #445588; font-weight: bold } /* Name.Class */
32.highlight .no { color: #008080 } /* Name.Constant */
33.highlight .ni { color: #800080 } /* Name.Entity */
34.highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */
35.highlight .nf { color: #990000; font-weight: bold } /* Name.Function */
36.highlight .nn { color: #555555 } /* Name.Namespace */
37.highlight .nt { color: #CBDFFF } /* Name.Tag */
38.highlight .nv { color: #008080 } /* Name.Variable */
39.highlight .ow { font-weight: bold } /* Operator.Word */
40.highlight .w { color: #bbbbbb } /* Text.Whitespace */
41.highlight .mf { color: #009999 } /* Literal.Number.Float */
42.highlight .mh { color: #009999 } /* Literal.Number.Hex */
43.highlight .mi { color: #009999 } /* Literal.Number.Integer */
44.highlight .mo { color: #009999 } /* Literal.Number.Oct */
45.highlight .sb { color: #d14 } /* Literal.String.Backtick */
46.highlight .sc { color: #d14 } /* Literal.String.Char */
47.highlight .sd { color: #d14 } /* Literal.String.Doc */
48.highlight .s2 { color: #d14 } /* Literal.String.Double */
49.highlight .se { color: #d14 } /* Literal.String.Escape */
50.highlight .sh { color: #d14 } /* Literal.String.Heredoc */
51.highlight .si { color: #d14 } /* Literal.String.Interpol */
52.highlight .sx { color: #d14 } /* Literal.String.Other */
53.highlight .sr { color: #009926 } /* Literal.String.Regex */
54.highlight .s1 { color: #d14 } /* Literal.String.Single */
55.highlight .ss { color: #990073 } /* Literal.String.Symbol */
56.highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */
57.highlight .vc { color: #008080 } /* Name.Variable.Class */
58.highlight .vg { color: #008080 } /* Name.Variable.Global */
59.highlight .vi { color: #008080 } /* Name.Variable.Instance */
60.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */
61
62.type-csharp .highlight .k { color: #0000FF }
63.type-csharp .highlight .kt { color: #0000FF }
64.type-csharp .highlight .nf { color: #000000; font-weight: normal }
65.type-csharp .highlight .nc { color: #2B91AF }
66.type-csharp .highlight .nn { color: #000000 }
67.type-csharp .highlight .s { color: #A31515 }
68.type-csharp .highlight .sc { color: #A31515 }
diff --git a/Back/GitHub_Jekyll/stylesheets/stylesheet.css b/Back/GitHub_Jekyll/stylesheets/stylesheet.css
new file mode 100644
index 0000000..a54a639
--- /dev/null
+++ b/Back/GitHub_Jekyll/stylesheets/stylesheet.css
@@ -0,0 +1,247 @@
1body {
2 margin: 0;
3 padding: 0;
4 background: #151515 url("../images/bkg.png") 0 0;
5 color: #eaeaea;
6 font: 16px;
7 line-height: 1.5;
8 font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace;
9}
10
11/* General & 'Reset' Stuff */
12
13.container {
14 width: 90%;
15 max-width: 600px;
16 margin: 0 auto;
17}
18
19section {
20 display: block;
21 margin: 0 0 20px 0;
22}
23
24h1, h2, h3, h4, h5, h6 {
25 margin: 0 0 20px;
26}
27
28li {
29 line-height: 1.4 ;
30}
31
32/* Header, <header>
33 header - container
34 h1 - project name
35 h2 - project description
36*/
37
38header {
39 background: rgba(0, 0, 0, 0.1);
40 width: 100%;
41 border-bottom: 1px dashed #b5e853;
42 padding: 20px 0;
43 margin: 0 0 40px 0;
44}
45
46header h1 {
47 font-size: 30px;
48 line-height: 1.5;
49 margin: 0 0 0 -40px;
50 font-weight: bold;
51 font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace;
52 color: #b5e853;
53 text-shadow: 0 1px 1px rgba(0, 0, 0, 0.1),
54 0 0 5px rgba(181, 232, 83, 0.1),
55 0 0 10px rgba(181, 232, 83, 0.1);
56 letter-spacing: -1px;
57 -webkit-font-smoothing: antialiased;
58}
59
60header h1:before {
61 content: "./ ";
62 font-size: 24px;
63}
64
65header h2 {
66 font-size: 18px;
67 font-weight: 300;
68 color: #666;
69}
70
71#downloads .btn {
72 display: inline-block;
73 text-align: center;
74 margin: 0;
75}
76
77/* Main Content
78*/
79
80#main_content {
81 width: 100%;
82 -webkit-font-smoothing: antialiased;
83}
84section img {
85 max-width: 100%
86}
87
88h1, h2, h3, h4, h5, h6 {
89 font-weight: normal;
90 font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace;
91 color: #b5e853;
92 letter-spacing: -0.03em;
93 text-shadow: 0 1px 1px rgba(0, 0, 0, 0.1),
94 0 0 5px rgba(181, 232, 83, 0.1),
95 0 0 10px rgba(181, 232, 83, 0.1);
96}
97
98#main_content h1 {
99 font-size: 30px;
100}
101
102#main_content h2 {
103 font-size: 24px;
104}
105
106#main_content h3 {
107 font-size: 18px;
108}
109
110#main_content h4 {
111 font-size: 14px;
112}
113
114#main_content h5 {
115 font-size: 12px;
116 text-transform: uppercase;
117 margin: 0 0 5px 0;
118}
119
120#main_content h6 {
121 font-size: 12px;
122 text-transform: uppercase;
123 color: #999;
124 margin: 0 0 5px 0;
125}
126
127dt {
128 font-style: italic;
129 font-weight: bold;
130}
131
132ul li {
133 list-style: none;
134}
135
136ul li:before {
137 content: ">>";
138 font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace;
139 font-size: 13px;
140 color: #b5e853;
141 margin-left: -37px;
142 margin-right: 21px;
143 line-height: 16px;
144}
145
146blockquote {
147 color: #aaa;
148 padding-left: 10px;
149 border-left: 1px dotted #666;
150}
151
152pre {
153 background: rgba(0, 0, 0, 0.9);
154 border: 1px solid rgba(255, 255, 255, 0.15);
155 padding: 10px;
156 font-size: 14px;
157 color: #b5e853;
158 border-radius: 2px;
159 -moz-border-radius: 2px;
160 -webkit-border-radius: 2px;
161 text-wrap: normal;
162 overflow: auto;
163 overflow-y: hidden;
164}
165
166table {
167 width: 100%;
168 margin: 0 0 20px 0;
169}
170
171th {
172 text-align: left;
173 border-bottom: 1px dashed #b5e853;
174 padding: 5px 10px;
175}
176
177td {
178 padding: 5px 10px;
179}
180
181hr {
182 height: 0;
183 border: 0;
184 border-bottom: 1px dashed #b5e853;
185 color: #b5e853;
186}
187
188/* Buttons
189*/
190
191.btn {
192 display: inline-block;
193 background: -webkit-linear-gradient(top, rgba(40, 40, 40, 0.3), rgba(35, 35, 35, 0.3) 50%, rgba(10, 10, 10, 0.3) 50%, rgba(0, 0, 0, 0.3));
194 padding: 8px 18px;
195 border-radius: 50px;
196 border: 2px solid rgba(0, 0, 0, 0.7);
197 border-bottom: 2px solid rgba(0, 0, 0, 0.7);
198 border-top: 2px solid rgba(0, 0, 0, 1);
199 color: rgba(255, 255, 255, 0.8);
200 font-family: Helvetica, Arial, sans-serif;
201 font-weight: bold;
202 font-size: 13px;
203 text-decoration: none;
204 text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.75);
205 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05);
206}
207
208.btn:hover {
209 background: -webkit-linear-gradient(top, rgba(40, 40, 40, 0.6), rgba(35, 35, 35, 0.6) 50%, rgba(10, 10, 10, 0.8) 50%, rgba(0, 0, 0, 0.8));
210}
211
212.btn .icon {
213 display: inline-block;
214 width: 16px;
215 height: 16px;
216 margin: 1px 8px 0 0;
217 float: left;
218}
219
220.btn-github .icon {
221 opacity: 0.6;
222 background: url("../images/blacktocat.png") 0 0 no-repeat;
223}
224
225/* Links
226 a, a:hover, a:visited
227*/
228
229a {
230 color: #63c0f5;
231 text-shadow: 0 0 5px rgba(104, 182, 255, 0.5);
232}
233
234/* Clearfix */
235
236.cf:before, .cf:after {
237 content:"";
238 display:table;
239}
240
241.cf:after {
242 clear:both;
243}
244
245.cf {
246 zoom:1;
247} \ No newline at end of file
diff --git a/Train/I Love You.mp3 b/Back/Train/I Love You.mp3
index ec335b8..ec335b8 100644
--- a/Train/I Love You.mp3
+++ b/Back/Train/I Love You.mp3
Binary files differ
diff --git a/Train/Train.jpg b/Back/Train/Train.jpg
index 29b2599..29b2599 100644
--- a/Train/Train.jpg
+++ b/Back/Train/Train.jpg
Binary files differ
diff --git a/Blocks/alphabet.js b/Back/Train/alphabet.js
index d5bcd4d..d5bcd4d 100644
--- a/Blocks/alphabet.js
+++ b/Back/Train/alphabet.js
diff --git a/Blocks/jquery-1.10.2.min.js b/Back/Train/jquery-1.10.2.min.js
index 2f53572..2f53572 100644
--- a/Blocks/jquery-1.10.2.min.js
+++ b/Back/Train/jquery-1.10.2.min.js
diff --git a/Blocks/main.js b/Back/Train/main.js
index af75cf7..af75cf7 100644
--- a/Blocks/main.js
+++ b/Back/Train/main.js
diff --git a/Train/train.html b/Back/Train/train.html
index 7ae7289..7ae7289 100644
--- a/Train/train.html
+++ b/Back/Train/train.html
diff --git a/Train/video.html b/Back/Train/video.html
index 569dda7..569dda7 100644
--- a/Train/video.html
+++ b/Back/Train/video.html
diff --git a/Back/ZJW/About.html b/Back/ZJW/About.html
new file mode 100644
index 0000000..a7fdf3f
--- /dev/null
+++ b/Back/ZJW/About.html
@@ -0,0 +1,51 @@
1<!DOCTYPE html>
2<!-- This site was created in Webflow. http://www.webflow.com-->
3<!-- Last Published: Mon Aug 04 2014 05:58:37 GMT+0000 (UTC) -->
4<html data-wf-site="53df18e26d4105377916519c">
5<head>
6 <meta charset="utf-8">
7 <title>About me</title>
8 <meta name="viewport" content="width=device-width, initial-scale=1">
9 <meta name="generator" content="Webflow">
10 <link rel="stylesheet" type="text/css" href="stylesheets/normalize.css">
11 <link rel="stylesheet" type="text/css" href="stylesheets/webflow.css">
12 <link rel="stylesheet" type="text/css" href="stylesheets/magnetic1407129817662.webflow.css">
13 <script type="text/javascript" src="javascripts/modernizr.js"></script>
14 <link rel="shortcut icon" type="image/x-icon" href="//favicon.ico">
15</head>
16<body>
17 <div class="w-container container">
18 <h1 class="logo">Zhao Jinwei</h1>
19 <p class="subtitle">Developer @ Hangzhou</p>
20 <div class="w-clearfix join-wrapper">
21 <div class="beta-line"></div>
22 <p class="join">Code the life</p>
23 <div class="beta-line"></div>
24 </div>
25 </div>
26 <p>Hello World!</p>
27 <div class="footer-section">
28 <div class="w-container">
29 <div class="w-row">
30 <div class="w-col w-col-6 w-col-small-6">
31 <div class="copyright">© 2014 Jinwei. All right reserved.&nbsp;</div>
32 </div>
33 <div class="w-col w-col-6 w-col-small-6 align-right">
34 <a class="w-inline-block social-btn" href="https://github.com/JinweiClarkChao" target="_new">
35 <img src="images/github-48.png" width="24" alt="53df20896d330938792d5caa_github-48.png">
36 </a>
37 <a class="w-inline-block social-btn" href="https://twitter.com/JinweiClarkChao" target="_new">
38 <img src="images/twitter-48.png" width="24" alt="53df20c91cc24d6d1fc60630_twitter-48.png">
39 </a>
40 <a class="w-inline-block social-btn" href="mailto:[email protected]" target="_new">
41 <img src="images/gmail-48.png" width="24" alt="53df20e21cc24d6d1fc60633_gmail-48.png">
42 </a>
43 </div>
44 </div>
45 </div>
46 </div>
47 <script type="text/javascript" src="javascripts/jquery.min.js"></script>
48 <script type="text/javascript" src="javascripts/webflow.js"></script>
49 <!--[if lte IE 9]><script src="https://cdnjs.cloudflare.com/ajax/libs/placeholders/3.0.2/placeholders.min.js"></script><![endif]-->
50</body>
51</html> \ No newline at end of file
diff --git a/Back/ZJW/Gemfile b/Back/ZJW/Gemfile
new file mode 100644
index 0000000..04d3a48
--- /dev/null
+++ b/Back/ZJW/Gemfile
@@ -0,0 +1,3 @@
1source "https://rubygems.org"
2
3gem "jekyll", "~>1.4"
diff --git a/Back/ZJW/Gemfile.lock b/Back/ZJW/Gemfile.lock
new file mode 100644
index 0000000..7fd3427
--- /dev/null
+++ b/Back/ZJW/Gemfile.lock
@@ -0,0 +1,51 @@
1GEM
2 remote: https://rubygems.org/
3 specs:
4 blankslate (2.1.2.4)
5 classifier (1.3.4)
6 fast-stemmer (>= 1.0.0)
7 colorator (0.1)
8 commander (4.1.6)
9 highline (~> 1.6.11)
10 fast-stemmer (1.0.2)
11 ffi (1.9.3)
12 highline (1.6.21)
13 jekyll (1.4.3)
14 classifier (~> 1.3)
15 colorator (~> 0.1)
16 commander (~> 4.1.3)
17 liquid (~> 2.5.5)
18 listen (~> 1.3)
19 maruku (~> 0.7.0)
20 pygments.rb (~> 0.5.0)
21 redcarpet (~> 2.3.0)
22 safe_yaml (~> 0.9.7)
23 toml (~> 0.1.0)
24 liquid (2.5.5)
25 listen (1.3.1)
26 rb-fsevent (>= 0.9.3)
27 rb-inotify (>= 0.9)
28 rb-kqueue (>= 0.2)
29 maruku (0.7.1)
30 parslet (1.5.0)
31 blankslate (~> 2.0)
32 posix-spawn (0.3.8)
33 pygments.rb (0.5.4)
34 posix-spawn (~> 0.3.6)
35 yajl-ruby (~> 1.1.0)
36 rb-fsevent (0.9.4)
37 rb-inotify (0.9.3)
38 ffi (>= 0.5.0)
39 rb-kqueue (0.2.2)
40 ffi (>= 0.5.0)
41 redcarpet (2.3.0)
42 safe_yaml (0.9.7)
43 toml (0.1.1)
44 parslet (~> 1.5.0)
45 yajl-ruby (1.1.0)
46
47PLATFORMS
48 ruby
49
50DEPENDENCIES
51 jekyll (~> 1.4)
diff --git a/Back/ZJW/Happy-Birthday.html b/Back/ZJW/Happy-Birthday.html
new file mode 100644
index 0000000..2036c2b
--- /dev/null
+++ b/Back/ZJW/Happy-Birthday.html
@@ -0,0 +1,106 @@
1F<!DOCTYPE HTML>
2<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3<head>
4 <title>Happy Birthday</title>
5 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
6 <style type="text/css">
7 @font-face {
8 font-family: digit;
9 src: url('./fonts/digital-7_mono.ttf') format("truetype");
10 }
11 </style>
12 <link href="stylesheets/default.css" type="text/css" rel="stylesheet">
13 <script type="text/javascript" src="javascripts/jquery.js"></script>
14 <script type="text/javascript" src="javascripts/garden_dev.js"></script>
15 <script type="text/javascript" src="javascripts/functions_dev.js"></script>
16</head>
17
18<body>
19 <div id="mainDiv">
20 <div id="content">
21 <div id="code">
22 <span class="comments"> </span><br />
23 <span class="space"/><span class="comments"> </span><br />
24 <span class="space"/><span class="comments"> </span><br />
25 <span class="space"/><span class="comments"> </span><br />
26 <span class="keyword"> </span> <span class="string"> </span> <br />
27 <span class="comments"> </span><br />
28 <span class="keyword"> </span> <br />
29 <span class="keyword"> </span> <span class="string"> </span> <br />
30 <br />
31 <span class="string"> </span> </br>
32 </br>
33 </br>
34 <span class="comments"> </span><br />
35 <span class="keyword"> </span> <br />
36 </br>
37 <span class="comments"> </span><br />
38 </br>
39 <span class="comments"> </span><br />
40 </br>
41 <span class="comments"> </span><br />
42 </br>
43 <span class="comments"> </span><br />
44 </br>
45 <span class="comments"> </span><br />
46 <span class="string"> </span>
47 </div>
48 <div id="loveHeart">
49 <canvas id="garden"></canvas>
50 <div id="words">
51 <div id="messages">
52 </br>
53 </br>
54 </br>
55 </br>
56
57 <div id="elapseClock"></div>
58 </div>
59 <div id="loveu">
60
61 <div class="signature"> </div>
62 </div>
63 </div>
64 </div>
65 </div>
66 <div id="copyright">
67 <a href=" "> </a> <br />
68 </br>
69 <a href=" "> </a> </br>
70 </div>
71 </div>
72 <script type="text/javascript">
73 var offsetX = $("#loveHeart").width() / 2;
74 var offsetY = $("#loveHeart").height() / 2 - 55;
75 var together = new Date();
76 together.setFullYear(1995,11, 30);
77 together.setHours(0);
78 together.setMinutes(0);
79 together.setSeconds(0);
80 together.setMilliseconds(0);
81
82 if (!document.createElement('canvas').getContext) {
83 var msg = document.createElement("div");
84 msg.id = "errorMsg";
85 msg.innerHTML = "Your browser doesn't support HTML5!<br/>Recommend use Chrome 14+/IE 9+/Firefox 7+/Safari 4+";
86 document.body.appendChild(msg);
87 $("#code").css("display", "none")
88 $("#copyright").css("position", "absolute");
89 $("#copyright").css("bottom", "10px");
90 document.execCommand("stop");
91 } else {
92 setTimeout(function () {
93 startHeartAnimation();
94 }, 5000);
95
96 timeElapse(together);
97 setInterval(function () {
98 timeElapse(together);
99 }, 500);
100
101 adjustCodePosition();
102 $("#code").typewriter();
103 }
104 </script>
105</body>
106</html>
diff --git a/Back/ZJW/_config.yml b/Back/ZJW/_config.yml
new file mode 100644
index 0000000..a03697b
--- /dev/null
+++ b/Back/ZJW/_config.yml
@@ -0,0 +1,5 @@
1markdown: rdiscount
2pygments: true
3permalink: /posts/:title
4rdiscount:
5 extensions: [smart]
diff --git a/Back/ZJW/fonts/digital-7_mono.ttf b/Back/ZJW/fonts/digital-7_mono.ttf
new file mode 100644
index 0000000..e94f8e3
--- /dev/null
+++ b/Back/ZJW/fonts/digital-7_mono.ttf
Binary files differ
diff --git a/Back/ZJW/images/123.png b/Back/ZJW/images/123.png
new file mode 100644
index 0000000..a47e0ed
--- /dev/null
+++ b/Back/ZJW/images/123.png
Binary files differ
diff --git a/Back/ZJW/images/fans-black.jpg b/Back/ZJW/images/fans-black.jpg
new file mode 100644
index 0000000..2f640c8
--- /dev/null
+++ b/Back/ZJW/images/fans-black.jpg
Binary files differ
diff --git a/Back/ZJW/images/favicon.ico b/Back/ZJW/images/favicon.ico
new file mode 100644
index 0000000..4885874
--- /dev/null
+++ b/Back/ZJW/images/favicon.ico
Binary files differ
diff --git a/Back/ZJW/images/github-48.png b/Back/ZJW/images/github-48.png
new file mode 100644
index 0000000..be6e3e7
--- /dev/null
+++ b/Back/ZJW/images/github-48.png
Binary files differ
diff --git a/Back/ZJW/images/gmail-48.png b/Back/ZJW/images/gmail-48.png
new file mode 100644
index 0000000..7f7f0e7
--- /dev/null
+++ b/Back/ZJW/images/gmail-48.png
Binary files differ
diff --git a/Back/ZJW/images/logo.png b/Back/ZJW/images/logo.png
new file mode 100644
index 0000000..49a82a8
--- /dev/null
+++ b/Back/ZJW/images/logo.png
Binary files differ
diff --git a/Back/ZJW/images/twitter-48.png b/Back/ZJW/images/twitter-48.png
new file mode 100644
index 0000000..75509e9
--- /dev/null
+++ b/Back/ZJW/images/twitter-48.png
Binary files differ
diff --git a/Back/ZJW/index.html b/Back/ZJW/index.html
new file mode 100644
index 0000000..171593e
--- /dev/null
+++ b/Back/ZJW/index.html
@@ -0,0 +1,18 @@
1<!doctype html>
2<html>
3 <head>
4 <meta charset="utf-8">
5 <title>Jinwei Clark Chao</title>
6 <link href="/stylesheets/normalize.css" media="screen" rel="stylesheet" type="text/css" />
7 <link href="/stylesheets/all.css" media="screen" rel="stylesheet" type="text/css" />
8 <script src="/javascripts/jquery.min.js"></script>
9 <script src="/javascripts/processing.min.js"></script>
10 </head>
11
12 <body class="index">
13 <canvas id="processing"
14 data-processing-sources="/javascripts/viz.pde"></canvas>
15
16 <div class="logo"><a href="www.baidu.com"></a></div>
17 </body>
18</html>
diff --git a/Back/ZJW/javascripts/functions_dev.js b/Back/ZJW/javascripts/functions_dev.js
new file mode 100644
index 0000000..eeae4d0
--- /dev/null
+++ b/Back/ZJW/javascripts/functions_dev.js
@@ -0,0 +1,137 @@
1// variables
2var $window = $(window), gardenCtx, gardenCanvas, $garden, garden;
3var clientWidth = $(window).width();
4var clientHeight = $(window).height();
5
6$(function () {
7 // setup garden
8 $loveHeart = $("#loveHeart");
9 var offsetX = $loveHeart.width() / 2;
10 var offsetY = $loveHeart.height() / 2 - 55;
11 $garden = $("#garden");
12 gardenCanvas = $garden[0];
13 gardenCanvas.width = $("#loveHeart").width();
14 gardenCanvas.height = $("#loveHeart").height()
15 gardenCtx = gardenCanvas.getContext("2d");
16 gardenCtx.globalCompositeOperation = "lighter";
17 garden = new Garden(gardenCtx, gardenCanvas);
18
19 $("#content").css("width", $loveHeart.width() + $("#code").width());
20 $("#content").css("height", Math.max($loveHeart.height(), $("#code").height()));
21 $("#content").css("margin-top", Math.max(($window.height() - $("#content").height()) / 2, 10));
22 $("#content").css("margin-left", Math.max(($window.width() - $("#content").width()) / 2, 10));
23
24 // renderLoop
25 setInterval(function () {
26 garden.render();
27 }, Garden.options.growSpeed);
28});
29
30$(window).resize(function() {
31 var newWidth = $(window).width();
32 var newHeight = $(window).height();
33 if (newWidth != clientWidth && newHeight != clientHeight) {
34 location.replace(location);
35 }
36});
37
38function getHeartPoint(angle) {
39
40 var xs = [-223, -221, -216, -214, -211, -207, -198, -191, -184, -177, -165, -159, -154, -145, -138, -131, -119, -108, -94, -85, -78, -69, -62, -55, -48, -39, -32, -25, -18, -7, 0, 12, 18, 28, 32, 39, 46, 53, 60, 67, 71, 78, 85, 92, 97, 104, 113, 120, 124, 134, 138, 145, 152, 159, 166, 173, 177, 184, 191, 196, 200, 207, 209, 214, 214, 216, -218, -223, -228, -234, -239, -244, -248, -251, -255, -257, -260, -262, -262, -260, -255, -251, -248, -239, -234, -232, -225, -218, -211, -205, -200, -193, -188, -182, -172, -165, -159, -152, -145, -140, -133, -126, -119, -110, -103, -97, -87, -80, -74, -67, -62, -55, -46, -39, -32, -23, -14, -7, 0, 7, 14, 18, 28, 37, 44, 51, 58, 65, 71, 78, 85, 92, 99, 106, 113, 120, 127, 134, 138, 143, 150, 157, 163, 170, 177, 184, 191, 198, 205, 209, 219, 223, 230, 235, 239, 246, 251, 251, 258, 260, 260, 262, 260, 255, 248, 242, 237, 230, 225, 219, -216, -223, -228, -228, -230, -232, -232, -228, -223, -218, -216, -209, -207, -202, -198, -195, -188, -182, -172, -165, -159, -149, -142, -136, -131, -126, -119, -113, -106, -99, -94, -90, -83, -78, -71, -67, -60, -53, -44, -37, -25, -16, -9, -5, 2, 9, 16, 25, 32, 37, 44, 48, 55, 65, 69, 76, 83, 90, 99, 106, 115, 122, 127, 134, 140, 145, 150, 157, 161, 166, 168, 175, 182, 186, 193, 198, 205, 209, 214, 219, 221, 225, 225, 225, 225, 221, 216, 212, -209, -202, -200, -195, -191, -188, -186, -179, -172, -165, -159, -152, -145, -138, -133, -129, -124, -117, -110, -103, -97, -90, -83, -78, -71, -64, -57, -50, -44, -37, -30, -25, -18, -9, -2, 5, 14, 21, 28, 37, 41, 51, 58, 67, 71, 78, 85, 94, 101, 111, 117, 124, 131, 136, 140, 145, 154, 159, 163, 168, 175, 182, 186, 196, 200, 209, 209, -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, -214, -214, -214, -214, -211, -211, 212, 212, 212, 212, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, -218, -223, -225, -230, -232, -232, -230, -228, -223, -218, -214, -207, -205, -200, -193, -186, -182, -177, -170, -165, -161, -154, -147, -142, -136, -129, -119, -113, -103, -97, -90, -83, -76, -69, -62, -57, -50, -44, -37, -30, -23, -16, -9, -2, 5, 12, 18, 25, 30, 39, 46, 55, 62, 69, 76, 83, 92, 99, 106, 115, 122, 127, 129, 136, 145, 152, 159, 166, 175, 179, 184, 191, 191, 193, 198, 202, 209, 214, 221, 225, 230, 230, 228, 221, 219, -218, -216, -209, -200, -191, -184, -177, -170, -165, -159, -154, -147, -140, -136, -129, -119, -113, -103, -97, -90, -83, -74, -67, -60, -57, -50, -41, -34, -30, -23, -16, -7, 0, 7, 14, 21, 25, 32, 37, 44, 51, 58, 65, 71, 81, 88, 94, 101, 106, 113, 117, 122, 127, 131, 138, 147, 154, 163, 170, 179, 182, 184, 193, 200, 205, 209, -214, -214, -216, -216, -216, -216, -216, -216, -216, -216, -214, -214, -214, -214, -214, -214, -214, -214, -214, 212, 212, 212, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, -124, -129, -133, -138, -145, -154, -161, -170, -177, -184, -188, -193, -195, -198, -202, -205, -209, -216, -221, -225, -225, -225, -223, -218, -216, -205, -200, -191, -184, -177, -170, -165, -159, -154, -145, -138, -131, -124, -117, -110, -103, -97, -90, -83, -76, -69, -60, -53, -46, -39, -34, -27, -21, -11, -2, 5, 12, 18, 23, 30, 35, 44, 51, 60, 67, 74, 81, 88, 94, 104, 111, 120, 124, 131, 136, 140, 145, 152, 159, 168, 175, 179, 186, 191, 196, 198, 200, 205, 212, 219, 221, 223, 223, 219, 212, 205, 198, 193, 186, 173, 166, 161, 157, 152, 147, 138, 129, 117, 69, 62, 55, 48, 37, 32, 25, -27, -32, -39, -46, -53, -62, -69, -122, -126, -133, -138, -145, -152, -159, -165, -172, -177, -179, -184, -186, -188, -195, -200, -202, -205, -202, -198, -188, -182, -172, -163, -159, -149, -142, -133, -124, -115, -106, -94, -85, -78, -69, -62, -53, -44, -34, -25, -16, -9, -2, 7, 14, 21, 28, 35, 41, 51, 58, 65, 81, 88, 94, 104, 113, 117, 124, 129, 134, 140, 152, 159, 168, 173, 177, 182, 184, 189, 196, 200, 202, 200, 196, 191, 184, 179, 173, 166, 159, 152, 147, 140, 134, 129, 122, 115, 69, 62, 55, 46, 41, 35, 28, -25, -30, -37, -44, -48, -55, -62, -71, -129, -122, -115, -108, -106, -101, -99, -94, -87, -80, -74, -67, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -119, -119, -76, -76, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -115, -110, -103, -97, -92, -85, -117, -115, -108, -101, -97, -90, -83, -99, -99, -99, -106, -108, -110, -110, -108, -103, -103, -99, -97, -94, -92, -92, -94, -21, -21, -23, -23, -23, -23, -23, -23, -23, -21, -21, -21, -21, -21, -21, -21, -21, -30, -23, -16, -7, 0, 5, 9, 16, 23, 30, 21, 18, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 18, 18, -16, -11, -7, 2, 7, 12, 18, 14, 9, 2, -5, -14, -18, -21, 0, 0, -7, -11, -11, -9, -5, 0, 2, 5, 9, 9, 9, 9, 67, 74, 81, 88, 94, 99, 99, 104, 113, 120, 127, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 71, 71, 74, 74, 74, 74, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 106, 99, 92, 85, 81, 74, 78, 85, 92, 97, 101, 104, 92, 92, 90, 85, 85, 85, 88, 90, 97, 99, 101, 101, 101, 101, 97];
41 var ys = [289, 296, 301, 303, 310, 312, 315, 317, 317, 319, 319, 319, 324, 324, 326, 328, 331, 331, 333, 333, 335, 335, 335, 335, 335, 335, 335, 335, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 335, 335, 335, 333, 333, 333, 331, 328, 326, 326, 326, 324, 324, 324, 321, 321, 321, 319, 319, 317, 315, 315, 310, 303, 298, 292, 211, 213, 216, 218, 220, 223, 225, 229, 232, 236, 243, 248, 255, 262, 266, 271, 273, 275, 280, 285, 289, 289, 292, 294, 294, 296, 298, 301, 305, 305, 308, 308, 308, 310, 310, 310, 312, 312, 312, 315, 315, 317, 319, 319, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 319, 321, 321, 321, 321, 321, 319, 317, 317, 317, 317, 315, 315, 315, 315, 315, 312, 312, 308, 308, 308, 305, 303, 303, 301, 301, 298, 296, 294, 292, 289, 287, 285, 282, 278, 275, 269, 266, 259, 255, 248, 243, 236, 229, 225, 223, 220, 218, 216, 213, 213, 218, 223, 227, 234, 241, 246, 248, 252, 257, 259, 264, 271, 273, 278, 282, 285, 285, 285, 285, 285, 287, 289, 292, 294, 296, 296, 298, 298, 301, 303, 301, 301, 298, 296, 296, 296, 296, 298, 303, 303, 305, 305, 305, 308, 308, 308, 305, 303, 301, 298, 298, 296, 294, 294, 294, 294, 294, 294, 294, 294, 292, 289, 289, 289, 285, 282, 280, 275, 271, 271, 269, 269, 269, 264, 264, 262, 257, 255, 248, 246, 239, 232, 225, 220, 216, 211, 232, 234, 236, 243, 246, 250, 255, 262, 262, 262, 262, 262, 262, 262, 266, 269, 273, 275, 275, 278, 278, 278, 278, 275, 275, 275, 275, 275, 275, 278, 278, 280, 282, 285, 287, 287, 287, 287, 287, 285, 282, 282, 278, 275, 273, 273, 273, 273, 273, 273, 273, 273, 273, 271, 269, 264, 262, 259, 255, 252, 250, 250, 248, 248, 246, 241, 234, 126, 133, 140, 144, 151, 158, 165, 172, 179, 186, 193, 200, 204, 213, 220, 227, 119, 128, 138, 142, 149, 156, 163, 170, 177, 184, 190, 197, 207, 213, 220, 227, 73, 75, 80, 82, 89, 96, 103, 108, 110, 115, 117, 121, 124, 126, 128, 128, 131, 135, 138, 140, 144, 147, 149, 151, 154, 154, 154, 154, 154, 154, 154, 154, 154, 156, 158, 161, 161, 165, 167, 167, 170, 170, 170, 170, 170, 170, 167, 165, 163, 161, 161, 158, 158, 158, 158, 158, 158, 158, 158, 158, 156, 154, 149, 147, 147, 147, 147, 147, 147, 144, 140, 135, 131, 124, 121, 119, 115, 112, 110, 108, 103, 96, 91, 87, 82, 91, 98, 101, 103, 103, 103, 105, 108, 110, 115, 119, 126, 131, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 135, 138, 140, 142, 142, 142, 144, 147, 147, 147, 147, 147, 144, 144, 142, 142, 140, 140, 140, 140, 140, 140, 140, 140, 138, 135, 133, 133, 128, 126, 124, 124, 124, 124, 124, 121, 119, 115, 112, 110, 108, 105, 103, -37, -28, -24, -14, -7, -0, 6, 13, 20, 27, 32, 39, 45, 55, 62, 68, 75, 82, 89, -44, -35, -28, -21, -12, -5, 2, 9, 18, 25, 32, 39, 45, 52, 59, 66, 75, 82, 91, -113, -111, -106, -104, -102, -102, -104, -104, -104, -104, -99, -97, -92, -88, -83, -79, -76, -74, -72, -65, -60, -53, -47, -42, -37, -37, -37, -35, -30, -26, -21, -19, -14, -12, -10, -10, -10, -10, -7, -7, -7, -7, -7, -7, -5, -5, -5, -0, -0, 2, 4, 4, 6, 6, 6, 6, 6, 6, 4, 2, -0, -0, -0, -0, -0, -3, -3, -3, -3, -3, -3, -3, -3, -5, -10, -12, -17, -19, -19, -19, -19, -21, -24, -26, -30, -35, -40, -47, -49, -51, -56, -63, -72, -76, -83, -86, -88, -90, -90, -90, -92, -97, -102, -106, -109, -111, -111, -113, -115, -115, -118, -120, -122, -125, -125, -122, -120, -118, -118, -118, -118, -115, -102, -99, -97, -95, -95, -92, -92, -92, -92, -90, -86, -81, -76, -69, -67, -65, -63, -56, -51, -51, -51, -51, -51, -44, -40, -33, -30, -28, -28, -28, -28, -28, -26, -26, -26, -24, -21, -17, -17, -17, -17, -17, -14, -14, -14, -17, -19, -19, -21, -21, -21, -21, -21, -21, -21, -21, -24, -26, -28, -33, -35, -35, -35, -35, -37, -40, -42, -44, -51, -53, -56, -58, -63, -69, -69, -74, -74, -76, -79, -81, -81, -86, -90, -95, -99, -102, -102, -102, -102, -102, -104, -106, -106, -109, -111, -113, -111, -111, -109, -106, -106, -106, -106, -74, -76, -76, -76, -72, -67, -69, -72, -74, -74, -74, -74, -81, -88, -95, -102, -109, -115, -122, -129, -136, -143, -150, -157, -164, -171, -178, -184, -81, -88, -92, -99, -106, -115, -125, -132, -138, -145, -152, -161, -168, -175, -180, -187, -187, -182, -182, -182, -184, -187, -189, -194, -194, -194, -196, -194, -189, -191, -198, -207, -201, -205, -212, -219, -224, -230, -235, -233, -228, -224, -219, -210, -205, -189, -182, -175, -168, -161, -152, -148, -141, -134, -127, -120, -113, -106, -99, -90, -83, -76, -72, -72, -72, -72, -69, -72, -74, -74, -74, -74, -83, -90, -95, -104, -111, -118, -125, -132, -138, -148, -152, -159, -168, -175, -182, -187, -184, -182, -182, -182, -182, -184, -187, -191, -194, -194, -194, -194, -191, -191, -201, -210, -207, -214, -221, -228, -233, -240, -237, -233, -228, -221, -214, -207, -79, -76, -76, -74, -72, -67, -74, -74, -76, -76, -76, -79, -88, -95, -104, -113, -120, -129, -136, -143, -150, -155, -161, -168, -175, -182, -189, -86, -92, -99, -109, -115, -122, -132, -141, -148, -155, -161, -168, -175, -182, -184, -184, -182, -184, -184, -189, -194, -194, -194, -191, -189, -182, -201, -205, -203, -207, -214, -221, -230, -235, -235, -230, -226, -219, -212, -205, -203];
42 return new Array(offsetX + xs[angle], offsetY + ys[angle]);
43}
44
45function startHeartAnimation() {
46 var interval = 5;
47 var angle = 0;
48 var heart = new Array();
49 var animationTimer = setInterval(function () {
50 var bloom = getHeartPoint(angle);
51 var draw = true;
52 for (var i = 0; i < heart.length; i++) {
53 var p = heart[i];
54 var distance = Math.sqrt(Math.pow(p[0] - bloom[0], 2) + Math.pow(p[1] - bloom[1], 2));
55 if (distance < Garden.options.bloomRadius.max * 1.3) {
56 draw = false;
57 break;
58 }
59 }
60 if (draw) {
61 heart.push(bloom);
62 garden.createRandomBloom(bloom[0], bloom[1]);
63 }
64
65 if (angle >= 982) {
66 clearInterval(animationTimer);
67 showMessages();
68 } else {
69 angle ++;
70 }
71 }, interval);
72}
73
74(function($) {
75 $.fn.typewriter = function() {
76 this.each(function() {
77 var $ele = $(this), str = $ele.html(), progress = 0;
78 $ele.html('');
79 var timer = setInterval(function() {
80 var current = str.substr(progress, 1);
81 if (current == '<') {
82 progress = str.indexOf('>', progress) + 1;
83 } else {
84 progress++;
85 }
86 $ele.html(str.substring(0, progress) + (progress & 1 ? '_' : ''));
87 if (progress >= str.length) {
88 clearInterval(timer);
89 }
90 }, 75);
91 });
92 return this;
93 };
94})(jQuery);
95
96function timeElapse(date){
97 var current = Date();
98 var seconds = (Date.parse(current) - Date.parse(date)) / 1000;
99 var days = Math.floor(seconds / (3600 * 24));
100 seconds = seconds % (3600 * 24);
101 var hours = Math.floor(seconds / 3600);
102 if (hours < 10) {
103 hours = "0" + hours;
104 }
105 seconds = seconds % 3600;
106 var minutes = Math.floor(seconds / 60);
107 if (minutes < 10) {
108 minutes = "0" + minutes;
109 }
110 seconds = seconds % 60;
111 if (seconds < 10) {
112 seconds = "0" + seconds;
113 }
114 var result = "<span class=\"digit\">" + days + "</span> days <span class=\"digit\">" + hours + "</span> hours <span class=\"digit\">" + minutes + "</span> minutes <span class=\"digit\">" + seconds + "</span> seconds";
115 $("#elapseClock").html(result);
116}
117
118function showMessages() {
119 adjustWordsPosition();
120 $('#messages').fadeIn(5000, function() {
121 showLoveU();
122 });
123}
124
125function adjustWordsPosition() {
126 $('#words').css("position", "absolute");
127 $('#words').css("top", $("#garden").position().top + 195);
128 $('#words').css("left", $("#garden").position().left + 70);
129}
130
131function adjustCodePosition() {
132 $('#code').css("margin-top", ($("#garden").height() - $("#code").height()) / 2);
133}
134
135function showLoveU() {
136 $('#loveu').fadeIn(3000);
137} \ No newline at end of file
diff --git a/Back/ZJW/javascripts/garden_dev.js b/Back/ZJW/javascripts/garden_dev.js
new file mode 100644
index 0000000..21af667
--- /dev/null
+++ b/Back/ZJW/javascripts/garden_dev.js
@@ -0,0 +1,199 @@
1 function Vector(x, y) {
2 this.x = x;
3 this.y = y;
4 };
5
6 Vector.prototype = {
7 rotate: function (theta) {
8 var x = this.x;
9 var y = this.y;
10 this.x = Math.cos(theta) * x - Math.sin(theta) * y;
11 this.y = Math.sin(theta) * x + Math.cos(theta) * y;
12 return this;
13 },
14 mult: function (f) {
15 this.x *= f;
16 this.y *= f;
17 return this;
18 },
19 clone: function () {
20 return new Vector(this.x, this.y);
21 },
22 length: function () {
23 return Math.sqrt(this.x * this.x + this.y * this.y);
24 },
25 subtract: function (v) {
26 this.x -= v.x;
27 this.y -= v.y;
28 return this;
29 },
30 set: function (x, y) {
31 this.x = x;
32 this.y = y;
33 return this;
34 }
35 };
36
37 function Petal(stretchA, stretchB, startAngle, angle, growFactor, bloom) {
38 this.stretchA = stretchA;
39 this.stretchB = stretchB;
40 this.startAngle = startAngle;
41 this.angle = angle;
42 this.bloom = bloom;
43 this.growFactor = growFactor;
44 this.r = 1;
45 this.isfinished = false;
46 //this.tanAngleA = Garden.random(-Garden.degrad(Garden.options.tanAngle), Garden.degrad(Garden.options.tanAngle));
47 //this.tanAngleB = Garden.random(-Garden.degrad(Garden.options.tanAngle), Garden.degrad(Garden.options.tanAngle));
48 }
49 Petal.prototype = {
50 draw: function () {
51 var ctx = this.bloom.garden.ctx;
52 var v1, v2, v3, v4;
53 v1 = new Vector(0, this.r).rotate(Garden.degrad(this.startAngle));
54 v2 = v1.clone().rotate(Garden.degrad(this.angle));
55 v3 = v1.clone().mult(this.stretchA); //.rotate(this.tanAngleA);
56 v4 = v2.clone().mult(this.stretchB); //.rotate(this.tanAngleB);
57 ctx.strokeStyle = this.bloom.c;
58 ctx.beginPath();
59 ctx.moveTo(v1.x, v1.y);
60 ctx.bezierCurveTo(v3.x, v3.y, v4.x, v4.y, v2.x, v2.y);
61 ctx.stroke();
62 },
63 render: function () {
64 if (this.r <= this.bloom.r) {
65 this.r += this.growFactor; // / 10;
66 this.draw();
67 } else {
68 this.isfinished = true;
69 }
70 }
71 }
72
73 function Bloom(p, r, c, pc, garden) {
74 this.p = p;
75 this.r = r;
76 this.c = c;
77 this.pc = pc;
78 this.petals = [];
79 this.garden = garden;
80 this.init();
81 this.garden.addBloom(this);
82 }
83 Bloom.prototype = {
84 draw: function () {
85 var p, isfinished = true;
86 this.garden.ctx.save();
87 this.garden.ctx.translate(this.p.x, this.p.y);
88 for (var i = 0; i < this.petals.length; i++) {
89 p = this.petals[i];
90 p.render();
91 isfinished *= p.isfinished;
92 }
93 this.garden.ctx.restore();
94 if (isfinished == true) {
95 this.garden.removeBloom(this);
96 }
97 },
98 init: function () {
99 var angle = 360 / this.pc;
100 var startAngle = Garden.randomInt(0, 90);
101 for (var i = 0; i < this.pc; i++) {
102 this.petals.push(new Petal(Garden.random(Garden.options.petalStretch.min, Garden.options.petalStretch.max), Garden.random(Garden.options.petalStretch.min, Garden.options.petalStretch.max), startAngle + i * angle, angle, Garden.random(Garden.options.growFactor.min, Garden.options.growFactor.max), this));
103 }
104 }
105 }
106
107 function Garden(ctx, element) {
108 this.blooms = [];
109 this.element = element;
110 this.ctx = ctx;
111 }
112 Garden.prototype = {
113 render: function () {
114 for (var i = 0; i < this.blooms.length; i++) {
115 this.blooms[i].draw();
116 }
117 },
118 addBloom: function (b) {
119 this.blooms.push(b);
120 },
121 removeBloom: function (b) {
122 var bloom;
123 for (var i = 0; i < this.blooms.length; i++) {
124 bloom = this.blooms[i];
125 if (bloom === b) {
126 this.blooms.splice(i, 1);
127 return this;
128 }
129 }
130 },
131 createRandomBloom: function (x, y) {
132 this.createBloom(x, y, Garden.randomInt(Garden.options.bloomRadius.min, Garden.options.bloomRadius.max), Garden.randomrgba(Garden.options.color.rmin, Garden.options.color.rmax, Garden.options.color.gmin, Garden.options.color.gmax, Garden.options.color.bmin, Garden.options.color.bmax, Garden.options.color.opacity), Garden.randomInt(Garden.options.petalCount.min, Garden.options.petalCount.max));
133 },
134 createBloom: function (x, y, r, c, pc) {
135 new Bloom(new Vector(x, y), r, c, pc, this);
136 },
137 clear: function () {
138 this.blooms = [];
139 this.ctx.clearRect(0, 0, this.element.width, this.element.height);
140 }
141 }
142
143 Garden.options = {
144 petalCount: {
145 min: 8,
146 max: 15
147 },
148 petalStretch: {
149 min: 0.1,
150 max: 3
151 },
152 growFactor: {
153 min: 0.1,
154 max: 1
155 },
156 bloomRadius: {
157 min: 4,
158 max: 7
159 },
160 density: 10,
161 growSpeed: 1500 / 60,
162 color: {
163 rmin: 128,
164 rmax: 255,
165 gmin: 0,
166 gmax: 128,
167 bmin: 0,
168 bmax: 128,
169 opacity: 0.1
170 },
171 tanAngle: 60
172 };
173 Garden.random = function (min, max) {
174 return Math.random() * (max - min) + min;
175 };
176 Garden.randomInt = function (min, max) {
177 return Math.floor(Math.random() * (max - min + 1)) + min;
178 };
179 Garden.circle = 2 * Math.PI;
180 Garden.degrad = function (angle) {
181 return Garden.circle / 360 * angle;
182 };
183 Garden.raddeg = function (angle) {
184 return angle / Garden.circle * 360;
185 };
186 Garden.rgba = function (r, g, b, a) {
187 return 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')';
188 };
189 Garden.randomrgba = function (rmin, rmax, gmin, gmax, bmin, bmax, a) {
190 var r = Math.round(Garden.random(rmin, rmax));
191 var g = Math.round(Garden.random(gmin, gmax));
192 var b = Math.round(Garden.random(bmin, bmax));
193 var limit = 5;
194 if (Math.abs(r - g) <= limit && Math.abs(g - b) <= limit && Math.abs(b - r) <= limit) {
195 return Garden.rgba(rmin, rmax, gmin, gmax, bmin, bmax, a);
196 } else {
197 return Garden.rgba(r, g, b, a);
198 }
199 }; \ No newline at end of file
diff --git a/Back/ZJW/javascripts/jquery.js b/Back/ZJW/javascripts/jquery.js
new file mode 100644
index 0000000..7c24308
--- /dev/null
+++ b/Back/ZJW/javascripts/jquery.js
@@ -0,0 +1,154 @@
1/*!
2 * jQuery JavaScript Library v1.4.2
3 * http://jquery.com/
4 *
5 * Copyright 2010, John Resig
6 * Dual licensed under the MIT or GPL Version 2 licenses.
7 * http://jquery.org/license
8 *
9 * Includes Sizzle.js
10 * http://sizzlejs.com/
11 * Copyright 2010, The Dojo Foundation
12 * Released under the MIT, BSD, and GPL Licenses.
13 *
14 * Date: Sat Feb 13 22:33:48 2010 -0500
15 */
16(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
17e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
18j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
19"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
20true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
21Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
22(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
23a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
24"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
25function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)||
26c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
27L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
28"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
29a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f],
30d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===
31a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&&
32!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
33true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
34var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
35parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
36false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
37s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
38applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
39else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
40a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
41w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
42cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
43i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
44" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
45this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
46e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
47c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
48a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
49function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
50k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
51C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
52null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
53e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
54f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
55if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
56fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
57d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this,
58"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=
59a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
60isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
61{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};
62if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
63e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
64"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
65d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
66!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},
67toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector,
68u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),
69function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
70if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
71e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
72t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
73g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[];
74for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-
751)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
76CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},
77relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]=
78l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[];
79h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
80CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m,
81g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
82text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},
83setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=
84h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m=
85m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m===
86"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
87h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition||
88!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m=
89h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&&
90q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>";
91if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}();
92(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
93function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/,
94gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;
95c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j=
96{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
97"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
98d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
99a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType===
1001&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)?
101a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
102c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
103wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
104prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
105this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
106return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
107""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&
108this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]||
109u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length===
1101?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
111return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
112""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e=
113c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]?
114c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
115function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=
116Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,
117"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=
118a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=
119a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!==
120"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this},
121serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
122function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,
123global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&
124e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)?
125"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===
126false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B=
127false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since",
128c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E||
129d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x);
130g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===
1311223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b===
132"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional;
133if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");
134this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],
135"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},
136animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing=
137j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);
138this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration===
139"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||
140c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;
141this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
142this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,
143e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||
144c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement?
145function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=
146this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle;
147k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&&
148f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
149a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b);
150c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,
151d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-
152f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset":
153"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in
154e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);
diff --git a/Back/ZJW/javascripts/jquery.min.js b/Back/ZJW/javascripts/jquery.min.js
new file mode 100644
index 0000000..60479ce
--- /dev/null
+++ b/Back/ZJW/javascripts/jquery.min.js
@@ -0,0 +1,3375 @@
1/*! jQuery v1.11.0 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ ! function(a, b) {
2 "object" == typeof module && "object" == typeof module.exports ? module.exports = a.document ? b(a, !0) : function(a) {
3 if (!a.document) throw new Error("jQuery requires a window with a document");
4 return b(a)
5 } : b(a)
6}("undefined" != typeof window ? window : this, function(a, b) {
7 var c = [],
8 d = c.slice,
9 e = c.concat,
10 f = c.push,
11 g = c.indexOf,
12 h = {},
13 i = h.toString,
14 j = h.hasOwnProperty,
15 k = "".trim,
16 l = {},
17 m = "1.11.0",
18 n = function(a, b) {
19 return new n.fn.init(a, b)
20 },
21 o = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
22 p = /^-ms-/,
23 q = /-([\da-z])/gi,
24 r = function(a, b) {
25 return b.toUpperCase()
26 };
27 n.fn = n.prototype = {
28 jquery: m,
29 constructor: n,
30 selector: "",
31 length: 0,
32 toArray: function() {
33 return d.call(this)
34 },
35 get: function(a) {
36 return null != a ? 0 > a ? this[a + this.length] : this[a] : d.call(this)
37 },
38 pushStack: function(a) {
39 var b = n.merge(this.constructor(), a);
40 return b.prevObject = this, b.context = this.context, b
41 },
42 each: function(a, b) {
43 return n.each(this, a, b)
44 },
45 map: function(a) {
46 return this.pushStack(n.map(this, function(b, c) {
47 return a.call(b, c, b)
48 }))
49 },
50 slice: function() {
51 return this.pushStack(d.apply(this, arguments))
52 },
53 first: function() {
54 return this.eq(0)
55 },
56 last: function() {
57 return this.eq(-1)
58 },
59 eq: function(a) {
60 var b = this.length,
61 c = +a + (0 > a ? b : 0);
62 return this.pushStack(c >= 0 && b > c ? [this[c]] : [])
63 },
64 end: function() {
65 return this.prevObject || this.constructor(null)
66 },
67 push: f,
68 sort: c.sort,
69 splice: c.splice
70 }, n.extend = n.fn.extend = function() {
71 var a, b, c, d, e, f, g = arguments[0] || {},
72 h = 1,
73 i = arguments.length,
74 j = !1;
75 for ("boolean" == typeof g && (j = g, g = arguments[h] || {}, h++), "object" == typeof g || n.isFunction(g) || (g = {}), h === i && (g = this, h--); i > h; h++)
76 if (null != (e = arguments[h]))
77 for (d in e) a = g[d], c = e[d], g !== c && (j && c && (n.isPlainObject(c) || (b = n.isArray(c))) ? (b ? (b = !1, f = a && n.isArray(a) ? a : []) : f = a && n.isPlainObject(a) ? a : {}, g[d] = n.extend(j, f, c)) : void 0 !== c && (g[d] = c));
78 return g
79 }, n.extend({
80 expando: "jQuery" + (m + Math.random()).replace(/\D/g, ""),
81 isReady: !0,
82 error: function(a) {
83 throw new Error(a)
84 },
85 noop: function() {},
86 isFunction: function(a) {
87 return "function" === n.type(a)
88 },
89 isArray: Array.isArray || function(a) {
90 return "array" === n.type(a)
91 },
92 isWindow: function(a) {
93 return null != a && a == a.window
94 },
95 isNumeric: function(a) {
96 return a - parseFloat(a) >= 0
97 },
98 isEmptyObject: function(a) {
99 var b;
100 for (b in a) return !1;
101 return !0
102 },
103 isPlainObject: function(a) {
104 var b;
105 if (!a || "object" !== n.type(a) || a.nodeType || n.isWindow(a)) return !1;
106 try {
107 if (a.constructor && !j.call(a, "constructor") && !j.call(a.constructor.prototype, "isPrototypeOf")) return !1
108 } catch (c) {
109 return !1
110 }
111 if (l.ownLast)
112 for (b in a) return j.call(a, b);
113 for (b in a);
114 return void 0 === b || j.call(a, b)
115 },
116 type: function(a) {
117 return null == a ? a + "" : "object" == typeof a || "function" == typeof a ? h[i.call(a)] || "object" : typeof a
118 },
119 globalEval: function(b) {
120 b && n.trim(b) && (a.execScript || function(b) {
121 a.eval.call(a, b)
122 })(b)
123 },
124 camelCase: function(a) {
125 return a.replace(p, "ms-").replace(q, r)
126 },
127 nodeName: function(a, b) {
128 return a.nodeName && a.nodeName.toLowerCase() === b.toLowerCase()
129 },
130 each: function(a, b, c) {
131 var d, e = 0,
132 f = a.length,
133 g = s(a);
134 if (c) {
135 if (g) {
136 for (; f > e; e++)
137 if (d = b.apply(a[e], c), d === !1) break
138 } else
139 for (e in a)
140 if (d = b.apply(a[e], c), d === !1) break
141 } else if (g) {
142 for (; f > e; e++)
143 if (d = b.call(a[e], e, a[e]), d === !1) break
144 } else
145 for (e in a)
146 if (d = b.call(a[e], e, a[e]), d === !1) break; return a
147 },
148 trim: k && !k.call("\ufeff\xa0") ? function(a) {
149 return null == a ? "" : k.call(a)
150 } : function(a) {
151 return null == a ? "" : (a + "").replace(o, "")
152 },
153 makeArray: function(a, b) {
154 var c = b || [];
155 return null != a && (s(Object(a)) ? n.merge(c, "string" == typeof a ? [a] : a) : f.call(c, a)), c
156 },
157 inArray: function(a, b, c) {
158 var d;
159 if (b) {
160 if (g) return g.call(b, a, c);
161 for (d = b.length, c = c ? 0 > c ? Math.max(0, d + c) : c : 0; d > c; c++)
162 if (c in b && b[c] === a) return c
163 }
164 return -1
165 },
166 merge: function(a, b) {
167 var c = +b.length,
168 d = 0,
169 e = a.length;
170 while (c > d) a[e++] = b[d++];
171 if (c !== c)
172 while (void 0 !== b[d]) a[e++] = b[d++];
173 return a.length = e, a
174 },
175 grep: function(a, b, c) {
176 for (var d, e = [], f = 0, g = a.length, h = !c; g > f; f++) d = !b(a[f], f), d !== h && e.push(a[f]);
177 return e
178 },
179 map: function(a, b, c) {
180 var d, f = 0,
181 g = a.length,
182 h = s(a),
183 i = [];
184 if (h)
185 for (; g > f; f++) d = b(a[f], f, c), null != d && i.push(d);
186 else
187 for (f in a) d = b(a[f], f, c), null != d && i.push(d);
188 return e.apply([], i)
189 },
190 guid: 1,
191 proxy: function(a, b) {
192 var c, e, f;
193 return "string" == typeof b && (f = a[b], b = a, a = f), n.isFunction(a) ? (c = d.call(arguments, 2), e = function() {
194 return a.apply(b || this, c.concat(d.call(arguments)))
195 }, e.guid = a.guid = a.guid || n.guid++, e) : void 0
196 },
197 now: function() {
198 return +new Date
199 },
200 support: l
201 }), n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(a, b) {
202 h["[object " + b + "]"] = b.toLowerCase()
203 });
204
205 function s(a) {
206 var b = a.length,
207 c = n.type(a);
208 return "function" === c || n.isWindow(a) ? !1 : 1 === a.nodeType && b ? !0 : "array" === c || 0 === b || "number" == typeof b && b > 0 && b - 1 in a
209 }
210 var t = function(a) {
211 var b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s = "sizzle" + -new Date,
212 t = a.document,
213 u = 0,
214 v = 0,
215 w = eb(),
216 x = eb(),
217 y = eb(),
218 z = function(a, b) {
219 return a === b && (j = !0), 0
220 },
221 A = "undefined",
222 B = 1 << 31,
223 C = {}.hasOwnProperty,
224 D = [],
225 E = D.pop,
226 F = D.push,
227 G = D.push,
228 H = D.slice,
229 I = D.indexOf || function(a) {
230 for (var b = 0, c = this.length; c > b; b++)
231 if (this[b] === a) return b;
232 return -1
233 },
234 J = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
235 K = "[\\x20\\t\\r\\n\\f]",
236 L = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
237 M = L.replace("w", "w#"),
238 N = "\\[" + K + "*(" + L + ")" + K + "*(?:([*^$|!~]?=)" + K + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + M + ")|)|)" + K + "*\\]",
239 O = ":(" + L + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + N.replace(3, 8) + ")*)|.*)\\)|)",
240 P = new RegExp("^" + K + "+|((?:^|[^\\\\])(?:\\\\.)*)" + K + "+$", "g"),
241 Q = new RegExp("^" + K + "*," + K + "*"),
242 R = new RegExp("^" + K + "*([>+~]|" + K + ")" + K + "*"),
243 S = new RegExp("=" + K + "*([^\\]'\"]*?)" + K + "*\\]", "g"),
244 T = new RegExp(O),
245 U = new RegExp("^" + M + "$"),
246 V = {
247 ID: new RegExp("^#(" + L + ")"),
248 CLASS: new RegExp("^\\.(" + L + ")"),
249 TAG: new RegExp("^(" + L.replace("w", "w*") + ")"),
250 ATTR: new RegExp("^" + N),
251 PSEUDO: new RegExp("^" + O),
252 CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + K + "*(even|odd|(([+-]|)(\\d*)n|)" + K + "*(?:([+-]|)" + K + "*(\\d+)|))" + K + "*\\)|)", "i"),
253 bool: new RegExp("^(?:" + J + ")$", "i"),
254 needsContext: new RegExp("^" + K + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + K + "*((?:-\\d)?\\d*)" + K + "*\\)|)(?=[^-]|$)", "i")
255 },
256 W = /^(?:input|select|textarea|button)$/i,
257 X = /^h\d$/i,
258 Y = /^[^{]+\{\s*\[native \w/,
259 Z = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
260 $ = /[+~]/,
261 _ = /'|\\/g,
262 ab = new RegExp("\\\\([\\da-f]{1,6}" + K + "?|(" + K + ")|.)", "ig"),
263 bb = function(a, b, c) {
264 var d = "0x" + b - 65536;
265 return d !== d || c ? b : 0 > d ? String.fromCharCode(d + 65536) : String.fromCharCode(d >> 10 | 55296, 1023 & d | 56320)
266 };
267 try {
268 G.apply(D = H.call(t.childNodes), t.childNodes), D[t.childNodes.length].nodeType
269 } catch (cb) {
270 G = {
271 apply: D.length ? function(a, b) {
272 F.apply(a, H.call(b))
273 } : function(a, b) {
274 var c = a.length,
275 d = 0;
276 while (a[c++] = b[d++]);
277 a.length = c - 1
278 }
279 }
280 }
281
282 function db(a, b, d, e) {
283 var f, g, h, i, j, m, p, q, u, v;
284 if ((b ? b.ownerDocument || b : t) !== l && k(b), b = b || l, d = d || [], !a || "string" != typeof a) return d;
285 if (1 !== (i = b.nodeType) && 9 !== i) return [];
286 if (n && !e) {
287 if (f = Z.exec(a))
288 if (h = f[1]) {
289 if (9 === i) {
290 if (g = b.getElementById(h), !g || !g.parentNode) return d;
291 if (g.id === h) return d.push(g), d
292 } else if (b.ownerDocument && (g = b.ownerDocument.getElementById(h)) && r(b, g) && g.id === h) return d.push(g), d
293 } else {
294 if (f[2]) return G.apply(d, b.getElementsByTagName(a)), d;
295 if ((h = f[3]) && c.getElementsByClassName && b.getElementsByClassName) return G.apply(d, b.getElementsByClassName(h)), d
296 }
297 if (c.qsa && (!o || !o.test(a))) {
298 if (q = p = s, u = b, v = 9 === i && a, 1 === i && "object" !== b.nodeName.toLowerCase()) {
299 m = ob(a), (p = b.getAttribute("id")) ? q = p.replace(_, "\\$&") : b.setAttribute("id", q), q = "[id='" + q + "'] ", j = m.length;
300 while (j--) m[j] = q + pb(m[j]);
301 u = $.test(a) && mb(b.parentNode) || b, v = m.join(",")
302 }
303 if (v) try {
304 return G.apply(d, u.querySelectorAll(v)), d
305 } catch (w) {} finally {
306 p || b.removeAttribute("id")
307 }
308 }
309 }
310 return xb(a.replace(P, "$1"), b, d, e)
311 }
312
313 function eb() {
314 var a = [];
315
316 function b(c, e) {
317 return a.push(c + " ") > d.cacheLength && delete b[a.shift()], b[c + " "] = e
318 }
319 return b
320 }
321
322 function fb(a) {
323 return a[s] = !0, a
324 }
325
326 function gb(a) {
327 var b = l.createElement("div");
328 try {
329 return !!a(b)
330 } catch (c) {
331 return !1
332 } finally {
333 b.parentNode && b.parentNode.removeChild(b), b = null
334 }
335 }
336
337 function hb(a, b) {
338 var c = a.split("|"),
339 e = a.length;
340 while (e--) d.attrHandle[c[e]] = b
341 }
342
343 function ib(a, b) {
344 var c = b && a,
345 d = c && 1 === a.nodeType && 1 === b.nodeType && (~b.sourceIndex || B) - (~a.sourceIndex || B);
346 if (d) return d;
347 if (c)
348 while (c = c.nextSibling)
349 if (c === b) return -1;
350 return a ? 1 : -1
351 }
352
353 function jb(a) {
354 return function(b) {
355 var c = b.nodeName.toLowerCase();
356 return "input" === c && b.type === a
357 }
358 }
359
360 function kb(a) {
361 return function(b) {
362 var c = b.nodeName.toLowerCase();
363 return ("input" === c || "button" === c) && b.type === a
364 }
365 }
366
367 function lb(a) {
368 return fb(function(b) {
369 return b = +b, fb(function(c, d) {
370 var e, f = a([], c.length, b),
371 g = f.length;
372 while (g--) c[e = f[g]] && (c[e] = !(d[e] = c[e]))
373 })
374 })
375 }
376
377 function mb(a) {
378 return a && typeof a.getElementsByTagName !== A && a
379 }
380 c = db.support = {}, f = db.isXML = function(a) {
381 var b = a && (a.ownerDocument || a).documentElement;
382 return b ? "HTML" !== b.nodeName : !1
383 }, k = db.setDocument = function(a) {
384 var b, e = a ? a.ownerDocument || a : t,
385 g = e.defaultView;
386 return e !== l && 9 === e.nodeType && e.documentElement ? (l = e, m = e.documentElement, n = !f(e), g && g !== g.top && (g.addEventListener ? g.addEventListener("unload", function() {
387 k()
388 }, !1) : g.attachEvent && g.attachEvent("onunload", function() {
389 k()
390 })), c.attributes = gb(function(a) {
391 return a.className = "i", !a.getAttribute("className")
392 }), c.getElementsByTagName = gb(function(a) {
393 return a.appendChild(e.createComment("")), !a.getElementsByTagName("*").length
394 }), c.getElementsByClassName = Y.test(e.getElementsByClassName) && gb(function(a) {
395 return a.innerHTML = "<div class='a'></div><div class='a i'></div>", a.firstChild.className = "i", 2 === a.getElementsByClassName("i").length
396 }), c.getById = gb(function(a) {
397 return m.appendChild(a).id = s, !e.getElementsByName || !e.getElementsByName(s).length
398 }), c.getById ? (d.find.ID = function(a, b) {
399 if (typeof b.getElementById !== A && n) {
400 var c = b.getElementById(a);
401 return c && c.parentNode ? [c] : []
402 }
403 }, d.filter.ID = function(a) {
404 var b = a.replace(ab, bb);
405 return function(a) {
406 return a.getAttribute("id") === b
407 }
408 }) : (delete d.find.ID, d.filter.ID = function(a) {
409 var b = a.replace(ab, bb);
410 return function(a) {
411 var c = typeof a.getAttributeNode !== A && a.getAttributeNode("id");
412 return c && c.value === b
413 }
414 }), d.find.TAG = c.getElementsByTagName ? function(a, b) {
415 return typeof b.getElementsByTagName !== A ? b.getElementsByTagName(a) : void 0
416 } : function(a, b) {
417 var c, d = [],
418 e = 0,
419 f = b.getElementsByTagName(a);
420 if ("*" === a) {
421 while (c = f[e++]) 1 === c.nodeType && d.push(c);
422 return d
423 }
424 return f
425 }, d.find.CLASS = c.getElementsByClassName && function(a, b) {
426 return typeof b.getElementsByClassName !== A && n ? b.getElementsByClassName(a) : void 0
427 }, p = [], o = [], (c.qsa = Y.test(e.querySelectorAll)) && (gb(function(a) {
428 a.innerHTML = "<select t=''><option selected=''></option></select>", a.querySelectorAll("[t^='']").length && o.push("[*^$]=" + K + "*(?:''|\"\")"), a.querySelectorAll("[selected]").length || o.push("\\[" + K + "*(?:value|" + J + ")"), a.querySelectorAll(":checked").length || o.push(":checked")
429 }), gb(function(a) {
430 var b = e.createElement("input");
431 b.setAttribute("type", "hidden"), a.appendChild(b).setAttribute("name", "D"), a.querySelectorAll("[name=d]").length && o.push("name" + K + "*[*^$|!~]?="), a.querySelectorAll(":enabled").length || o.push(":enabled", ":disabled"), a.querySelectorAll("*,:x"), o.push(",.*:")
432 })), (c.matchesSelector = Y.test(q = m.webkitMatchesSelector || m.mozMatchesSelector || m.oMatchesSelector || m.msMatchesSelector)) && gb(function(a) {
433 c.disconnectedMatch = q.call(a, "div"), q.call(a, "[s!='']:x"), p.push("!=", O)
434 }), o = o.length && new RegExp(o.join("|")), p = p.length && new RegExp(p.join("|")), b = Y.test(m.compareDocumentPosition), r = b || Y.test(m.contains) ? function(a, b) {
435 var c = 9 === a.nodeType ? a.documentElement : a,
436 d = b && b.parentNode;
437 return a === d || !(!d || 1 !== d.nodeType || !(c.contains ? c.contains(d) : a.compareDocumentPosition && 16 & a.compareDocumentPosition(d)))
438 } : function(a, b) {
439 if (b)
440 while (b = b.parentNode)
441 if (b === a) return !0;
442 return !1
443 }, z = b ? function(a, b) {
444 if (a === b) return j = !0, 0;
445 var d = !a.compareDocumentPosition - !b.compareDocumentPosition;
446 return d ? d : (d = (a.ownerDocument || a) === (b.ownerDocument || b) ? a.compareDocumentPosition(b) : 1, 1 & d || !c.sortDetached && b.compareDocumentPosition(a) === d ? a === e || a.ownerDocument === t && r(t, a) ? -1 : b === e || b.ownerDocument === t && r(t, b) ? 1 : i ? I.call(i, a) - I.call(i, b) : 0 : 4 & d ? -1 : 1)
447 } : function(a, b) {
448 if (a === b) return j = !0, 0;
449 var c, d = 0,
450 f = a.parentNode,
451 g = b.parentNode,
452 h = [a],
453 k = [b];
454 if (!f || !g) return a === e ? -1 : b === e ? 1 : f ? -1 : g ? 1 : i ? I.call(i, a) - I.call(i, b) : 0;
455 if (f === g) return ib(a, b);
456 c = a;
457 while (c = c.parentNode) h.unshift(c);
458 c = b;
459 while (c = c.parentNode) k.unshift(c);
460 while (h[d] === k[d]) d++;
461 return d ? ib(h[d], k[d]) : h[d] === t ? -1 : k[d] === t ? 1 : 0
462 }, e) : l
463 }, db.matches = function(a, b) {
464 return db(a, null, null, b)
465 }, db.matchesSelector = function(a, b) {
466 if ((a.ownerDocument || a) !== l && k(a), b = b.replace(S, "='$1']"), !(!c.matchesSelector || !n || p && p.test(b) || o && o.test(b))) try {
467 var d = q.call(a, b);
468 if (d || c.disconnectedMatch || a.document && 11 !== a.document.nodeType) return d
469 } catch (e) {}
470 return db(b, l, null, [a]).length > 0
471 }, db.contains = function(a, b) {
472 return (a.ownerDocument || a) !== l && k(a), r(a, b)
473 }, db.attr = function(a, b) {
474 (a.ownerDocument || a) !== l && k(a);
475 var e = d.attrHandle[b.toLowerCase()],
476 f = e && C.call(d.attrHandle, b.toLowerCase()) ? e(a, b, !n) : void 0;
477 return void 0 !== f ? f : c.attributes || !n ? a.getAttribute(b) : (f = a.getAttributeNode(b)) && f.specified ? f.value : null
478 }, db.error = function(a) {
479 throw new Error("Syntax error, unrecognized expression: " + a)
480 }, db.uniqueSort = function(a) {
481 var b, d = [],
482 e = 0,
483 f = 0;
484 if (j = !c.detectDuplicates, i = !c.sortStable && a.slice(0), a.sort(z), j) {
485 while (b = a[f++]) b === a[f] && (e = d.push(f));
486 while (e--) a.splice(d[e], 1)
487 }
488 return i = null, a
489 }, e = db.getText = function(a) {
490 var b, c = "",
491 d = 0,
492 f = a.nodeType;
493 if (f) {
494 if (1 === f || 9 === f || 11 === f) {
495 if ("string" == typeof a.textContent) return a.textContent;
496 for (a = a.firstChild; a; a = a.nextSibling) c += e(a)
497 } else if (3 === f || 4 === f) return a.nodeValue
498 } else
499 while (b = a[d++]) c += e(b);
500 return c
501 }, d = db.selectors = {
502 cacheLength: 50,
503 createPseudo: fb,
504 match: V,
505 attrHandle: {},
506 find: {},
507 relative: {
508 ">": {
509 dir: "parentNode",
510 first: !0
511 },
512 " ": {
513 dir: "parentNode"
514 },
515 "+": {
516 dir: "previousSibling",
517 first: !0
518 },
519 "~": {
520 dir: "previousSibling"
521 }
522 },
523 preFilter: {
524 ATTR: function(a) {
525 return a[1] = a[1].replace(ab, bb), a[3] = (a[4] || a[5] || "").replace(ab, bb), "~=" === a[2] && (a[3] = " " + a[3] + " "), a.slice(0, 4)
526 },
527 CHILD: function(a) {
528 return a[1] = a[1].toLowerCase(), "nth" === a[1].slice(0, 3) ? (a[3] || db.error(a[0]), a[4] = +(a[4] ? a[5] + (a[6] || 1) : 2 * ("even" === a[3] || "odd" === a[3])), a[5] = +(a[7] + a[8] || "odd" === a[3])) : a[3] && db.error(a[0]), a
529 },
530 PSEUDO: function(a) {
531 var b, c = !a[5] && a[2];
532 return V.CHILD.test(a[0]) ? null : (a[3] && void 0 !== a[4] ? a[2] = a[4] : c && T.test(c) && (b = ob(c, !0)) && (b = c.indexOf(")", c.length - b) - c.length) && (a[0] = a[0].slice(0, b), a[2] = c.slice(0, b)), a.slice(0, 3))
533 }
534 },
535 filter: {
536 TAG: function(a) {
537 var b = a.replace(ab, bb).toLowerCase();
538 return "*" === a ? function() {
539 return !0
540 } : function(a) {
541 return a.nodeName && a.nodeName.toLowerCase() === b
542 }
543 },
544 CLASS: function(a) {
545 var b = w[a + " "];
546 return b || (b = new RegExp("(^|" + K + ")" + a + "(" + K + "|$)")) && w(a, function(a) {
547 return b.test("string" == typeof a.className && a.className || typeof a.getAttribute !== A && a.getAttribute("class") || "")
548 })
549 },
550 ATTR: function(a, b, c) {
551 return function(d) {
552 var e = db.attr(d, a);
553 return null == e ? "!=" === b : b ? (e += "", "=" === b ? e === c : "!=" === b ? e !== c : "^=" === b ? c && 0 === e.indexOf(c) : "*=" === b ? c && e.indexOf(c) > -1 : "$=" === b ? c && e.slice(-c.length) === c : "~=" === b ? (" " + e + " ").indexOf(c) > -1 : "|=" === b ? e === c || e.slice(0, c.length + 1) === c + "-" : !1) : !0
554 }
555 },
556 CHILD: function(a, b, c, d, e) {
557 var f = "nth" !== a.slice(0, 3),
558 g = "last" !== a.slice(-4),
559 h = "of-type" === b;
560 return 1 === d && 0 === e ? function(a) {
561 return !!a.parentNode
562 } : function(b, c, i) {
563 var j, k, l, m, n, o, p = f !== g ? "nextSibling" : "previousSibling",
564 q = b.parentNode,
565 r = h && b.nodeName.toLowerCase(),
566 t = !i && !h;
567 if (q) {
568 if (f) {
569 while (p) {
570 l = b;
571 while (l = l[p])
572 if (h ? l.nodeName.toLowerCase() === r : 1 === l.nodeType) return !1;
573 o = p = "only" === a && !o && "nextSibling"
574 }
575 return !0
576 }
577 if (o = [g ? q.firstChild : q.lastChild], g && t) {
578 k = q[s] || (q[s] = {}), j = k[a] || [], n = j[0] === u && j[1], m = j[0] === u && j[2], l = n && q.childNodes[n];
579 while (l = ++n && l && l[p] || (m = n = 0) || o.pop())
580 if (1 === l.nodeType && ++m && l === b) {
581 k[a] = [u, n, m];
582 break
583 }
584 } else if (t && (j = (b[s] || (b[s] = {}))[a]) && j[0] === u) m = j[1];
585 else
586 while (l = ++n && l && l[p] || (m = n = 0) || o.pop())
587 if ((h ? l.nodeName.toLowerCase() === r : 1 === l.nodeType) && ++m && (t && ((l[s] || (l[s] = {}))[a] = [u, m]), l === b)) break; return m -= e, m === d || m % d === 0 && m / d >= 0
588 }
589 }
590 },
591 PSEUDO: function(a, b) {
592 var c, e = d.pseudos[a] || d.setFilters[a.toLowerCase()] || db.error("unsupported pseudo: " + a);
593 return e[s] ? e(b) : e.length > 1 ? (c = [a, a, "", b], d.setFilters.hasOwnProperty(a.toLowerCase()) ? fb(function(a, c) {
594 var d, f = e(a, b),
595 g = f.length;
596 while (g--) d = I.call(a, f[g]), a[d] = !(c[d] = f[g])
597 }) : function(a) {
598 return e(a, 0, c)
599 }) : e
600 }
601 },
602 pseudos: {
603 not: fb(function(a) {
604 var b = [],
605 c = [],
606 d = g(a.replace(P, "$1"));
607 return d[s] ? fb(function(a, b, c, e) {
608 var f, g = d(a, null, e, []),
609 h = a.length;
610 while (h--)(f = g[h]) && (a[h] = !(b[h] = f))
611 }) : function(a, e, f) {
612 return b[0] = a, d(b, null, f, c), !c.pop()
613 }
614 }),
615 has: fb(function(a) {
616 return function(b) {
617 return db(a, b).length > 0
618 }
619 }),
620 contains: fb(function(a) {
621 return function(b) {
622 return (b.textContent || b.innerText || e(b)).indexOf(a) > -1
623 }
624 }),
625 lang: fb(function(a) {
626 return U.test(a || "") || db.error("unsupported lang: " + a), a = a.replace(ab, bb).toLowerCase(),
627 function(b) {
628 var c;
629 do
630 if (c = n ? b.lang : b.getAttribute("xml:lang") || b.getAttribute("lang")) return c = c.toLowerCase(), c === a || 0 === c.indexOf(a + "-");
631 while ((b = b.parentNode) && 1 === b.nodeType);
632 return !1
633 }
634 }),
635 target: function(b) {
636 var c = a.location && a.location.hash;
637 return c && c.slice(1) === b.id
638 },
639 root: function(a) {
640 return a === m
641 },
642 focus: function(a) {
643 return a === l.activeElement && (!l.hasFocus || l.hasFocus()) && !!(a.type || a.href || ~a.tabIndex)
644 },
645 enabled: function(a) {
646 return a.disabled === !1
647 },
648 disabled: function(a) {
649 return a.disabled === !0
650 },
651 checked: function(a) {
652 var b = a.nodeName.toLowerCase();
653 return "input" === b && !!a.checked || "option" === b && !!a.selected
654 },
655 selected: function(a) {
656 return a.parentNode && a.parentNode.selectedIndex, a.selected === !0
657 },
658 empty: function(a) {
659 for (a = a.firstChild; a; a = a.nextSibling)
660 if (a.nodeType < 6) return !1;
661 return !0
662 },
663 parent: function(a) {
664 return !d.pseudos.empty(a)
665 },
666 header: function(a) {
667 return X.test(a.nodeName)
668 },
669 input: function(a) {
670 return W.test(a.nodeName)
671 },
672 button: function(a) {
673 var b = a.nodeName.toLowerCase();
674 return "input" === b && "button" === a.type || "button" === b
675 },
676 text: function(a) {
677 var b;
678 return "input" === a.nodeName.toLowerCase() && "text" === a.type && (null == (b = a.getAttribute("type")) || "text" === b.toLowerCase())
679 },
680 first: lb(function() {
681 return [0]
682 }),
683 last: lb(function(a, b) {
684 return [b - 1]
685 }),
686 eq: lb(function(a, b, c) {
687 return [0 > c ? c + b : c]
688 }),
689 even: lb(function(a, b) {
690 for (var c = 0; b > c; c += 2) a.push(c);
691 return a
692 }),
693 odd: lb(function(a, b) {
694 for (var c = 1; b > c; c += 2) a.push(c);
695 return a
696 }),
697 lt: lb(function(a, b, c) {
698 for (var d = 0 > c ? c + b : c; --d >= 0;) a.push(d);
699 return a
700 }),
701 gt: lb(function(a, b, c) {
702 for (var d = 0 > c ? c + b : c; ++d < b;) a.push(d);
703 return a
704 })
705 }
706 }, d.pseudos.nth = d.pseudos.eq;
707 for (b in {
708 radio: !0,
709 checkbox: !0,
710 file: !0,
711 password: !0,
712 image: !0
713 }) d.pseudos[b] = jb(b);
714 for (b in {
715 submit: !0,
716 reset: !0
717 }) d.pseudos[b] = kb(b);
718
719 function nb() {}
720 nb.prototype = d.filters = d.pseudos, d.setFilters = new nb;
721
722 function ob(a, b) {
723 var c, e, f, g, h, i, j, k = x[a + " "];
724 if (k) return b ? 0 : k.slice(0);
725 h = a, i = [], j = d.preFilter;
726 while (h) {
727 (!c || (e = Q.exec(h))) && (e && (h = h.slice(e[0].length) || h), i.push(f = [])), c = !1, (e = R.exec(h)) && (c = e.shift(), f.push({
728 value: c,
729 type: e[0].replace(P, " ")
730 }), h = h.slice(c.length));
731 for (g in d.filter)!(e = V[g].exec(h)) || j[g] && !(e = j[g](e)) || (c = e.shift(), f.push({
732 value: c,
733 type: g,
734 matches: e
735 }), h = h.slice(c.length));
736 if (!c) break
737 }
738 return b ? h.length : h ? db.error(a) : x(a, i).slice(0)
739 }
740
741 function pb(a) {
742 for (var b = 0, c = a.length, d = ""; c > b; b++) d += a[b].value;
743 return d
744 }
745
746 function qb(a, b, c) {
747 var d = b.dir,
748 e = c && "parentNode" === d,
749 f = v++;
750 return b.first ? function(b, c, f) {
751 while (b = b[d])
752 if (1 === b.nodeType || e) return a(b, c, f)
753 } : function(b, c, g) {
754 var h, i, j = [u, f];
755 if (g) {
756 while (b = b[d])
757 if ((1 === b.nodeType || e) && a(b, c, g)) return !0
758 } else
759 while (b = b[d])
760 if (1 === b.nodeType || e) {
761 if (i = b[s] || (b[s] = {}), (h = i[d]) && h[0] === u && h[1] === f) return j[2] = h[2];
762 if (i[d] = j, j[2] = a(b, c, g)) return !0
763 }
764 }
765 }
766
767 function rb(a) {
768 return a.length > 1 ? function(b, c, d) {
769 var e = a.length;
770 while (e--)
771 if (!a[e](b, c, d)) return !1;
772 return !0
773 } : a[0]
774 }
775
776 function sb(a, b, c, d, e) {
777 for (var f, g = [], h = 0, i = a.length, j = null != b; i > h; h++)(f = a[h]) && (!c || c(f, d, e)) && (g.push(f), j && b.push(h));
778 return g
779 }
780
781 function tb(a, b, c, d, e, f) {
782 return d && !d[s] && (d = tb(d)), e && !e[s] && (e = tb(e, f)), fb(function(f, g, h, i) {
783 var j, k, l, m = [],
784 n = [],
785 o = g.length,
786 p = f || wb(b || "*", h.nodeType ? [h] : h, []),
787 q = !a || !f && b ? p : sb(p, m, a, h, i),
788 r = c ? e || (f ? a : o || d) ? [] : g : q;
789 if (c && c(q, r, h, i), d) {
790 j = sb(r, n), d(j, [], h, i), k = j.length;
791 while (k--)(l = j[k]) && (r[n[k]] = !(q[n[k]] = l))
792 }
793 if (f) {
794 if (e || a) {
795 if (e) {
796 j = [], k = r.length;
797 while (k--)(l = r[k]) && j.push(q[k] = l);
798 e(null, r = [], j, i)
799 }
800 k = r.length;
801 while (k--)(l = r[k]) && (j = e ? I.call(f, l) : m[k]) > -1 && (f[j] = !(g[j] = l))
802 }
803 } else r = sb(r === g ? r.splice(o, r.length) : r), e ? e(null, g, r, i) : G.apply(g, r)
804 })
805 }
806
807 function ub(a) {
808 for (var b, c, e, f = a.length, g = d.relative[a[0].type], i = g || d.relative[" "], j = g ? 1 : 0, k = qb(function(a) {
809 return a === b
810 }, i, !0), l = qb(function(a) {
811 return I.call(b, a) > -1
812 }, i, !0), m = [
813 function(a, c, d) {
814 return !g && (d || c !== h) || ((b = c).nodeType ? k(a, c, d) : l(a, c, d))
815 }
816 ]; f > j; j++)
817 if (c = d.relative[a[j].type]) m = [qb(rb(m), c)];
818 else {
819 if (c = d.filter[a[j].type].apply(null, a[j].matches), c[s]) {
820 for (e = ++j; f > e; e++)
821 if (d.relative[a[e].type]) break;
822 return tb(j > 1 && rb(m), j > 1 && pb(a.slice(0, j - 1).concat({
823 value: " " === a[j - 2].type ? "*" : ""
824 })).replace(P, "$1"), c, e > j && ub(a.slice(j, e)), f > e && ub(a = a.slice(e)), f > e && pb(a))
825 }
826 m.push(c)
827 }
828 return rb(m)
829 }
830
831 function vb(a, b) {
832 var c = b.length > 0,
833 e = a.length > 0,
834 f = function(f, g, i, j, k) {
835 var m, n, o, p = 0,
836 q = "0",
837 r = f && [],
838 s = [],
839 t = h,
840 v = f || e && d.find.TAG("*", k),
841 w = u += null == t ? 1 : Math.random() || .1,
842 x = v.length;
843 for (k && (h = g !== l && g); q !== x && null != (m = v[q]); q++) {
844 if (e && m) {
845 n = 0;
846 while (o = a[n++])
847 if (o(m, g, i)) {
848 j.push(m);
849 break
850 }
851 k && (u = w)
852 }
853 c && ((m = !o && m) && p--, f && r.push(m))
854 }
855 if (p += q, c && q !== p) {
856 n = 0;
857 while (o = b[n++]) o(r, s, g, i);
858 if (f) {
859 if (p > 0)
860 while (q--) r[q] || s[q] || (s[q] = E.call(j));
861 s = sb(s)
862 }
863 G.apply(j, s), k && !f && s.length > 0 && p + b.length > 1 && db.uniqueSort(j)
864 }
865 return k && (u = w, h = t), r
866 };
867 return c ? fb(f) : f
868 }
869 g = db.compile = function(a, b) {
870 var c, d = [],
871 e = [],
872 f = y[a + " "];
873 if (!f) {
874 b || (b = ob(a)), c = b.length;
875 while (c--) f = ub(b[c]), f[s] ? d.push(f) : e.push(f);
876 f = y(a, vb(e, d))
877 }
878 return f
879 };
880
881 function wb(a, b, c) {
882 for (var d = 0, e = b.length; e > d; d++) db(a, b[d], c);
883 return c
884 }
885
886 function xb(a, b, e, f) {
887 var h, i, j, k, l, m = ob(a);
888 if (!f && 1 === m.length) {
889 if (i = m[0] = m[0].slice(0), i.length > 2 && "ID" === (j = i[0]).type && c.getById && 9 === b.nodeType && n && d.relative[i[1].type]) {
890 if (b = (d.find.ID(j.matches[0].replace(ab, bb), b) || [])[0], !b) return e;
891 a = a.slice(i.shift().value.length)
892 }
893 h = V.needsContext.test(a) ? 0 : i.length;
894 while (h--) {
895 if (j = i[h], d.relative[k = j.type]) break;
896 if ((l = d.find[k]) && (f = l(j.matches[0].replace(ab, bb), $.test(i[0].type) && mb(b.parentNode) || b))) {
897 if (i.splice(h, 1), a = f.length && pb(i), !a) return G.apply(e, f), e;
898 break
899 }
900 }
901 }
902 return g(a, m)(f, b, !n, e, $.test(a) && mb(b.parentNode) || b), e
903 }
904 return c.sortStable = s.split("").sort(z).join("") === s, c.detectDuplicates = !!j, k(), c.sortDetached = gb(function(a) {
905 return 1 & a.compareDocumentPosition(l.createElement("div"))
906 }), gb(function(a) {
907 return a.innerHTML = "<a href='#'></a>", "#" === a.firstChild.getAttribute("href")
908 }) || hb("type|href|height|width", function(a, b, c) {
909 return c ? void 0 : a.getAttribute(b, "type" === b.toLowerCase() ? 1 : 2)
910 }), c.attributes && gb(function(a) {
911 return a.innerHTML = "<input/>", a.firstChild.setAttribute("value", ""), "" === a.firstChild.getAttribute("value")
912 }) || hb("value", function(a, b, c) {
913 return c || "input" !== a.nodeName.toLowerCase() ? void 0 : a.defaultValue
914 }), gb(function(a) {
915 return null == a.getAttribute("disabled")
916 }) || hb(J, function(a, b, c) {
917 var d;
918 return c ? void 0 : a[b] === !0 ? b.toLowerCase() : (d = a.getAttributeNode(b)) && d.specified ? d.value : null
919 }), db
920 }(a);
921 n.find = t, n.expr = t.selectors, n.expr[":"] = n.expr.pseudos, n.unique = t.uniqueSort, n.text = t.getText, n.isXMLDoc = t.isXML, n.contains = t.contains;
922 var u = n.expr.match.needsContext,
923 v = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
924 w = /^.[^:#\[\.,]*$/;
925
926 function x(a, b, c) {
927 if (n.isFunction(b)) return n.grep(a, function(a, d) {
928 return !!b.call(a, d, a) !== c
929 });
930 if (b.nodeType) return n.grep(a, function(a) {
931 return a === b !== c
932 });
933 if ("string" == typeof b) {
934 if (w.test(b)) return n.filter(b, a, c);
935 b = n.filter(b, a)
936 }
937 return n.grep(a, function(a) {
938 return n.inArray(a, b) >= 0 !== c
939 })
940 }
941 n.filter = function(a, b, c) {
942 var d = b[0];
943 return c && (a = ":not(" + a + ")"), 1 === b.length && 1 === d.nodeType ? n.find.matchesSelector(d, a) ? [d] : [] : n.find.matches(a, n.grep(b, function(a) {
944 return 1 === a.nodeType
945 }))
946 }, n.fn.extend({
947 find: function(a) {
948 var b, c = [],
949 d = this,
950 e = d.length;
951 if ("string" != typeof a) return this.pushStack(n(a).filter(function() {
952 for (b = 0; e > b; b++)
953 if (n.contains(d[b], this)) return !0
954 }));
955 for (b = 0; e > b; b++) n.find(a, d[b], c);
956 return c = this.pushStack(e > 1 ? n.unique(c) : c), c.selector = this.selector ? this.selector + " " + a : a, c
957 },
958 filter: function(a) {
959 return this.pushStack(x(this, a || [], !1))
960 },
961 not: function(a) {
962 return this.pushStack(x(this, a || [], !0))
963 },
964 is: function(a) {
965 return !!x(this, "string" == typeof a && u.test(a) ? n(a) : a || [], !1).length
966 }
967 });
968 var y, z = a.document,
969 A = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
970 B = n.fn.init = function(a, b) {
971 var c, d;
972 if (!a) return this;
973 if ("string" == typeof a) {
974 if (c = "<" === a.charAt(0) && ">" === a.charAt(a.length - 1) && a.length >= 3 ? [null, a, null] : A.exec(a), !c || !c[1] && b) return !b || b.jquery ? (b || y).find(a) : this.constructor(b).find(a);
975 if (c[1]) {
976 if (b = b instanceof n ? b[0] : b, n.merge(this, n.parseHTML(c[1], b && b.nodeType ? b.ownerDocument || b : z, !0)), v.test(c[1]) && n.isPlainObject(b))
977 for (c in b) n.isFunction(this[c]) ? this[c](b[c]) : this.attr(c, b[c]);
978 return this
979 }
980 if (d = z.getElementById(c[2]), d && d.parentNode) {
981 if (d.id !== c[2]) return y.find(a);
982 this.length = 1, this[0] = d
983 }
984 return this.context = z, this.selector = a, this
985 }
986 return a.nodeType ? (this.context = this[0] = a, this.length = 1, this) : n.isFunction(a) ? "undefined" != typeof y.ready ? y.ready(a) : a(n) : (void 0 !== a.selector && (this.selector = a.selector, this.context = a.context), n.makeArray(a, this))
987 };
988 B.prototype = n.fn, y = n(z);
989 var C = /^(?:parents|prev(?:Until|All))/,
990 D = {
991 children: !0,
992 contents: !0,
993 next: !0,
994 prev: !0
995 };
996 n.extend({
997 dir: function(a, b, c) {
998 var d = [],
999 e = a[b];
1000 while (e && 9 !== e.nodeType && (void 0 === c || 1 !== e.nodeType || !n(e).is(c))) 1 === e.nodeType && d.push(e), e = e[b];
1001 return d
1002 },
1003 sibling: function(a, b) {
1004 for (var c = []; a; a = a.nextSibling) 1 === a.nodeType && a !== b && c.push(a);
1005 return c
1006 }
1007 }), n.fn.extend({
1008 has: function(a) {
1009 var b, c = n(a, this),
1010 d = c.length;
1011 return this.filter(function() {
1012 for (b = 0; d > b; b++)
1013 if (n.contains(this, c[b])) return !0
1014 })
1015 },
1016 closest: function(a, b) {
1017 for (var c, d = 0, e = this.length, f = [], g = u.test(a) || "string" != typeof a ? n(a, b || this.context) : 0; e > d; d++)
1018 for (c = this[d]; c && c !== b; c = c.parentNode)
1019 if (c.nodeType < 11 && (g ? g.index(c) > -1 : 1 === c.nodeType && n.find.matchesSelector(c, a))) {
1020 f.push(c);
1021 break
1022 }
1023 return this.pushStack(f.length > 1 ? n.unique(f) : f)
1024 },
1025 index: function(a) {
1026 return a ? "string" == typeof a ? n.inArray(this[0], n(a)) : n.inArray(a.jquery ? a[0] : a, this) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1
1027 },
1028 add: function(a, b) {
1029 return this.pushStack(n.unique(n.merge(this.get(), n(a, b))))
1030 },
1031 addBack: function(a) {
1032 return this.add(null == a ? this.prevObject : this.prevObject.filter(a))
1033 }
1034 });
1035
1036 function E(a, b) {
1037 do a = a[b]; while (a && 1 !== a.nodeType);
1038 return a
1039 }
1040 n.each({
1041 parent: function(a) {
1042 var b = a.parentNode;
1043 return b && 11 !== b.nodeType ? b : null
1044 },
1045 parents: function(a) {
1046 return n.dir(a, "parentNode")
1047 },
1048 parentsUntil: function(a, b, c) {
1049 return n.dir(a, "parentNode", c)
1050 },
1051 next: function(a) {
1052 return E(a, "nextSibling")
1053 },
1054 prev: function(a) {
1055 return E(a, "previousSibling")
1056 },
1057 nextAll: function(a) {
1058 return n.dir(a, "nextSibling")
1059 },
1060 prevAll: function(a) {
1061 return n.dir(a, "previousSibling")
1062 },
1063 nextUntil: function(a, b, c) {
1064 return n.dir(a, "nextSibling", c)
1065 },
1066 prevUntil: function(a, b, c) {
1067 return n.dir(a, "previousSibling", c)
1068 },
1069 siblings: function(a) {
1070 return n.sibling((a.parentNode || {}).firstChild, a)
1071 },
1072 children: function(a) {
1073 return n.sibling(a.firstChild)
1074 },
1075 contents: function(a) {
1076 return n.nodeName(a, "iframe") ? a.contentDocument || a.contentWindow.document : n.merge([], a.childNodes)
1077 }
1078 }, function(a, b) {
1079 n.fn[a] = function(c, d) {
1080 var e = n.map(this, b, c);
1081 return "Until" !== a.slice(-5) && (d = c), d && "string" == typeof d && (e = n.filter(d, e)), this.length > 1 && (D[a] || (e = n.unique(e)), C.test(a) && (e = e.reverse())), this.pushStack(e)
1082 }
1083 });
1084 var F = /\S+/g,
1085 G = {};
1086
1087 function H(a) {
1088 var b = G[a] = {};
1089 return n.each(a.match(F) || [], function(a, c) {
1090 b[c] = !0
1091 }), b
1092 }
1093 n.Callbacks = function(a) {
1094 a = "string" == typeof a ? G[a] || H(a) : n.extend({}, a);
1095 var b, c, d, e, f, g, h = [],
1096 i = !a.once && [],
1097 j = function(l) {
1098 for (c = a.memory && l, d = !0, f = g || 0, g = 0, e = h.length, b = !0; h && e > f; f++)
1099 if (h[f].apply(l[0], l[1]) === !1 && a.stopOnFalse) {
1100 c = !1;
1101 break
1102 }
1103 b = !1, h && (i ? i.length && j(i.shift()) : c ? h = [] : k.disable())
1104 },
1105 k = {
1106 add: function() {
1107 if (h) {
1108 var d = h.length;
1109 ! function f(b) {
1110 n.each(b, function(b, c) {
1111 var d = n.type(c);
1112 "function" === d ? a.unique && k.has(c) || h.push(c) : c && c.length && "string" !== d && f(c)
1113 })
1114 }(arguments), b ? e = h.length : c && (g = d, j(c))
1115 }
1116 return this
1117 },
1118 remove: function() {
1119 return h && n.each(arguments, function(a, c) {
1120 var d;
1121 while ((d = n.inArray(c, h, d)) > -1) h.splice(d, 1), b && (e >= d && e--, f >= d && f--)
1122 }), this
1123 },
1124 has: function(a) {
1125 return a ? n.inArray(a, h) > -1 : !(!h || !h.length)
1126 },
1127 empty: function() {
1128 return h = [], e = 0, this
1129 },
1130 disable: function() {
1131 return h = i = c = void 0, this
1132 },
1133 disabled: function() {
1134 return !h
1135 },
1136 lock: function() {
1137 return i = void 0, c || k.disable(), this
1138 },
1139 locked: function() {
1140 return !i
1141 },
1142 fireWith: function(a, c) {
1143 return !h || d && !i || (c = c || [], c = [a, c.slice ? c.slice() : c], b ? i.push(c) : j(c)), this
1144 },
1145 fire: function() {
1146 return k.fireWith(this, arguments), this
1147 },
1148 fired: function() {
1149 return !!d
1150 }
1151 };
1152 return k
1153 }, n.extend({
1154 Deferred: function(a) {
1155 var b = [
1156 ["resolve", "done", n.Callbacks("once memory"), "resolved"],
1157 ["reject", "fail", n.Callbacks("once memory"), "rejected"],
1158 ["notify", "progress", n.Callbacks("memory")]
1159 ],
1160 c = "pending",
1161 d = {
1162 state: function() {
1163 return c
1164 },
1165 always: function() {
1166 return e.done(arguments).fail(arguments), this
1167 },
1168 then: function() {
1169 var a = arguments;
1170 return n.Deferred(function(c) {
1171 n.each(b, function(b, f) {
1172 var g = n.isFunction(a[b]) && a[b];
1173 e[f[1]](function() {
1174 var a = g && g.apply(this, arguments);
1175 a && n.isFunction(a.promise) ? a.promise().done(c.resolve).fail(c.reject).progress(c.notify) : c[f[0] + "With"](this === d ? c.promise() : this, g ? [a] : arguments)
1176 })
1177 }), a = null
1178 }).promise()
1179 },
1180 promise: function(a) {
1181 return null != a ? n.extend(a, d) : d
1182 }
1183 },
1184 e = {};
1185 return d.pipe = d.then, n.each(b, function(a, f) {
1186 var g = f[2],
1187 h = f[3];
1188 d[f[1]] = g.add, h && g.add(function() {
1189 c = h
1190 }, b[1 ^ a][2].disable, b[2][2].lock), e[f[0]] = function() {
1191 return e[f[0] + "With"](this === e ? d : this, arguments), this
1192 }, e[f[0] + "With"] = g.fireWith
1193 }), d.promise(e), a && a.call(e, e), e
1194 },
1195 when: function(a) {
1196 var b = 0,
1197 c = d.call(arguments),
1198 e = c.length,
1199 f = 1 !== e || a && n.isFunction(a.promise) ? e : 0,
1200 g = 1 === f ? a : n.Deferred(),
1201 h = function(a, b, c) {
1202 return function(e) {
1203 b[a] = this, c[a] = arguments.length > 1 ? d.call(arguments) : e, c === i ? g.notifyWith(b, c) : --f || g.resolveWith(b, c)
1204 }
1205 },
1206 i, j, k;
1207 if (e > 1)
1208 for (i = new Array(e), j = new Array(e), k = new Array(e); e > b; b++) c[b] && n.isFunction(c[b].promise) ? c[b].promise().done(h(b, k, c)).fail(g.reject).progress(h(b, j, i)) : --f;
1209 return f || g.resolveWith(k, c), g.promise()
1210 }
1211 });
1212 var I;
1213 n.fn.ready = function(a) {
1214 return n.ready.promise().done(a), this
1215 }, n.extend({
1216 isReady: !1,
1217 readyWait: 1,
1218 holdReady: function(a) {
1219 a ? n.readyWait++ : n.ready(!0)
1220 },
1221 ready: function(a) {
1222 if (a === !0 ? !--n.readyWait : !n.isReady) {
1223 if (!z.body) return setTimeout(n.ready);
1224 n.isReady = !0, a !== !0 && --n.readyWait > 0 || (I.resolveWith(z, [n]), n.fn.trigger && n(z).trigger("ready").off("ready"))
1225 }
1226 }
1227 });
1228
1229 function J() {
1230 z.addEventListener ? (z.removeEventListener("DOMContentLoaded", K, !1), a.removeEventListener("load", K, !1)) : (z.detachEvent("onreadystatechange", K), a.detachEvent("onload", K))
1231 }
1232
1233 function K() {
1234 (z.addEventListener || "load" === event.type || "complete" === z.readyState) && (J(), n.ready())
1235 }
1236 n.ready.promise = function(b) {
1237 if (!I)
1238 if (I = n.Deferred(), "complete" === z.readyState) setTimeout(n.ready);
1239 else if (z.addEventListener) z.addEventListener("DOMContentLoaded", K, !1), a.addEventListener("load", K, !1);
1240 else {
1241 z.attachEvent("onreadystatechange", K), a.attachEvent("onload", K);
1242 var c = !1;
1243 try {
1244 c = null == a.frameElement && z.documentElement
1245 } catch (d) {}
1246 c && c.doScroll && ! function e() {
1247 if (!n.isReady) {
1248 try {
1249 c.doScroll("left")
1250 } catch (a) {
1251 return setTimeout(e, 50)
1252 }
1253 J(), n.ready()
1254 }
1255 }()
1256 }
1257 return I.promise(b)
1258 };
1259 var L = "undefined",
1260 M;
1261 for (M in n(l)) break;
1262 l.ownLast = "0" !== M, l.inlineBlockNeedsLayout = !1, n(function() {
1263 var a, b, c = z.getElementsByTagName("body")[0];
1264 c && (a = z.createElement("div"), a.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px", b = z.createElement("div"), c.appendChild(a).appendChild(b), typeof b.style.zoom !== L && (b.style.cssText = "border:0;margin:0;width:1px;padding:1px;display:inline;zoom:1", (l.inlineBlockNeedsLayout = 3 === b.offsetWidth) && (c.style.zoom = 1)), c.removeChild(a), a = b = null)
1265 }),
1266 function() {
1267 var a = z.createElement("div");
1268 if (null == l.deleteExpando) {
1269 l.deleteExpando = !0;
1270 try {
1271 delete a.test
1272 } catch (b) {
1273 l.deleteExpando = !1
1274 }
1275 }
1276 a = null
1277 }(), n.acceptData = function(a) {
1278 var b = n.noData[(a.nodeName + " ").toLowerCase()],
1279 c = +a.nodeType || 1;
1280 return 1 !== c && 9 !== c ? !1 : !b || b !== !0 && a.getAttribute("classid") === b
1281 };
1282 var N = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
1283 O = /([A-Z])/g;
1284
1285 function P(a, b, c) {
1286 if (void 0 === c && 1 === a.nodeType) {
1287 var d = "data-" + b.replace(O, "-$1").toLowerCase();
1288 if (c = a.getAttribute(d), "string" == typeof c) {
1289 try {
1290 c = "true" === c ? !0 : "false" === c ? !1 : "null" === c ? null : +c + "" === c ? +c : N.test(c) ? n.parseJSON(c) : c
1291 } catch (e) {}
1292 n.data(a, b, c)
1293 } else c = void 0
1294 }
1295 return c
1296 }
1297
1298 function Q(a) {
1299 var b;
1300 for (b in a)
1301 if (("data" !== b || !n.isEmptyObject(a[b])) && "toJSON" !== b) return !1;
1302 return !0
1303 }
1304
1305 function R(a, b, d, e) {
1306 if (n.acceptData(a)) {
1307 var f, g, h = n.expando,
1308 i = a.nodeType,
1309 j = i ? n.cache : a,
1310 k = i ? a[h] : a[h] && h;
1311 if (k && j[k] && (e || j[k].data) || void 0 !== d || "string" != typeof b) return k || (k = i ? a[h] = c.pop() || n.guid++ : h), j[k] || (j[k] = i ? {} : {
1312 toJSON: n.noop
1313 }), ("object" == typeof b || "function" == typeof b) && (e ? j[k] = n.extend(j[k], b) : j[k].data = n.extend(j[k].data, b)), g = j[k], e || (g.data || (g.data = {}), g = g.data), void 0 !== d && (g[n.camelCase(b)] = d), "string" == typeof b ? (f = g[b], null == f && (f = g[n.camelCase(b)])) : f = g, f
1314 }
1315 }
1316
1317 function S(a, b, c) {
1318 if (n.acceptData(a)) {
1319 var d, e, f = a.nodeType,
1320 g = f ? n.cache : a,
1321 h = f ? a[n.expando] : n.expando;
1322 if (g[h]) {
1323 if (b && (d = c ? g[h] : g[h].data)) {
1324 n.isArray(b) ? b = b.concat(n.map(b, n.camelCase)) : b in d ? b = [b] : (b = n.camelCase(b), b = b in d ? [b] : b.split(" ")), e = b.length;
1325 while (e--) delete d[b[e]];
1326 if (c ? !Q(d) : !n.isEmptyObject(d)) return
1327 }(c || (delete g[h].data, Q(g[h]))) && (f ? n.cleanData([a], !0) : l.deleteExpando || g != g.window ? delete g[h] : g[h] = null)
1328 }
1329 }
1330 }
1331 n.extend({
1332 cache: {},
1333 noData: {
1334 "applet ": !0,
1335 "embed ": !0,
1336 "object ": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
1337 },
1338 hasData: function(a) {
1339 return a = a.nodeType ? n.cache[a[n.expando]] : a[n.expando], !!a && !Q(a)
1340 },
1341 data: function(a, b, c) {
1342 return R(a, b, c)
1343 },
1344 removeData: function(a, b) {
1345 return S(a, b)
1346 },
1347 _data: function(a, b, c) {
1348 return R(a, b, c, !0)
1349 },
1350 _removeData: function(a, b) {
1351 return S(a, b, !0)
1352 }
1353 }), n.fn.extend({
1354 data: function(a, b) {
1355 var c, d, e, f = this[0],
1356 g = f && f.attributes;
1357 if (void 0 === a) {
1358 if (this.length && (e = n.data(f), 1 === f.nodeType && !n._data(f, "parsedAttrs"))) {
1359 c = g.length;
1360 while (c--) d = g[c].name, 0 === d.indexOf("data-") && (d = n.camelCase(d.slice(5)), P(f, d, e[d]));
1361 n._data(f, "parsedAttrs", !0)
1362 }
1363 return e
1364 }
1365 return "object" == typeof a ? this.each(function() {
1366 n.data(this, a)
1367 }) : arguments.length > 1 ? this.each(function() {
1368 n.data(this, a, b)
1369 }) : f ? P(f, a, n.data(f, a)) : void 0
1370 },
1371 removeData: function(a) {
1372 return this.each(function() {
1373 n.removeData(this, a)
1374 })
1375 }
1376 }), n.extend({
1377 queue: function(a, b, c) {
1378 var d;
1379 return a ? (b = (b || "fx") + "queue", d = n._data(a, b), c && (!d || n.isArray(c) ? d = n._data(a, b, n.makeArray(c)) : d.push(c)), d || []) : void 0
1380 },
1381 dequeue: function(a, b) {
1382 b = b || "fx";
1383 var c = n.queue(a, b),
1384 d = c.length,
1385 e = c.shift(),
1386 f = n._queueHooks(a, b),
1387 g = function() {
1388 n.dequeue(a, b)
1389 };
1390 "inprogress" === e && (e = c.shift(), d--), e && ("fx" === b && c.unshift("inprogress"), delete f.stop, e.call(a, g, f)), !d && f && f.empty.fire()
1391 },
1392 _queueHooks: function(a, b) {
1393 var c = b + "queueHooks";
1394 return n._data(a, c) || n._data(a, c, {
1395 empty: n.Callbacks("once memory").add(function() {
1396 n._removeData(a, b + "queue"), n._removeData(a, c)
1397 })
1398 })
1399 }
1400 }), n.fn.extend({
1401 queue: function(a, b) {
1402 var c = 2;
1403 return "string" != typeof a && (b = a, a = "fx", c--), arguments.length < c ? n.queue(this[0], a) : void 0 === b ? this : this.each(function() {
1404 var c = n.queue(this, a, b);
1405 n._queueHooks(this, a), "fx" === a && "inprogress" !== c[0] && n.dequeue(this, a)
1406 })
1407 },
1408 dequeue: function(a) {
1409 return this.each(function() {
1410 n.dequeue(this, a)
1411 })
1412 },
1413 clearQueue: function(a) {
1414 return this.queue(a || "fx", [])
1415 },
1416 promise: function(a, b) {
1417 var c, d = 1,
1418 e = n.Deferred(),
1419 f = this,
1420 g = this.length,
1421 h = function() {
1422 --d || e.resolveWith(f, [f])
1423 };
1424 "string" != typeof a && (b = a, a = void 0), a = a || "fx";
1425 while (g--) c = n._data(f[g], a + "queueHooks"), c && c.empty && (d++, c.empty.add(h));
1426 return h(), e.promise(b)
1427 }
1428 });
1429 var T = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
1430 U = ["Top", "Right", "Bottom", "Left"],
1431 V = function(a, b) {
1432 return a = b || a, "none" === n.css(a, "display") || !n.contains(a.ownerDocument, a)
1433 },
1434 W = n.access = function(a, b, c, d, e, f, g) {
1435 var h = 0,
1436 i = a.length,
1437 j = null == c;
1438 if ("object" === n.type(c)) {
1439 e = !0;
1440 for (h in c) n.access(a, b, h, c[h], !0, f, g)
1441 } else if (void 0 !== d && (e = !0, n.isFunction(d) || (g = !0), j && (g ? (b.call(a, d), b = null) : (j = b, b = function(a, b, c) {
1442 return j.call(n(a), c)
1443 })), b))
1444 for (; i > h; h++) b(a[h], c, g ? d : d.call(a[h], h, b(a[h], c)));
1445 return e ? a : j ? b.call(a) : i ? b(a[0], c) : f
1446 },
1447 X = /^(?:checkbox|radio)$/i;
1448 ! function() {
1449 var a = z.createDocumentFragment(),
1450 b = z.createElement("div"),
1451 c = z.createElement("input");
1452 if (b.setAttribute("className", "t"), b.innerHTML = " <link/><table></table><a href='/a'>a</a>", l.leadingWhitespace = 3 === b.firstChild.nodeType, l.tbody = !b.getElementsByTagName("tbody").length, l.htmlSerialize = !!b.getElementsByTagName("link").length, l.html5Clone = "<:nav></:nav>" !== z.createElement("nav").cloneNode(!0).outerHTML, c.type = "checkbox", c.checked = !0, a.appendChild(c), l.appendChecked = c.checked, b.innerHTML = "<textarea>x</textarea>", l.noCloneChecked = !!b.cloneNode(!0).lastChild.defaultValue, a.appendChild(b), b.innerHTML = "<input type='radio' checked='checked' name='t'/>", l.checkClone = b.cloneNode(!0).cloneNode(!0).lastChild.checked, l.noCloneEvent = !0, b.attachEvent && (b.attachEvent("onclick", function() {
1453 l.noCloneEvent = !1
1454 }), b.cloneNode(!0).click()), null == l.deleteExpando) {
1455 l.deleteExpando = !0;
1456 try {
1457 delete b.test
1458 } catch (d) {
1459 l.deleteExpando = !1
1460 }
1461 }
1462 a = b = c = null
1463 }(),
1464 function() {
1465 var b, c, d = z.createElement("div");
1466 for (b in {
1467 submit: !0,
1468 change: !0,
1469 focusin: !0
1470 }) c = "on" + b, (l[b + "Bubbles"] = c in a) || (d.setAttribute(c, "t"), l[b + "Bubbles"] = d.attributes[c].expando === !1);
1471 d = null
1472 }();
1473 var Y = /^(?:input|select|textarea)$/i,
1474 Z = /^key/,
1475 $ = /^(?:mouse|contextmenu)|click/,
1476 _ = /^(?:focusinfocus|focusoutblur)$/,
1477 ab = /^([^.]*)(?:\.(.+)|)$/;
1478
1479 function bb() {
1480 return !0
1481 }
1482
1483 function cb() {
1484 return !1
1485 }
1486
1487 function db() {
1488 try {
1489 return z.activeElement
1490 } catch (a) {}
1491 }
1492 n.event = {
1493 global: {},
1494 add: function(a, b, c, d, e) {
1495 var f, g, h, i, j, k, l, m, o, p, q, r = n._data(a);
1496 if (r) {
1497 c.handler && (i = c, c = i.handler, e = i.selector), c.guid || (c.guid = n.guid++), (g = r.events) || (g = r.events = {}), (k = r.handle) || (k = r.handle = function(a) {
1498 return typeof n === L || a && n.event.triggered === a.type ? void 0 : n.event.dispatch.apply(k.elem, arguments)
1499 }, k.elem = a), b = (b || "").match(F) || [""], h = b.length;
1500 while (h--) f = ab.exec(b[h]) || [], o = q = f[1], p = (f[2] || "").split(".").sort(), o && (j = n.event.special[o] || {}, o = (e ? j.delegateType : j.bindType) || o, j = n.event.special[o] || {}, l = n.extend({
1501 type: o,
1502 origType: q,
1503 data: d,
1504 handler: c,
1505 guid: c.guid,
1506 selector: e,
1507 needsContext: e && n.expr.match.needsContext.test(e),
1508 namespace: p.join(".")
1509 }, i), (m = g[o]) || (m = g[o] = [], m.delegateCount = 0, j.setup && j.setup.call(a, d, p, k) !== !1 || (a.addEventListener ? a.addEventListener(o, k, !1) : a.attachEvent && a.attachEvent("on" + o, k))), j.add && (j.add.call(a, l), l.handler.guid || (l.handler.guid = c.guid)), e ? m.splice(m.delegateCount++, 0, l) : m.push(l), n.event.global[o] = !0);
1510 a = null
1511 }
1512 },
1513 remove: function(a, b, c, d, e) {
1514 var f, g, h, i, j, k, l, m, o, p, q, r = n.hasData(a) && n._data(a);
1515 if (r && (k = r.events)) {
1516 b = (b || "").match(F) || [""], j = b.length;
1517 while (j--)
1518 if (h = ab.exec(b[j]) || [], o = q = h[1], p = (h[2] || "").split(".").sort(), o) {
1519 l = n.event.special[o] || {}, o = (d ? l.delegateType : l.bindType) || o, m = k[o] || [], h = h[2] && new RegExp("(^|\\.)" + p.join("\\.(?:.*\\.|)") + "(\\.|$)"), i = f = m.length;
1520 while (f--) g = m[f], !e && q !== g.origType || c && c.guid !== g.guid || h && !h.test(g.namespace) || d && d !== g.selector && ("**" !== d || !g.selector) || (m.splice(f, 1), g.selector && m.delegateCount--, l.remove && l.remove.call(a, g));
1521 i && !m.length && (l.teardown && l.teardown.call(a, p, r.handle) !== !1 || n.removeEvent(a, o, r.handle), delete k[o])
1522 } else
1523 for (o in k) n.event.remove(a, o + b[j], c, d, !0);
1524 n.isEmptyObject(k) && (delete r.handle, n._removeData(a, "events"))
1525 }
1526 },
1527 trigger: function(b, c, d, e) {
1528 var f, g, h, i, k, l, m, o = [d || z],
1529 p = j.call(b, "type") ? b.type : b,
1530 q = j.call(b, "namespace") ? b.namespace.split(".") : [];
1531 if (h = l = d = d || z, 3 !== d.nodeType && 8 !== d.nodeType && !_.test(p + n.event.triggered) && (p.indexOf(".") >= 0 && (q = p.split("."), p = q.shift(), q.sort()), g = p.indexOf(":") < 0 && "on" + p, b = b[n.expando] ? b : new n.Event(p, "object" == typeof b && b), b.isTrigger = e ? 2 : 3, b.namespace = q.join("."), b.namespace_re = b.namespace ? new RegExp("(^|\\.)" + q.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, b.result = void 0, b.target || (b.target = d), c = null == c ? [b] : n.makeArray(c, [b]), k = n.event.special[p] || {}, e || !k.trigger || k.trigger.apply(d, c) !== !1)) {
1532 if (!e && !k.noBubble && !n.isWindow(d)) {
1533 for (i = k.delegateType || p, _.test(i + p) || (h = h.parentNode); h; h = h.parentNode) o.push(h), l = h;
1534 l === (d.ownerDocument || z) && o.push(l.defaultView || l.parentWindow || a)
1535 }
1536 m = 0;
1537 while ((h = o[m++]) && !b.isPropagationStopped()) b.type = m > 1 ? i : k.bindType || p, f = (n._data(h, "events") || {})[b.type] && n._data(h, "handle"), f && f.apply(h, c), f = g && h[g], f && f.apply && n.acceptData(h) && (b.result = f.apply(h, c), b.result === !1 && b.preventDefault());
1538 if (b.type = p, !e && !b.isDefaultPrevented() && (!k._default || k._default.apply(o.pop(), c) === !1) && n.acceptData(d) && g && d[p] && !n.isWindow(d)) {
1539 l = d[g], l && (d[g] = null), n.event.triggered = p;
1540 try {
1541 d[p]()
1542 } catch (r) {}
1543 n.event.triggered = void 0, l && (d[g] = l)
1544 }
1545 return b.result
1546 }
1547 },
1548 dispatch: function(a) {
1549 a = n.event.fix(a);
1550 var b, c, e, f, g, h = [],
1551 i = d.call(arguments),
1552 j = (n._data(this, "events") || {})[a.type] || [],
1553 k = n.event.special[a.type] || {};
1554 if (i[0] = a, a.delegateTarget = this, !k.preDispatch || k.preDispatch.call(this, a) !== !1) {
1555 h = n.event.handlers.call(this, a, j), b = 0;
1556 while ((f = h[b++]) && !a.isPropagationStopped()) {
1557 a.currentTarget = f.elem, g = 0;
1558 while ((e = f.handlers[g++]) && !a.isImmediatePropagationStopped())(!a.namespace_re || a.namespace_re.test(e.namespace)) && (a.handleObj = e, a.data = e.data, c = ((n.event.special[e.origType] || {}).handle || e.handler).apply(f.elem, i), void 0 !== c && (a.result = c) === !1 && (a.preventDefault(), a.stopPropagation()))
1559 }
1560 return k.postDispatch && k.postDispatch.call(this, a), a.result
1561 }
1562 },
1563 handlers: function(a, b) {
1564 var c, d, e, f, g = [],
1565 h = b.delegateCount,
1566 i = a.target;
1567 if (h && i.nodeType && (!a.button || "click" !== a.type))
1568 for (; i != this; i = i.parentNode || this)
1569 if (1 === i.nodeType && (i.disabled !== !0 || "click" !== a.type)) {
1570 for (e = [], f = 0; h > f; f++) d = b[f], c = d.selector + " ", void 0 === e[c] && (e[c] = d.needsContext ? n(c, this).index(i) >= 0 : n.find(c, this, null, [i]).length), e[c] && e.push(d);
1571 e.length && g.push({
1572 elem: i,
1573 handlers: e
1574 })
1575 }
1576 return h < b.length && g.push({
1577 elem: this,
1578 handlers: b.slice(h)
1579 }), g
1580 },
1581 fix: function(a) {
1582 if (a[n.expando]) return a;
1583 var b, c, d, e = a.type,
1584 f = a,
1585 g = this.fixHooks[e];
1586 g || (this.fixHooks[e] = g = $.test(e) ? this.mouseHooks : Z.test(e) ? this.keyHooks : {}), d = g.props ? this.props.concat(g.props) : this.props, a = new n.Event(f), b = d.length;
1587 while (b--) c = d[b], a[c] = f[c];
1588 return a.target || (a.target = f.srcElement || z), 3 === a.target.nodeType && (a.target = a.target.parentNode), a.metaKey = !!a.metaKey, g.filter ? g.filter(a, f) : a
1589 },
1590 props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
1591 fixHooks: {},
1592 keyHooks: {
1593 props: "char charCode key keyCode".split(" "),
1594 filter: function(a, b) {
1595 return null == a.which && (a.which = null != b.charCode ? b.charCode : b.keyCode), a
1596 }
1597 },
1598 mouseHooks: {
1599 props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
1600 filter: function(a, b) {
1601 var c, d, e, f = b.button,
1602 g = b.fromElement;
1603 return null == a.pageX && null != b.clientX && (d = a.target.ownerDocument || z, e = d.documentElement, c = d.body, a.pageX = b.clientX + (e && e.scrollLeft || c && c.scrollLeft || 0) - (e && e.clientLeft || c && c.clientLeft || 0), a.pageY = b.clientY + (e && e.scrollTop || c && c.scrollTop || 0) - (e && e.clientTop || c && c.clientTop || 0)), !a.relatedTarget && g && (a.relatedTarget = g === a.target ? b.toElement : g), a.which || void 0 === f || (a.which = 1 & f ? 1 : 2 & f ? 3 : 4 & f ? 2 : 0), a
1604 }
1605 },
1606 special: {
1607 load: {
1608 noBubble: !0
1609 },
1610 focus: {
1611 trigger: function() {
1612 if (this !== db() && this.focus) try {
1613 return this.focus(), !1
1614 } catch (a) {}
1615 },
1616 delegateType: "focusin"
1617 },
1618 blur: {
1619 trigger: function() {
1620 return this === db() && this.blur ? (this.blur(), !1) : void 0
1621 },
1622 delegateType: "focusout"
1623 },
1624 click: {
1625 trigger: function() {
1626 return n.nodeName(this, "input") && "checkbox" === this.type && this.click ? (this.click(), !1) : void 0
1627 },
1628 _default: function(a) {
1629 return n.nodeName(a.target, "a")
1630 }
1631 },
1632 beforeunload: {
1633 postDispatch: function(a) {
1634 void 0 !== a.result && (a.originalEvent.returnValue = a.result)
1635 }
1636 }
1637 },
1638 simulate: function(a, b, c, d) {
1639 var e = n.extend(new n.Event, c, {
1640 type: a,
1641 isSimulated: !0,
1642 originalEvent: {}
1643 });
1644 d ? n.event.trigger(e, null, b) : n.event.dispatch.call(b, e), e.isDefaultPrevented() && c.preventDefault()
1645 }
1646 }, n.removeEvent = z.removeEventListener ? function(a, b, c) {
1647 a.removeEventListener && a.removeEventListener(b, c, !1)
1648 } : function(a, b, c) {
1649 var d = "on" + b;
1650 a.detachEvent && (typeof a[d] === L && (a[d] = null), a.detachEvent(d, c))
1651 }, n.Event = function(a, b) {
1652 return this instanceof n.Event ? (a && a.type ? (this.originalEvent = a, this.type = a.type, this.isDefaultPrevented = a.defaultPrevented || void 0 === a.defaultPrevented && (a.returnValue === !1 || a.getPreventDefault && a.getPreventDefault()) ? bb : cb) : this.type = a, b && n.extend(this, b), this.timeStamp = a && a.timeStamp || n.now(), void(this[n.expando] = !0)) : new n.Event(a, b)
1653 }, n.Event.prototype = {
1654 isDefaultPrevented: cb,
1655 isPropagationStopped: cb,
1656 isImmediatePropagationStopped: cb,
1657 preventDefault: function() {
1658 var a = this.originalEvent;
1659 this.isDefaultPrevented = bb, a && (a.preventDefault ? a.preventDefault() : a.returnValue = !1)
1660 },
1661 stopPropagation: function() {
1662 var a = this.originalEvent;
1663 this.isPropagationStopped = bb, a && (a.stopPropagation && a.stopPropagation(), a.cancelBubble = !0)
1664 },
1665 stopImmediatePropagation: function() {
1666 this.isImmediatePropagationStopped = bb, this.stopPropagation()
1667 }
1668 }, n.each({
1669 mouseenter: "mouseover",
1670 mouseleave: "mouseout"
1671 }, function(a, b) {
1672 n.event.special[a] = {
1673 delegateType: b,
1674 bindType: b,
1675 handle: function(a) {
1676 var c, d = this,
1677 e = a.relatedTarget,
1678 f = a.handleObj;
1679 return (!e || e !== d && !n.contains(d, e)) && (a.type = f.origType, c = f.handler.apply(this, arguments), a.type = b), c
1680 }
1681 }
1682 }), l.submitBubbles || (n.event.special.submit = {
1683 setup: function() {
1684 return n.nodeName(this, "form") ? !1 : void n.event.add(this, "click._submit keypress._submit", function(a) {
1685 var b = a.target,
1686 c = n.nodeName(b, "input") || n.nodeName(b, "button") ? b.form : void 0;
1687 c && !n._data(c, "submitBubbles") && (n.event.add(c, "submit._submit", function(a) {
1688 a._submit_bubble = !0
1689 }), n._data(c, "submitBubbles", !0))
1690 })
1691 },
1692 postDispatch: function(a) {
1693 a._submit_bubble && (delete a._submit_bubble, this.parentNode && !a.isTrigger && n.event.simulate("submit", this.parentNode, a, !0))
1694 },
1695 teardown: function() {
1696 return n.nodeName(this, "form") ? !1 : void n.event.remove(this, "._submit")
1697 }
1698 }), l.changeBubbles || (n.event.special.change = {
1699 setup: function() {
1700 return Y.test(this.nodeName) ? (("checkbox" === this.type || "radio" === this.type) && (n.event.add(this, "propertychange._change", function(a) {
1701 "checked" === a.originalEvent.propertyName && (this._just_changed = !0)
1702 }), n.event.add(this, "click._change", function(a) {
1703 this._just_changed && !a.isTrigger && (this._just_changed = !1), n.event.simulate("change", this, a, !0)
1704 })), !1) : void n.event.add(this, "beforeactivate._change", function(a) {
1705 var b = a.target;
1706 Y.test(b.nodeName) && !n._data(b, "changeBubbles") && (n.event.add(b, "change._change", function(a) {
1707 !this.parentNode || a.isSimulated || a.isTrigger || n.event.simulate("change", this.parentNode, a, !0)
1708 }), n._data(b, "changeBubbles", !0))
1709 })
1710 },
1711 handle: function(a) {
1712 var b = a.target;
1713 return this !== b || a.isSimulated || a.isTrigger || "radio" !== b.type && "checkbox" !== b.type ? a.handleObj.handler.apply(this, arguments) : void 0
1714 },
1715 teardown: function() {
1716 return n.event.remove(this, "._change"), !Y.test(this.nodeName)
1717 }
1718 }), l.focusinBubbles || n.each({
1719 focus: "focusin",
1720 blur: "focusout"
1721 }, function(a, b) {
1722 var c = function(a) {
1723 n.event.simulate(b, a.target, n.event.fix(a), !0)
1724 };
1725 n.event.special[b] = {
1726 setup: function() {
1727 var d = this.ownerDocument || this,
1728 e = n._data(d, b);
1729 e || d.addEventListener(a, c, !0), n._data(d, b, (e || 0) + 1)
1730 },
1731 teardown: function() {
1732 var d = this.ownerDocument || this,
1733 e = n._data(d, b) - 1;
1734 e ? n._data(d, b, e) : (d.removeEventListener(a, c, !0), n._removeData(d, b))
1735 }
1736 }
1737 }), n.fn.extend({
1738 on: function(a, b, c, d, e) {
1739 var f, g;
1740 if ("object" == typeof a) {
1741 "string" != typeof b && (c = c || b, b = void 0);
1742 for (f in a) this.on(f, b, c, a[f], e);
1743 return this
1744 }
1745 if (null == c && null == d ? (d = b, c = b = void 0) : null == d && ("string" == typeof b ? (d = c, c = void 0) : (d = c, c = b, b = void 0)), d === !1) d = cb;
1746 else if (!d) return this;
1747 return 1 === e && (g = d, d = function(a) {
1748 return n().off(a), g.apply(this, arguments)
1749 }, d.guid = g.guid || (g.guid = n.guid++)), this.each(function() {
1750 n.event.add(this, a, d, c, b)
1751 })
1752 },
1753 one: function(a, b, c, d) {
1754 return this.on(a, b, c, d, 1)
1755 },
1756 off: function(a, b, c) {
1757 var d, e;
1758 if (a && a.preventDefault && a.handleObj) return d = a.handleObj, n(a.delegateTarget).off(d.namespace ? d.origType + "." + d.namespace : d.origType, d.selector, d.handler), this;
1759 if ("object" == typeof a) {
1760 for (e in a) this.off(e, b, a[e]);
1761 return this
1762 }
1763 return (b === !1 || "function" == typeof b) && (c = b, b = void 0), c === !1 && (c = cb), this.each(function() {
1764 n.event.remove(this, a, c, b)
1765 })
1766 },
1767 trigger: function(a, b) {
1768 return this.each(function() {
1769 n.event.trigger(a, b, this)
1770 })
1771 },
1772 triggerHandler: function(a, b) {
1773 var c = this[0];
1774 return c ? n.event.trigger(a, b, c, !0) : void 0
1775 }
1776 });
1777
1778 function eb(a) {
1779 var b = fb.split("|"),
1780 c = a.createDocumentFragment();
1781 if (c.createElement)
1782 while (b.length) c.createElement(b.pop());
1783 return c
1784 }
1785 var fb = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
1786 gb = / jQuery\d+="(?:null|\d+)"/g,
1787 hb = new RegExp("<(?:" + fb + ")[\\s/>]", "i"),
1788 ib = /^\s+/,
1789 jb = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
1790 kb = /<([\w:]+)/,
1791 lb = /<tbody/i,
1792 mb = /<|&#?\w+;/,
1793 nb = /<(?:script|style|link)/i,
1794 ob = /checked\s*(?:[^=]|=\s*.checked.)/i,
1795 pb = /^$|\/(?:java|ecma)script/i,
1796 qb = /^true\/(.*)/,
1797 rb = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
1798 sb = {
1799 option: [1, "<select multiple='multiple'>", "</select>"],
1800 legend: [1, "<fieldset>", "</fieldset>"],
1801 area: [1, "<map>", "</map>"],
1802 param: [1, "<object>", "</object>"],
1803 thead: [1, "<table>", "</table>"],
1804 tr: [2, "<table><tbody>", "</tbody></table>"],
1805 col: [2, "<table><tbody></tbody><colgroup>", "</colgroup></table>"],
1806 td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
1807 _default: l.htmlSerialize ? [0, "", ""] : [1, "X<div>", "</div>"]
1808 },
1809 tb = eb(z),
1810 ub = tb.appendChild(z.createElement("div"));
1811 sb.optgroup = sb.option, sb.tbody = sb.tfoot = sb.colgroup = sb.caption = sb.thead, sb.th = sb.td;
1812
1813 function vb(a, b) {
1814 var c, d, e = 0,
1815 f = typeof a.getElementsByTagName !== L ? a.getElementsByTagName(b || "*") : typeof a.querySelectorAll !== L ? a.querySelectorAll(b || "*") : void 0;
1816 if (!f)
1817 for (f = [], c = a.childNodes || a; null != (d = c[e]); e++)!b || n.nodeName(d, b) ? f.push(d) : n.merge(f, vb(d, b));
1818 return void 0 === b || b && n.nodeName(a, b) ? n.merge([a], f) : f
1819 }
1820
1821 function wb(a) {
1822 X.test(a.type) && (a.defaultChecked = a.checked)
1823 }
1824
1825 function xb(a, b) {
1826 return n.nodeName(a, "table") && n.nodeName(11 !== b.nodeType ? b : b.firstChild, "tr") ? a.getElementsByTagName("tbody")[0] || a.appendChild(a.ownerDocument.createElement("tbody")) : a
1827 }
1828
1829 function yb(a) {
1830 return a.type = (null !== n.find.attr(a, "type")) + "/" + a.type, a
1831 }
1832
1833 function zb(a) {
1834 var b = qb.exec(a.type);
1835 return b ? a.type = b[1] : a.removeAttribute("type"), a
1836 }
1837
1838 function Ab(a, b) {
1839 for (var c, d = 0; null != (c = a[d]); d++) n._data(c, "globalEval", !b || n._data(b[d], "globalEval"))
1840 }
1841
1842 function Bb(a, b) {
1843 if (1 === b.nodeType && n.hasData(a)) {
1844 var c, d, e, f = n._data(a),
1845 g = n._data(b, f),
1846 h = f.events;
1847 if (h) {
1848 delete g.handle, g.events = {};
1849 for (c in h)
1850 for (d = 0, e = h[c].length; e > d; d++) n.event.add(b, c, h[c][d])
1851 }
1852 g.data && (g.data = n.extend({}, g.data))
1853 }
1854 }
1855
1856 function Cb(a, b) {
1857 var c, d, e;
1858 if (1 === b.nodeType) {
1859 if (c = b.nodeName.toLowerCase(), !l.noCloneEvent && b[n.expando]) {
1860 e = n._data(b);
1861 for (d in e.events) n.removeEvent(b, d, e.handle);
1862 b.removeAttribute(n.expando)
1863 }
1864 "script" === c && b.text !== a.text ? (yb(b).text = a.text, zb(b)) : "object" === c ? (b.parentNode && (b.outerHTML = a.outerHTML), l.html5Clone && a.innerHTML && !n.trim(b.innerHTML) && (b.innerHTML = a.innerHTML)) : "input" === c && X.test(a.type) ? (b.defaultChecked = b.checked = a.checked, b.value !== a.value && (b.value = a.value)) : "option" === c ? b.defaultSelected = b.selected = a.defaultSelected : ("input" === c || "textarea" === c) && (b.defaultValue = a.defaultValue)
1865 }
1866 }
1867 n.extend({
1868 clone: function(a, b, c) {
1869 var d, e, f, g, h, i = n.contains(a.ownerDocument, a);
1870 if (l.html5Clone || n.isXMLDoc(a) || !hb.test("<" + a.nodeName + ">") ? f = a.cloneNode(!0) : (ub.innerHTML = a.outerHTML, ub.removeChild(f = ub.firstChild)), !(l.noCloneEvent && l.noCloneChecked || 1 !== a.nodeType && 11 !== a.nodeType || n.isXMLDoc(a)))
1871 for (d = vb(f), h = vb(a), g = 0; null != (e = h[g]); ++g) d[g] && Cb(e, d[g]);
1872 if (b)
1873 if (c)
1874 for (h = h || vb(a), d = d || vb(f), g = 0; null != (e = h[g]); g++) Bb(e, d[g]);
1875 else Bb(a, f);
1876 return d = vb(f, "script"), d.length > 0 && Ab(d, !i && vb(a, "script")), d = h = e = null, f
1877 },
1878 buildFragment: function(a, b, c, d) {
1879 for (var e, f, g, h, i, j, k, m = a.length, o = eb(b), p = [], q = 0; m > q; q++)
1880 if (f = a[q], f || 0 === f)
1881 if ("object" === n.type(f)) n.merge(p, f.nodeType ? [f] : f);
1882 else if (mb.test(f)) {
1883 h = h || o.appendChild(b.createElement("div")), i = (kb.exec(f) || ["", ""])[1].toLowerCase(), k = sb[i] || sb._default, h.innerHTML = k[1] + f.replace(jb, "<$1></$2>") + k[2], e = k[0];
1884 while (e--) h = h.lastChild;
1885 if (!l.leadingWhitespace && ib.test(f) && p.push(b.createTextNode(ib.exec(f)[0])), !l.tbody) {
1886 f = "table" !== i || lb.test(f) ? "<table>" !== k[1] || lb.test(f) ? 0 : h : h.firstChild, e = f && f.childNodes.length;
1887 while (e--) n.nodeName(j = f.childNodes[e], "tbody") && !j.childNodes.length && f.removeChild(j)
1888 }
1889 n.merge(p, h.childNodes), h.textContent = "";
1890 while (h.firstChild) h.removeChild(h.firstChild);
1891 h = o.lastChild
1892 } else p.push(b.createTextNode(f));
1893 h && o.removeChild(h), l.appendChecked || n.grep(vb(p, "input"), wb), q = 0;
1894 while (f = p[q++])
1895 if ((!d || -1 === n.inArray(f, d)) && (g = n.contains(f.ownerDocument, f), h = vb(o.appendChild(f), "script"), g && Ab(h), c)) {
1896 e = 0;
1897 while (f = h[e++]) pb.test(f.type || "") && c.push(f)
1898 }
1899 return h = null, o
1900 },
1901 cleanData: function(a, b) {
1902 for (var d, e, f, g, h = 0, i = n.expando, j = n.cache, k = l.deleteExpando, m = n.event.special; null != (d = a[h]); h++)
1903 if ((b || n.acceptData(d)) && (f = d[i], g = f && j[f])) {
1904 if (g.events)
1905 for (e in g.events) m[e] ? n.event.remove(d, e) : n.removeEvent(d, e, g.handle);
1906 j[f] && (delete j[f], k ? delete d[i] : typeof d.removeAttribute !== L ? d.removeAttribute(i) : d[i] = null, c.push(f))
1907 }
1908 }
1909 }), n.fn.extend({
1910 text: function(a) {
1911 return W(this, function(a) {
1912 return void 0 === a ? n.text(this) : this.empty().append((this[0] && this[0].ownerDocument || z).createTextNode(a))
1913 }, null, a, arguments.length)
1914 },
1915 append: function() {
1916 return this.domManip(arguments, function(a) {
1917 if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
1918 var b = xb(this, a);
1919 b.appendChild(a)
1920 }
1921 })
1922 },
1923 prepend: function() {
1924 return this.domManip(arguments, function(a) {
1925 if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
1926 var b = xb(this, a);
1927 b.insertBefore(a, b.firstChild)
1928 }
1929 })
1930 },
1931 before: function() {
1932 return this.domManip(arguments, function(a) {
1933 this.parentNode && this.parentNode.insertBefore(a, this)
1934 })
1935 },
1936 after: function() {
1937 return this.domManip(arguments, function(a) {
1938 this.parentNode && this.parentNode.insertBefore(a, this.nextSibling)
1939 })
1940 },
1941 remove: function(a, b) {
1942 for (var c, d = a ? n.filter(a, this) : this, e = 0; null != (c = d[e]); e++) b || 1 !== c.nodeType || n.cleanData(vb(c)), c.parentNode && (b && n.contains(c.ownerDocument, c) && Ab(vb(c, "script")), c.parentNode.removeChild(c));
1943 return this
1944 },
1945 empty: function() {
1946 for (var a, b = 0; null != (a = this[b]); b++) {
1947 1 === a.nodeType && n.cleanData(vb(a, !1));
1948 while (a.firstChild) a.removeChild(a.firstChild);
1949 a.options && n.nodeName(a, "select") && (a.options.length = 0)
1950 }
1951 return this
1952 },
1953 clone: function(a, b) {
1954 return a = null == a ? !1 : a, b = null == b ? a : b, this.map(function() {
1955 return n.clone(this, a, b)
1956 })
1957 },
1958 html: function(a) {
1959 return W(this, function(a) {
1960 var b = this[0] || {},
1961 c = 0,
1962 d = this.length;
1963 if (void 0 === a) return 1 === b.nodeType ? b.innerHTML.replace(gb, "") : void 0;
1964 if (!("string" != typeof a || nb.test(a) || !l.htmlSerialize && hb.test(a) || !l.leadingWhitespace && ib.test(a) || sb[(kb.exec(a) || ["", ""])[1].toLowerCase()])) {
1965 a = a.replace(jb, "<$1></$2>");
1966 try {
1967 for (; d > c; c++) b = this[c] || {}, 1 === b.nodeType && (n.cleanData(vb(b, !1)), b.innerHTML = a);
1968 b = 0
1969 } catch (e) {}
1970 }
1971 b && this.empty().append(a)
1972 }, null, a, arguments.length)
1973 },
1974 replaceWith: function() {
1975 var a = arguments[0];
1976 return this.domManip(arguments, function(b) {
1977 a = this.parentNode, n.cleanData(vb(this)), a && a.replaceChild(b, this)
1978 }), a && (a.length || a.nodeType) ? this : this.remove()
1979 },
1980 detach: function(a) {
1981 return this.remove(a, !0)
1982 },
1983 domManip: function(a, b) {
1984 a = e.apply([], a);
1985 var c, d, f, g, h, i, j = 0,
1986 k = this.length,
1987 m = this,
1988 o = k - 1,
1989 p = a[0],
1990 q = n.isFunction(p);
1991 if (q || k > 1 && "string" == typeof p && !l.checkClone && ob.test(p)) return this.each(function(c) {
1992 var d = m.eq(c);
1993 q && (a[0] = p.call(this, c, d.html())), d.domManip(a, b)
1994 });
1995 if (k && (i = n.buildFragment(a, this[0].ownerDocument, !1, this), c = i.firstChild, 1 === i.childNodes.length && (i = c), c)) {
1996 for (g = n.map(vb(i, "script"), yb), f = g.length; k > j; j++) d = i, j !== o && (d = n.clone(d, !0, !0), f && n.merge(g, vb(d, "script"))), b.call(this[j], d, j);
1997 if (f)
1998 for (h = g[g.length - 1].ownerDocument, n.map(g, zb), j = 0; f > j; j++) d = g[j], pb.test(d.type || "") && !n._data(d, "globalEval") && n.contains(h, d) && (d.src ? n._evalUrl && n._evalUrl(d.src) : n.globalEval((d.text || d.textContent || d.innerHTML || "").replace(rb, "")));
1999 i = c = null
2000 }
2001 return this
2002 }
2003 }), n.each({
2004 appendTo: "append",
2005 prependTo: "prepend",
2006 insertBefore: "before",
2007 insertAfter: "after",
2008 replaceAll: "replaceWith"
2009 }, function(a, b) {
2010 n.fn[a] = function(a) {
2011 for (var c, d = 0, e = [], g = n(a), h = g.length - 1; h >= d; d++) c = d === h ? this : this.clone(!0), n(g[d])[b](c), f.apply(e, c.get());
2012 return this.pushStack(e)
2013 }
2014 });
2015 var Db, Eb = {};
2016
2017 function Fb(b, c) {
2018 var d = n(c.createElement(b)).appendTo(c.body),
2019 e = a.getDefaultComputedStyle ? a.getDefaultComputedStyle(d[0]).display : n.css(d[0], "display");
2020 return d.detach(), e
2021 }
2022
2023 function Gb(a) {
2024 var b = z,
2025 c = Eb[a];
2026 return c || (c = Fb(a, b), "none" !== c && c || (Db = (Db || n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement), b = (Db[0].contentWindow || Db[0].contentDocument).document, b.write(), b.close(), c = Fb(a, b), Db.detach()), Eb[a] = c), c
2027 }! function() {
2028 var a, b, c = z.createElement("div"),
2029 d = "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0";
2030 c.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>", a = c.getElementsByTagName("a")[0], a.style.cssText = "float:left;opacity:.5", l.opacity = /^0.5/.test(a.style.opacity), l.cssFloat = !!a.style.cssFloat, c.style.backgroundClip = "content-box", c.cloneNode(!0).style.backgroundClip = "", l.clearCloneStyle = "content-box" === c.style.backgroundClip, a = c = null, l.shrinkWrapBlocks = function() {
2031 var a, c, e, f;
2032 if (null == b) {
2033 if (a = z.getElementsByTagName("body")[0], !a) return;
2034 f = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px", c = z.createElement("div"), e = z.createElement("div"), a.appendChild(c).appendChild(e), b = !1, typeof e.style.zoom !== L && (e.style.cssText = d + ";width:1px;padding:1px;zoom:1", e.innerHTML = "<div></div>", e.firstChild.style.width = "5px", b = 3 !== e.offsetWidth), a.removeChild(c), a = c = e = null
2035 }
2036 return b
2037 }
2038 }();
2039 var Hb = /^margin/,
2040 Ib = new RegExp("^(" + T + ")(?!px)[a-z%]+$", "i"),
2041 Jb, Kb, Lb = /^(top|right|bottom|left)$/;
2042 a.getComputedStyle ? (Jb = function(a) {
2043 return a.ownerDocument.defaultView.getComputedStyle(a, null)
2044 }, Kb = function(a, b, c) {
2045 var d, e, f, g, h = a.style;
2046 return c = c || Jb(a), g = c ? c.getPropertyValue(b) || c[b] : void 0, c && ("" !== g || n.contains(a.ownerDocument, a) || (g = n.style(a, b)), Ib.test(g) && Hb.test(b) && (d = h.width, e = h.minWidth, f = h.maxWidth, h.minWidth = h.maxWidth = h.width = g, g = c.width, h.width = d, h.minWidth = e, h.maxWidth = f)), void 0 === g ? g : g + ""
2047 }) : z.documentElement.currentStyle && (Jb = function(a) {
2048 return a.currentStyle
2049 }, Kb = function(a, b, c) {
2050 var d, e, f, g, h = a.style;
2051 return c = c || Jb(a), g = c ? c[b] : void 0, null == g && h && h[b] && (g = h[b]), Ib.test(g) && !Lb.test(b) && (d = h.left, e = a.runtimeStyle, f = e && e.left, f && (e.left = a.currentStyle.left), h.left = "fontSize" === b ? "1em" : g, g = h.pixelLeft + "px", h.left = d, f && (e.left = f)), void 0 === g ? g : g + "" || "auto"
2052 });
2053
2054 function Mb(a, b) {
2055 return {
2056 get: function() {
2057 var c = a();
2058 if (null != c) return c ? void delete this.get : (this.get = b).apply(this, arguments)
2059 }
2060 }
2061 }! function() {
2062 var b, c, d, e, f, g, h = z.createElement("div"),
2063 i = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px",
2064 j = "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0";
2065 h.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>", b = h.getElementsByTagName("a")[0], b.style.cssText = "float:left;opacity:.5", l.opacity = /^0.5/.test(b.style.opacity), l.cssFloat = !!b.style.cssFloat, h.style.backgroundClip = "content-box", h.cloneNode(!0).style.backgroundClip = "", l.clearCloneStyle = "content-box" === h.style.backgroundClip, b = h = null, n.extend(l, {
2066 reliableHiddenOffsets: function() {
2067 if (null != c) return c;
2068 var a, b, d, e = z.createElement("div"),
2069 f = z.getElementsByTagName("body")[0];
2070 if (f) return e.setAttribute("className", "t"), e.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>", a = z.createElement("div"), a.style.cssText = i, f.appendChild(a).appendChild(e), e.innerHTML = "<table><tr><td></td><td>t</td></tr></table>", b = e.getElementsByTagName("td"), b[0].style.cssText = "padding:0;margin:0;border:0;display:none", d = 0 === b[0].offsetHeight, b[0].style.display = "", b[1].style.display = "none", c = d && 0 === b[0].offsetHeight, f.removeChild(a), e = f = null, c
2071 },
2072 boxSizing: function() {
2073 return null == d && k(), d
2074 },
2075 boxSizingReliable: function() {
2076 return null == e && k(), e
2077 },
2078 pixelPosition: function() {
2079 return null == f && k(), f
2080 },
2081 reliableMarginRight: function() {
2082 var b, c, d, e;
2083 if (null == g && a.getComputedStyle) {
2084 if (b = z.getElementsByTagName("body")[0], !b) return;
2085 c = z.createElement("div"), d = z.createElement("div"), c.style.cssText = i, b.appendChild(c).appendChild(d), e = d.appendChild(z.createElement("div")), e.style.cssText = d.style.cssText = j, e.style.marginRight = e.style.width = "0", d.style.width = "1px", g = !parseFloat((a.getComputedStyle(e, null) || {}).marginRight), b.removeChild(c)
2086 }
2087 return g
2088 }
2089 });
2090
2091 function k() {
2092 var b, c, h = z.getElementsByTagName("body")[0];
2093 h && (b = z.createElement("div"), c = z.createElement("div"), b.style.cssText = i, h.appendChild(b).appendChild(c), c.style.cssText = "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;display:block;padding:1px;border:1px;width:4px;margin-top:1%;top:1%", n.swap(h, null != h.style.zoom ? {
2094 zoom: 1
2095 } : {}, function() {
2096 d = 4 === c.offsetWidth
2097 }), e = !0, f = !1, g = !0, a.getComputedStyle && (f = "1%" !== (a.getComputedStyle(c, null) || {}).top, e = "4px" === (a.getComputedStyle(c, null) || {
2098 width: "4px"
2099 }).width), h.removeChild(b), c = h = null)
2100 }
2101 }(), n.swap = function(a, b, c, d) {
2102 var e, f, g = {};
2103 for (f in b) g[f] = a.style[f], a.style[f] = b[f];
2104 e = c.apply(a, d || []);
2105 for (f in b) a.style[f] = g[f];
2106 return e
2107 };
2108 var Nb = /alpha\([^)]*\)/i,
2109 Ob = /opacity\s*=\s*([^)]*)/,
2110 Pb = /^(none|table(?!-c[ea]).+)/,
2111 Qb = new RegExp("^(" + T + ")(.*)$", "i"),
2112 Rb = new RegExp("^([+-])=(" + T + ")", "i"),
2113 Sb = {
2114 position: "absolute",
2115 visibility: "hidden",
2116 display: "block"
2117 },
2118 Tb = {
2119 letterSpacing: 0,
2120 fontWeight: 400
2121 },
2122 Ub = ["Webkit", "O", "Moz", "ms"];
2123
2124 function Vb(a, b) {
2125 if (b in a) return b;
2126 var c = b.charAt(0).toUpperCase() + b.slice(1),
2127 d = b,
2128 e = Ub.length;
2129 while (e--)
2130 if (b = Ub[e] + c, b in a) return b;
2131 return d
2132 }
2133
2134 function Wb(a, b) {
2135 for (var c, d, e, f = [], g = 0, h = a.length; h > g; g++) d = a[g], d.style && (f[g] = n._data(d, "olddisplay"), c = d.style.display, b ? (f[g] || "none" !== c || (d.style.display = ""), "" === d.style.display && V(d) && (f[g] = n._data(d, "olddisplay", Gb(d.nodeName)))) : f[g] || (e = V(d), (c && "none" !== c || !e) && n._data(d, "olddisplay", e ? c : n.css(d, "display"))));
2136 for (g = 0; h > g; g++) d = a[g], d.style && (b && "none" !== d.style.display && "" !== d.style.display || (d.style.display = b ? f[g] || "" : "none"));
2137 return a
2138 }
2139
2140 function Xb(a, b, c) {
2141 var d = Qb.exec(b);
2142 return d ? Math.max(0, d[1] - (c || 0)) + (d[2] || "px") : b
2143 }
2144
2145 function Yb(a, b, c, d, e) {
2146 for (var f = c === (d ? "border" : "content") ? 4 : "width" === b ? 1 : 0, g = 0; 4 > f; f += 2) "margin" === c && (g += n.css(a, c + U[f], !0, e)), d ? ("content" === c && (g -= n.css(a, "padding" + U[f], !0, e)), "margin" !== c && (g -= n.css(a, "border" + U[f] + "Width", !0, e))) : (g += n.css(a, "padding" + U[f], !0, e), "padding" !== c && (g += n.css(a, "border" + U[f] + "Width", !0, e)));
2147 return g
2148 }
2149
2150 function Zb(a, b, c) {
2151 var d = !0,
2152 e = "width" === b ? a.offsetWidth : a.offsetHeight,
2153 f = Jb(a),
2154 g = l.boxSizing() && "border-box" === n.css(a, "boxSizing", !1, f);
2155 if (0 >= e || null == e) {
2156 if (e = Kb(a, b, f), (0 > e || null == e) && (e = a.style[b]), Ib.test(e)) return e;
2157 d = g && (l.boxSizingReliable() || e === a.style[b]), e = parseFloat(e) || 0
2158 }
2159 return e + Yb(a, b, c || (g ? "border" : "content"), d, f) + "px"
2160 }
2161 n.extend({
2162 cssHooks: {
2163 opacity: {
2164 get: function(a, b) {
2165 if (b) {
2166 var c = Kb(a, "opacity");
2167 return "" === c ? "1" : c
2168 }
2169 }
2170 }
2171 },
2172 cssNumber: {
2173 columnCount: !0,
2174 fillOpacity: !0,
2175 fontWeight: !0,
2176 lineHeight: !0,
2177 opacity: !0,
2178 order: !0,
2179 orphans: !0,
2180 widows: !0,
2181 zIndex: !0,
2182 zoom: !0
2183 },
2184 cssProps: {
2185 "float": l.cssFloat ? "cssFloat" : "styleFloat"
2186 },
2187 style: function(a, b, c, d) {
2188 if (a && 3 !== a.nodeType && 8 !== a.nodeType && a.style) {
2189 var e, f, g, h = n.camelCase(b),
2190 i = a.style;
2191 if (b = n.cssProps[h] || (n.cssProps[h] = Vb(i, h)), g = n.cssHooks[b] || n.cssHooks[h], void 0 === c) return g && "get" in g && void 0 !== (e = g.get(a, !1, d)) ? e : i[b];
2192 if (f = typeof c, "string" === f && (e = Rb.exec(c)) && (c = (e[1] + 1) * e[2] + parseFloat(n.css(a, b)), f = "number"), null != c && c === c && ("number" !== f || n.cssNumber[h] || (c += "px"), l.clearCloneStyle || "" !== c || 0 !== b.indexOf("background") || (i[b] = "inherit"), !(g && "set" in g && void 0 === (c = g.set(a, c, d))))) try {
2193 i[b] = "", i[b] = c
2194 } catch (j) {}
2195 }
2196 },
2197 css: function(a, b, c, d) {
2198 var e, f, g, h = n.camelCase(b);
2199 return b = n.cssProps[h] || (n.cssProps[h] = Vb(a.style, h)), g = n.cssHooks[b] || n.cssHooks[h], g && "get" in g && (f = g.get(a, !0, c)), void 0 === f && (f = Kb(a, b, d)), "normal" === f && b in Tb && (f = Tb[b]), "" === c || c ? (e = parseFloat(f), c === !0 || n.isNumeric(e) ? e || 0 : f) : f
2200 }
2201 }), n.each(["height", "width"], function(a, b) {
2202 n.cssHooks[b] = {
2203 get: function(a, c, d) {
2204 return c ? 0 === a.offsetWidth && Pb.test(n.css(a, "display")) ? n.swap(a, Sb, function() {
2205 return Zb(a, b, d)
2206 }) : Zb(a, b, d) : void 0
2207 },
2208 set: function(a, c, d) {
2209 var e = d && Jb(a);
2210 return Xb(a, c, d ? Yb(a, b, d, l.boxSizing() && "border-box" === n.css(a, "boxSizing", !1, e), e) : 0)
2211 }
2212 }
2213 }), l.opacity || (n.cssHooks.opacity = {
2214 get: function(a, b) {
2215 return Ob.test((b && a.currentStyle ? a.currentStyle.filter : a.style.filter) || "") ? .01 * parseFloat(RegExp.$1) + "" : b ? "1" : ""
2216 },
2217 set: function(a, b) {
2218 var c = a.style,
2219 d = a.currentStyle,
2220 e = n.isNumeric(b) ? "alpha(opacity=" + 100 * b + ")" : "",
2221 f = d && d.filter || c.filter || "";
2222 c.zoom = 1, (b >= 1 || "" === b) && "" === n.trim(f.replace(Nb, "")) && c.removeAttribute && (c.removeAttribute("filter"), "" === b || d && !d.filter) || (c.filter = Nb.test(f) ? f.replace(Nb, e) : f + " " + e)
2223 }
2224 }), n.cssHooks.marginRight = Mb(l.reliableMarginRight, function(a, b) {
2225 return b ? n.swap(a, {
2226 display: "inline-block"
2227 }, Kb, [a, "marginRight"]) : void 0
2228 }), n.each({
2229 margin: "",
2230 padding: "",
2231 border: "Width"
2232 }, function(a, b) {
2233 n.cssHooks[a + b] = {
2234 expand: function(c) {
2235 for (var d = 0, e = {}, f = "string" == typeof c ? c.split(" ") : [c]; 4 > d; d++) e[a + U[d] + b] = f[d] || f[d - 2] || f[0];
2236 return e
2237 }
2238 }, Hb.test(a) || (n.cssHooks[a + b].set = Xb)
2239 }), n.fn.extend({
2240 css: function(a, b) {
2241 return W(this, function(a, b, c) {
2242 var d, e, f = {},
2243 g = 0;
2244 if (n.isArray(b)) {
2245 for (d = Jb(a), e = b.length; e > g; g++) f[b[g]] = n.css(a, b[g], !1, d);
2246 return f
2247 }
2248 return void 0 !== c ? n.style(a, b, c) : n.css(a, b)
2249 }, a, b, arguments.length > 1)
2250 },
2251 show: function() {
2252 return Wb(this, !0)
2253 },
2254 hide: function() {
2255 return Wb(this)
2256 },
2257 toggle: function(a) {
2258 return "boolean" == typeof a ? a ? this.show() : this.hide() : this.each(function() {
2259 V(this) ? n(this).show() : n(this).hide()
2260 })
2261 }
2262 });
2263
2264 function $b(a, b, c, d, e) {
2265 return new $b.prototype.init(a, b, c, d, e)
2266 }
2267 n.Tween = $b, $b.prototype = {
2268 constructor: $b,
2269 init: function(a, b, c, d, e, f) {
2270 this.elem = a, this.prop = c, this.easing = e || "swing", this.options = b, this.start = this.now = this.cur(), this.end = d, this.unit = f || (n.cssNumber[c] ? "" : "px")
2271 },
2272 cur: function() {
2273 var a = $b.propHooks[this.prop];
2274 return a && a.get ? a.get(this) : $b.propHooks._default.get(this)
2275 },
2276 run: function(a) {
2277 var b, c = $b.propHooks[this.prop];
2278 return this.pos = b = this.options.duration ? n.easing[this.easing](a, this.options.duration * a, 0, 1, this.options.duration) : a, this.now = (this.end - this.start) * b + this.start, this.options.step && this.options.step.call(this.elem, this.now, this), c && c.set ? c.set(this) : $b.propHooks._default.set(this), this
2279 }
2280 }, $b.prototype.init.prototype = $b.prototype, $b.propHooks = {
2281 _default: {
2282 get: function(a) {
2283 var b;
2284 return null == a.elem[a.prop] || a.elem.style && null != a.elem.style[a.prop] ? (b = n.css(a.elem, a.prop, ""), b && "auto" !== b ? b : 0) : a.elem[a.prop]
2285 },
2286 set: function(a) {
2287 n.fx.step[a.prop] ? n.fx.step[a.prop](a) : a.elem.style && (null != a.elem.style[n.cssProps[a.prop]] || n.cssHooks[a.prop]) ? n.style(a.elem, a.prop, a.now + a.unit) : a.elem[a.prop] = a.now
2288 }
2289 }
2290 }, $b.propHooks.scrollTop = $b.propHooks.scrollLeft = {
2291 set: function(a) {
2292 a.elem.nodeType && a.elem.parentNode && (a.elem[a.prop] = a.now)
2293 }
2294 }, n.easing = {
2295 linear: function(a) {
2296 return a
2297 },
2298 swing: function(a) {
2299 return .5 - Math.cos(a * Math.PI) / 2
2300 }
2301 }, n.fx = $b.prototype.init, n.fx.step = {};
2302 var _b, ac, bc = /^(?:toggle|show|hide)$/,
2303 cc = new RegExp("^(?:([+-])=|)(" + T + ")([a-z%]*)$", "i"),
2304 dc = /queueHooks$/,
2305 ec = [jc],
2306 fc = {
2307 "*": [
2308 function(a, b) {
2309 var c = this.createTween(a, b),
2310 d = c.cur(),
2311 e = cc.exec(b),
2312 f = e && e[3] || (n.cssNumber[a] ? "" : "px"),
2313 g = (n.cssNumber[a] || "px" !== f && +d) && cc.exec(n.css(c.elem, a)),
2314 h = 1,
2315 i = 20;
2316 if (g && g[3] !== f) {
2317 f = f || g[3], e = e || [], g = +d || 1;
2318 do h = h || ".5", g /= h, n.style(c.elem, a, g + f); while (h !== (h = c.cur() / d) && 1 !== h && --i)
2319 }
2320 return e && (g = c.start = +g || +d || 0, c.unit = f, c.end = e[1] ? g + (e[1] + 1) * e[2] : +e[2]), c
2321 }
2322 ]
2323 };
2324
2325 function gc() {
2326 return setTimeout(function() {
2327 _b = void 0
2328 }), _b = n.now()
2329 }
2330
2331 function hc(a, b) {
2332 var c, d = {
2333 height: a
2334 },
2335 e = 0;
2336 for (b = b ? 1 : 0; 4 > e; e += 2 - b) c = U[e], d["margin" + c] = d["padding" + c] = a;
2337 return b && (d.opacity = d.width = a), d
2338 }
2339
2340 function ic(a, b, c) {
2341 for (var d, e = (fc[b] || []).concat(fc["*"]), f = 0, g = e.length; g > f; f++)
2342 if (d = e[f].call(c, b, a)) return d
2343 }
2344
2345 function jc(a, b, c) {
2346 var d, e, f, g, h, i, j, k, m = this,
2347 o = {},
2348 p = a.style,
2349 q = a.nodeType && V(a),
2350 r = n._data(a, "fxshow");
2351 c.queue || (h = n._queueHooks(a, "fx"), null == h.unqueued && (h.unqueued = 0, i = h.empty.fire, h.empty.fire = function() {
2352 h.unqueued || i()
2353 }), h.unqueued++, m.always(function() {
2354 m.always(function() {
2355 h.unqueued--, n.queue(a, "fx").length || h.empty.fire()
2356 })
2357 })), 1 === a.nodeType && ("height" in b || "width" in b) && (c.overflow = [p.overflow, p.overflowX, p.overflowY], j = n.css(a, "display"), k = Gb(a.nodeName), "none" === j && (j = k), "inline" === j && "none" === n.css(a, "float") && (l.inlineBlockNeedsLayout && "inline" !== k ? p.zoom = 1 : p.display = "inline-block")), c.overflow && (p.overflow = "hidden", l.shrinkWrapBlocks() || m.always(function() {
2358 p.overflow = c.overflow[0], p.overflowX = c.overflow[1], p.overflowY = c.overflow[2]
2359 }));
2360 for (d in b)
2361 if (e = b[d], bc.exec(e)) {
2362 if (delete b[d], f = f || "toggle" === e, e === (q ? "hide" : "show")) {
2363 if ("show" !== e || !r || void 0 === r[d]) continue;
2364 q = !0
2365 }
2366 o[d] = r && r[d] || n.style(a, d)
2367 }
2368 if (!n.isEmptyObject(o)) {
2369 r ? "hidden" in r && (q = r.hidden) : r = n._data(a, "fxshow", {}), f && (r.hidden = !q), q ? n(a).show() : m.done(function() {
2370 n(a).hide()
2371 }), m.done(function() {
2372 var b;
2373 n._removeData(a, "fxshow");
2374 for (b in o) n.style(a, b, o[b])
2375 });
2376 for (d in o) g = ic(q ? r[d] : 0, d, m), d in r || (r[d] = g.start, q && (g.end = g.start, g.start = "width" === d || "height" === d ? 1 : 0))
2377 }
2378 }
2379
2380 function kc(a, b) {
2381 var c, d, e, f, g;
2382 for (c in a)
2383 if (d = n.camelCase(c), e = b[d], f = a[c], n.isArray(f) && (e = f[1], f = a[c] = f[0]), c !== d && (a[d] = f, delete a[c]), g = n.cssHooks[d], g && "expand" in g) {
2384 f = g.expand(f), delete a[d];
2385 for (c in f) c in a || (a[c] = f[c], b[c] = e)
2386 } else b[d] = e
2387 }
2388
2389 function lc(a, b, c) {
2390 var d, e, f = 0,
2391 g = ec.length,
2392 h = n.Deferred().always(function() {
2393 delete i.elem
2394 }),
2395 i = function() {
2396 if (e) return !1;
2397 for (var b = _b || gc(), c = Math.max(0, j.startTime + j.duration - b), d = c / j.duration || 0, f = 1 - d, g = 0, i = j.tweens.length; i > g; g++) j.tweens[g].run(f);
2398 return h.notifyWith(a, [j, f, c]), 1 > f && i ? c : (h.resolveWith(a, [j]), !1)
2399 },
2400 j = h.promise({
2401 elem: a,
2402 props: n.extend({}, b),
2403 opts: n.extend(!0, {
2404 specialEasing: {}
2405 }, c),
2406 originalProperties: b,
2407 originalOptions: c,
2408 startTime: _b || gc(),
2409 duration: c.duration,
2410 tweens: [],
2411 createTween: function(b, c) {
2412 var d = n.Tween(a, j.opts, b, c, j.opts.specialEasing[b] || j.opts.easing);
2413 return j.tweens.push(d), d
2414 },
2415 stop: function(b) {
2416 var c = 0,
2417 d = b ? j.tweens.length : 0;
2418 if (e) return this;
2419 for (e = !0; d > c; c++) j.tweens[c].run(1);
2420 return b ? h.resolveWith(a, [j, b]) : h.rejectWith(a, [j, b]), this
2421 }
2422 }),
2423 k = j.props;
2424 for (kc(k, j.opts.specialEasing); g > f; f++)
2425 if (d = ec[f].call(j, a, k, j.opts)) return d;
2426 return n.map(k, ic, j), n.isFunction(j.opts.start) && j.opts.start.call(a, j), n.fx.timer(n.extend(i, {
2427 elem: a,
2428 anim: j,
2429 queue: j.opts.queue
2430 })), j.progress(j.opts.progress).done(j.opts.done, j.opts.complete).fail(j.opts.fail).always(j.opts.always)
2431 }
2432 n.Animation = n.extend(lc, {
2433 tweener: function(a, b) {
2434 n.isFunction(a) ? (b = a, a = ["*"]) : a = a.split(" ");
2435 for (var c, d = 0, e = a.length; e > d; d++) c = a[d], fc[c] = fc[c] || [], fc[c].unshift(b)
2436 },
2437 prefilter: function(a, b) {
2438 b ? ec.unshift(a) : ec.push(a)
2439 }
2440 }), n.speed = function(a, b, c) {
2441 var d = a && "object" == typeof a ? n.extend({}, a) : {
2442 complete: c || !c && b || n.isFunction(a) && a,
2443 duration: a,
2444 easing: c && b || b && !n.isFunction(b) && b
2445 };
2446 return d.duration = n.fx.off ? 0 : "number" == typeof d.duration ? d.duration : d.duration in n.fx.speeds ? n.fx.speeds[d.duration] : n.fx.speeds._default, (null == d.queue || d.queue === !0) && (d.queue = "fx"), d.old = d.complete, d.complete = function() {
2447 n.isFunction(d.old) && d.old.call(this), d.queue && n.dequeue(this, d.queue)
2448 }, d
2449 }, n.fn.extend({
2450 fadeTo: function(a, b, c, d) {
2451 return this.filter(V).css("opacity", 0).show().end().animate({
2452 opacity: b
2453 }, a, c, d)
2454 },
2455 animate: function(a, b, c, d) {
2456 var e = n.isEmptyObject(a),
2457 f = n.speed(b, c, d),
2458 g = function() {
2459 var b = lc(this, n.extend({}, a), f);
2460 (e || n._data(this, "finish")) && b.stop(!0)
2461 };
2462 return g.finish = g, e || f.queue === !1 ? this.each(g) : this.queue(f.queue, g)
2463 },
2464 stop: function(a, b, c) {
2465 var d = function(a) {
2466 var b = a.stop;
2467 delete a.stop, b(c)
2468 };
2469 return "string" != typeof a && (c = b, b = a, a = void 0), b && a !== !1 && this.queue(a || "fx", []), this.each(function() {
2470 var b = !0,
2471 e = null != a && a + "queueHooks",
2472 f = n.timers,
2473 g = n._data(this);
2474 if (e) g[e] && g[e].stop && d(g[e]);
2475 else
2476 for (e in g) g[e] && g[e].stop && dc.test(e) && d(g[e]);
2477 for (e = f.length; e--;) f[e].elem !== this || null != a && f[e].queue !== a || (f[e].anim.stop(c), b = !1, f.splice(e, 1));
2478 (b || !c) && n.dequeue(this, a)
2479 })
2480 },
2481 finish: function(a) {
2482 return a !== !1 && (a = a || "fx"), this.each(function() {
2483 var b, c = n._data(this),
2484 d = c[a + "queue"],
2485 e = c[a + "queueHooks"],
2486 f = n.timers,
2487 g = d ? d.length : 0;
2488 for (c.finish = !0, n.queue(this, a, []), e && e.stop && e.stop.call(this, !0), b = f.length; b--;) f[b].elem === this && f[b].queue === a && (f[b].anim.stop(!0), f.splice(b, 1));
2489 for (b = 0; g > b; b++) d[b] && d[b].finish && d[b].finish.call(this);
2490 delete c.finish
2491 })
2492 }
2493 }), n.each(["toggle", "show", "hide"], function(a, b) {
2494 var c = n.fn[b];
2495 n.fn[b] = function(a, d, e) {
2496 return null == a || "boolean" == typeof a ? c.apply(this, arguments) : this.animate(hc(b, !0), a, d, e)
2497 }
2498 }), n.each({
2499 slideDown: hc("show"),
2500 slideUp: hc("hide"),
2501 slideToggle: hc("toggle"),
2502 fadeIn: {
2503 opacity: "show"
2504 },
2505 fadeOut: {
2506 opacity: "hide"
2507 },
2508 fadeToggle: {
2509 opacity: "toggle"
2510 }
2511 }, function(a, b) {
2512 n.fn[a] = function(a, c, d) {
2513 return this.animate(b, a, c, d)
2514 }
2515 }), n.timers = [], n.fx.tick = function() {
2516 var a, b = n.timers,
2517 c = 0;
2518 for (_b = n.now(); c < b.length; c++) a = b[c], a() || b[c] !== a || b.splice(c--, 1);
2519 b.length || n.fx.stop(), _b = void 0
2520 }, n.fx.timer = function(a) {
2521 n.timers.push(a), a() ? n.fx.start() : n.timers.pop()
2522 }, n.fx.interval = 13, n.fx.start = function() {
2523 ac || (ac = setInterval(n.fx.tick, n.fx.interval))
2524 }, n.fx.stop = function() {
2525 clearInterval(ac), ac = null
2526 }, n.fx.speeds = {
2527 slow: 600,
2528 fast: 200,
2529 _default: 400
2530 }, n.fn.delay = function(a, b) {
2531 return a = n.fx ? n.fx.speeds[a] || a : a, b = b || "fx", this.queue(b, function(b, c) {
2532 var d = setTimeout(b, a);
2533 c.stop = function() {
2534 clearTimeout(d)
2535 }
2536 })
2537 },
2538 function() {
2539 var a, b, c, d, e = z.createElement("div");
2540 e.setAttribute("className", "t"), e.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>", a = e.getElementsByTagName("a")[0], c = z.createElement("select"), d = c.appendChild(z.createElement("option")), b = e.getElementsByTagName("input")[0], a.style.cssText = "top:1px", l.getSetAttribute = "t" !== e.className, l.style = /top/.test(a.getAttribute("style")), l.hrefNormalized = "/a" === a.getAttribute("href"), l.checkOn = !!b.value, l.optSelected = d.selected, l.enctype = !!z.createElement("form").enctype, c.disabled = !0, l.optDisabled = !d.disabled, b = z.createElement("input"), b.setAttribute("value", ""), l.input = "" === b.getAttribute("value"), b.value = "t", b.setAttribute("type", "radio"), l.radioValue = "t" === b.value, a = b = c = d = e = null
2541 }();
2542 var mc = /\r/g;
2543 n.fn.extend({
2544 val: function(a) {
2545 var b, c, d, e = this[0]; {
2546 if (arguments.length) return d = n.isFunction(a), this.each(function(c) {
2547 var e;
2548 1 === this.nodeType && (e = d ? a.call(this, c, n(this).val()) : a, null == e ? e = "" : "number" == typeof e ? e += "" : n.isArray(e) && (e = n.map(e, function(a) {
2549 return null == a ? "" : a + ""
2550 })), b = n.valHooks[this.type] || n.valHooks[this.nodeName.toLowerCase()], b && "set" in b && void 0 !== b.set(this, e, "value") || (this.value = e))
2551 });
2552 if (e) return b = n.valHooks[e.type] || n.valHooks[e.nodeName.toLowerCase()], b && "get" in b && void 0 !== (c = b.get(e, "value")) ? c : (c = e.value, "string" == typeof c ? c.replace(mc, "") : null == c ? "" : c)
2553 }
2554 }
2555 }), n.extend({
2556 valHooks: {
2557 option: {
2558 get: function(a) {
2559 var b = n.find.attr(a, "value");
2560 return null != b ? b : n.text(a)
2561 }
2562 },
2563 select: {
2564 get: function(a) {
2565 for (var b, c, d = a.options, e = a.selectedIndex, f = "select-one" === a.type || 0 > e, g = f ? null : [], h = f ? e + 1 : d.length, i = 0 > e ? h : f ? e : 0; h > i; i++)
2566 if (c = d[i], !(!c.selected && i !== e || (l.optDisabled ? c.disabled : null !== c.getAttribute("disabled")) || c.parentNode.disabled && n.nodeName(c.parentNode, "optgroup"))) {
2567 if (b = n(c).val(), f) return b;
2568 g.push(b)
2569 }
2570 return g
2571 },
2572 set: function(a, b) {
2573 var c, d, e = a.options,
2574 f = n.makeArray(b),
2575 g = e.length;
2576 while (g--)
2577 if (d = e[g], n.inArray(n.valHooks.option.get(d), f) >= 0) try {
2578 d.selected = c = !0
2579 } catch (h) {
2580 d.scrollHeight
2581 } else d.selected = !1;
2582 return c || (a.selectedIndex = -1), e
2583 }
2584 }
2585 }
2586 }), n.each(["radio", "checkbox"], function() {
2587 n.valHooks[this] = {
2588 set: function(a, b) {
2589 return n.isArray(b) ? a.checked = n.inArray(n(a).val(), b) >= 0 : void 0
2590 }
2591 }, l.checkOn || (n.valHooks[this].get = function(a) {
2592 return null === a.getAttribute("value") ? "on" : a.value
2593 })
2594 });
2595 var nc, oc, pc = n.expr.attrHandle,
2596 qc = /^(?:checked|selected)$/i,
2597 rc = l.getSetAttribute,
2598 sc = l.input;
2599 n.fn.extend({
2600 attr: function(a, b) {
2601 return W(this, n.attr, a, b, arguments.length > 1)
2602 },
2603 removeAttr: function(a) {
2604 return this.each(function() {
2605 n.removeAttr(this, a)
2606 })
2607 }
2608 }), n.extend({
2609 attr: function(a, b, c) {
2610 var d, e, f = a.nodeType;
2611 if (a && 3 !== f && 8 !== f && 2 !== f) return typeof a.getAttribute === L ? n.prop(a, b, c) : (1 === f && n.isXMLDoc(a) || (b = b.toLowerCase(), d = n.attrHooks[b] || (n.expr.match.bool.test(b) ? oc : nc)), void 0 === c ? d && "get" in d && null !== (e = d.get(a, b)) ? e : (e = n.find.attr(a, b), null == e ? void 0 : e) : null !== c ? d && "set" in d && void 0 !== (e = d.set(a, c, b)) ? e : (a.setAttribute(b, c + ""), c) : void n.removeAttr(a, b))
2612 },
2613 removeAttr: function(a, b) {
2614 var c, d, e = 0,
2615 f = b && b.match(F);
2616 if (f && 1 === a.nodeType)
2617 while (c = f[e++]) d = n.propFix[c] || c, n.expr.match.bool.test(c) ? sc && rc || !qc.test(c) ? a[d] = !1 : a[n.camelCase("default-" + c)] = a[d] = !1 : n.attr(a, c, ""), a.removeAttribute(rc ? c : d)
2618 },
2619 attrHooks: {
2620 type: {
2621 set: function(a, b) {
2622 if (!l.radioValue && "radio" === b && n.nodeName(a, "input")) {
2623 var c = a.value;
2624 return a.setAttribute("type", b), c && (a.value = c), b
2625 }
2626 }
2627 }
2628 }
2629 }), oc = {
2630 set: function(a, b, c) {
2631 return b === !1 ? n.removeAttr(a, c) : sc && rc || !qc.test(c) ? a.setAttribute(!rc && n.propFix[c] || c, c) : a[n.camelCase("default-" + c)] = a[c] = !0, c
2632 }
2633 }, n.each(n.expr.match.bool.source.match(/\w+/g), function(a, b) {
2634 var c = pc[b] || n.find.attr;
2635 pc[b] = sc && rc || !qc.test(b) ? function(a, b, d) {
2636 var e, f;
2637 return d || (f = pc[b], pc[b] = e, e = null != c(a, b, d) ? b.toLowerCase() : null, pc[b] = f), e
2638 } : function(a, b, c) {
2639 return c ? void 0 : a[n.camelCase("default-" + b)] ? b.toLowerCase() : null
2640 }
2641 }), sc && rc || (n.attrHooks.value = {
2642 set: function(a, b, c) {
2643 return n.nodeName(a, "input") ? void(a.defaultValue = b) : nc && nc.set(a, b, c)
2644 }
2645 }), rc || (nc = {
2646 set: function(a, b, c) {
2647 var d = a.getAttributeNode(c);
2648 return d || a.setAttributeNode(d = a.ownerDocument.createAttribute(c)), d.value = b += "", "value" === c || b === a.getAttribute(c) ? b : void 0
2649 }
2650 }, pc.id = pc.name = pc.coords = function(a, b, c) {
2651 var d;
2652 return c ? void 0 : (d = a.getAttributeNode(b)) && "" !== d.value ? d.value : null
2653 }, n.valHooks.button = {
2654 get: function(a, b) {
2655 var c = a.getAttributeNode(b);
2656 return c && c.specified ? c.value : void 0
2657 },
2658 set: nc.set
2659 }, n.attrHooks.contenteditable = {
2660 set: function(a, b, c) {
2661 nc.set(a, "" === b ? !1 : b, c)
2662 }
2663 }, n.each(["width", "height"], function(a, b) {
2664 n.attrHooks[b] = {
2665 set: function(a, c) {
2666 return "" === c ? (a.setAttribute(b, "auto"), c) : void 0
2667 }
2668 }
2669 })), l.style || (n.attrHooks.style = {
2670 get: function(a) {
2671 return a.style.cssText || void 0
2672 },
2673 set: function(a, b) {
2674 return a.style.cssText = b + ""
2675 }
2676 });
2677 var tc = /^(?:input|select|textarea|button|object)$/i,
2678 uc = /^(?:a|area)$/i;
2679 n.fn.extend({
2680 prop: function(a, b) {
2681 return W(this, n.prop, a, b, arguments.length > 1)
2682 },
2683 removeProp: function(a) {
2684 return a = n.propFix[a] || a, this.each(function() {
2685 try {
2686 this[a] = void 0, delete this[a]
2687 } catch (b) {}
2688 })
2689 }
2690 }), n.extend({
2691 propFix: {
2692 "for": "htmlFor",
2693 "class": "className"
2694 },
2695 prop: function(a, b, c) {
2696 var d, e, f, g = a.nodeType;
2697 if (a && 3 !== g && 8 !== g && 2 !== g) return f = 1 !== g || !n.isXMLDoc(a), f && (b = n.propFix[b] || b, e = n.propHooks[b]), void 0 !== c ? e && "set" in e && void 0 !== (d = e.set(a, c, b)) ? d : a[b] = c : e && "get" in e && null !== (d = e.get(a, b)) ? d : a[b]
2698 },
2699 propHooks: {
2700 tabIndex: {
2701 get: function(a) {
2702 var b = n.find.attr(a, "tabindex");
2703 return b ? parseInt(b, 10) : tc.test(a.nodeName) || uc.test(a.nodeName) && a.href ? 0 : -1
2704 }
2705 }
2706 }
2707 }), l.hrefNormalized || n.each(["href", "src"], function(a, b) {
2708 n.propHooks[b] = {
2709 get: function(a) {
2710 return a.getAttribute(b, 4)
2711 }
2712 }
2713 }), l.optSelected || (n.propHooks.selected = {
2714 get: function(a) {
2715 var b = a.parentNode;
2716 return b && (b.selectedIndex, b.parentNode && b.parentNode.selectedIndex), null
2717 }
2718 }), n.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], function() {
2719 n.propFix[this.toLowerCase()] = this
2720 }), l.enctype || (n.propFix.enctype = "encoding");
2721 var vc = /[\t\r\n\f]/g;
2722 n.fn.extend({
2723 addClass: function(a) {
2724 var b, c, d, e, f, g, h = 0,
2725 i = this.length,
2726 j = "string" == typeof a && a;
2727 if (n.isFunction(a)) return this.each(function(b) {
2728 n(this).addClass(a.call(this, b, this.className))
2729 });
2730 if (j)
2731 for (b = (a || "").match(F) || []; i > h; h++)
2732 if (c = this[h], d = 1 === c.nodeType && (c.className ? (" " + c.className + " ").replace(vc, " ") : " ")) {
2733 f = 0;
2734 while (e = b[f++]) d.indexOf(" " + e + " ") < 0 && (d += e + " ");
2735 g = n.trim(d), c.className !== g && (c.className = g)
2736 }
2737 return this
2738 },
2739 removeClass: function(a) {
2740 var b, c, d, e, f, g, h = 0,
2741 i = this.length,
2742 j = 0 === arguments.length || "string" == typeof a && a;
2743 if (n.isFunction(a)) return this.each(function(b) {
2744 n(this).removeClass(a.call(this, b, this.className))
2745 });
2746 if (j)
2747 for (b = (a || "").match(F) || []; i > h; h++)
2748 if (c = this[h], d = 1 === c.nodeType && (c.className ? (" " + c.className + " ").replace(vc, " ") : "")) {
2749 f = 0;
2750 while (e = b[f++])
2751 while (d.indexOf(" " + e + " ") >= 0) d = d.replace(" " + e + " ", " ");
2752 g = a ? n.trim(d) : "", c.className !== g && (c.className = g)
2753 }
2754 return this
2755 },
2756 toggleClass: function(a, b) {
2757 var c = typeof a;
2758 return "boolean" == typeof b && "string" === c ? b ? this.addClass(a) : this.removeClass(a) : this.each(n.isFunction(a) ? function(c) {
2759 n(this).toggleClass(a.call(this, c, this.className, b), b)
2760 } : function() {
2761 if ("string" === c) {
2762 var b, d = 0,
2763 e = n(this),
2764 f = a.match(F) || [];
2765 while (b = f[d++]) e.hasClass(b) ? e.removeClass(b) : e.addClass(b)
2766 } else(c === L || "boolean" === c) && (this.className && n._data(this, "__className__", this.className), this.className = this.className || a === !1 ? "" : n._data(this, "__className__") || "")
2767 })
2768 },
2769 hasClass: function(a) {
2770 for (var b = " " + a + " ", c = 0, d = this.length; d > c; c++)
2771 if (1 === this[c].nodeType && (" " + this[c].className + " ").replace(vc, " ").indexOf(b) >= 0) return !0;
2772 return !1
2773 }
2774 }), n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "), function(a, b) {
2775 n.fn[b] = function(a, c) {
2776 return arguments.length > 0 ? this.on(b, null, a, c) : this.trigger(b)
2777 }
2778 }), n.fn.extend({
2779 hover: function(a, b) {
2780 return this.mouseenter(a).mouseleave(b || a)
2781 },
2782 bind: function(a, b, c) {
2783 return this.on(a, null, b, c)
2784 },
2785 unbind: function(a, b) {
2786 return this.off(a, null, b)
2787 },
2788 delegate: function(a, b, c, d) {
2789 return this.on(b, a, c, d)
2790 },
2791 undelegate: function(a, b, c) {
2792 return 1 === arguments.length ? this.off(a, "**") : this.off(b, a || "**", c)
2793 }
2794 });
2795 var wc = n.now(),
2796 xc = /\?/,
2797 yc = /(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;
2798 n.parseJSON = function(b) {
2799 if (a.JSON && a.JSON.parse) return a.JSON.parse(b + "");
2800 var c, d = null,
2801 e = n.trim(b + "");
2802 return e && !n.trim(e.replace(yc, function(a, b, e, f) {
2803 return c && b && (d = 0), 0 === d ? a : (c = e || b, d += !f - !e, "")
2804 })) ? Function("return " + e)() : n.error("Invalid JSON: " + b)
2805 }, n.parseXML = function(b) {
2806 var c, d;
2807 if (!b || "string" != typeof b) return null;
2808 try {
2809 a.DOMParser ? (d = new DOMParser, c = d.parseFromString(b, "text/xml")) : (c = new ActiveXObject("Microsoft.XMLDOM"), c.async = "false", c.loadXML(b))
2810 } catch (e) {
2811 c = void 0
2812 }
2813 return c && c.documentElement && !c.getElementsByTagName("parsererror").length || n.error("Invalid XML: " + b), c
2814 };
2815 var zc, Ac, Bc = /#.*$/,
2816 Cc = /([?&])_=[^&]*/,
2817 Dc = /^(.*?):[ \t]*([^\r\n]*)\r?$/gm,
2818 Ec = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
2819 Fc = /^(?:GET|HEAD)$/,
2820 Gc = /^\/\//,
2821 Hc = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,
2822 Ic = {},
2823 Jc = {},
2824 Kc = "*/".concat("*");
2825 try {
2826 Ac = location.href
2827 } catch (Lc) {
2828 Ac = z.createElement("a"), Ac.href = "", Ac = Ac.href
2829 }
2830 zc = Hc.exec(Ac.toLowerCase()) || [];
2831
2832 function Mc(a) {
2833 return function(b, c) {
2834 "string" != typeof b && (c = b, b = "*");
2835 var d, e = 0,
2836 f = b.toLowerCase().match(F) || [];
2837 if (n.isFunction(c))
2838 while (d = f[e++]) "+" === d.charAt(0) ? (d = d.slice(1) || "*", (a[d] = a[d] || []).unshift(c)) : (a[d] = a[d] || []).push(c)
2839 }
2840 }
2841
2842 function Nc(a, b, c, d) {
2843 var e = {},
2844 f = a === Jc;
2845
2846 function g(h) {
2847 var i;
2848 return e[h] = !0, n.each(a[h] || [], function(a, h) {
2849 var j = h(b, c, d);
2850 return "string" != typeof j || f || e[j] ? f ? !(i = j) : void 0 : (b.dataTypes.unshift(j), g(j), !1)
2851 }), i
2852 }
2853 return g(b.dataTypes[0]) || !e["*"] && g("*")
2854 }
2855
2856 function Oc(a, b) {
2857 var c, d, e = n.ajaxSettings.flatOptions || {};
2858 for (d in b) void 0 !== b[d] && ((e[d] ? a : c || (c = {}))[d] = b[d]);
2859 return c && n.extend(!0, a, c), a
2860 }
2861
2862 function Pc(a, b, c) {
2863 var d, e, f, g, h = a.contents,
2864 i = a.dataTypes;
2865 while ("*" === i[0]) i.shift(), void 0 === e && (e = a.mimeType || b.getResponseHeader("Content-Type"));
2866 if (e)
2867 for (g in h)
2868 if (h[g] && h[g].test(e)) {
2869 i.unshift(g);
2870 break
2871 }
2872 if (i[0] in c) f = i[0];
2873 else {
2874 for (g in c) {
2875 if (!i[0] || a.converters[g + " " + i[0]]) {
2876 f = g;
2877 break
2878 }
2879 d || (d = g)
2880 }
2881 f = f || d
2882 }
2883 return f ? (f !== i[0] && i.unshift(f), c[f]) : void 0
2884 }
2885
2886 function Qc(a, b, c, d) {
2887 var e, f, g, h, i, j = {},
2888 k = a.dataTypes.slice();
2889 if (k[1])
2890 for (g in a.converters) j[g.toLowerCase()] = a.converters[g];
2891 f = k.shift();
2892 while (f)
2893 if (a.responseFields[f] && (c[a.responseFields[f]] = b), !i && d && a.dataFilter && (b = a.dataFilter(b, a.dataType)), i = f, f = k.shift())
2894 if ("*" === f) f = i;
2895 else if ("*" !== i && i !== f) {
2896 if (g = j[i + " " + f] || j["* " + f], !g)
2897 for (e in j)
2898 if (h = e.split(" "), h[1] === f && (g = j[i + " " + h[0]] || j["* " + h[0]])) {
2899 g === !0 ? g = j[e] : j[e] !== !0 && (f = h[0], k.unshift(h[1]));
2900 break
2901 }
2902 if (g !== !0)
2903 if (g && a["throws"]) b = g(b);
2904 else try {
2905 b = g(b)
2906 } catch (l) {
2907 return {
2908 state: "parsererror",
2909 error: g ? l : "No conversion from " + i + " to " + f
2910 }
2911 }
2912 }
2913 return {
2914 state: "success",
2915 data: b
2916 }
2917 }
2918 n.extend({
2919 active: 0,
2920 lastModified: {},
2921 etag: {},
2922 ajaxSettings: {
2923 url: Ac,
2924 type: "GET",
2925 isLocal: Ec.test(zc[1]),
2926 global: !0,
2927 processData: !0,
2928 async: !0,
2929 contentType: "application/x-www-form-urlencoded; charset=UTF-8",
2930 accepts: {
2931 "*": Kc,
2932 text: "text/plain",
2933 html: "text/html",
2934 xml: "application/xml, text/xml",
2935 json: "application/json, text/javascript"
2936 },
2937 contents: {
2938 xml: /xml/,
2939 html: /html/,
2940 json: /json/
2941 },
2942 responseFields: {
2943 xml: "responseXML",
2944 text: "responseText",
2945 json: "responseJSON"
2946 },
2947 converters: {
2948 "* text": String,
2949 "text html": !0,
2950 "text json": n.parseJSON,
2951 "text xml": n.parseXML
2952 },
2953 flatOptions: {
2954 url: !0,
2955 context: !0
2956 }
2957 },
2958 ajaxSetup: function(a, b) {
2959 return b ? Oc(Oc(a, n.ajaxSettings), b) : Oc(n.ajaxSettings, a)
2960 },
2961 ajaxPrefilter: Mc(Ic),
2962 ajaxTransport: Mc(Jc),
2963 ajax: function(a, b) {
2964 "object" == typeof a && (b = a, a = void 0), b = b || {};
2965 var c, d, e, f, g, h, i, j, k = n.ajaxSetup({}, b),
2966 l = k.context || k,
2967 m = k.context && (l.nodeType || l.jquery) ? n(l) : n.event,
2968 o = n.Deferred(),
2969 p = n.Callbacks("once memory"),
2970 q = k.statusCode || {},
2971 r = {},
2972 s = {},
2973 t = 0,
2974 u = "canceled",
2975 v = {
2976 readyState: 0,
2977 getResponseHeader: function(a) {
2978 var b;
2979 if (2 === t) {
2980 if (!j) {
2981 j = {};
2982 while (b = Dc.exec(f)) j[b[1].toLowerCase()] = b[2]
2983 }
2984 b = j[a.toLowerCase()]
2985 }
2986 return null == b ? null : b
2987 },
2988 getAllResponseHeaders: function() {
2989 return 2 === t ? f : null
2990 },
2991 setRequestHeader: function(a, b) {
2992 var c = a.toLowerCase();
2993 return t || (a = s[c] = s[c] || a, r[a] = b), this
2994 },
2995 overrideMimeType: function(a) {
2996 return t || (k.mimeType = a), this
2997 },
2998 statusCode: function(a) {
2999 var b;
3000 if (a)
3001 if (2 > t)
3002 for (b in a) q[b] = [q[b], a[b]];
3003 else v.always(a[v.status]);
3004 return this
3005 },
3006 abort: function(a) {
3007 var b = a || u;
3008 return i && i.abort(b), x(0, b), this
3009 }
3010 };
3011 if (o.promise(v).complete = p.add, v.success = v.done, v.error = v.fail, k.url = ((a || k.url || Ac) + "").replace(Bc, "").replace(Gc, zc[1] + "//"), k.type = b.method || b.type || k.method || k.type, k.dataTypes = n.trim(k.dataType || "*").toLowerCase().match(F) || [""], null == k.crossDomain && (c = Hc.exec(k.url.toLowerCase()), k.crossDomain = !(!c || c[1] === zc[1] && c[2] === zc[2] && (c[3] || ("http:" === c[1] ? "80" : "443")) === (zc[3] || ("http:" === zc[1] ? "80" : "443")))), k.data && k.processData && "string" != typeof k.data && (k.data = n.param(k.data, k.traditional)), Nc(Ic, k, b, v), 2 === t) return v;
3012 h = k.global, h && 0 === n.active++ && n.event.trigger("ajaxStart"), k.type = k.type.toUpperCase(), k.hasContent = !Fc.test(k.type), e = k.url, k.hasContent || (k.data && (e = k.url += (xc.test(e) ? "&" : "?") + k.data, delete k.data), k.cache === !1 && (k.url = Cc.test(e) ? e.replace(Cc, "$1_=" + wc++) : e + (xc.test(e) ? "&" : "?") + "_=" + wc++)), k.ifModified && (n.lastModified[e] && v.setRequestHeader("If-Modified-Since", n.lastModified[e]), n.etag[e] && v.setRequestHeader("If-None-Match", n.etag[e])), (k.data && k.hasContent && k.contentType !== !1 || b.contentType) && v.setRequestHeader("Content-Type", k.contentType), v.setRequestHeader("Accept", k.dataTypes[0] && k.accepts[k.dataTypes[0]] ? k.accepts[k.dataTypes[0]] + ("*" !== k.dataTypes[0] ? ", " + Kc + "; q=0.01" : "") : k.accepts["*"]);
3013 for (d in k.headers) v.setRequestHeader(d, k.headers[d]);
3014 if (k.beforeSend && (k.beforeSend.call(l, v, k) === !1 || 2 === t)) return v.abort();
3015 u = "abort";
3016 for (d in {
3017 success: 1,
3018 error: 1,
3019 complete: 1
3020 }) v[d](k[d]);
3021 if (i = Nc(Jc, k, b, v)) {
3022 v.readyState = 1, h && m.trigger("ajaxSend", [v, k]), k.async && k.timeout > 0 && (g = setTimeout(function() {
3023 v.abort("timeout")
3024 }, k.timeout));
3025 try {
3026 t = 1, i.send(r, x)
3027 } catch (w) {
3028 if (!(2 > t)) throw w;
3029 x(-1, w)
3030 }
3031 } else x(-1, "No Transport");
3032
3033 function x(a, b, c, d) {
3034 var j, r, s, u, w, x = b;
3035 2 !== t && (t = 2, g && clearTimeout(g), i = void 0, f = d || "", v.readyState = a > 0 ? 4 : 0, j = a >= 200 && 300 > a || 304 === a, c && (u = Pc(k, v, c)), u = Qc(k, u, v, j), j ? (k.ifModified && (w = v.getResponseHeader("Last-Modified"), w && (n.lastModified[e] = w), w = v.getResponseHeader("etag"), w && (n.etag[e] = w)), 204 === a || "HEAD" === k.type ? x = "nocontent" : 304 === a ? x = "notmodified" : (x = u.state, r = u.data, s = u.error, j = !s)) : (s = x, (a || !x) && (x = "error", 0 > a && (a = 0))), v.status = a, v.statusText = (b || x) + "", j ? o.resolveWith(l, [r, x, v]) : o.rejectWith(l, [v, x, s]), v.statusCode(q), q = void 0, h && m.trigger(j ? "ajaxSuccess" : "ajaxError", [v, k, j ? r : s]), p.fireWith(l, [v, x]), h && (m.trigger("ajaxComplete", [v, k]), --n.active || n.event.trigger("ajaxStop")))
3036 }
3037 return v
3038 },
3039 getJSON: function(a, b, c) {
3040 return n.get(a, b, c, "json")
3041 },
3042 getScript: function(a, b) {
3043 return n.get(a, void 0, b, "script")
3044 }
3045 }), n.each(["get", "post"], function(a, b) {
3046 n[b] = function(a, c, d, e) {
3047 return n.isFunction(c) && (e = e || d, d = c, c = void 0), n.ajax({
3048 url: a,
3049 type: b,
3050 dataType: e,
3051 data: c,
3052 success: d
3053 })
3054 }
3055 }), n.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function(a, b) {
3056 n.fn[b] = function(a) {
3057 return this.on(b, a)
3058 }
3059 }), n._evalUrl = function(a) {
3060 return n.ajax({
3061 url: a,
3062 type: "GET",
3063 dataType: "script",
3064 async: !1,
3065 global: !1,
3066 "throws": !0
3067 })
3068 }, n.fn.extend({
3069 wrapAll: function(a) {
3070 if (n.isFunction(a)) return this.each(function(b) {
3071 n(this).wrapAll(a.call(this, b))
3072 });
3073 if (this[0]) {
3074 var b = n(a, this[0].ownerDocument).eq(0).clone(!0);
3075 this[0].parentNode && b.insertBefore(this[0]), b.map(function() {
3076 var a = this;
3077 while (a.firstChild && 1 === a.firstChild.nodeType) a = a.firstChild;
3078 return a
3079 }).append(this)
3080 }
3081 return this
3082 },
3083 wrapInner: function(a) {
3084 return this.each(n.isFunction(a) ? function(b) {
3085 n(this).wrapInner(a.call(this, b))
3086 } : function() {
3087 var b = n(this),
3088 c = b.contents();
3089 c.length ? c.wrapAll(a) : b.append(a)
3090 })
3091 },
3092 wrap: function(a) {
3093 var b = n.isFunction(a);
3094 return this.each(function(c) {
3095 n(this).wrapAll(b ? a.call(this, c) : a)
3096 })
3097 },
3098 unwrap: function() {
3099 return this.parent().each(function() {
3100 n.nodeName(this, "body") || n(this).replaceWith(this.childNodes)
3101 }).end()
3102 }
3103 }), n.expr.filters.hidden = function(a) {
3104 return a.offsetWidth <= 0 && a.offsetHeight <= 0 || !l.reliableHiddenOffsets() && "none" === (a.style && a.style.display || n.css(a, "display"))
3105 }, n.expr.filters.visible = function(a) {
3106 return !n.expr.filters.hidden(a)
3107 };
3108 var Rc = /%20/g,
3109 Sc = /\[\]$/,
3110 Tc = /\r?\n/g,
3111 Uc = /^(?:submit|button|image|reset|file)$/i,
3112 Vc = /^(?:input|select|textarea|keygen)/i;
3113
3114 function Wc(a, b, c, d) {
3115 var e;
3116 if (n.isArray(b)) n.each(b, function(b, e) {
3117 c || Sc.test(a) ? d(a, e) : Wc(a + "[" + ("object" == typeof e ? b : "") + "]", e, c, d)
3118 });
3119 else if (c || "object" !== n.type(b)) d(a, b);
3120 else
3121 for (e in b) Wc(a + "[" + e + "]", b[e], c, d)
3122 }
3123 n.param = function(a, b) {
3124 var c, d = [],
3125 e = function(a, b) {
3126 b = n.isFunction(b) ? b() : null == b ? "" : b, d[d.length] = encodeURIComponent(a) + "=" + encodeURIComponent(b)
3127 };
3128 if (void 0 === b && (b = n.ajaxSettings && n.ajaxSettings.traditional), n.isArray(a) || a.jquery && !n.isPlainObject(a)) n.each(a, function() {
3129 e(this.name, this.value)
3130 });
3131 else
3132 for (c in a) Wc(c, a[c], b, e);
3133 return d.join("&").replace(Rc, "+")
3134 }, n.fn.extend({
3135 serialize: function() {
3136 return n.param(this.serializeArray())
3137 },
3138 serializeArray: function() {
3139 return this.map(function() {
3140 var a = n.prop(this, "elements");
3141 return a ? n.makeArray(a) : this
3142 }).filter(function() {
3143 var a = this.type;
3144 return this.name && !n(this).is(":disabled") && Vc.test(this.nodeName) && !Uc.test(a) && (this.checked || !X.test(a))
3145 }).map(function(a, b) {
3146 var c = n(this).val();
3147 return null == c ? null : n.isArray(c) ? n.map(c, function(a) {
3148 return {
3149 name: b.name,
3150 value: a.replace(Tc, "\r\n")
3151 }
3152 }) : {
3153 name: b.name,
3154 value: c.replace(Tc, "\r\n")
3155 }
3156 }).get()
3157 }
3158 }), n.ajaxSettings.xhr = void 0 !== a.ActiveXObject ? function() {
3159 return !this.isLocal && /^(get|post|head|put|delete|options)$/i.test(this.type) && $c() || _c()
3160 } : $c;
3161 var Xc = 0,
3162 Yc = {},
3163 Zc = n.ajaxSettings.xhr();
3164 a.ActiveXObject && n(a).on("unload", function() {
3165 for (var a in Yc) Yc[a](void 0, !0)
3166 }), l.cors = !!Zc && "withCredentials" in Zc, Zc = l.ajax = !!Zc, Zc && n.ajaxTransport(function(a) {
3167 if (!a.crossDomain || l.cors) {
3168 var b;
3169 return {
3170 send: function(c, d) {
3171 var e, f = a.xhr(),
3172 g = ++Xc;
3173 if (f.open(a.type, a.url, a.async, a.username, a.password), a.xhrFields)
3174 for (e in a.xhrFields) f[e] = a.xhrFields[e];
3175 a.mimeType && f.overrideMimeType && f.overrideMimeType(a.mimeType), a.crossDomain || c["X-Requested-With"] || (c["X-Requested-With"] = "XMLHttpRequest");
3176 for (e in c) void 0 !== c[e] && f.setRequestHeader(e, c[e] + "");
3177 f.send(a.hasContent && a.data || null), b = function(c, e) {
3178 var h, i, j;
3179 if (b && (e || 4 === f.readyState))
3180 if (delete Yc[g], b = void 0, f.onreadystatechange = n.noop, e) 4 !== f.readyState && f.abort();
3181 else {
3182 j = {}, h = f.status, "string" == typeof f.responseText && (j.text = f.responseText);
3183 try {
3184 i = f.statusText
3185 } catch (k) {
3186 i = ""
3187 }
3188 h || !a.isLocal || a.crossDomain ? 1223 === h && (h = 204) : h = j.text ? 200 : 404
3189 }
3190 j && d(h, i, j, f.getAllResponseHeaders())
3191 }, a.async ? 4 === f.readyState ? setTimeout(b) : f.onreadystatechange = Yc[g] = b : b()
3192 },
3193 abort: function() {
3194 b && b(void 0, !0)
3195 }
3196 }
3197 }
3198 });
3199
3200 function $c() {
3201 try {
3202 return new a.XMLHttpRequest
3203 } catch (b) {}
3204 }
3205
3206 function _c() {
3207 try {
3208 return new a.ActiveXObject("Microsoft.XMLHTTP")
3209 } catch (b) {}
3210 }
3211 n.ajaxSetup({
3212 accepts: {
3213 script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
3214 },
3215 contents: {
3216 script: /(?:java|ecma)script/
3217 },
3218 converters: {
3219 "text script": function(a) {
3220 return n.globalEval(a), a
3221 }
3222 }
3223 }), n.ajaxPrefilter("script", function(a) {
3224 void 0 === a.cache && (a.cache = !1), a.crossDomain && (a.type = "GET", a.global = !1)
3225 }), n.ajaxTransport("script", function(a) {
3226 if (a.crossDomain) {
3227 var b, c = z.head || n("head")[0] || z.documentElement;
3228 return {
3229 send: function(d, e) {
3230 b = z.createElement("script"), b.async = !0, a.scriptCharset && (b.charset = a.scriptCharset), b.src = a.url, b.onload = b.onreadystatechange = function(a, c) {
3231 (c || !b.readyState || /loaded|complete/.test(b.readyState)) && (b.onload = b.onreadystatechange = null, b.parentNode && b.parentNode.removeChild(b), b = null, c || e(200, "success"))
3232 }, c.insertBefore(b, c.firstChild)
3233 },
3234 abort: function() {
3235 b && b.onload(void 0, !0)
3236 }
3237 }
3238 }
3239 });
3240 var ad = [],
3241 bd = /(=)\?(?=&|$)|\?\?/;
3242 n.ajaxSetup({
3243 jsonp: "callback",
3244 jsonpCallback: function() {
3245 var a = ad.pop() || n.expando + "_" + wc++;
3246 return this[a] = !0, a
3247 }
3248 }), n.ajaxPrefilter("json jsonp", function(b, c, d) {
3249 var e, f, g, h = b.jsonp !== !1 && (bd.test(b.url) ? "url" : "string" == typeof b.data && !(b.contentType || "").indexOf("application/x-www-form-urlencoded") && bd.test(b.data) && "data");
3250 return h || "jsonp" === b.dataTypes[0] ? (e = b.jsonpCallback = n.isFunction(b.jsonpCallback) ? b.jsonpCallback() : b.jsonpCallback, h ? b[h] = b[h].replace(bd, "$1" + e) : b.jsonp !== !1 && (b.url += (xc.test(b.url) ? "&" : "?") + b.jsonp + "=" + e), b.converters["script json"] = function() {
3251 return g || n.error(e + " was not called"), g[0]
3252 }, b.dataTypes[0] = "json", f = a[e], a[e] = function() {
3253 g = arguments
3254 }, d.always(function() {
3255 a[e] = f, b[e] && (b.jsonpCallback = c.jsonpCallback, ad.push(e)), g && n.isFunction(f) && f(g[0]), g = f = void 0
3256 }), "script") : void 0
3257 }), n.parseHTML = function(a, b, c) {
3258 if (!a || "string" != typeof a) return null;
3259 "boolean" == typeof b && (c = b, b = !1), b = b || z;
3260 var d = v.exec(a),
3261 e = !c && [];
3262 return d ? [b.createElement(d[1])] : (d = n.buildFragment([a], b, e), e && e.length && n(e).remove(), n.merge([], d.childNodes))
3263 };
3264 var cd = n.fn.load;
3265 n.fn.load = function(a, b, c) {
3266 if ("string" != typeof a && cd) return cd.apply(this, arguments);
3267 var d, e, f, g = this,
3268 h = a.indexOf(" ");
3269 return h >= 0 && (d = a.slice(h, a.length), a = a.slice(0, h)), n.isFunction(b) ? (c = b, b = void 0) : b && "object" == typeof b && (f = "POST"), g.length > 0 && n.ajax({
3270 url: a,
3271 type: f,
3272 dataType: "html",
3273 data: b
3274 }).done(function(a) {
3275 e = arguments, g.html(d ? n("<div>").append(n.parseHTML(a)).find(d) : a)
3276 }).complete(c && function(a, b) {
3277 g.each(c, e || [a.responseText, b, a])
3278 }), this
3279 }, n.expr.filters.animated = function(a) {
3280 return n.grep(n.timers, function(b) {
3281 return a === b.elem
3282 }).length
3283 };
3284 var dd = a.document.documentElement;
3285
3286 function ed(a) {
3287 return n.isWindow(a) ? a : 9 === a.nodeType ? a.defaultView || a.parentWindow : !1
3288 }
3289 n.offset = {
3290 setOffset: function(a, b, c) {
3291 var d, e, f, g, h, i, j, k = n.css(a, "position"),
3292 l = n(a),
3293 m = {};
3294 "static" === k && (a.style.position = "relative"), h = l.offset(), f = n.css(a, "top"), i = n.css(a, "left"), j = ("absolute" === k || "fixed" === k) && n.inArray("auto", [f, i]) > -1, j ? (d = l.position(), g = d.top, e = d.left) : (g = parseFloat(f) || 0, e = parseFloat(i) || 0), n.isFunction(b) && (b = b.call(a, c, h)), null != b.top && (m.top = b.top - h.top + g), null != b.left && (m.left = b.left - h.left + e), "using" in b ? b.using.call(a, m) : l.css(m)
3295 }
3296 }, n.fn.extend({
3297 offset: function(a) {
3298 if (arguments.length) return void 0 === a ? this : this.each(function(b) {
3299 n.offset.setOffset(this, a, b)
3300 });
3301 var b, c, d = {
3302 top: 0,
3303 left: 0
3304 },
3305 e = this[0],
3306 f = e && e.ownerDocument;
3307 if (f) return b = f.documentElement, n.contains(b, e) ? (typeof e.getBoundingClientRect !== L && (d = e.getBoundingClientRect()), c = ed(f), {
3308 top: d.top + (c.pageYOffset || b.scrollTop) - (b.clientTop || 0),
3309 left: d.left + (c.pageXOffset || b.scrollLeft) - (b.clientLeft || 0)
3310 }) : d
3311 },
3312 position: function() {
3313 if (this[0]) {
3314 var a, b, c = {
3315 top: 0,
3316 left: 0
3317 },
3318 d = this[0];
3319 return "fixed" === n.css(d, "position") ? b = d.getBoundingClientRect() : (a = this.offsetParent(), b = this.offset(), n.nodeName(a[0], "html") || (c = a.offset()), c.top += n.css(a[0], "borderTopWidth", !0), c.left += n.css(a[0], "borderLeftWidth", !0)), {
3320 top: b.top - c.top - n.css(d, "marginTop", !0),
3321 left: b.left - c.left - n.css(d, "marginLeft", !0)
3322 }
3323 }
3324 },
3325 offsetParent: function() {
3326 return this.map(function() {
3327 var a = this.offsetParent || dd;
3328 while (a && !n.nodeName(a, "html") && "static" === n.css(a, "position")) a = a.offsetParent;
3329 return a || dd
3330 })
3331 }
3332 }), n.each({
3333 scrollLeft: "pageXOffset",
3334 scrollTop: "pageYOffset"
3335 }, function(a, b) {
3336 var c = /Y/.test(b);
3337 n.fn[a] = function(d) {
3338 return W(this, function(a, d, e) {
3339 var f = ed(a);
3340 return void 0 === e ? f ? b in f ? f[b] : f.document.documentElement[d] : a[d] : void(f ? f.scrollTo(c ? n(f).scrollLeft() : e, c ? e : n(f).scrollTop()) : a[d] = e)
3341 }, a, d, arguments.length, null)
3342 }
3343 }), n.each(["top", "left"], function(a, b) {
3344 n.cssHooks[b] = Mb(l.pixelPosition, function(a, c) {
3345 return c ? (c = Kb(a, b), Ib.test(c) ? n(a).position()[b] + "px" : c) : void 0
3346 })
3347 }), n.each({
3348 Height: "height",
3349 Width: "width"
3350 }, function(a, b) {
3351 n.each({
3352 padding: "inner" + a,
3353 content: b,
3354 "": "outer" + a
3355 }, function(c, d) {
3356 n.fn[d] = function(d, e) {
3357 var f = arguments.length && (c || "boolean" != typeof d),
3358 g = c || (d === !0 || e === !0 ? "margin" : "border");
3359 return W(this, function(b, c, d) {
3360 var e;
3361 return n.isWindow(b) ? b.document.documentElement["client" + a] : 9 === b.nodeType ? (e = b.documentElement, Math.max(b.body["scroll" + a], e["scroll" + a], b.body["offset" + a], e["offset" + a], e["client" + a])) : void 0 === d ? n.css(b, c, g) : n.style(b, c, d, g)
3362 }, b, f ? d : void 0, f, null)
3363 }
3364 })
3365 }), n.fn.size = function() {
3366 return this.length
3367 }, n.fn.andSelf = n.fn.addBack, "function" == typeof define && define.amd && define("jquery", [], function() {
3368 return n
3369 });
3370 var fd = a.jQuery,
3371 gd = a.$;
3372 return n.noConflict = function(b) {
3373 return a.$ === n && (a.$ = gd), b && a.jQuery === n && (a.jQuery = fd), n
3374 }, typeof b === L && (a.jQuery = a.$ = n), n
3375}); \ No newline at end of file
diff --git a/Back/ZJW/javascripts/jquery.swatchbook.js b/Back/ZJW/javascripts/jquery.swatchbook.js
new file mode 100644
index 0000000..dc6ce43
--- /dev/null
+++ b/Back/ZJW/javascripts/jquery.swatchbook.js
@@ -0,0 +1,255 @@
1/**
2 * jquery.swatchbook.js v1.1.0
3 * http://www.codrops.com
4 *
5 * Licensed under the MIT license.
6 * http://www.opensource.org/licenses/mit-license.php
7 *
8 * Copyright 2012, Codrops
9 * http://www.codrops.com
10 */
11
12;
13(function($, window, undefined) {
14
15 'use strict';
16
17 // global
18 var Modernizr = window.Modernizr;
19
20 jQuery.fn.reverse = [].reverse;
21
22 $.SwatchBook = function(options, element) {
23
24 this.$el = $(element);
25 this._init(options);
26
27 };
28
29 $.SwatchBook.defaults = {
30 // index of initial centered item
31 center: 6,
32 // number of degrees that is between each item
33 angleInc: 8,
34 speed: 700,
35 easing: 'ease',
36 // amount in degrees for the opened item's next sibling
37 proximity: 45,
38 // amount in degrees between the opened item's next siblings
39 neighbor: 4,
40 // animate on load
41 onLoadAnim: true,
42 // if it should be closed by default
43 initclosed: false,
44 // index of the element that when clicked, triggers the open/close function
45 // by default there is no such element
46 closeIdx: -1,
47 // open one specific item initially (overrides initclosed)
48 openAt: -1
49 };
50
51 $.SwatchBook.prototype = {
52
53 _init: function(options) {
54
55 this.options = $.extend(true, {}, $.SwatchBook.defaults, options);
56
57 this.$items = this.$el.children('div');
58 this.itemsCount = this.$items.length;
59 this.current = -1;
60 this.support = Modernizr.csstransitions;
61 this.cache = [];
62
63 if (this.options.onLoadAnim) {
64 this._setTransition();
65 }
66
67 if (!this.options.initclosed) {
68 this._center(this.options.center, this.options.onLoadAnim);
69 } else {
70
71 this.isClosed = true;
72 if (!this.options.onLoadAnim) {
73 this._setTransition();
74 }
75
76 }
77
78 if (this.options.openAt >= 0 && this.options.openAt < this.itemsCount) {
79 this._openItem(this.$items.eq(this.options.openAt));
80 }
81
82 this._initEvents();
83
84 },
85 _setTransition: function() {
86
87 if (this.support) {
88 this.$items.css({
89 'transition': 'all ' + this.options.speed + 'ms ' + this.options.easing
90 });
91 }
92
93 },
94 _openclose: function() {
95
96 this.isClosed ? this._center(this.options.center, true) : this.$items.css({
97 'transform': 'rotate(0deg)'
98 });
99 this.isClosed = !this.isClosed;
100
101 },
102 _center: function(idx, anim) {
103
104 var self = this;
105
106 this.$items.each(function(i) {
107
108 var transformStr = 'rotate(' + (self.options.angleInc * (i - idx)) + 'deg)';
109 $(this).css({
110 'transform': transformStr
111 });
112
113 });
114
115 },
116 _openItem: function($item) {
117
118 var itmIdx = $item.index();
119
120 if (itmIdx !== this.current) {
121
122 if (this.options.closeIdx !== -1 && itmIdx === this.options.closeIdx) {
123
124 this._openclose();
125 this._setCurrent();
126
127 } else {
128
129 this._setCurrent($item);
130 $item.css({
131 'transform': 'rotate(0deg)'
132 });
133 this._rotateSiblings($item);
134
135 }
136
137 }
138
139 },
140 _initEvents: function() {
141
142 var self = this;
143
144 this.$items.on('click.swatchbook', function(event) {
145 self._openItem($(this));
146 });
147
148 },
149 _rotateSiblings: function($item) {
150
151 var self = this,
152 idx = $item.index(),
153 $cached = this.cache[idx],
154 $siblings;
155
156 if ($cached) {
157 $siblings = $cached;
158 } else {
159
160 $siblings = $item.siblings();
161 this.cache[idx] = $siblings;
162
163 }
164
165 $siblings.each(function(i) {
166
167 var rotateVal = i < idx ?
168 self.options.angleInc * (i - idx) :
169 i - idx === 1 ?
170 self.options.proximity :
171 self.options.proximity + (i - idx - 1) * self.options.neighbor;
172
173 var transformStr = 'rotate(' + rotateVal + 'deg)';
174
175 $(this).css({
176 'transform': transformStr
177 });
178
179 });
180
181 },
182 _setCurrent: function($el) {
183
184 this.current = $el ? $el.index() : -1;
185 this.$items.removeClass('ff-active');
186 if ($el) {
187 $el.addClass('ff-active');
188 }
189
190 }
191
192 };
193
194 var logError = function(message) {
195
196 if (window.console) {
197
198 window.console.error(message);
199
200 }
201
202 };
203
204 $.fn.swatchbook = function(options) {
205
206 var instance = $.data(this, 'swatchbook');
207
208 if (typeof options === 'string') {
209
210 var args = Array.prototype.slice.call(arguments, 1);
211
212 this.each(function() {
213
214 if (!instance) {
215
216 logError("cannot call methods on swatchbook prior to initialization; " +
217 "attempted to call method '" + options + "'");
218 return;
219
220 }
221
222 if (!$.isFunction(instance[options]) || options.charAt(0) === "_") {
223
224 logError("no such method '" + options + "' for swatchbook instance");
225 return;
226
227 }
228
229 instance[options].apply(instance, args);
230
231 });
232
233 } else {
234
235 this.each(function() {
236
237 if (instance) {
238
239 instance._init();
240
241 } else {
242
243 instance = $.data(this, 'swatchbook', new $.SwatchBook(options, this));
244
245 }
246
247 });
248
249 }
250
251 return instance;
252
253 };
254
255})(jQuery, window); \ No newline at end of file
diff --git a/Back/ZJW/javascripts/modernizr.custom.79639.js b/Back/ZJW/javascripts/modernizr.custom.79639.js
new file mode 100644
index 0000000..23b151c
--- /dev/null
+++ b/Back/ZJW/javascripts/modernizr.custom.79639.js
@@ -0,0 +1,167 @@
1/* Modernizr 2.5.3 (Custom Build) | MIT & BSD
2 * Build: http://www.modernizr.com/download/#-cssanimations-csstransforms-csstransforms3d-csstransitions-shiv-cssclasses-teststyles-testprop-testallprops-prefixes-domprefixes
3 */
4;
5window.Modernizr = function(a, b, c) {
6 function z(a) {
7 j.cssText = a
8 }
9
10 function A(a, b) {
11 return z(m.join(a + ";") + (b || ""))
12 }
13
14 function B(a, b) {
15 return typeof a === b
16 }
17
18 function C(a, b) {
19 return !!~("" + a).indexOf(b)
20 }
21
22 function D(a, b) {
23 for (var d in a)
24 if (j[a[d]] !== c) return b == "pfx" ? a[d] : !0;
25 return !1
26 }
27
28 function E(a, b, d) {
29 for (var e in a) {
30 var f = b[a[e]];
31 if (f !== c) return d === !1 ? a[e] : B(f, "function") ? f.bind(d || b) : f
32 }
33 return !1
34 }
35
36 function F(a, b, c) {
37 var d = a.charAt(0).toUpperCase() + a.substr(1),
38 e = (a + " " + o.join(d + " ") + d).split(" ");
39 return B(b, "string") || B(b, "undefined") ? D(e, b) : (e = (a + " " + p.join(d + " ") + d).split(" "), E(e, b, c))
40 }
41 var d = "2.5.3",
42 e = {},
43 f = !0,
44 g = b.documentElement,
45 h = "modernizr",
46 i = b.createElement(h),
47 j = i.style,
48 k, l = {}.toString,
49 m = " -webkit- -moz- -o- -ms- ".split(" "),
50 n = "Webkit Moz O ms",
51 o = n.split(" "),
52 p = n.toLowerCase().split(" "),
53 q = {},
54 r = {},
55 s = {},
56 t = [],
57 u = t.slice,
58 v, w = function(a, c, d, e) {
59 var f, i, j, k = b.createElement("div"),
60 l = b.body,
61 m = l ? l : b.createElement("body");
62 if (parseInt(d, 10))
63 while (d--) j = b.createElement("div"), j.id = e ? e[d] : h + (d + 1), k.appendChild(j);
64 return f = ["&#173;", "<style>", a, "</style>"].join(""), k.id = h, (l ? k : m).innerHTML += f, m.appendChild(k), l || (m.style.background = "", g.appendChild(m)), i = c(k, a), l ? k.parentNode.removeChild(k) : m.parentNode.removeChild(m), !!i
65 },
66 x = {}.hasOwnProperty,
67 y;
68 !B(x, "undefined") && !B(x.call, "undefined") ? y = function(a, b) {
69 return x.call(a, b)
70 } : y = function(a, b) {
71 return b in a && B(a.constructor.prototype[b], "undefined")
72 }, Function.prototype.bind || (Function.prototype.bind = function(b) {
73 var c = this;
74 if (typeof c != "function") throw new TypeError;
75 var d = u.call(arguments, 1),
76 e = function() {
77 if (this instanceof e) {
78 var a = function() {};
79 a.prototype = c.prototype;
80 var f = new a,
81 g = c.apply(f, d.concat(u.call(arguments)));
82 return Object(g) === g ? g : f
83 }
84 return c.apply(b, d.concat(u.call(arguments)))
85 };
86 return e
87 });
88 var G = function(a, c) {
89 var d = a.join(""),
90 f = c.length;
91 w(d, function(a, c) {
92 var d = b.styleSheets[b.styleSheets.length - 1],
93 g = d ? d.cssRules && d.cssRules[0] ? d.cssRules[0].cssText : d.cssText || "" : "",
94 h = a.childNodes,
95 i = {};
96 while (f--) i[h[f].id] = h[f];
97 e.csstransforms3d = (i.csstransforms3d && i.csstransforms3d.offsetLeft) === 9 && i.csstransforms3d.offsetHeight === 3
98 }, f, c)
99 }([, ["@media (", m.join("transform-3d),("), h, ")", "{#csstransforms3d{left:9px;position:absolute;height:3px;}}"].join("")], [, "csstransforms3d"]);
100 q.cssanimations = function() {
101 return F("animationName")
102 }, q.csstransforms = function() {
103 return !!F("transform")
104 }, q.csstransforms3d = function() {
105 var a = !!F("perspective");
106 return a && "webkitPerspective" in g.style && (a = e.csstransforms3d), a
107 }, q.csstransitions = function() {
108 return F("transition")
109 };
110 for (var H in q) y(q, H) && (v = H.toLowerCase(), e[v] = q[H](), t.push((e[v] ? "" : "no-") + v));
111 return z(""), i = k = null,
112 function(a, b) {
113 function g(a, b) {
114 var c = a.createElement("p"),
115 d = a.getElementsByTagName("head")[0] || a.documentElement;
116 return c.innerHTML = "x<style>" + b + "</style>", d.insertBefore(c.lastChild, d.firstChild)
117 }
118
119 function h() {
120 var a = k.elements;
121 return typeof a == "string" ? a.split(" ") : a
122 }
123
124 function i(a) {
125 var b = {},
126 c = a.createElement,
127 e = a.createDocumentFragment,
128 f = e();
129 a.createElement = function(a) {
130 var e = (b[a] || (b[a] = c(a))).cloneNode();
131 return k.shivMethods && e.canHaveChildren && !d.test(a) ? f.appendChild(e) : e
132 }, a.createDocumentFragment = Function("h,f", "return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&(" + h().join().replace(/\w+/g, function(a) {
133 return b[a] = c(a), f.createElement(a), 'c("' + a + '")'
134 }) + ");return n}")(k, f)
135 }
136
137 function j(a) {
138 var b;
139 return a.documentShived ? a : (k.shivCSS && !e && (b = !!g(a, "article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio{display:none}canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden]{display:none}audio[controls]{display:inline-block;*display:inline;*zoom:1}mark{background:#FF0;color:#000}")), f || (b = !i(a)), b && (a.documentShived = b), a)
140 }
141 var c = a.html5 || {},
142 d = /^<|^(?:button|form|map|select|textarea)$/i,
143 e, f;
144 (function() {
145 var a = b.createElement("a");
146 a.innerHTML = "<xyz></xyz>", e = "hidden" in a, f = a.childNodes.length == 1 || function() {
147 try {
148 b.createElement("a")
149 } catch (a) {
150 return !0
151 }
152 var c = b.createDocumentFragment();
153 return typeof c.cloneNode == "undefined" || typeof c.createDocumentFragment == "undefined" || typeof c.createElement == "undefined"
154 }()
155 })();
156 var k = {
157 elements: c.elements || "abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",
158 shivCSS: c.shivCSS !== !1,
159 shivMethods: c.shivMethods !== !1,
160 type: "default",
161 shivDocument: j
162 };
163 a.html5 = k, j(b)
164 }(this, b), e._version = d, e._prefixes = m, e._domPrefixes = p, e._cssomPrefixes = o, e.testProp = function(a) {
165 return D([a])
166 }, e.testAllProps = F, e.testStyles = w, g.className = g.className.replace(/(^|\s)no-js(\s|$)/, "$1$2") + (f ? " js " + t.join(" ") : ""), e
167}(this, this.document); \ No newline at end of file
diff --git a/Back/ZJW/javascripts/modernizr.js b/Back/ZJW/javascripts/modernizr.js
new file mode 100644
index 0000000..3ecc284
--- /dev/null
+++ b/Back/ZJW/javascripts/modernizr.js
@@ -0,0 +1,8 @@
1/* Modernizr 2.7.1 (Custom Build) | MIT & BSD
2 * Build: http://modernizr.com/download/#-video-touch-shiv-cssclasses-teststyles-prefixes-cssclassprefix:w!mod!
3 */
4;window.Modernizr=function(a,b,c){function w(a){j.cssText=a}function x(a,b){return w(m.join(a+";")+(b||""))}function y(a,b){return typeof a===b}function z(a,b){return!!~(""+a).indexOf(b)}function A(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:y(f,"function")?f.bind(d||b):f}return!1}var d="2.7.1",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k,l={}.toString,m=" -webkit- -moz- -o- -ms- ".split(" "),n={},o={},p={},q=[],r=q.slice,s,t=function(a,c,d,e){var f,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),l.appendChild(j);return f=["&#173;",'<style id="s',h,'">',a,"</style>"].join(""),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=g.style.overflow,g.style.overflow="hidden",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},u={}.hasOwnProperty,v;!y(u,"undefined")&&!y(u.call,"undefined")?v=function(a,b){return u.call(a,b)}:v=function(a,b){return b in a&&y(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=r.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(r.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(r.call(arguments)))};return e}),n.touch=function(){var c;return"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:t(["@media (",m.join("touch-enabled),("),h,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=a.offsetTop===9}),c},n.video=function(){var a=b.createElement("video"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),c.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,"")}catch(d){}return c};for(var B in n)v(n,B)&&(s=B.toLowerCase(),e[s]=n[B](),q.push((e[s]?"":"no-")+s));return e.addTest=function(a,b){if(typeof a=="object")for(var d in a)v(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" w-mod-"+(b?"":"no-")+a),e[a]=b}return e},w(""),i=k=null,function(a,b){function l(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function m(){var a=s.elements;return typeof a=="string"?a.split(" "):a}function n(a){var b=j[a[h]];return b||(b={},i++,a[h]=i,j[i]=b),b}function o(a,c,d){c||(c=b);if(k)return c.createElement(a);d||(d=n(c));var g;return d.cache[a]?g=d.cache[a].cloneNode():f.test(a)?g=(d.cache[a]=d.createElem(a)).cloneNode():g=d.createElem(a),g.canHaveChildren&&!e.test(a)&&!g.tagUrn?d.frag.appendChild(g):g}function p(a,c){a||(a=b);if(k)return a.createDocumentFragment();c=c||n(a);var d=c.frag.cloneNode(),e=0,f=m(),g=f.length;for(;e<g;e++)d.createElement(f[e]);return d}function q(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return s.shivMethods?o(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/[\w\-]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(s,b.frag)}function r(a){a||(a=b);var c=n(a);return s.shivCSS&&!g&&!c.hasCSS&&(c.hasCSS=!!l(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),k||q(a,c),a}var c="3.7.0",d=a.html5||{},e=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,f=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,g,h="_html5shiv",i=0,j={},k;(function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",g="hidden"in a,k=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){g=!0,k=!0}})();var s={elements:d.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:c,shivCSS:d.shivCSS!==!1,supportsUnknownElements:k,shivMethods:d.shivMethods!==!1,type:"default",shivDocument:r,createElement:o,createDocumentFragment:p};a.html5=s,r(b)}(this,b),e._version=d,e._prefixes=m,e.testStyles=t,g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" w-mod-js w-mod-"+q.join(" w-mod-"):""),e}(this,this.document);
5/**
6 * Webflow: Custom tests
7 */
8Modernizr.addTest('ios', /(ipod|iphone|ipad)/i.test(navigator.userAgent));
diff --git a/Back/ZJW/javascripts/processing.min.js b/Back/ZJW/javascripts/processing.min.js
new file mode 100644
index 0000000..81e7fe8
--- /dev/null
+++ b/Back/ZJW/javascripts/processing.min.js
@@ -0,0 +1,12665 @@
1/***
2
3 P R O C E S S I N G . J S - 1.4.1
4 a port of the Processing visualization language
5
6 Processing.js is licensed under the MIT License, see LICENSE.
7 For a list of copyright holders, please refer to AUTHORS.
8
9 http://processingjs.org
10
11***/
12
13(function(D, d, q, t) {
14 var G = function() {};
15 var s = function() {
16 if ("console" in D) {
17 return function(N) {
18 D.console.log("Processing.js: " + N)
19 }
20 }
21 return G
22 }();
23 var w = function(N) {
24 var O = new XMLHttpRequest;
25 O.open("GET", N, false);
26 if (O.overrideMimeType) {
27 O.overrideMimeType("text/plain")
28 }
29 O.setRequestHeader("If-Modified-Since", "Fri, 01 Jan 1960 00:00:00 GMT");
30 O.send(null);
31 if (O.status !== 200 && O.status !== 0) {
32 throw "XMLHttpRequest failed, status code " + O.status
33 }
34 return O.responseText
35 };
36 var n = "document" in this && !("fake" in this.document);
37 d.head = d.head || d.getElementsByTagName("head")[0];
38
39 function C(N, O) {
40 if (N in D) {
41 return D[N]
42 }
43 if (typeof D[O] === "function") {
44 return D[O]
45 }
46 return function(Q) {
47 if (Q instanceof Array) {
48 return Q
49 }
50 if (typeof Q === "number") {
51 var P = [];
52 P.length = Q;
53 return P
54 }
55 }
56 }
57 if (d.documentMode >= 9 && !d.doctype) {
58 throw "The doctype directive is missing. The recommended doctype in Internet Explorer is the HTML5 doctype: <!DOCTYPE html>"
59 }
60 var e = C("Float32Array", "WebGLFloatArray"),
61 K = C("Int32Array", "WebGLIntArray"),
62 y = C("Uint16Array", "WebGLUnsignedShortArray"),
63 b = C("Uint8Array", "WebGLUnsignedByteArray");
64 var B = {
65 X: 0,
66 Y: 1,
67 Z: 2,
68 R: 3,
69 G: 4,
70 B: 5,
71 A: 6,
72 U: 7,
73 V: 8,
74 NX: 9,
75 NY: 10,
76 NZ: 11,
77 EDGE: 12,
78 SR: 13,
79 SG: 14,
80 SB: 15,
81 SA: 16,
82 SW: 17,
83 TX: 18,
84 TY: 19,
85 TZ: 20,
86 VX: 21,
87 VY: 22,
88 VZ: 23,
89 VW: 24,
90 AR: 25,
91 AG: 26,
92 AB: 27,
93 DR: 3,
94 DG: 4,
95 DB: 5,
96 DA: 6,
97 SPR: 28,
98 SPG: 29,
99 SPB: 30,
100 SHINE: 31,
101 ER: 32,
102 EG: 33,
103 EB: 34,
104 BEEN_LIT: 35,
105 VERTEX_FIELD_COUNT: 36,
106 P2D: 1,
107 JAVA2D: 1,
108 WEBGL: 2,
109 P3D: 2,
110 OPENGL: 2,
111 PDF: 0,
112 DXF: 0,
113 OTHER: 0,
114 WINDOWS: 1,
115 MAXOSX: 2,
116 LINUX: 3,
117 EPSILON: 0.0001,
118 MAX_FLOAT: 3.4028235e+38,
119 MIN_FLOAT: -3.4028235e+38,
120 MAX_INT: 2147483647,
121 MIN_INT: -2147483648,
122 PI: q.PI,
123 TWO_PI: 2 * q.PI,
124 HALF_PI: q.PI / 2,
125 THIRD_PI: q.PI / 3,
126 QUARTER_PI: q.PI / 4,
127 DEG_TO_RAD: q.PI / 180,
128 RAD_TO_DEG: 180 / q.PI,
129 WHITESPACE: " \t\n\r\u000c\u00a0",
130 RGB: 1,
131 ARGB: 2,
132 HSB: 3,
133 ALPHA: 4,
134 CMYK: 5,
135 TIFF: 0,
136 TARGA: 1,
137 JPEG: 2,
138 GIF: 3,
139 BLUR: 11,
140 GRAY: 12,
141 INVERT: 13,
142 OPAQUE: 14,
143 POSTERIZE: 15,
144 THRESHOLD: 16,
145 ERODE: 17,
146 DILATE: 18,
147 REPLACE: 0,
148 BLEND: 1 << 0,
149 ADD: 1 << 1,
150 SUBTRACT: 1 << 2,
151 LIGHTEST: 1 << 3,
152 DARKEST: 1 << 4,
153 DIFFERENCE: 1 << 5,
154 EXCLUSION: 1 << 6,
155 MULTIPLY: 1 << 7,
156 SCREEN: 1 << 8,
157 OVERLAY: 1 << 9,
158 HARD_LIGHT: 1 << 10,
159 SOFT_LIGHT: 1 << 11,
160 DODGE: 1 << 12,
161 BURN: 1 << 13,
162 ALPHA_MASK: 4278190080,
163 RED_MASK: 16711680,
164 GREEN_MASK: 65280,
165 BLUE_MASK: 255,
166 CUSTOM: 0,
167 ORTHOGRAPHIC: 2,
168 PERSPECTIVE: 3,
169 POINT: 2,
170 POINTS: 2,
171 LINE: 4,
172 LINES: 4,
173 TRIANGLE: 8,
174 TRIANGLES: 9,
175 TRIANGLE_STRIP: 10,
176 TRIANGLE_FAN: 11,
177 QUAD: 16,
178 QUADS: 16,
179 QUAD_STRIP: 17,
180 POLYGON: 20,
181 PATH: 21,
182 RECT: 30,
183 ELLIPSE: 31,
184 ARC: 32,
185 SPHERE: 40,
186 BOX: 41,
187 GROUP: 0,
188 PRIMITIVE: 1,
189 GEOMETRY: 3,
190 VERTEX: 0,
191 BEZIER_VERTEX: 1,
192 CURVE_VERTEX: 2,
193 BREAK: 3,
194 CLOSESHAPE: 4,
195 OPEN: 1,
196 CLOSE: 2,
197 CORNER: 0,
198 CORNERS: 1,
199 RADIUS: 2,
200 CENTER_RADIUS: 2,
201 CENTER: 3,
202 DIAMETER: 3,
203 CENTER_DIAMETER: 3,
204 BASELINE: 0,
205 TOP: 101,
206 BOTTOM: 102,
207 NORMAL: 1,
208 NORMALIZED: 1,
209 IMAGE: 2,
210 MODEL: 4,
211 SHAPE: 5,
212 SQUARE: "butt",
213 ROUND: "round",
214 PROJECT: "square",
215 MITER: "miter",
216 BEVEL: "bevel",
217 AMBIENT: 0,
218 DIRECTIONAL: 1,
219 SPOT: 3,
220 BACKSPACE: 8,
221 TAB: 9,
222 ENTER: 10,
223 RETURN: 13,
224 ESC: 27,
225 DELETE: 127,
226 CODED: 65535,
227 SHIFT: 16,
228 CONTROL: 17,
229 ALT: 18,
230 CAPSLK: 20,
231 PGUP: 33,
232 PGDN: 34,
233 END: 35,
234 HOME: 36,
235 LEFT: 37,
236 UP: 38,
237 RIGHT: 39,
238 DOWN: 40,
239 F1: 112,
240 F2: 113,
241 F3: 114,
242 F4: 115,
243 F5: 116,
244 F6: 117,
245 F7: 118,
246 F8: 119,
247 F9: 120,
248 F10: 121,
249 F11: 122,
250 F12: 123,
251 NUMLK: 144,
252 META: 157,
253 INSERT: 155,
254 ARROW: "default",
255 CROSS: "crosshair",
256 HAND: "pointer",
257 MOVE: "move",
258 TEXT: "text",
259 WAIT: "wait",
260 NOCURSOR: "url('data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=='), auto",
261 DISABLE_OPENGL_2X_SMOOTH: 1,
262 ENABLE_OPENGL_2X_SMOOTH: -1,
263 ENABLE_OPENGL_4X_SMOOTH: 2,
264 ENABLE_NATIVE_FONTS: 3,
265 DISABLE_DEPTH_TEST: 4,
266 ENABLE_DEPTH_TEST: -4,
267 ENABLE_DEPTH_SORT: 5,
268 DISABLE_DEPTH_SORT: -5,
269 DISABLE_OPENGL_ERROR_REPORT: 6,
270 ENABLE_OPENGL_ERROR_REPORT: -6,
271 ENABLE_ACCURATE_TEXTURES: 7,
272 DISABLE_ACCURATE_TEXTURES: -7,
273 HINT_COUNT: 10,
274 SINCOS_LENGTH: 720,
275 PRECISIONB: 15,
276 PRECISIONF: 1 << 15,
277 PREC_MAXVAL: (1 << 15) - 1,
278 PREC_ALPHA_SHIFT: 24 - 15,
279 PREC_RED_SHIFT: 16 - 15,
280 NORMAL_MODE_AUTO: 0,
281 NORMAL_MODE_SHAPE: 1,
282 NORMAL_MODE_VERTEX: 2,
283 MAX_LIGHTS: 8
284 };
285
286 function h(P) {
287 if (typeof P === "string") {
288 var O = 0;
289 for (var N = 0; N < P.length; ++N) {
290 O = O * 31 + P.charCodeAt(N) & 4294967295
291 }
292 return O
293 }
294 if (typeof P !== "object") {
295 return P & 4294967295
296 }
297 if (P.hashCode instanceof Function) {
298 return P.hashCode()
299 }
300 if (P.$id === t) {
301 P.$id = q.floor(q.random() * 65536) - 32768 << 16 | q.floor(q.random() * 65536)
302 }
303 return P.$id
304 }
305
306 function r(O, N) {
307 if (O === null || N === null) {
308 return O === null && N === null
309 }
310 if (typeof O === "string") {
311 return O === N
312 }
313 if (typeof O !== "object") {
314 return O === N
315 }
316 if (O.equals instanceof Function) {
317 return O.equals(N)
318 }
319 return O === N
320 }
321 var o = function(O) {
322 if (O.iterator instanceof Function) {
323 return O.iterator()
324 }
325 if (O instanceof Array) {
326 var N = -1;
327 this.hasNext = function() {
328 return ++N < O.length
329 };
330 this.next = function() {
331 return O[N]
332 }
333 } else {
334 throw "Unable to iterate: " + O
335 }
336 };
337 var f = function() {
338 function O(Q) {
339 var P = 0;
340 this.hasNext = function() {
341 return P < Q.length
342 };
343 this.next = function() {
344 return Q[P++]
345 };
346 this.remove = function() {
347 Q.splice(P, 1)
348 }
349 }
350
351 function N(P) {
352 var Q;
353 if (P instanceof N) {
354 Q = P.toArray()
355 } else {
356 Q = [];
357 if (typeof P === "number") {
358 Q.length = P > 0 ? P : 0
359 }
360 }
361 this.get = function(R) {
362 return Q[R]
363 };
364 this.contains = function(R) {
365 return this.indexOf(R) > -1
366 };
367 this.indexOf = function(T) {
368 for (var S = 0, R = Q.length; S < R; ++S) {
369 if (r(T, Q[S])) {
370 return S
371 }
372 }
373 return -1
374 };
375 this.lastIndexOf = function(S) {
376 for (var R = Q.length - 1; R >= 0; --R) {
377 if (r(S, Q[R])) {
378 return R
379 }
380 }
381 return -1
382 };
383 this.add = function() {
384 if (arguments.length === 1) {
385 Q.push(arguments[0])
386 } else {
387 if (arguments.length === 2) {
388 var R = arguments[0];
389 if (typeof R === "number") {
390 if (R >= 0 && R <= Q.length) {
391 Q.splice(R, 0, arguments[1])
392 } else {
393 throw R + " is not a valid index"
394 }
395 } else {
396 throw typeof R + " is not a number"
397 }
398 } else {
399 throw "Please use the proper number of parameters."
400 }
401 }
402 };
403 this.addAll = function(S, R) {
404 var T;
405 if (typeof S === "number") {
406 if (S < 0 || S > Q.length) {
407 throw "Index out of bounds for addAll: " + S + " greater or equal than " + Q.length
408 }
409 T = new o(R);
410 while (T.hasNext()) {
411 Q.splice(S++, 0, T.next())
412 }
413 } else {
414 T = new o(S);
415 while (T.hasNext()) {
416 Q.push(T.next())
417 }
418 }
419 };
420 this.set = function() {
421 if (arguments.length === 2) {
422 var R = arguments[0];
423 if (typeof R === "number") {
424 if (R >= 0 && R < Q.length) {
425 Q.splice(R, 1, arguments[1])
426 } else {
427 throw R + " is not a valid index."
428 }
429 } else {
430 throw typeof R + " is not a number"
431 }
432 } else {
433 throw "Please use the proper number of parameters."
434 }
435 };
436 this.size = function() {
437 return Q.length
438 };
439 this.clear = function() {
440 Q.length = 0
441 };
442 this.remove = function(R) {
443 if (typeof R === "number") {
444 return Q.splice(R, 1)[0]
445 }
446 R = this.indexOf(R);
447 if (R > -1) {
448 Q.splice(R, 1);
449 return true
450 }
451 return false
452 };
453 this.removeAll = function(V) {
454 var S, R, U, T = new N;
455 T.addAll(this);
456 this.clear();
457 for (S = 0, R = 0; S < T.size(); S++) {
458 U = T.get(S);
459 if (!V.contains(U)) {
460 this.add(R++, U)
461 }
462 }
463 if (this.size() < T.size()) {
464 return true
465 }
466 return false
467 };
468 this.isEmpty = function() {
469 return !Q.length
470 };
471 this.clone = function() {
472 return new N(this)
473 };
474 this.toArray = function() {
475 return Q.slice(0)
476 };
477 this.iterator = function() {
478 return new O(Q)
479 }
480 }
481 return N
482 }();
483 var x = function() {
484 function N() {
485 if (arguments.length === 1 && arguments[0] instanceof N) {
486 return arguments[0].clone()
487 }
488 var W = arguments.length > 0 ? arguments[0] : 16;
489 var X = arguments.length > 1 ? arguments[1] : 0.75;
490 var Q = [];
491 Q.length = W;
492 var S = 0;
493 var O = this;
494
495 function U(Z) {
496 var Y = h(Z) % Q.length;
497 return Y < 0 ? Q.length + Y : Y
498 }
499
500 function R() {
501 if (S <= X * Q.length) {
502 return
503 }
504 var ab = [];
505 for (var aa = 0; aa < Q.length; ++aa) {
506 if (Q[aa] !== t) {
507 ab = ab.concat(Q[aa])
508 }
509 }
510 var ac = Q.length * 2;
511 Q = [];
512 Q.length = ac;
513 for (var Z = 0; Z < ab.length; ++Z) {
514 var Y = U(ab[Z].key);
515 var ad = Q[Y];
516 if (ad === t) {
517 Q[Y] = ad = []
518 }
519 ad.push(ab[Z])
520 }
521 }
522
523 function P(ad, ae) {
524 var Y = 0;
525 var ac = -1;
526 var ab = false;
527 var aa;
528
529 function Z() {
530 while (!ab) {
531 ++ac;
532 if (Y >= Q.length) {
533 ab = true
534 } else {
535 if (Q[Y] === t || ac >= Q[Y].length) {
536 ac = -1;
537 ++Y
538 } else {
539 return
540 }
541 }
542 }
543 }
544 this.hasNext = function() {
545 return !ab
546 };
547 this.next = function() {
548 aa = ad(Q[Y][ac]);
549 Z();
550 return aa
551 };
552 this.remove = function() {
553 if (aa !== t) {
554 ae(aa);
555 --ac;
556 Z()
557 }
558 };
559 Z()
560 }
561
562 function V(Y, Z, aa) {
563 this.clear = function() {
564 O.clear()
565 };
566 this.contains = function(ab) {
567 return Z(ab)
568 };
569 this.containsAll = function(ac) {
570 var ab = ac.iterator();
571 while (ab.hasNext()) {
572 if (!this.contains(ab.next())) {
573 return false
574 }
575 }
576 return true
577 };
578 this.isEmpty = function() {
579 return O.isEmpty()
580 };
581 this.iterator = function() {
582 return new P(Y, aa)
583 };
584 this.remove = function(ab) {
585 if (this.contains(ab)) {
586 aa(ab);
587 return true
588 }
589 return false
590 };
591 this.removeAll = function(ae) {
592 var ab = ae.iterator();
593 var ad = false;
594 while (ab.hasNext()) {
595 var ac = ab.next();
596 if (this.contains(ac)) {
597 aa(ac);
598 ad = true
599 }
600 }
601 return true
602 };
603 this.retainAll = function(af) {
604 var ad = this.iterator();
605 var ac = [];
606 while (ad.hasNext()) {
607 var ae = ad.next();
608 if (!af.contains(ae)) {
609 ac.push(ae)
610 }
611 }
612 for (var ab = 0; ab < ac.length; ++ab) {
613 aa(ac[ab])
614 }
615 return ac.length > 0
616 };
617 this.size = function() {
618 return O.size()
619 };
620 this.toArray = function() {
621 var ab = [];
622 var ac = this.iterator();
623 while (ac.hasNext()) {
624 ab.push(ac.next())
625 }
626 return ab
627 }
628 }
629
630 function T(Y) {
631 this._isIn = function(Z) {
632 return Z === O && Y.removed === t
633 };
634 this.equals = function(Z) {
635 return r(Y.key, Z.getKey())
636 };
637 this.getKey = function() {
638 return Y.key
639 };
640 this.getValue = function() {
641 return Y.value
642 };
643 this.hashCode = function(Z) {
644 return h(Y.key)
645 };
646 this.setValue = function(aa) {
647 var Z = Y.value;
648 Y.value = aa;
649 return Z
650 }
651 }
652 this.clear = function() {
653 S = 0;
654 Q = [];
655 Q.length = W
656 };
657 this.clone = function() {
658 var Y = new N;
659 Y.putAll(this);
660 return Y
661 };
662 this.containsKey = function(aa) {
663 var Y = U(aa);
664 var ab = Q[Y];
665 if (ab === t) {
666 return false
667 }
668 for (var Z = 0; Z < ab.length; ++Z) {
669 if (r(ab[Z].key, aa)) {
670 return true
671 }
672 }
673 return false
674 };
675 this.containsValue = function(aa) {
676 for (var Z = 0; Z < Q.length; ++Z) {
677 var ab = Q[Z];
678 if (ab === t) {
679 continue
680 }
681 for (var Y = 0; Y < ab.length; ++Y) {
682 if (r(ab[Y].value, aa)) {
683 return true
684 }
685 }
686 }
687 return false
688 };
689 this.entrySet = function() {
690 return new V(function(Y) {
691 return new T(Y)
692 }, function(Y) {
693 return Y instanceof T && Y._isIn(O)
694 }, function(Y) {
695 return O.remove(Y.getKey())
696 })
697 };
698 this.get = function(aa) {
699 var Y = U(aa);
700 var ab = Q[Y];
701 if (ab === t) {
702 return null
703 }
704 for (var Z = 0; Z < ab.length; ++Z) {
705 if (r(ab[Z].key, aa)) {
706 return ab[Z].value
707 }
708 }
709 return null
710 };
711 this.isEmpty = function() {
712 return S === 0
713 };
714 this.keySet = function() {
715 return new V(function(Y) {
716 return Y.key
717 }, function(Y) {
718 return O.containsKey(Y)
719 }, function(Y) {
720 return O.remove(Y)
721 })
722 };
723 this.values = function() {
724 return new V(function(Y) {
725 return Y.value
726 }, function(Y) {
727 return O.containsValue(Y)
728 }, function(Y) {
729 return O.removeByValue(Y)
730 })
731 };
732 this.put = function(aa, ac) {
733 var Y = U(aa);
734 var ad = Q[Y];
735 if (ad === t) {
736 ++S;
737 Q[Y] = [{
738 key: aa,
739 value: ac
740 }];
741 R();
742 return null
743 }
744 for (var Z = 0; Z < ad.length; ++Z) {
745 if (r(ad[Z].key, aa)) {
746 var ab = ad[Z].value;
747 ad[Z].value = ac;
748 return ab
749 }
750 }++S;
751 ad.push({
752 key: aa,
753 value: ac
754 });
755 R();
756 return null
757 };
758 this.putAll = function(Y) {
759 var Z = Y.entrySet().iterator();
760 while (Z.hasNext()) {
761 var aa = Z.next();
762 this.put(aa.getKey(), aa.getValue())
763 }
764 };
765 this.remove = function(aa) {
766 var Y = U(aa);
767 var ac = Q[Y];
768 if (ac === t) {
769 return null
770 }
771 for (var Z = 0; Z < ac.length; ++Z) {
772 if (r(ac[Z].key, aa)) {
773 --S;
774 var ab = ac[Z].value;
775 ac[Z].removed = true;
776 if (ac.length > 1) {
777 ac.splice(Z, 1)
778 } else {
779 Q[Y] = t
780 }
781 return ab
782 }
783 }
784 return null
785 };
786 this.removeByValue = function(aa) {
787 var ac, Z, Y, ab;
788 for (ac in Q) {
789 if (Q.hasOwnProperty(ac)) {
790 for (Z = 0, Y = Q[ac].length; Z < Y; Z++) {
791 ab = Q[ac][Z];
792 if (ab.value === aa) {
793 Q[ac].splice(Z, 1);
794 return true
795 }
796 }
797 }
798 }
799 return false
800 };
801 this.size = function() {
802 return S
803 }
804 }
805 return N
806 }();
807 var A = function() {
808 function N(Q, S, R) {
809 this.x = Q || 0;
810 this.y = S || 0;
811 this.z = R || 0
812 }
813 N.dist = function(R, Q) {
814 return R.dist(Q)
815 };
816 N.dot = function(R, Q) {
817 return R.dot(Q)
818 };
819 N.cross = function(R, Q) {
820 return R.cross(Q)
821 };
822 N.angleBetween = function(R, Q) {
823 return q.acos(R.dot(Q) / (R.mag() * Q.mag()))
824 };
825 N.prototype = {
826 set: function(Q, S, R) {
827 if (arguments.length === 1) {
828 this.set(Q.x || Q[0] || 0, Q.y || Q[1] || 0, Q.z || Q[2] || 0)
829 } else {
830 this.x = Q;
831 this.y = S;
832 this.z = R
833 }
834 },
835 get: function() {
836 return new N(this.x, this.y, this.z)
837 },
838 mag: function() {
839 var Q = this.x,
840 S = this.y,
841 R = this.z;
842 return q.sqrt(Q * Q + S * S + R * R)
843 },
844 add: function(Q, S, R) {
845 if (arguments.length === 1) {
846 this.x += Q.x;
847 this.y += Q.y;
848 this.z += Q.z
849 } else {
850 this.x += Q;
851 this.y += S;
852 this.z += R
853 }
854 },
855 sub: function(Q, S, R) {
856 if (arguments.length === 1) {
857 this.x -= Q.x;
858 this.y -= Q.y;
859 this.z -= Q.z
860 } else {
861 this.x -= Q;
862 this.y -= S;
863 this.z -= R
864 }
865 },
866 mult: function(Q) {
867 if (typeof Q === "number") {
868 this.x *= Q;
869 this.y *= Q;
870 this.z *= Q
871 } else {
872 this.x *= Q.x;
873 this.y *= Q.y;
874 this.z *= Q.z
875 }
876 },
877 div: function(Q) {
878 if (typeof Q === "number") {
879 this.x /= Q;
880 this.y /= Q;
881 this.z /= Q
882 } else {
883 this.x /= Q.x;
884 this.y /= Q.y;
885 this.z /= Q.z
886 }
887 },
888 dist: function(T) {
889 var S = this.x - T.x,
890 R = this.y - T.y,
891 Q = this.z - T.z;
892 return q.sqrt(S * S + R * R + Q * Q)
893 },
894 dot: function(Q, S, R) {
895 if (arguments.length === 1) {
896 return this.x * Q.x + this.y * Q.y + this.z * Q.z
897 }
898 return this.x * Q + this.y * S + this.z * R
899 },
900 cross: function(R) {
901 var Q = this.x,
902 T = this.y,
903 S = this.z;
904 return new N(T * R.z - R.y * S, S * R.x - R.z * Q, Q * R.y - R.x * T)
905 },
906 normalize: function() {
907 var Q = this.mag();
908 if (Q > 0) {
909 this.div(Q)
910 }
911 },
912 limit: function(Q) {
913 if (this.mag() > Q) {
914 this.normalize();
915 this.mult(Q)
916 }
917 },
918 heading2D: function() {
919 return -q.atan2(-this.y, this.x)
920 },
921 toString: function() {
922 return "[" + this.x + ", " + this.y + ", " + this.z + "]"
923 },
924 array: function() {
925 return [this.x, this.y, this.z]
926 }
927 };
928
929 function O(Q) {
930 return function(T, S) {
931 var R = T.get();
932 R[Q](S);
933 return R
934 }
935 }
936 for (var P in N.prototype) {
937 if (N.prototype.hasOwnProperty(P) && !N.hasOwnProperty(P)) {
938 N[P] = O(P)
939 }
940 }
941 return N
942 }();
943
944 function M() {}
945 M.prototype = B;
946 var g = new M;
947 g.ArrayList = f;
948 g.HashMap = x;
949 g.PVector = A;
950 g.ObjectIterator = o;
951 g.PConstants = B;
952 g.defineProperty = function(O, N, P) {
953 if ("defineProperty" in Object) {
954 Object.defineProperty(O, N, P)
955 } else {
956 if (P.hasOwnProperty("get")) {
957 O.__defineGetter__(N, P.get)
958 }
959 if (P.hasOwnProperty("set")) {
960 O.__defineSetter__(N, P.set)
961 }
962 }
963 };
964
965 function m(O, N, R) {
966 if (!O.hasOwnProperty(N) || typeof O[N] !== "function") {
967 O[N] = R;
968 return
969 }
970 var Q = O[N];
971 if ("$overloads" in Q) {
972 Q.$defaultOverload = R;
973 return
974 }
975 if (!("$overloads" in R) && Q.length === R.length) {
976 return
977 }
978 var T, P;
979 if ("$overloads" in R) {
980 T = R.$overloads.slice(0);
981 T[Q.length] = Q;
982 P = R.$defaultOverload
983 } else {
984 T = [];
985 T[R.length] = R;
986 T[Q.length] = Q;
987 P = Q
988 }
989 var S = function() {
990 var U = S.$overloads[arguments.length] || ("$methodArgsIndex" in S && arguments.length > S.$methodArgsIndex ? S.$overloads[S.$methodArgsIndex] : null) || S.$defaultOverload;
991 return U.apply(this, arguments)
992 };
993 S.$overloads = T;
994 if ("$methodArgsIndex" in R) {
995 S.$methodArgsIndex = R.$methodArgsIndex
996 }
997 S.$defaultOverload = P;
998 S.name = N;
999 O[N] = S
1000 }
1001
1002 function i(Q, P) {
1003 function R(S) {
1004 g.defineProperty(Q, S, {
1005 get: function() {
1006 return P[S]
1007 },
1008 set: function(T) {
1009 P[S] = T
1010 },
1011 enumerable: true
1012 })
1013 }
1014 var O = [];
1015 for (var N in P) {
1016 if (typeof P[N] === "function") {
1017 m(Q, N, P[N])
1018 } else {
1019 if (N.charAt(0) !== "$" && !(N in Q)) {
1020 O.push(N)
1021 }
1022 }
1023 }
1024 while (O.length > 0) {
1025 R(O.shift())
1026 }
1027 Q.$super = P
1028 }
1029 g.extendClassChain = function(O) {
1030 var P = [O];
1031 for (var N = O.$upcast; N; N = N.$upcast) {
1032 i(N, O);
1033 P.push(N);
1034 O = N
1035 }
1036 while (P.length > 0) {
1037 P.pop().$self = O
1038 }
1039 };
1040 g.extendStaticMembers = function(N, O) {
1041 i(N, O)
1042 };
1043 g.extendInterfaceMembers = function(N, O) {
1044 i(N, O)
1045 };
1046 g.addMethod = function(Q, P, S, R) {
1047 var N = Q[P];
1048 if (N || R) {
1049 var O = S.length;
1050 if ("$overloads" in N) {
1051 N.$overloads[O] = S
1052 } else {
1053 var T = function() {
1054 var V = T.$overloads[arguments.length] || ("$methodArgsIndex" in T && arguments.length > T.$methodArgsIndex ? T.$overloads[T.$methodArgsIndex] : null) || T.$defaultOverload;
1055 return V.apply(this, arguments)
1056 };
1057 var U = [];
1058 if (N) {
1059 U[N.length] = N
1060 }
1061 U[O] = S;
1062 T.$overloads = U;
1063 T.$defaultOverload = N || S;
1064 if (R) {
1065 T.$methodArgsIndex = O
1066 }
1067 T.name = P;
1068 Q[P] = T
1069 }
1070 } else {
1071 Q[P] = S
1072 }
1073 };
1074
1075 function l(N) {
1076 if (typeof N !== "string") {
1077 return false
1078 }
1079 return ["byte", "int", "char", "color", "float", "long", "double"].indexOf(N) !== -1
1080 }
1081 g.createJavaArray = function(S, T) {
1082 var O = null,
1083 P = null;
1084 if (typeof S === "string") {
1085 if (S === "boolean") {
1086 P = false
1087 } else {
1088 if (l(S)) {
1089 P = 0
1090 }
1091 }
1092 }
1093 if (typeof T[0] === "number") {
1094 var N = 0 | T[0];
1095 if (T.length <= 1) {
1096 O = [];
1097 O.length = N;
1098 for (var R = 0; R < N; ++R) {
1099 O[R] = P
1100 }
1101 } else {
1102 O = [];
1103 var U = T.slice(1);
1104 for (var Q = 0; Q < N; ++Q) {
1105 O.push(g.createJavaArray(S, U))
1106 }
1107 }
1108 }
1109 return O
1110 };
1111 var E = {
1112 aliceblue: "#f0f8ff",
1113 antiquewhite: "#faebd7",
1114 aqua: "#00ffff",
1115 aquamarine: "#7fffd4",
1116 azure: "#f0ffff",
1117 beige: "#f5f5dc",
1118 bisque: "#ffe4c4",
1119 black: "#000000",
1120 blanchedalmond: "#ffebcd",
1121 blue: "#0000ff",
1122 blueviolet: "#8a2be2",
1123 brown: "#a52a2a",
1124 burlywood: "#deb887",
1125 cadetblue: "#5f9ea0",
1126 chartreuse: "#7fff00",
1127 chocolate: "#d2691e",
1128 coral: "#ff7f50",
1129 cornflowerblue: "#6495ed",
1130 cornsilk: "#fff8dc",
1131 crimson: "#dc143c",
1132 cyan: "#00ffff",
1133 darkblue: "#00008b",
1134 darkcyan: "#008b8b",
1135 darkgoldenrod: "#b8860b",
1136 darkgray: "#a9a9a9",
1137 darkgreen: "#006400",
1138 darkkhaki: "#bdb76b",
1139 darkmagenta: "#8b008b",
1140 darkolivegreen: "#556b2f",
1141 darkorange: "#ff8c00",
1142 darkorchid: "#9932cc",
1143 darkred: "#8b0000",
1144 darksalmon: "#e9967a",
1145 darkseagreen: "#8fbc8f",
1146 darkslateblue: "#483d8b",
1147 darkslategray: "#2f4f4f",
1148 darkturquoise: "#00ced1",
1149 darkviolet: "#9400d3",
1150 deeppink: "#ff1493",
1151 deepskyblue: "#00bfff",
1152 dimgray: "#696969",
1153 dodgerblue: "#1e90ff",
1154 firebrick: "#b22222",
1155 floralwhite: "#fffaf0",
1156 forestgreen: "#228b22",
1157 fuchsia: "#ff00ff",
1158 gainsboro: "#dcdcdc",
1159 ghostwhite: "#f8f8ff",
1160 gold: "#ffd700",
1161 goldenrod: "#daa520",
1162 gray: "#808080",
1163 green: "#008000",
1164 greenyellow: "#adff2f",
1165 honeydew: "#f0fff0",
1166 hotpink: "#ff69b4",
1167 indianred: "#cd5c5c",
1168 indigo: "#4b0082",
1169 ivory: "#fffff0",
1170 khaki: "#f0e68c",
1171 lavender: "#e6e6fa",
1172 lavenderblush: "#fff0f5",
1173 lawngreen: "#7cfc00",
1174 lemonchiffon: "#fffacd",
1175 lightblue: "#add8e6",
1176 lightcoral: "#f08080",
1177 lightcyan: "#e0ffff",
1178 lightgoldenrodyellow: "#fafad2",
1179 lightgrey: "#d3d3d3",
1180 lightgreen: "#90ee90",
1181 lightpink: "#ffb6c1",
1182 lightsalmon: "#ffa07a",
1183 lightseagreen: "#20b2aa",
1184 lightskyblue: "#87cefa",
1185 lightslategray: "#778899",
1186 lightsteelblue: "#b0c4de",
1187 lightyellow: "#ffffe0",
1188 lime: "#00ff00",
1189 limegreen: "#32cd32",
1190 linen: "#faf0e6",
1191 magenta: "#ff00ff",
1192 maroon: "#800000",
1193 mediumaquamarine: "#66cdaa",
1194 mediumblue: "#0000cd",
1195 mediumorchid: "#ba55d3",
1196 mediumpurple: "#9370d8",
1197 mediumseagreen: "#3cb371",
1198 mediumslateblue: "#7b68ee",
1199 mediumspringgreen: "#00fa9a",
1200 mediumturquoise: "#48d1cc",
1201 mediumvioletred: "#c71585",
1202 midnightblue: "#191970",
1203 mintcream: "#f5fffa",
1204 mistyrose: "#ffe4e1",
1205 moccasin: "#ffe4b5",
1206 navajowhite: "#ffdead",
1207 navy: "#000080",
1208 oldlace: "#fdf5e6",
1209 olive: "#808000",
1210 olivedrab: "#6b8e23",
1211 orange: "#ffa500",
1212 orangered: "#ff4500",
1213 orchid: "#da70d6",
1214 palegoldenrod: "#eee8aa",
1215 palegreen: "#98fb98",
1216 paleturquoise: "#afeeee",
1217 palevioletred: "#d87093",
1218 papayawhip: "#ffefd5",
1219 peachpuff: "#ffdab9",
1220 peru: "#cd853f",
1221 pink: "#ffc0cb",
1222 plum: "#dda0dd",
1223 powderblue: "#b0e0e6",
1224 purple: "#800080",
1225 red: "#ff0000",
1226 rosybrown: "#bc8f8f",
1227 royalblue: "#4169e1",
1228 saddlebrown: "#8b4513",
1229 salmon: "#fa8072",
1230 sandybrown: "#f4a460",
1231 seagreen: "#2e8b57",
1232 seashell: "#fff5ee",
1233 sienna: "#a0522d",
1234 silver: "#c0c0c0",
1235 skyblue: "#87ceeb",
1236 slateblue: "#6a5acd",
1237 slategray: "#708090",
1238 snow: "#fffafa",
1239 springgreen: "#00ff7f",
1240 steelblue: "#4682b4",
1241 tan: "#d2b48c",
1242 teal: "#008080",
1243 thistle: "#d8bfd8",
1244 tomato: "#ff6347",
1245 turquoise: "#40e0d0",
1246 violet: "#ee82ee",
1247 wheat: "#f5deb3",
1248 white: "#ffffff",
1249 whitesmoke: "#f5f5f5",
1250 yellow: "#ffff00",
1251 yellowgreen: "#9acd32"
1252 };
1253 (function(O) {
1254 var R = ("open() createOutput() createInput() BufferedReader selectFolder() dataPath() createWriter() selectOutput() beginRecord() saveStream() endRecord() selectInput() saveBytes() createReader() beginRaw() endRaw() PrintWriter delay()").split(" "),
1255 Q = R.length,
1256 N, S;
1257
1258 function P(T) {
1259 return function() {
1260 throw "Processing.js does not support " + T + "."
1261 }
1262 }
1263 while (Q--) {
1264 N = R[Q];
1265 S = N.replace("()", "");
1266 O[S] = P(N)
1267 }
1268 })(g);
1269 g.defineProperty(g, "screenWidth", {
1270 get: function() {
1271 return D.innerWidth
1272 }
1273 });
1274 g.defineProperty(g, "screenHeight", {
1275 get: function() {
1276 return D.innerHeight
1277 }
1278 });
1279 g.defineProperty(g, "online", {
1280 get: function() {
1281 return true
1282 }
1283 });
1284 var k = [];
1285 var J = {};
1286 var L = function(N) {
1287 k.splice(J[N], 1);
1288 delete J[N]
1289 };
1290 var a = function(N) {
1291 if (N.externals.canvas.id === t || !N.externals.canvas.id.length) {
1292 N.externals.canvas.id = "__processing" + k.length
1293 }
1294 J[N.externals.canvas.id] = k.length;
1295 k.push(N)
1296 };
1297
1298 function p(X) {
1299 var Q = 250,
1300 ae = X.size / Q,
1301 N = d.createElement("canvas");
1302 N.width = 2 * Q;
1303 N.height = 2 * Q;
1304 N.style.opacity = 0;
1305 var W = X.getCSSDefinition(Q + "px", "normal"),
1306 Y = N.getContext("2d");
1307 Y.font = W;
1308 var ac = "dbflkhyjqpg";
1309 N.width = Y.measureText(ac).width;
1310 Y.font = W;
1311 var T = d.createElement("div");
1312 T.style.position = "absolute";
1313 T.style.opacity = 0;
1314 T.style.fontFamily = '"' + X.name + '"';
1315 T.style.fontSize = Q + "px";
1316 T.innerHTML = ac + "<br/>" + ac;
1317 d.body.appendChild(T);
1318 var U = N.width,
1319 ab = N.height,
1320 V = ab / 2;
1321 Y.fillStyle = "white";
1322 Y.fillRect(0, 0, U, ab);
1323 Y.fillStyle = "black";
1324 Y.fillText(ac, 0, V);
1325 var P = Y.getImageData(0, 0, U, ab).data;
1326 var Z = 0,
1327 S = U * 4,
1328 aa = P.length;
1329 while (++Z < aa && P[Z] === 255) {
1330 G()
1331 }
1332 var R = q.round(Z / S);
1333 Z = aa - 1;
1334 while (--Z > 0 && P[Z] === 255) {
1335 G()
1336 }
1337 var ad = q.round(Z / S);
1338 X.ascent = ae * (V - R);
1339 X.descent = ae * (ad - V);
1340 if (d.defaultView.getComputedStyle) {
1341 var O = d.defaultView.getComputedStyle(T, null).getPropertyValue("height");
1342 O = ae * O.replace("px", "");
1343 if (O >= X.size * 2) {
1344 X.leading = q.round(O / 2)
1345 }
1346 }
1347 d.body.removeChild(T);
1348 if (X.caching) {
1349 return Y
1350 }
1351 }
1352
1353 function H(N, O) {
1354 if (N === t) {
1355 N = ""
1356 }
1357 this.name = N;
1358 if (O === t) {
1359 O = 0
1360 }
1361 this.size = O;
1362 this.glyph = false;
1363 this.ascent = 0;
1364 this.descent = 0;
1365 this.leading = 1.2 * O;
1366 var R = N.indexOf(" Italic Bold");
1367 if (R !== -1) {
1368 N = N.substring(0, R)
1369 }
1370 this.style = "normal";
1371 var Q = N.indexOf(" Italic");
1372 if (Q !== -1) {
1373 N = N.substring(0, Q);
1374 this.style = "italic"
1375 }
1376 this.weight = "normal";
1377 var P = N.indexOf(" Bold");
1378 if (P !== -1) {
1379 N = N.substring(0, P);
1380 this.weight = "bold"
1381 }
1382 this.family = "sans-serif";
1383 if (N !== t) {
1384 switch (N) {
1385 case "sans-serif":
1386 case "serif":
1387 case "monospace":
1388 case "fantasy":
1389 case "cursive":
1390 this.family = N;
1391 break;
1392 default:
1393 this.family = '"' + N + '", sans-serif';
1394 break
1395 }
1396 }
1397 this.context2d = p(this);
1398 this.css = this.getCSSDefinition();
1399 if (this.context2d) {
1400 this.context2d.font = this.css
1401 }
1402 }
1403 H.prototype.caching = true;
1404 H.prototype.getCSSDefinition = function(P, N) {
1405 if (P === t) {
1406 P = this.size + "px"
1407 }
1408 if (N === t) {
1409 N = this.leading + "px"
1410 }
1411 var O = [this.style, "normal", this.weight, P + "/" + N, this.family];
1412 return O.join(" ")
1413 };
1414 H.prototype.measureTextWidth = function(N) {
1415 return this.context2d.measureText(N).width
1416 };
1417 H.prototype.measureTextWidthFallback = function(P) {
1418 var O = d.createElement("canvas"),
1419 N = O.getContext("2d");
1420 N.font = this.css;
1421 return N.measureText(P).width
1422 };
1423 H.PFontCache = {
1424 length: 0
1425 };
1426 H.get = function(Q, R) {
1427 R = (R * 10 + 0.5 | 0) / 10;
1428 var O = H.PFontCache,
1429 N = Q + "/" + R;
1430 if (!O[N]) {
1431 O[N] = new H(Q, R);
1432 O.length++;
1433 if (O.length === 50) {
1434 H.prototype.measureTextWidth = H.prototype.measureTextWidthFallback;
1435 H.prototype.caching = false;
1436 var P;
1437 for (P in O) {
1438 if (P !== "length") {
1439 O[P].context2d = null
1440 }
1441 }
1442 return new H(Q, R)
1443 }
1444 if (O.length === 400) {
1445 H.PFontCache = {};
1446 H.get = H.getFallback;
1447 return new H(Q, R)
1448 }
1449 }
1450 return O[N]
1451 };
1452 H.getFallback = function(N, O) {
1453 return new H(N, O)
1454 };
1455 H.list = function() {
1456 return ["sans-serif", "serif", "monospace", "fantasy", "cursive"]
1457 };
1458 H.preloading = {
1459 template: {},
1460 initialized: false,
1461 initialize: function() {
1462 var P = function() {
1463 var R = "#E3KAI2wAgT1MvMg7Eo3VmNtYX7ABi3CxnbHlm7Abw3kaGVhZ7ACs3OGhoZWE7A53CRobXR47AY3AGbG9jYQ7G03Bm1heH7ABC3CBuYW1l7Ae3AgcG9zd7AI3AE#B3AQ2kgTY18PPPUACwAg3ALSRoo3#yld0xg32QAB77#E777773B#E3C#I#Q77773E#Q7777777772CMAIw7AB77732B#M#Q3wAB#g3B#E#E2BB//82BB////w#B7#gAEg3E77x2B32B#E#Q#MTcBAQ32gAe#M#QQJ#E32M#QQJ#I#g32Q77#";
1464 var Q = function(S) {
1465 return "AAAAAAAA".substr(~~S ? 7 - S : 6)
1466 };
1467 return R.replace(/[#237]/g, Q)
1468 };
1469 var N = d.createElement("style");
1470 N.setAttribute("type", "text/css");
1471 N.innerHTML = '@font-face {\n font-family: "PjsEmptyFont";\n src: url(\'data:application/x-font-ttf;base64,' + P() + "')\n format('truetype');\n}";
1472 d.head.appendChild(N);
1473 var O = d.createElement("span");
1474 O.style.cssText = 'position: absolute; top: 0; left: 0; opacity: 0; font-family: "PjsEmptyFont", fantasy;';
1475 O.innerHTML = "AAAAAAAA";
1476 d.body.appendChild(O);
1477 this.template = O;
1478 this.initialized = true
1479 },
1480 getElementWidth: function(N) {
1481 return d.defaultView.getComputedStyle(N, "").getPropertyValue("width")
1482 },
1483 timeAttempted: 0,
1484 pending: function(R) {
1485 if (!this.initialized) {
1486 this.initialize()
1487 }
1488 var P, N, Q = this.getElementWidth(this.template);
1489 for (var O = 0; O < this.fontList.length; O++) {
1490 P = this.fontList[O];
1491 N = this.getElementWidth(P);
1492 if (this.timeAttempted < 4000 && N === Q) {
1493 this.timeAttempted += R;
1494 return true
1495 } else {
1496 d.body.removeChild(P);
1497 this.fontList.splice(O--, 1);
1498 this.timeAttempted = 0
1499 }
1500 }
1501 if (this.fontList.length === 0) {
1502 return false
1503 }
1504 return true
1505 },
1506 fontList: [],
1507 addedList: {},
1508 add: function(N) {
1509 if (!this.initialized) {
1510 this.initialize()
1511 }
1512 var R = typeof N === "object" ? N.fontFace : N,
1513 Q = typeof N === "object" ? N.url : N;
1514 if (this.addedList[R]) {
1515 return
1516 }
1517 var P = d.createElement("style");
1518 P.setAttribute("type", "text/css");
1519 P.innerHTML = "@font-face{\n font-family: '" + R + "';\n src: url('" + Q + "');\n}\n";
1520 d.head.appendChild(P);
1521 this.addedList[R] = true;
1522 var O = d.createElement("span");
1523 O.style.cssText = "position: absolute; top: 0; left: 0; opacity: 0;";
1524 O.style.fontFamily = '"' + R + '", "PjsEmptyFont", fantasy';
1525 O.innerHTML = "AAAAAAAA";
1526 d.body.appendChild(O);
1527 this.fontList.push(O)
1528 }
1529 };
1530 g.PFont = H;
1531 var F = this.Processing = function(be, ba) {
1532 if (!(this instanceof F)) {
1533 throw "called Processing constructor as if it were a function: missing 'new'."
1534 }
1535 var ae, cV = be === t && ba === t;
1536 if (cV) {
1537 ae = d.createElement("canvas")
1538 } else {
1539 ae = typeof be === "string" ? d.getElementById(be) : be
1540 } if (!(ae instanceof HTMLCanvasElement)) {
1541 throw "called Processing constructor without passing canvas element reference or id."
1542 }
1543
1544 function dw(ea) {
1545 F.debug("Unimplemented - " + ea)
1546 }
1547 var cW = this;
1548 cW.externals = {
1549 canvas: ae,
1550 context: t,
1551 sketch: t
1552 };
1553 cW.name = "Processing.js Instance";
1554 cW.use3DContext = false;
1555 cW.focused = false;
1556 cW.breakShape = false;
1557 cW.glyphTable = {};
1558 cW.pmouseX = 0;
1559 cW.pmouseY = 0;
1560 cW.mouseX = 0;
1561 cW.mouseY = 0;
1562 cW.mouseButton = 0;
1563 cW.mouseScroll = 0;
1564 cW.mouseClicked = t;
1565 cW.mouseDragged = t;
1566 cW.mouseMoved = t;
1567 cW.mousePressed = t;
1568 cW.mouseReleased = t;
1569 cW.mouseScrolled = t;
1570 cW.mouseOver = t;
1571 cW.mouseOut = t;
1572 cW.touchStart = t;
1573 cW.touchEnd = t;
1574 cW.touchMove = t;
1575 cW.touchCancel = t;
1576 cW.key = t;
1577 cW.keyCode = t;
1578 cW.keyPressed = G;
1579 cW.keyReleased = G;
1580 cW.keyTyped = G;
1581 cW.draw = t;
1582 cW.setup = t;
1583 cW.__mousePressed = false;
1584 cW.__keyPressed = false;
1585 cW.__frameRate = 60;
1586 cW.frameCount = 0;
1587 cW.width = 100;
1588 cW.height = 100;
1589 var d8, cQ, dY, bD = true,
1590 aH = true,
1591 bo = [1, 1, 1, 1],
1592 a1 = 4294967295,
1593 aq = true,
1594 ce = true,
1595 c0 = [0, 0, 0, 1],
1596 cv = 4278190080,
1597 b3 = true,
1598 dW = 1,
1599 ax = false,
1600 dO = false,
1601 aC = true,
1602 b4 = 0,
1603 bK = 0,
1604 cN = 3,
1605 a8 = 0,
1606 a7 = 0,
1607 a6 = 0,
1608 a2 = 0,
1609 dU = 60,
1610 az = 1000 / dU,
1611 Z = "default",
1612 ck = ae.style.cursor,
1613 dR = 20,
1614 cj = 0,
1615 d6 = [],
1616 aJ = 0,
1617 Q = 20,
1618 cM = false,
1619 a4 = -3355444,
1620 cy = 20,
1621 bU = 255,
1622 bJ = 255,
1623 bI = 255,
1624 bG = 255,
1625 cZ = false,
1626 aK = false,
1627 dN = 0,
1628 d5 = 0,
1629 cY = 1,
1630 bf = null,
1631 bw = null,
1632 a5 = false,
1633 dq = Date.now(),
1634 dt = dq,
1635 P = 0,
1636 cE, c3, aQ, aL, bz, cd, U, dC = {
1637 attributes: {},
1638 locations: {}
1639 },
1640 dx, dQ, bT, bh, cJ, dk, aB, b2, bg, b8, at, aG, bC, aw, af, c7, bS, cs = {
1641 width: 0,
1642 height: 0
1643 },
1644 d4 = 2,
1645 dT = false,
1646 cH, ac, R, N = 37,
1647 c1 = 0,
1648 cI = 4,
1649 Y = "Arial",
1650 d0 = 12,
1651 a3 = 9,
1652 dA = 2,
1653 d7 = 14,
1654 W = H.get(Y, d0),
1655 aj, cn = null,
1656 dV = false,
1657 d3, bZ = 1000,
1658 ag = [],
1659 dI = null,
1660 dX = [16, 17, 18, 20, 33, 34, 35, 36, 37, 38, 39, 40, 144, 155, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 157];
1661 var ad, dp, aU, bX;
1662 if (d.defaultView && d.defaultView.getComputedStyle) {
1663 ad = parseInt(d.defaultView.getComputedStyle(ae, null)["paddingLeft"], 10) || 0;
1664 dp = parseInt(d.defaultView.getComputedStyle(ae, null)["paddingTop"], 10) || 0;
1665 aU = parseInt(d.defaultView.getComputedStyle(ae, null)["borderLeftWidth"], 10) || 0;
1666 bX = parseInt(d.defaultView.getComputedStyle(ae, null)["borderTopWidth"], 10) || 0
1667 }
1668 var dL = 0;
1669 var bL = 0,
1670 bM = 0,
1671 bt = [],
1672 bs = [],
1673 br = [],
1674 ah = new e(720),
1675 bl = new e(720),
1676 cF, cA;
1677 var bV, ch, dJ, aT, am, da, ab, db, ap = false,
1678 ci = false,
1679 cK = 60 * (q.PI / 180),
1680 dl = cW.width / 2,
1681 dj = cW.height / 2,
1682 di = dj / q.tan(cK / 2),
1683 a0 = di / 10,
1684 av = di * 10,
1685 b5 = cW.width / cW.height;
1686 var bb = [],
1687 cb = [],
1688 c2 = 0,
1689 dP = false,
1690 aa = false,
1691 du = true;
1692 var S = 0;
1693 var bm = [];
1694 var dh = new e([0.5, 0.5, -0.5, 0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.5, -0.5, 0.5, 0.5, -0.5, 0.5, 0.5, 0.5, -0.5, 0.5, 0.5, -0.5, -0.5, 0.5, -0.5, -0.5, 0.5, 0.5, -0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, -0.5, 0.5, 0.5, 0.5, 0.5, -0.5, 0.5, 0.5, -0.5, 0.5, 0.5, -0.5, -0.5, 0.5, 0.5, -0.5, 0.5, -0.5, -0.5, 0.5, -0.5, 0.5, -0.5, -0.5, 0.5, -0.5, -0.5, 0.5, -0.5, -0.5, -0.5, 0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.5, -0.5, 0.5, 0.5, -0.5, 0.5, 0.5, -0.5, 0.5, -0.5, -0.5, -0.5, -0.5, 0.5, 0.5, 0.5, 0.5, 0.5, -0.5, -0.5, 0.5, -0.5, -0.5, 0.5, -0.5, -0.5, 0.5, 0.5, 0.5, 0.5, 0.5]);
1695 var bH = new e([0.5, 0.5, 0.5, 0.5, -0.5, 0.5, 0.5, 0.5, -0.5, 0.5, -0.5, -0.5, -0.5, 0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.5, 0.5, -0.5, -0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, -0.5, 0.5, 0.5, -0.5, -0.5, 0.5, -0.5, -0.5, 0.5, -0.5, -0.5, 0.5, 0.5, -0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, -0.5, 0.5, 0.5, -0.5, -0.5, 0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.5, -0.5, -0.5, 0.5, 0.5, -0.5, 0.5]);
1696 var df = new e([0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0]);
1697 var ak = new e([0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0]);
1698 var ai = new e([0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1]);
1699 var aO = "varying vec4 vFrontColor;attribute vec3 aVertex;attribute vec4 aColor;uniform mat4 uView;uniform mat4 uProjection;uniform float uPointSize;void main(void) { vFrontColor = aColor; gl_PointSize = uPointSize; gl_Position = uProjection * uView * vec4(aVertex, 1.0);}";
1700 var bQ = "#ifdef GL_ES\nprecision highp float;\n#endif\nvarying vec4 vFrontColor;uniform bool uSmooth;void main(void){ if(uSmooth == true){ float dist = distance(gl_PointCoord, vec2(0.5)); if(dist > 0.5){ discard; } } gl_FragColor = vFrontColor;}";
1701 var dE = "varying vec4 vFrontColor;attribute vec3 aVertex;attribute vec2 aTextureCoord;uniform vec4 uColor;uniform mat4 uModel;uniform mat4 uView;uniform mat4 uProjection;uniform float uPointSize;varying vec2 vTextureCoord;void main(void) { gl_PointSize = uPointSize; vFrontColor = uColor; gl_Position = uProjection * uView * uModel * vec4(aVertex, 1.0); vTextureCoord = aTextureCoord;}";
1702 var aW = "#ifdef GL_ES\nprecision highp float;\n#endif\nvarying vec4 vFrontColor;varying vec2 vTextureCoord;uniform sampler2D uSampler;uniform int uIsDrawingText;uniform bool uSmooth;void main(void){ if(uSmooth == true){ float dist = distance(gl_PointCoord, vec2(0.5)); if(dist > 0.5){ discard; } } if(uIsDrawingText == 1){ float alpha = texture2D(uSampler, vTextureCoord).a; gl_FragColor = vec4(vFrontColor.rgb * alpha, alpha); } else{ gl_FragColor = vFrontColor; }}";
1703 var bA = /Windows/.test(navigator.userAgent);
1704 var dn = "varying vec4 vFrontColor;attribute vec3 aVertex;attribute vec3 aNormal;attribute vec4 aColor;attribute vec2 aTexture;varying vec2 vTexture;uniform vec4 uColor;uniform bool uUsingMat;uniform vec3 uSpecular;uniform vec3 uMaterialEmissive;uniform vec3 uMaterialAmbient;uniform vec3 uMaterialSpecular;uniform float uShininess;uniform mat4 uModel;uniform mat4 uView;uniform mat4 uProjection;uniform mat4 uNormalTransform;uniform int uLightCount;uniform vec3 uFalloff;struct Light { int type; vec3 color; vec3 position; vec3 direction; float angle; vec3 halfVector; float concentration;};uniform Light uLights0;uniform Light uLights1;uniform Light uLights2;uniform Light uLights3;uniform Light uLights4;uniform Light uLights5;uniform Light uLights6;uniform Light uLights7;Light getLight(int index){ if(index == 0) return uLights0; if(index == 1) return uLights1; if(index == 2) return uLights2; if(index == 3) return uLights3; if(index == 4) return uLights4; if(index == 5) return uLights5; if(index == 6) return uLights6; return uLights7;}void AmbientLight( inout vec3 totalAmbient, in vec3 ecPos, in Light light ) { float d = length( light.position - ecPos ); float attenuation = 1.0 / ( uFalloff[0] + ( uFalloff[1] * d ) + ( uFalloff[2] * d * d )); totalAmbient += light.color * attenuation;}void DirectionalLight( inout vec3 col, inout vec3 spec, in vec3 vertNormal, in vec3 ecPos, in Light light ) { float powerFactor = 0.0; float nDotVP = max(0.0, dot( vertNormal, normalize(-light.position) )); float nDotVH = max(0.0, dot( vertNormal, normalize(-light.position-normalize(ecPos) ))); if( nDotVP != 0.0 ){ powerFactor = pow( nDotVH, uShininess ); } col += light.color * nDotVP; spec += uSpecular * powerFactor;}void PointLight( inout vec3 col, inout vec3 spec, in vec3 vertNormal, in vec3 ecPos, in Light light ) { float powerFactor; vec3 VP = light.position - ecPos; float d = length( VP ); VP = normalize( VP ); float attenuation = 1.0 / ( uFalloff[0] + ( uFalloff[1] * d ) + ( uFalloff[2] * d * d )); float nDotVP = max( 0.0, dot( vertNormal, VP )); vec3 halfVector = normalize( VP - normalize(ecPos) ); float nDotHV = max( 0.0, dot( vertNormal, halfVector )); if( nDotVP == 0.0 ) { powerFactor = 0.0; } else { powerFactor = pow( nDotHV, uShininess ); } spec += uSpecular * powerFactor * attenuation; col += light.color * nDotVP * attenuation;}void SpotLight( inout vec3 col, inout vec3 spec, in vec3 vertNormal, in vec3 ecPos, in Light light ) { float spotAttenuation; float powerFactor = 0.0; vec3 VP = light.position - ecPos; vec3 ldir = normalize( -light.direction ); float d = length( VP ); VP = normalize( VP ); float attenuation = 1.0 / ( uFalloff[0] + ( uFalloff[1] * d ) + ( uFalloff[2] * d * d ) ); float spotDot = dot( VP, ldir );" + (bA ? " spotAttenuation = 1.0; " : " if( spotDot > cos( light.angle ) ) { spotAttenuation = pow( spotDot, light.concentration ); } else{ spotAttenuation = 0.0; } attenuation *= spotAttenuation;") + " float nDotVP = max( 0.0, dot( vertNormal, VP ) ); vec3 halfVector = normalize( VP - normalize(ecPos) ); float nDotHV = max( 0.0, dot( vertNormal, halfVector ) ); if( nDotVP != 0.0 ) { powerFactor = pow( nDotHV, uShininess ); } spec += uSpecular * powerFactor * attenuation; col += light.color * nDotVP * attenuation;}void main(void) { vec3 finalAmbient = vec3( 0.0 ); vec3 finalDiffuse = vec3( 0.0 ); vec3 finalSpecular = vec3( 0.0 ); vec4 col = uColor; if ( uColor[0] == -1.0 ){ col = aColor; } vec3 norm = normalize(vec3( uNormalTransform * vec4( aNormal, 0.0 ) )); vec4 ecPos4 = uView * uModel * vec4(aVertex, 1.0); vec3 ecPos = (vec3(ecPos4))/ecPos4.w; if( uLightCount == 0 ) { vFrontColor = col + vec4(uMaterialSpecular, 1.0); } else { for( int i = 0; i < 8; i++ ) { Light l = getLight(i); if( i >= uLightCount ){ break; } if( l.type == 0 ) { AmbientLight( finalAmbient, ecPos, l ); } else if( l.type == 1 ) { DirectionalLight( finalDiffuse, finalSpecular, norm, ecPos, l ); } else if( l.type == 2 ) { PointLight( finalDiffuse, finalSpecular, norm, ecPos, l ); } else { SpotLight( finalDiffuse, finalSpecular, norm, ecPos, l ); } } if( uUsingMat == false ) { vFrontColor = vec4( vec3( col ) * finalAmbient + vec3( col ) * finalDiffuse + vec3( col ) * finalSpecular, col[3] ); } else{ vFrontColor = vec4( uMaterialEmissive + (vec3(col) * uMaterialAmbient * finalAmbient ) + (vec3(col) * finalDiffuse) + (uMaterialSpecular * finalSpecular), col[3] ); } } vTexture.xy = aTexture.xy; gl_Position = uProjection * uView * uModel * vec4( aVertex, 1.0 );}";
1705 var aF = "#ifdef GL_ES\nprecision highp float;\n#endif\nvarying vec4 vFrontColor;uniform sampler2D uSampler;uniform bool uUsingTexture;varying vec2 vTexture;void main(void){ if( uUsingTexture ){ gl_FragColor = vec4(texture2D(uSampler, vTexture.xy)) * vFrontColor; } else{ gl_FragColor = vFrontColor; }}";
1706
1707 function d2(ec, eb, ee, ed) {
1708 var ea = dC.locations[ec];
1709 if (ea === t) {
1710 ea = d8.getUniformLocation(eb, ee);
1711 dC.locations[ec] = ea
1712 }
1713 if (ea !== null) {
1714 if (ed.length === 4) {
1715 d8.uniform4fv(ea, ed)
1716 } else {
1717 if (ed.length === 3) {
1718 d8.uniform3fv(ea, ed)
1719 } else {
1720 if (ed.length === 2) {
1721 d8.uniform2fv(ea, ed)
1722 } else {
1723 d8.uniform1f(ea, ed)
1724 }
1725 }
1726 }
1727 }
1728 }
1729
1730 function dZ(ec, eb, ee, ed) {
1731 var ea = dC.locations[ec];
1732 if (ea === t) {
1733 ea = d8.getUniformLocation(eb, ee);
1734 dC.locations[ec] = ea
1735 }
1736 if (ea !== null) {
1737 if (ed.length === 4) {
1738 d8.uniform4iv(ea, ed)
1739 } else {
1740 if (ed.length === 3) {
1741 d8.uniform3iv(ea, ed)
1742 } else {
1743 if (ed.length === 2) {
1744 d8.uniform2iv(ea, ed)
1745 } else {
1746 d8.uniform1i(ea, ed)
1747 }
1748 }
1749 }
1750 }
1751 }
1752
1753 function a9(ee, ec, ef, ed, eb) {
1754 var ea = dC.locations[ee];
1755 if (ea === t) {
1756 ea = d8.getUniformLocation(ec, ef);
1757 dC.locations[ee] = ea
1758 }
1759 if (ea !== -1) {
1760 if (eb.length === 16) {
1761 d8.uniformMatrix4fv(ea, ed, eb)
1762 } else {
1763 if (eb.length === 9) {
1764 d8.uniformMatrix3fv(ea, ed, eb)
1765 } else {
1766 d8.uniformMatrix2fv(ea, ed, eb)
1767 }
1768 }
1769 }
1770 }
1771
1772 function dc(ee, ec, ef, eb, ed) {
1773 var ea = dC.attributes[ee];
1774 if (ea === t) {
1775 ea = d8.getAttribLocation(ec, ef);
1776 dC.attributes[ee] = ea
1777 }
1778 if (ea !== -1) {
1779 d8.bindBuffer(d8.ARRAY_BUFFER, ed);
1780 d8.vertexAttribPointer(ea, eb, d8.FLOAT, false, 0, 0);
1781 d8.enableVertexAttribArray(ea)
1782 }
1783 }
1784
1785 function cg(ec, eb, ed) {
1786 var ea = dC.attributes[ec];
1787 if (ea === t) {
1788 ea = d8.getAttribLocation(eb, ed);
1789 dC.attributes[ec] = ea
1790 }
1791 if (ea !== -1) {
1792 d8.disableVertexAttribArray(ea)
1793 }
1794 }
1795 var bF = function(ec, ee, eb) {
1796 var ef = ec.createShader(ec.VERTEX_SHADER);
1797 ec.shaderSource(ef, ee);
1798 ec.compileShader(ef);
1799 if (!ec.getShaderParameter(ef, ec.COMPILE_STATUS)) {
1800 throw ec.getShaderInfoLog(ef)
1801 }
1802 var ed = ec.createShader(ec.FRAGMENT_SHADER);
1803 ec.shaderSource(ed, eb);
1804 ec.compileShader(ed);
1805 if (!ec.getShaderParameter(ed, ec.COMPILE_STATUS)) {
1806 throw ec.getShaderInfoLog(ed)
1807 }
1808 var ea = ec.createProgram();
1809 ec.attachShader(ea, ef);
1810 ec.attachShader(ea, ed);
1811 ec.linkProgram(ea);
1812 if (!ec.getProgramParameter(ea, ec.LINK_STATUS)) {
1813 throw "Error linking shaders."
1814 }
1815 return ea
1816 };
1817 var aZ = function(ea, ee, eb, ed, ec) {
1818 return {
1819 x: ea,
1820 y: ee,
1821 w: eb,
1822 h: ed
1823 }
1824 };
1825 var bk = aZ;
1826 var b1 = function(ea, ee, eb, ed, ec) {
1827 return {
1828 x: ea,
1829 y: ee,
1830 w: ec ? eb : eb - ea,
1831 h: ec ? ed : ed - ee
1832 }
1833 };
1834 var aN = function(ea, ee, eb, ed, ec) {
1835 return {
1836 x: ea - eb / 2,
1837 y: ee - ed / 2,
1838 w: eb,
1839 h: ed
1840 }
1841 };
1842 var ds = function() {};
1843 var bR = function() {};
1844 var bB = function() {};
1845 var ca = function() {};
1846 bR.prototype = new ds;
1847 bR.prototype.constructor = bR;
1848 bB.prototype = new ds;
1849 bB.prototype.constructor = bB;
1850 ca.prototype = new ds;
1851 ca.prototype.constructor = ca;
1852 ds.prototype.a3DOnlyFunction = G;
1853 var cl = {};
1854 var bP = cW.Character = function(ea) {
1855 if (typeof ea === "string" && ea.length === 1) {
1856 this.code = ea.charCodeAt(0)
1857 } else {
1858 if (typeof ea === "number") {
1859 this.code = ea
1860 } else {
1861 if (ea instanceof bP) {
1862 this.code = ea
1863 } else {
1864 this.code = NaN
1865 }
1866 }
1867 }
1868 return cl[this.code] === t ? cl[this.code] = this : cl[this.code]
1869 };
1870 bP.prototype.toString = function() {
1871 return String.fromCharCode(this.code)
1872 };
1873 bP.prototype.valueOf = function() {
1874 return this.code
1875 };
1876 var O = cW.PShape = function(ea) {
1877 this.family = ea || 0;
1878 this.visible = true;
1879 this.style = true;
1880 this.children = [];
1881 this.nameTable = [];
1882 this.params = [];
1883 this.name = "";
1884 this.image = null;
1885 this.matrix = null;
1886 this.kind = null;
1887 this.close = null;
1888 this.width = null;
1889 this.height = null;
1890 this.parent = null
1891 };
1892 O.prototype = {
1893 isVisible: function() {
1894 return this.visible
1895 },
1896 setVisible: function(ea) {
1897 this.visible = ea
1898 },
1899 disableStyle: function() {
1900 this.style = false;
1901 for (var eb = 0, ea = this.children.length; eb < ea; eb++) {
1902 this.children[eb].disableStyle()
1903 }
1904 },
1905 enableStyle: function() {
1906 this.style = true;
1907 for (var eb = 0, ea = this.children.length; eb < ea; eb++) {
1908 this.children[eb].enableStyle()
1909 }
1910 },
1911 getFamily: function() {
1912 return this.family
1913 },
1914 getWidth: function() {
1915 return this.width
1916 },
1917 getHeight: function() {
1918 return this.height
1919 },
1920 setName: function(ea) {
1921 this.name = ea
1922 },
1923 getName: function() {
1924 return this.name
1925 },
1926 draw: function(ea) {
1927 ea = ea || cW;
1928 if (this.visible) {
1929 this.pre(ea);
1930 this.drawImpl(ea);
1931 this.post(ea)
1932 }
1933 },
1934 drawImpl: function(ea) {
1935 if (this.family === 0) {
1936 this.drawGroup(ea)
1937 } else {
1938 if (this.family === 1) {
1939 this.drawPrimitive(ea)
1940 } else {
1941 if (this.family === 3) {
1942 this.drawGeometry(ea)
1943 } else {
1944 if (this.family === 21) {
1945 this.drawPath(ea)
1946 }
1947 }
1948 }
1949 }
1950 },
1951 drawPath: function(ec) {
1952 var ed, eb;
1953 if (this.vertices.length === 0) {
1954 return
1955 }
1956 ec.beginShape();
1957 if (this.vertexCodes.length === 0) {
1958 if (this.vertices[0].length === 2) {
1959 for (ed = 0, eb = this.vertices.length; ed < eb; ed++) {
1960 ec.vertex(this.vertices[ed][0], this.vertices[ed][1])
1961 }
1962 } else {
1963 for (ed = 0, eb = this.vertices.length; ed < eb; ed++) {
1964 ec.vertex(this.vertices[ed][0], this.vertices[ed][1], this.vertices[ed][2])
1965 }
1966 }
1967 } else {
1968 var ea = 0;
1969 if (this.vertices[0].length === 2) {
1970 for (ed = 0, eb = this.vertexCodes.length; ed < eb; ed++) {
1971 if (this.vertexCodes[ed] === 0) {
1972 ec.vertex(this.vertices[ea][0], this.vertices[ea][1], this.vertices[ea]["moveTo"]);
1973 ec.breakShape = false;
1974 ea++
1975 } else {
1976 if (this.vertexCodes[ed] === 1) {
1977 ec.bezierVertex(this.vertices[ea + 0][0], this.vertices[ea + 0][1], this.vertices[ea + 1][0], this.vertices[ea + 1][1], this.vertices[ea + 2][0], this.vertices[ea + 2][1]);
1978 ea += 3
1979 } else {
1980 if (this.vertexCodes[ed] === 2) {
1981 ec.curveVertex(this.vertices[ea][0], this.vertices[ea][1]);
1982 ea++
1983 } else {
1984 if (this.vertexCodes[ed] === 3) {
1985 ec.breakShape = true
1986 }
1987 }
1988 }
1989 }
1990 }
1991 } else {
1992 for (ed = 0, eb = this.vertexCodes.length; ed < eb; ed++) {
1993 if (this.vertexCodes[ed] === 0) {
1994 ec.vertex(this.vertices[ea][0], this.vertices[ea][1], this.vertices[ea][2]);
1995 if (this.vertices[ea]["moveTo"] === true) {
1996 bb[bb.length - 1]["moveTo"] = true
1997 } else {
1998 if (this.vertices[ea]["moveTo"] === false) {
1999 bb[bb.length - 1]["moveTo"] = false
2000 }
2001 }
2002 ec.breakShape = false
2003 } else {
2004 if (this.vertexCodes[ed] === 1) {
2005 ec.bezierVertex(this.vertices[ea + 0][0], this.vertices[ea + 0][1], this.vertices[ea + 0][2], this.vertices[ea + 1][0], this.vertices[ea + 1][1], this.vertices[ea + 1][2], this.vertices[ea + 2][0], this.vertices[ea + 2][1], this.vertices[ea + 2][2]);
2006 ea += 3
2007 } else {
2008 if (this.vertexCodes[ed] === 2) {
2009 ec.curveVertex(this.vertices[ea][0], this.vertices[ea][1], this.vertices[ea][2]);
2010 ea++
2011 } else {
2012 if (this.vertexCodes[ed] === 3) {
2013 ec.breakShape = true
2014 }
2015 }
2016 }
2017 }
2018 }
2019 }
2020 }
2021 ec.endShape(this.close ? 2 : 1)
2022 },
2023 drawGeometry: function(ec) {
2024 var ed, eb;
2025 ec.beginShape(this.kind);
2026 if (this.style) {
2027 for (ed = 0, eb = this.vertices.length; ed < eb; ed++) {
2028 ec.vertex(this.vertices[ed])
2029 }
2030 } else {
2031 for (ed = 0, eb = this.vertices.length; ed < eb; ed++) {
2032 var ea = this.vertices[ed];
2033 if (ea[2] === 0) {
2034 ec.vertex(ea[0], ea[1])
2035 } else {
2036 ec.vertex(ea[0], ea[1], ea[2])
2037 }
2038 }
2039 }
2040 ec.endShape()
2041 },
2042 drawGroup: function(eb) {
2043 for (var ec = 0, ea = this.children.length; ec < ea; ec++) {
2044 this.children[ec].draw(eb)
2045 }
2046 },
2047 drawPrimitive: function(ea) {
2048 if (this.kind === 2) {
2049 ea.point(this.params[0], this.params[1])
2050 } else {
2051 if (this.kind === 4) {
2052 if (this.params.length === 4) {
2053 ea.line(this.params[0], this.params[1], this.params[2], this.params[3])
2054 } else {
2055 ea.line(this.params[0], this.params[1], this.params[2], this.params[3], this.params[4], this.params[5])
2056 }
2057 } else {
2058 if (this.kind === 8) {
2059 ea.triangle(this.params[0], this.params[1], this.params[2], this.params[3], this.params[4], this.params[5])
2060 } else {
2061 if (this.kind === 16) {
2062 ea.quad(this.params[0], this.params[1], this.params[2], this.params[3], this.params[4], this.params[5], this.params[6], this.params[7])
2063 } else {
2064 if (this.kind === 30) {
2065 if (this.image !== null) {
2066 var ee = bk;
2067 ea.imageMode(0);
2068 ea.image(this.image, this.params[0], this.params[1], this.params[2], this.params[3]);
2069 bk = ee
2070 } else {
2071 var eb = bK;
2072 ea.rectMode(0);
2073 ea.rect(this.params[0], this.params[1], this.params[2], this.params[3]);
2074 bK = eb
2075 }
2076 } else {
2077 if (this.kind === 31) {
2078 var ec = cN;
2079 ea.ellipseMode(0);
2080 ea.ellipse(this.params[0], this.params[1], this.params[2], this.params[3]);
2081 cN = ec
2082 } else {
2083 if (this.kind === 32) {
2084 var ed = cN;
2085 ea.ellipseMode(0);
2086 ea.arc(this.params[0], this.params[1], this.params[2], this.params[3], this.params[4], this.params[5]);
2087 cN = ed
2088 } else {
2089 if (this.kind === 41) {
2090 if (this.params.length === 1) {
2091 ea.box(this.params[0])
2092 } else {
2093 ea.box(this.params[0], this.params[1], this.params[2])
2094 }
2095 } else {
2096 if (this.kind === 40) {
2097 ea.sphere(this.params[0])
2098 }
2099 }
2100 }
2101 }
2102 }
2103 }
2104 }
2105 }
2106 }
2107 },
2108 pre: function(ea) {
2109 if (this.matrix) {
2110 ea.pushMatrix();
2111 ea.transform(this.matrix)
2112 }
2113 if (this.style) {
2114 ea.pushStyle();
2115 this.styles(ea)
2116 }
2117 },
2118 post: function(ea) {
2119 if (this.matrix) {
2120 ea.popMatrix()
2121 }
2122 if (this.style) {
2123 ea.popStyle()
2124 }
2125 },
2126 styles: function(ea) {
2127 if (this.stroke) {
2128 ea.stroke(this.strokeColor);
2129 ea.strokeWeight(this.strokeWeight);
2130 ea.strokeCap(this.strokeCap);
2131 ea.strokeJoin(this.strokeJoin)
2132 } else {
2133 ea.noStroke()
2134 } if (this.fill) {
2135 ea.fill(this.fillColor)
2136 } else {
2137 ea.noFill()
2138 }
2139 },
2140 getChild: function(ed) {
2141 var eb, ea;
2142 if (typeof ed === "number") {
2143 return this.children[ed]
2144 }
2145 var ec;
2146 if (ed === "" || this.name === ed) {
2147 return this
2148 }
2149 if (this.nameTable.length > 0) {
2150 for (eb = 0, ea = this.nameTable.length; eb < ea || ec; eb++) {
2151 if (this.nameTable[eb].getName === ed) {
2152 ec = this.nameTable[eb];
2153 break
2154 }
2155 }
2156 if (ec) {
2157 return ec
2158 }
2159 }
2160 for (eb = 0, ea = this.children.length; eb < ea; eb++) {
2161 ec = this.children[eb].getChild(ed);
2162 if (ec) {
2163 return ec
2164 }
2165 }
2166 return null
2167 },
2168 getChildCount: function() {
2169 return this.children.length
2170 },
2171 addChild: function(ea) {
2172 this.children.push(ea);
2173 ea.parent = this;
2174 if (ea.getName() !== null) {
2175 this.addName(ea.getName(), ea)
2176 }
2177 },
2178 addName: function(eb, ea) {
2179 if (this.parent !== null) {
2180 this.parent.addName(eb, ea)
2181 } else {
2182 this.nameTable.push([eb, ea])
2183 }
2184 },
2185 translate: function() {
2186 if (arguments.length === 2) {
2187 this.checkMatrix(2);
2188 this.matrix.translate(arguments[0], arguments[1])
2189 } else {
2190 this.checkMatrix(3);
2191 this.matrix.translate(arguments[0], arguments[1], 0)
2192 }
2193 },
2194 checkMatrix: function(ea) {
2195 if (this.matrix === null) {
2196 if (ea === 2) {
2197 this.matrix = new cW.PMatrix2D
2198 } else {
2199 this.matrix = new cW.PMatrix3D
2200 }
2201 } else {
2202 if (ea === 3 && this.matrix instanceof cW.PMatrix2D) {
2203 this.matrix = new cW.PMatrix3D
2204 }
2205 }
2206 },
2207 rotateX: function(ea) {
2208 this.rotate(ea, 1, 0, 0)
2209 },
2210 rotateY: function(ea) {
2211 this.rotate(ea, 0, 1, 0)
2212 },
2213 rotateZ: function(ea) {
2214 this.rotate(ea, 0, 0, 1)
2215 },
2216 rotate: function() {
2217 if (arguments.length === 1) {
2218 this.checkMatrix(2);
2219 this.matrix.rotate(arguments[0])
2220 } else {
2221 this.checkMatrix(3);
2222 this.matrix.rotate(arguments[0], arguments[1], arguments[2], arguments[3])
2223 }
2224 },
2225 scale: function() {
2226 if (arguments.length === 2) {
2227 this.checkMatrix(2);
2228 this.matrix.scale(arguments[0], arguments[1])
2229 } else {
2230 if (arguments.length === 3) {
2231 this.checkMatrix(2);
2232 this.matrix.scale(arguments[0], arguments[1], arguments[2])
2233 } else {
2234 this.checkMatrix(2);
2235 this.matrix.scale(arguments[0])
2236 }
2237 }
2238 },
2239 resetMatrix: function() {
2240 this.checkMatrix(2);
2241 this.matrix.reset()
2242 },
2243 applyMatrix: function(ea) {
2244 if (arguments.length === 1) {
2245 this.applyMatrix(ea.elements[0], ea.elements[1], 0, ea.elements[2], ea.elements[3], ea.elements[4], 0, ea.elements[5], 0, 0, 1, 0, 0, 0, 0, 1)
2246 } else {
2247 if (arguments.length === 6) {
2248 this.checkMatrix(2);
2249 this.matrix.apply(arguments[0], arguments[1], arguments[2], 0, arguments[3], arguments[4], arguments[5], 0, 0, 0, 1, 0, 0, 0, 0, 1)
2250 } else {
2251 if (arguments.length === 16) {
2252 this.checkMatrix(3);
2253 this.matrix.apply(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5], arguments[6], arguments[7], arguments[8], arguments[9], arguments[10], arguments[11], arguments[12], arguments[13], arguments[14], arguments[15])
2254 }
2255 }
2256 }
2257 }
2258 };
2259 var cr = cW.PShapeSVG = function() {
2260 cW.PShape.call(this);
2261 if (arguments.length === 1) {
2262 this.element = arguments[0];
2263 this.vertexCodes = [];
2264 this.vertices = [];
2265 this.opacity = 1;
2266 this.stroke = false;
2267 this.strokeColor = 4278190080;
2268 this.strokeWeight = 1;
2269 this.strokeCap = "butt";
2270 this.strokeJoin = "miter";
2271 this.strokeGradient = null;
2272 this.strokeGradientPaint = null;
2273 this.strokeName = null;
2274 this.strokeOpacity = 1;
2275 this.fill = true;
2276 this.fillColor = 4278190080;
2277 this.fillGradient = null;
2278 this.fillGradientPaint = null;
2279 this.fillName = null;
2280 this.fillOpacity = 1;
2281 if (this.element.getName() !== "svg") {
2282 throw "root is not <svg>, it's <" + this.element.getName() + ">"
2283 }
2284 } else {
2285 if (arguments.length === 2) {
2286 if (typeof arguments[1] === "string") {
2287 if (arguments[1].indexOf(".svg") > -1) {
2288 this.element = new cW.XMLElement(cW, arguments[1]);
2289 this.vertexCodes = [];
2290 this.vertices = [];
2291 this.opacity = 1;
2292 this.stroke = false;
2293 this.strokeColor = 4278190080;
2294 this.strokeWeight = 1;
2295 this.strokeCap = "butt";
2296 this.strokeJoin = "miter";
2297 this.strokeGradient = "";
2298 this.strokeGradientPaint = "";
2299 this.strokeName = "";
2300 this.strokeOpacity = 1;
2301 this.fill = true;
2302 this.fillColor = 4278190080;
2303 this.fillGradient = null;
2304 this.fillGradientPaint = null;
2305 this.fillOpacity = 1
2306 }
2307 } else {
2308 if (arguments[0]) {
2309 this.element = arguments[1];
2310 this.vertexCodes = arguments[0].vertexCodes.slice();
2311 this.vertices = arguments[0].vertices.slice();
2312 this.stroke = arguments[0].stroke;
2313 this.strokeColor = arguments[0].strokeColor;
2314 this.strokeWeight = arguments[0].strokeWeight;
2315 this.strokeCap = arguments[0].strokeCap;
2316 this.strokeJoin = arguments[0].strokeJoin;
2317 this.strokeGradient = arguments[0].strokeGradient;
2318 this.strokeGradientPaint = arguments[0].strokeGradientPaint;
2319 this.strokeName = arguments[0].strokeName;
2320 this.fill = arguments[0].fill;
2321 this.fillColor = arguments[0].fillColor;
2322 this.fillGradient = arguments[0].fillGradient;
2323 this.fillGradientPaint = arguments[0].fillGradientPaint;
2324 this.fillName = arguments[0].fillName;
2325 this.strokeOpacity = arguments[0].strokeOpacity;
2326 this.fillOpacity = arguments[0].fillOpacity;
2327 this.opacity = arguments[0].opacity
2328 }
2329 }
2330 }
2331 }
2332 this.name = this.element.getStringAttribute("id");
2333 var ea = this.element.getStringAttribute("display", "inline");
2334 this.visible = ea !== "none";
2335 var ef = this.element.getAttribute("transform");
2336 if (ef) {
2337 this.matrix = this.parseMatrix(ef)
2338 }
2339 var ec = this.element.getStringAttribute("viewBox");
2340 if (ec !== null) {
2341 var ee = ec.split(" ");
2342 this.width = ee[2];
2343 this.height = ee[3]
2344 }
2345 var eb = this.element.getStringAttribute("width");
2346 var ed = this.element.getStringAttribute("height");
2347 if (eb !== null) {
2348 this.width = this.parseUnitSize(eb);
2349 this.height = this.parseUnitSize(ed)
2350 } else {
2351 if (this.width === 0 || this.height === 0) {
2352 this.width = 1;
2353 this.height = 1;
2354 throw "The width and/or height is not readable in the <svg> tag of this file."
2355 }
2356 }
2357 this.parseColors(this.element);
2358 this.parseChildren(this.element)
2359 };
2360 cr.prototype = new O;
2361 cr.prototype.parseMatrix = function() {
2362 function ea(ec) {
2363 var eb = [];
2364 ec.replace(/\((.*?)\)/, function() {
2365 return function(ed, ee) {
2366 eb = ee.replace(/,+/g, " ").split(/\s+/)
2367 }
2368 }());
2369 return eb
2370 }
2371 return function(ei) {
2372 this.checkMatrix(2);
2373 var eb = [];
2374 ei.replace(/\s*(\w+)\((.*?)\)/g, function(el) {
2375 eb.push(cW.trim(el))
2376 });
2377 if (eb.length === 0) {
2378 return null
2379 }
2380 for (var eg = 0, ee = eb.length; eg < ee; eg++) {
2381 var ec = ea(eb[eg]);
2382 if (eb[eg].indexOf("matrix") !== -1) {
2383 this.matrix.set(ec[0], ec[2], ec[4], ec[1], ec[3], ec[5])
2384 } else {
2385 if (eb[eg].indexOf("translate") !== -1) {
2386 var eh = ec[0];
2387 var ef = ec.length === 2 ? ec[1] : 0;
2388 this.matrix.translate(eh, ef)
2389 } else {
2390 if (eb[eg].indexOf("scale") !== -1) {
2391 var ek = ec[0];
2392 var ej = ec.length === 2 ? ec[1] : ec[0];
2393 this.matrix.scale(ek, ej)
2394 } else {
2395 if (eb[eg].indexOf("rotate") !== -1) {
2396 var ed = ec[0];
2397 if (ec.length === 1) {
2398 this.matrix.rotate(cW.radians(ed))
2399 } else {
2400 if (ec.length === 3) {
2401 this.matrix.translate(ec[1], ec[2]);
2402 this.matrix.rotate(cW.radians(ec[0]));
2403 this.matrix.translate(-ec[1], -ec[2])
2404 }
2405 }
2406 } else {
2407 if (eb[eg].indexOf("skewX") !== -1) {
2408 this.matrix.skewX(parseFloat(ec[0]))
2409 } else {
2410 if (eb[eg].indexOf("skewY") !== -1) {
2411 this.matrix.skewY(ec[0])
2412 } else {
2413 if (eb[eg].indexOf("shearX") !== -1) {
2414 this.matrix.shearX(ec[0])
2415 } else {
2416 if (eb[eg].indexOf("shearY") !== -1) {
2417 this.matrix.shearY(ec[0])
2418 }
2419 }
2420 }
2421 }
2422 }
2423 }
2424 }
2425 }
2426 }
2427 return this.matrix
2428 }
2429 }();
2430 cr.prototype.parseChildren = function(ef) {
2431 var eb = ef.getChildren();
2432 var ee = new cW.PShape;
2433 for (var ed = 0, ec = eb.length; ed < ec; ed++) {
2434 var ea = this.parseChild(eb[ed]);
2435 if (ea) {
2436 ee.addChild(ea)
2437 }
2438 }
2439 this.children.push(ee)
2440 };
2441 cr.prototype.getName = function() {
2442 return this.name
2443 };
2444 cr.prototype.parseChild = function(ec) {
2445 var eb = ec.getName();
2446 var ea;
2447 if (eb === "g") {
2448 ea = new cr(this, ec)
2449 } else {
2450 if (eb === "defs") {
2451 ea = new cr(this, ec)
2452 } else {
2453 if (eb === "line") {
2454 ea = new cr(this, ec);
2455 ea.parseLine()
2456 } else {
2457 if (eb === "circle") {
2458 ea = new cr(this, ec);
2459 ea.parseEllipse(true)
2460 } else {
2461 if (eb === "ellipse") {
2462 ea = new cr(this, ec);
2463 ea.parseEllipse(false)
2464 } else {
2465 if (eb === "rect") {
2466 ea = new cr(this, ec);
2467 ea.parseRect()
2468 } else {
2469 if (eb === "polygon") {
2470 ea = new cr(this, ec);
2471 ea.parsePoly(true)
2472 } else {
2473 if (eb === "polyline") {
2474 ea = new cr(this, ec);
2475 ea.parsePoly(false)
2476 } else {
2477 if (eb === "path") {
2478 ea = new cr(this, ec);
2479 ea.parsePath()
2480 } else {
2481 if (eb === "radialGradient") {
2482 dw("PShapeSVG.prototype.parseChild, name = radialGradient")
2483 } else {
2484 if (eb === "linearGradient") {
2485 dw("PShapeSVG.prototype.parseChild, name = linearGradient")
2486 } else {
2487 if (eb === "text") {
2488 dw("PShapeSVG.prototype.parseChild, name = text")
2489 } else {
2490 if (eb === "filter") {
2491 dw("PShapeSVG.prototype.parseChild, name = filter")
2492 } else {
2493 if (eb === "mask") {
2494 dw("PShapeSVG.prototype.parseChild, name = mask")
2495 } else {
2496 G()
2497 }
2498 }
2499 }
2500 }
2501 }
2502 }
2503 }
2504 }
2505 }
2506 }
2507 }
2508 }
2509 }
2510 }
2511 return ea
2512 };
2513 cr.prototype.parsePath = function() {
2514 this.family = 21;
2515 this.kind = 0;
2516 var ef = [];
2517 var ez;
2518 var ey = cW.trim(this.element.getStringAttribute("d").replace(/[\s,]+/g, " "));
2519 if (ey === null) {
2520 return
2521 }
2522 ey = cW.__toCharArray(ey);
2523 var ed = 0,
2524 ec = 0,
2525 ek = 0,
2526 ei = 0,
2527 ej = 0,
2528 eh = 0,
2529 eq = 0,
2530 ep = 0,
2531 eb = 0,
2532 ea = 0,
2533 em = 0,
2534 el = 0,
2535 eo = 0,
2536 en = 0,
2537 ex = 0,
2538 et = 0;
2539 var er = "";
2540 var ev = [];
2541 var ew = false;
2542 var eg;
2543 var ee;
2544 var eu, es;
2545 while (ex < ey.length) {
2546 et = ey[ex].valueOf();
2547 if (et >= 65 && et <= 90 || et >= 97 && et <= 122) {
2548 eu = ex;
2549 ex++;
2550 if (ex < ey.length) {
2551 ev = [];
2552 et = ey[ex].valueOf();
2553 while (!(et >= 65 && et <= 90 || et >= 97 && et <= 100 || et >= 102 && et <= 122) && ew === false) {
2554 if (et === 32) {
2555 if (er !== "") {
2556 ev.push(parseFloat(er));
2557 er = ""
2558 }
2559 ex++
2560 } else {
2561 if (et === 45) {
2562 if (ey[ex - 1].valueOf() === 101) {
2563 er += ey[ex].toString();
2564 ex++
2565 } else {
2566 if (er !== "") {
2567 ev.push(parseFloat(er))
2568 }
2569 er = ey[ex].toString();
2570 ex++
2571 }
2572 } else {
2573 er += ey[ex].toString();
2574 ex++
2575 }
2576 } if (ex === ey.length) {
2577 ew = true
2578 } else {
2579 et = ey[ex].valueOf()
2580 }
2581 }
2582 }
2583 if (er !== "") {
2584 ev.push(parseFloat(er));
2585 er = ""
2586 }
2587 ee = ey[eu];
2588 et = ee.valueOf();
2589 if (et === 77) {
2590 if (ev.length >= 2 && ev.length % 2 === 0) {
2591 ed = ev[0];
2592 ec = ev[1];
2593 this.parsePathMoveto(ed, ec);
2594 if (ev.length > 2) {
2595 for (eu = 2, es = ev.length; eu < es; eu += 2) {
2596 ed = ev[eu];
2597 ec = ev[eu + 1];
2598 this.parsePathLineto(ed, ec)
2599 }
2600 }
2601 }
2602 } else {
2603 if (et === 109) {
2604 if (ev.length >= 2 && ev.length % 2 === 0) {
2605 ed += ev[0];
2606 ec += ev[1];
2607 this.parsePathMoveto(ed, ec);
2608 if (ev.length > 2) {
2609 for (eu = 2, es = ev.length; eu < es; eu += 2) {
2610 ed += ev[eu];
2611 ec += ev[eu + 1];
2612 this.parsePathLineto(ed, ec)
2613 }
2614 }
2615 }
2616 } else {
2617 if (et === 76) {
2618 if (ev.length >= 2 && ev.length % 2 === 0) {
2619 for (eu = 0, es = ev.length; eu < es; eu += 2) {
2620 ed = ev[eu];
2621 ec = ev[eu + 1];
2622 this.parsePathLineto(ed, ec)
2623 }
2624 }
2625 } else {
2626 if (et === 108) {
2627 if (ev.length >= 2 && ev.length % 2 === 0) {
2628 for (eu = 0, es = ev.length; eu < es; eu += 2) {
2629 ed += ev[eu];
2630 ec += ev[eu + 1];
2631 this.parsePathLineto(ed, ec)
2632 }
2633 }
2634 } else {
2635 if (et === 72) {
2636 for (eu = 0, es = ev.length; eu < es; eu++) {
2637 ed = ev[eu];
2638 this.parsePathLineto(ed, ec)
2639 }
2640 } else {
2641 if (et === 104) {
2642 for (eu = 0, es = ev.length; eu < es; eu++) {
2643 ed += ev[eu];
2644 this.parsePathLineto(ed, ec)
2645 }
2646 } else {
2647 if (et === 86) {
2648 for (eu = 0, es = ev.length; eu < es; eu++) {
2649 ec = ev[eu];
2650 this.parsePathLineto(ed, ec)
2651 }
2652 } else {
2653 if (et === 118) {
2654 for (eu = 0, es = ev.length; eu < es; eu++) {
2655 ec += ev[eu];
2656 this.parsePathLineto(ed, ec)
2657 }
2658 } else {
2659 if (et === 67) {
2660 if (ev.length >= 6 && ev.length % 6 === 0) {
2661 for (eu = 0, es = ev.length; eu < es; eu += 6) {
2662 ej = ev[eu];
2663 eq = ev[eu + 1];
2664 eh = ev[eu + 2];
2665 ep = ev[eu + 3];
2666 eb = ev[eu + 4];
2667 ea = ev[eu + 5];
2668 this.parsePathCurveto(ej, eq, eh, ep, eb, ea);
2669 ed = eb;
2670 ec = ea
2671 }
2672 }
2673 } else {
2674 if (et === 99) {
2675 if (ev.length >= 6 && ev.length % 6 === 0) {
2676 for (eu = 0, es = ev.length; eu < es; eu += 6) {
2677 ej = ed + ev[eu];
2678 eq = ec + ev[eu + 1];
2679 eh = ed + ev[eu + 2];
2680 ep = ec + ev[eu + 3];
2681 eb = ed + ev[eu + 4];
2682 ea = ec + ev[eu + 5];
2683 this.parsePathCurveto(ej, eq, eh, ep, eb, ea);
2684 ed = eb;
2685 ec = ea
2686 }
2687 }
2688 } else {
2689 if (et === 83) {
2690 if (ev.length >= 4 && ev.length % 4 === 0) {
2691 for (eu = 0, es = ev.length; eu < es; eu += 4) {
2692 if (eg.toLowerCase() === "c" || eg.toLowerCase() === "s") {
2693 em = this.vertices[this.vertices.length - 2][0];
2694 el = this.vertices[this.vertices.length - 2][1];
2695 eo = this.vertices[this.vertices.length - 1][0];
2696 en = this.vertices[this.vertices.length - 1][1];
2697 ej = eo + (eo - em);
2698 eq = en + (en - el)
2699 } else {
2700 ej = this.vertices[this.vertices.length - 1][0];
2701 eq = this.vertices[this.vertices.length - 1][1]
2702 }
2703 eh = ev[eu];
2704 ep = ev[eu + 1];
2705 eb = ev[eu + 2];
2706 ea = ev[eu + 3];
2707 this.parsePathCurveto(ej, eq, eh, ep, eb, ea);
2708 ed = eb;
2709 ec = ea
2710 }
2711 }
2712 } else {
2713 if (et === 115) {
2714 if (ev.length >= 4 && ev.length % 4 === 0) {
2715 for (eu = 0, es = ev.length; eu < es; eu += 4) {
2716 if (eg.toLowerCase() === "c" || eg.toLowerCase() === "s") {
2717 em = this.vertices[this.vertices.length - 2][0];
2718 el = this.vertices[this.vertices.length - 2][1];
2719 eo = this.vertices[this.vertices.length - 1][0];
2720 en = this.vertices[this.vertices.length - 1][1];
2721 ej = eo + (eo - em);
2722 eq = en + (en - el)
2723 } else {
2724 ej = this.vertices[this.vertices.length - 1][0];
2725 eq = this.vertices[this.vertices.length - 1][1]
2726 }
2727 eh = ed + ev[eu];
2728 ep = ec + ev[eu + 1];
2729 eb = ed + ev[eu + 2];
2730 ea = ec + ev[eu + 3];
2731 this.parsePathCurveto(ej, eq, eh, ep, eb, ea);
2732 ed = eb;
2733 ec = ea
2734 }
2735 }
2736 } else {
2737 if (et === 81) {
2738 if (ev.length >= 4 && ev.length % 4 === 0) {
2739 for (eu = 0, es = ev.length; eu < es; eu += 4) {
2740 ek = ev[eu];
2741 ei = ev[eu + 1];
2742 eb = ev[eu + 2];
2743 ea = ev[eu + 3];
2744 this.parsePathQuadto(ed, ec, ek, ei, eb, ea);
2745 ed = eb;
2746 ec = ea
2747 }
2748 }
2749 } else {
2750 if (et === 113) {
2751 if (ev.length >= 4 && ev.length % 4 === 0) {
2752 for (eu = 0, es = ev.length; eu < es; eu += 4) {
2753 ek = ed + ev[eu];
2754 ei = ec + ev[eu + 1];
2755 eb = ed + ev[eu + 2];
2756 ea = ec + ev[eu + 3];
2757 this.parsePathQuadto(ed, ec, ek, ei, eb, ea);
2758 ed = eb;
2759 ec = ea
2760 }
2761 }
2762 } else {
2763 if (et === 84) {
2764 if (ev.length >= 2 && ev.length % 2 === 0) {
2765 for (eu = 0, es = ev.length; eu < es; eu += 2) {
2766 if (eg.toLowerCase() === "q" || eg.toLowerCase() === "t") {
2767 em = this.vertices[this.vertices.length - 2][0];
2768 el = this.vertices[this.vertices.length - 2][1];
2769 eo = this.vertices[this.vertices.length - 1][0];
2770 en = this.vertices[this.vertices.length - 1][1];
2771 ek = eo + (eo - em);
2772 ei = en + (en - el)
2773 } else {
2774 ek = ed;
2775 ei = ec
2776 }
2777 eb = ev[eu];
2778 ea = ev[eu + 1];
2779 this.parsePathQuadto(ed, ec, ek, ei, eb, ea);
2780 ed = eb;
2781 ec = ea
2782 }
2783 }
2784 } else {
2785 if (et === 116) {
2786 if (ev.length >= 2 && ev.length % 2 === 0) {
2787 for (eu = 0, es = ev.length; eu < es; eu += 2) {
2788 if (eg.toLowerCase() === "q" || eg.toLowerCase() === "t") {
2789 em = this.vertices[this.vertices.length - 2][0];
2790 el = this.vertices[this.vertices.length - 2][1];
2791 eo = this.vertices[this.vertices.length - 1][0];
2792 en = this.vertices[this.vertices.length - 1][1];
2793 ek = eo + (eo - em);
2794 ei = en + (en - el)
2795 } else {
2796 ek = ed;
2797 ei = ec
2798 }
2799 eb = ed + ev[eu];
2800 ea = ec + ev[eu + 1];
2801 this.parsePathQuadto(ed, ec, ek, ei, eb, ea);
2802 ed = eb;
2803 ec = ea
2804 }
2805 }
2806 } else {
2807 if (et === 90 || et === 122) {
2808 this.close = true
2809 }
2810 }
2811 }
2812 }
2813 }
2814 }
2815 }
2816 }
2817 }
2818 }
2819 }
2820 }
2821 }
2822 }
2823 }
2824 }
2825 }
2826 eg = ee.toString()
2827 } else {
2828 ex++
2829 }
2830 }
2831 };
2832 cr.prototype.parsePathQuadto = function(ec, ee, ea, ef, eb, ed) {
2833 if (this.vertices.length > 0) {
2834 this.parsePathCode(1);
2835 this.parsePathVertex(ec + (ea - ec) * 2 / 3, ee + (ef - ee) * 2 / 3);
2836 this.parsePathVertex(eb + (ea - eb) * 2 / 3, ed + (ef - ed) * 2 / 3);
2837 this.parsePathVertex(eb, ed)
2838 } else {
2839 throw "Path must start with M/m"
2840 }
2841 };
2842 cr.prototype.parsePathCurveto = function(ed, ef, eb, ee, ea, ec) {
2843 if (this.vertices.length > 0) {
2844 this.parsePathCode(1);
2845 this.parsePathVertex(ed, ef);
2846 this.parsePathVertex(eb, ee);
2847 this.parsePathVertex(ea, ec)
2848 } else {
2849 throw "Path must start with M/m"
2850 }
2851 };
2852 cr.prototype.parsePathLineto = function(eb, ea) {
2853 if (this.vertices.length > 0) {
2854 this.parsePathCode(0);
2855 this.parsePathVertex(eb, ea);
2856 this.vertices[this.vertices.length - 1]["moveTo"] = false
2857 } else {
2858 throw "Path must start with M/m"
2859 }
2860 };
2861 cr.prototype.parsePathMoveto = function(eb, ea) {
2862 if (this.vertices.length > 0) {
2863 this.parsePathCode(3)
2864 }
2865 this.parsePathCode(0);
2866 this.parsePathVertex(eb, ea);
2867 this.vertices[this.vertices.length - 1]["moveTo"] = true
2868 };
2869 cr.prototype.parsePathVertex = function(ea, ec) {
2870 var eb = [];
2871 eb[0] = ea;
2872 eb[1] = ec;
2873 this.vertices.push(eb)
2874 };
2875 cr.prototype.parsePathCode = function(ea) {
2876 this.vertexCodes.push(ea)
2877 };
2878 cr.prototype.parsePoly = function(ee) {
2879 this.family = 21;
2880 this.close = ee;
2881 var eb = cW.trim(this.element.getStringAttribute("points").replace(/[,\s]+/g, " "));
2882 if (eb !== null) {
2883 var ea = eb.split(" ");
2884 if (ea.length % 2 === 0) {
2885 for (var ed = 0, ec = ea.length; ed < ec; ed++) {
2886 var ef = [];
2887 ef[0] = ea[ed];
2888 ef[1] = ea[++ed];
2889 this.vertices.push(ef)
2890 }
2891 } else {
2892 throw "Error parsing polygon points: odd number of coordinates provided"
2893 }
2894 }
2895 };
2896 cr.prototype.parseRect = function() {
2897 this.kind = 30;
2898 this.family = 1;
2899 this.params = [];
2900 this.params[0] = this.element.getFloatAttribute("x");
2901 this.params[1] = this.element.getFloatAttribute("y");
2902 this.params[2] = this.element.getFloatAttribute("width");
2903 this.params[3] = this.element.getFloatAttribute("height");
2904 if (this.params[2] < 0 || this.params[3] < 0) {
2905 throw "svg error: negative width or height found while parsing <rect>"
2906 }
2907 };
2908 cr.prototype.parseEllipse = function(ec) {
2909 this.kind = 31;
2910 this.family = 1;
2911 this.params = [];
2912 this.params[0] = this.element.getFloatAttribute("cx") | 0;
2913 this.params[1] = this.element.getFloatAttribute("cy") | 0;
2914 var eb, ea;
2915 if (ec) {
2916 eb = ea = this.element.getFloatAttribute("r");
2917 if (eb < 0) {
2918 throw "svg error: negative radius found while parsing <circle>"
2919 }
2920 } else {
2921 eb = this.element.getFloatAttribute("rx");
2922 ea = this.element.getFloatAttribute("ry");
2923 if (eb < 0 || ea < 0) {
2924 throw "svg error: negative x-axis radius or y-axis radius found while parsing <ellipse>"
2925 }
2926 }
2927 this.params[0] -= eb;
2928 this.params[1] -= ea;
2929 this.params[2] = eb * 2;
2930 this.params[3] = ea * 2
2931 };
2932 cr.prototype.parseLine = function() {
2933 this.kind = 4;
2934 this.family = 1;
2935 this.params = [];
2936 this.params[0] = this.element.getFloatAttribute("x1");
2937 this.params[1] = this.element.getFloatAttribute("y1");
2938 this.params[2] = this.element.getFloatAttribute("x2");
2939 this.params[3] = this.element.getFloatAttribute("y2")
2940 };
2941 cr.prototype.parseColors = function(ec) {
2942 if (ec.hasAttribute("opacity")) {
2943 this.setOpacity(ec.getAttribute("opacity"))
2944 }
2945 if (ec.hasAttribute("stroke")) {
2946 this.setStroke(ec.getAttribute("stroke"))
2947 }
2948 if (ec.hasAttribute("stroke-width")) {
2949 this.setStrokeWeight(ec.getAttribute("stroke-width"))
2950 }
2951 if (ec.hasAttribute("stroke-linejoin")) {
2952 this.setStrokeJoin(ec.getAttribute("stroke-linejoin"))
2953 }
2954 if (ec.hasAttribute("stroke-linecap")) {
2955 this.setStrokeCap(ec.getStringAttribute("stroke-linecap"))
2956 }
2957 if (ec.hasAttribute("fill")) {
2958 this.setFill(ec.getStringAttribute("fill"))
2959 }
2960 if (ec.hasAttribute("style")) {
2961 var ef = ec.getStringAttribute("style");
2962 var ed = ef.toString().split(";");
2963 for (var eb = 0, ea = ed.length; eb < ea; eb++) {
2964 var ee = cW.trim(ed[eb].split(":"));
2965 if (ee[0] === "fill") {
2966 this.setFill(ee[1])
2967 } else {
2968 if (ee[0] === "fill-opacity") {
2969 this.setFillOpacity(ee[1])
2970 } else {
2971 if (ee[0] === "stroke") {
2972 this.setStroke(ee[1])
2973 } else {
2974 if (ee[0] === "stroke-width") {
2975 this.setStrokeWeight(ee[1])
2976 } else {
2977 if (ee[0] === "stroke-linecap") {
2978 this.setStrokeCap(ee[1])
2979 } else {
2980 if (ee[0] === "stroke-linejoin") {
2981 this.setStrokeJoin(ee[1])
2982 } else {
2983 if (ee[0] === "stroke-opacity") {
2984 this.setStrokeOpacity(ee[1])
2985 } else {
2986 if (ee[0] === "opacity") {
2987 this.setOpacity(ee[1])
2988 }
2989 }
2990 }
2991 }
2992 }
2993 }
2994 }
2995 }
2996 }
2997 }
2998 };
2999 cr.prototype.setFillOpacity = function(ea) {
3000 this.fillOpacity = parseFloat(ea);
3001 this.fillColor = this.fillOpacity * 255 << 24 | this.fillColor & 16777215
3002 };
3003 cr.prototype.setFill = function(ea) {
3004 var eb = this.fillColor & 4278190080;
3005 if (ea === "none") {
3006 this.fill = false
3007 } else {
3008 if (ea.indexOf("#") === 0) {
3009 this.fill = true;
3010 if (ea.length === 4) {
3011 ea = ea.replace(/#(.)(.)(.)/, "#$1$1$2$2$3$3")
3012 }
3013 this.fillColor = eb | parseInt(ea.substring(1), 16) & 16777215
3014 } else {
3015 if (ea.indexOf("rgb") === 0) {
3016 this.fill = true;
3017 this.fillColor = eb | this.parseRGB(ea)
3018 } else {
3019 if (ea.indexOf("url(#") === 0) {
3020 this.fillName = ea.substring(5, ea.length - 1)
3021 } else {
3022 if (E[ea]) {
3023 this.fill = true;
3024 this.fillColor = eb | parseInt(E[ea].substring(1), 16) & 16777215
3025 }
3026 }
3027 }
3028 }
3029 }
3030 };
3031 cr.prototype.setOpacity = function(ea) {
3032 this.strokeColor = parseFloat(ea) * 255 << 24 | this.strokeColor & 16777215;
3033 this.fillColor = parseFloat(ea) * 255 << 24 | this.fillColor & 16777215
3034 };
3035 cr.prototype.setStroke = function(ea) {
3036 var eb = this.strokeColor & 4278190080;
3037 if (ea === "none") {
3038 this.stroke = false
3039 } else {
3040 if (ea.charAt(0) === "#") {
3041 this.stroke = true;
3042 if (ea.length === 4) {
3043 ea = ea.replace(/#(.)(.)(.)/, "#$1$1$2$2$3$3")
3044 }
3045 this.strokeColor = eb | parseInt(ea.substring(1), 16) & 16777215
3046 } else {
3047 if (ea.indexOf("rgb") === 0) {
3048 this.stroke = true;
3049 this.strokeColor = eb | this.parseRGB(ea)
3050 } else {
3051 if (ea.indexOf("url(#") === 0) {
3052 this.strokeName = ea.substring(5, ea.length - 1)
3053 } else {
3054 if (E[ea]) {
3055 this.stroke = true;
3056 this.strokeColor = eb | parseInt(E[ea].substring(1), 16) & 16777215
3057 }
3058 }
3059 }
3060 }
3061 }
3062 };
3063 cr.prototype.setStrokeWeight = function(ea) {
3064 this.strokeWeight = this.parseUnitSize(ea)
3065 };
3066 cr.prototype.setStrokeJoin = function(ea) {
3067 if (ea === "miter") {
3068 this.strokeJoin = "miter"
3069 } else {
3070 if (ea === "round") {
3071 this.strokeJoin = "round"
3072 } else {
3073 if (ea === "bevel") {
3074 this.strokeJoin = "bevel"
3075 }
3076 }
3077 }
3078 };
3079 cr.prototype.setStrokeCap = function(ea) {
3080 if (ea === "butt") {
3081 this.strokeCap = "butt"
3082 } else {
3083 if (ea === "round") {
3084 this.strokeCap = "round"
3085 } else {
3086 if (ea === "square") {
3087 this.strokeCap = "square"
3088 }
3089 }
3090 }
3091 };
3092 cr.prototype.setStrokeOpacity = function(ea) {
3093 this.strokeOpacity = parseFloat(ea);
3094 this.strokeColor = this.strokeOpacity * 255 << 24 | this.strokeColor & 16777215
3095 };
3096 cr.prototype.parseRGB = function(eb) {
3097 var ec = eb.substring(eb.indexOf("(") + 1, eb.indexOf(")"));
3098 var ea = ec.split(", ");
3099 return ea[0] << 16 | ea[1] << 8 | ea[2]
3100 };
3101 cr.prototype.parseUnitSize = function(eb) {
3102 var ea = eb.length - 2;
3103 if (ea < 0) {
3104 return eb
3105 }
3106 if (eb.indexOf("pt") === ea) {
3107 return parseFloat(eb.substring(0, ea)) * 1.25
3108 }
3109 if (eb.indexOf("pc") === ea) {
3110 return parseFloat(eb.substring(0, ea)) * 15
3111 }
3112 if (eb.indexOf("mm") === ea) {
3113 return parseFloat(eb.substring(0, ea)) * 3.543307
3114 }
3115 if (eb.indexOf("cm") === ea) {
3116 return parseFloat(eb.substring(0, ea)) * 35.43307
3117 }
3118 if (eb.indexOf("in") === ea) {
3119 return parseFloat(eb.substring(0, ea)) * 90
3120 }
3121 if (eb.indexOf("px") === ea) {
3122 return parseFloat(eb.substring(0, ea))
3123 }
3124 return parseFloat(eb)
3125 };
3126 cW.shape = function(ec, eb, ee, ed, ea) {
3127 if (arguments.length >= 1 && arguments[0] !== null) {
3128 if (ec.isVisible()) {
3129 cW.pushMatrix();
3130 if (S === 3) {
3131 if (arguments.length === 5) {
3132 cW.translate(eb - ed / 2, ee - ea / 2);
3133 cW.scale(ed / ec.getWidth(), ea / ec.getHeight())
3134 } else {
3135 if (arguments.length === 3) {
3136 cW.translate(eb - ec.getWidth() / 2, -ec.getHeight() / 2)
3137 } else {
3138 cW.translate(-ec.getWidth() / 2, -ec.getHeight() / 2)
3139 }
3140 }
3141 } else {
3142 if (S === 0) {
3143 if (arguments.length === 5) {
3144 cW.translate(eb, ee);
3145 cW.scale(ed / ec.getWidth(), ea / ec.getHeight())
3146 } else {
3147 if (arguments.length === 3) {
3148 cW.translate(eb, ee)
3149 }
3150 }
3151 } else {
3152 if (S === 1) {
3153 if (arguments.length === 5) {
3154 ed -= eb;
3155 ea -= ee;
3156 cW.translate(eb, ee);
3157 cW.scale(ed / ec.getWidth(), ea / ec.getHeight())
3158 } else {
3159 if (arguments.length === 3) {
3160 cW.translate(eb, ee)
3161 }
3162 }
3163 }
3164 }
3165 }
3166 ec.draw(cW);
3167 if (arguments.length === 1 && S === 3 || arguments.length > 1) {
3168 cW.popMatrix()
3169 }
3170 }
3171 }
3172 };
3173 cW.shapeMode = function(ea) {
3174 S = ea
3175 };
3176 cW.loadShape = function(ea) {
3177 if (arguments.length === 1) {
3178 if (ea.indexOf(".svg") > -1) {
3179 return new cr(null, ea)
3180 }
3181 }
3182 return null
3183 };
3184 var cT = function(ee, ed, ea, eb, ec) {
3185 this.fullName = ee || "";
3186 this.name = ed || "";
3187 this.namespace = ea || "";
3188 this.value = eb;
3189 this.type = ec
3190 };
3191 cT.prototype = {
3192 getName: function() {
3193 return this.name
3194 },
3195 getFullName: function() {
3196 return this.fullName
3197 },
3198 getNamespace: function() {
3199 return this.namespace
3200 },
3201 getValue: function() {
3202 return this.value
3203 },
3204 getType: function() {
3205 return this.type
3206 },
3207 setValue: function(ea) {
3208 this.value = ea
3209 }
3210 };
3211 var b9 = cW.XMLElement = function(ea, ec, ed, eb) {
3212 this.attributes = [];
3213 this.children = [];
3214 this.fullName = null;
3215 this.name = null;
3216 this.namespace = "";
3217 this.content = null;
3218 this.parent = null;
3219 this.lineNr = "";
3220 this.systemID = "";
3221 this.type = "ELEMENT";
3222 if (ea) {
3223 if (typeof ea === "string") {
3224 if (ec === t && ea.indexOf("<") > -1) {
3225 this.parse(ea)
3226 } else {
3227 this.fullName = ea;
3228 this.namespace = ec;
3229 this.systemId = ed;
3230 this.lineNr = eb
3231 }
3232 } else {
3233 this.parse(ec)
3234 }
3235 }
3236 };
3237 b9.prototype = {
3238 parse: function(ea) {
3239 var ec;
3240 try {
3241 var ee = ea.substring(ea.length - 4);
3242 if (ee === ".xml" || ee === ".svg") {
3243 ea = w(ea)
3244 }
3245 ec = (new DOMParser).parseFromString(ea, "text/xml");
3246 var eb = ec.documentElement;
3247 if (eb) {
3248 this.parseChildrenRecursive(null, eb)
3249 } else {
3250 throw "Error loading document"
3251 }
3252 return this
3253 } catch (ed) {
3254 throw ed
3255 }
3256 },
3257 parseChildrenRecursive: function(ei, eg) {
3258 var ef, eb, eh, ee, ed, ea;
3259 if (!ei) {
3260 this.fullName = eg.localName;
3261 this.name = eg.nodeName;
3262 ef = this
3263 } else {
3264 ef = new b9(eg.nodeName);
3265 ef.parent = ei
3266 } if (eg.nodeType === 3 && eg.textContent !== "") {
3267 return this.createPCDataElement(eg.textContent)
3268 }
3269 if (eg.nodeType === 4) {
3270 return this.createCDataElement(eg.textContent)
3271 }
3272 if (eg.attributes) {
3273 for (ee = 0, ed = eg.attributes.length; ee < ed; ee++) {
3274 eh = eg.attributes[ee];
3275 eb = new cT(eh.getname, eh.nodeName, eh.namespaceURI, eh.nodeValue, eh.nodeType);
3276 ef.attributes.push(eb)
3277 }
3278 }
3279 if (eg.childNodes) {
3280 for (ee = 0, ed = eg.childNodes.length; ee < ed; ee++) {
3281 var ec = eg.childNodes[ee];
3282 ea = ef.parseChildrenRecursive(ef, ec);
3283 if (ea !== null) {
3284 ef.children.push(ea)
3285 }
3286 }
3287 }
3288 return ef
3289 },
3290 createElement: function(eb, ec, ed, ea) {
3291 if (ed === t) {
3292 return new b9(eb, ec)
3293 }
3294 return new b9(eb, ec, ed, ea)
3295 },
3296 createPCDataElement: function(eb, ea) {
3297 if (eb.replace(/^\s+$/g, "") === "") {
3298 return null
3299 }
3300 var ec = new b9;
3301 ec.type = "TEXT";
3302 ec.content = eb;
3303 return ec
3304 },
3305 createCDataElement: function(ec) {
3306 var ed = this.createPCDataElement(ec);
3307 if (ed === null) {
3308 return null
3309 }
3310 ed.type = "CDATA";
3311 var eb = {
3312 "<": "&lt;",
3313 ">": "&gt;",
3314 "'": "&apos;",
3315 '"': "&quot;"
3316 },
3317 ea;
3318 for (ea in eb) {
3319 if (!Object.hasOwnProperty(eb, ea)) {
3320 ec = ec.replace(new RegExp(ea, "g"), eb[ea])
3321 }
3322 }
3323 ed.cdata = ec;
3324 return ed
3325 },
3326 hasAttribute: function() {
3327 if (arguments.length === 1) {
3328 return this.getAttribute(arguments[0]) !== null
3329 }
3330 if (arguments.length === 2) {
3331 return this.getAttribute(arguments[0], arguments[1]) !== null
3332 }
3333 },
3334 equals: function(ef) {
3335 if (!(ef instanceof b9)) {
3336 return false
3337 }
3338 var ec, eb;
3339 if (this.fullName !== ef.fullName) {
3340 return false
3341 }
3342 if (this.attributes.length !== ef.getAttributeCount()) {
3343 return false
3344 }
3345 if (this.attributes.length !== ef.attributes.length) {
3346 return false
3347 }
3348 var ej, eh, ea, eg, ei;
3349 for (ec = 0, eb = this.attributes.length; ec < eb; ec++) {
3350 ej = this.attributes[ec].getName();
3351 eh = this.attributes[ec].getNamespace();
3352 ei = ef.findAttribute(ej, eh);
3353 if (ei === null) {
3354 return false
3355 }
3356 if (this.attributes[ec].getValue() !== ei.getValue()) {
3357 return false
3358 }
3359 if (this.attributes[ec].getType() !== ei.getType()) {
3360 return false
3361 }
3362 }
3363 if (this.children.length !== ef.getChildCount()) {
3364 return false
3365 }
3366 if (this.children.length > 0) {
3367 var ee, ed;
3368 for (ec = 0, eb = this.children.length; ec < eb; ec++) {
3369 ee = this.getChild(ec);
3370 ed = ef.getChild(ec);
3371 if (!ee.equals(ed)) {
3372 return false
3373 }
3374 }
3375 return true
3376 }
3377 return this.content === ef.content
3378 },
3379 getContent: function() {
3380 if (this.type === "TEXT" || this.type === "CDATA") {
3381 return this.content
3382 }
3383 var ea = this.children;
3384 if (ea.length === 1 && (ea[0].type === "TEXT" || ea[0].type === "CDATA")) {
3385 return ea[0].content
3386 }
3387 return null
3388 },
3389 getAttribute: function() {
3390 var ea;
3391 if (arguments.length === 2) {
3392 ea = this.findAttribute(arguments[0]);
3393 if (ea) {
3394 return ea.getValue()
3395 }
3396 return arguments[1]
3397 } else {
3398 if (arguments.length === 1) {
3399 ea = this.findAttribute(arguments[0]);
3400 if (ea) {
3401 return ea.getValue()
3402 }
3403 return null
3404 } else {
3405 if (arguments.length === 3) {
3406 ea = this.findAttribute(arguments[0], arguments[1]);
3407 if (ea) {
3408 return ea.getValue()
3409 }
3410 return arguments[2]
3411 }
3412 }
3413 }
3414 },
3415 getStringAttribute: function() {
3416 if (arguments.length === 1) {
3417 return this.getAttribute(arguments[0])
3418 }
3419 if (arguments.length === 2) {
3420 return this.getAttribute(arguments[0], arguments[1])
3421 }
3422 return this.getAttribute(arguments[0], arguments[1], arguments[2])
3423 },
3424 getString: function(ea) {
3425 return this.getStringAttribute(ea)
3426 },
3427 getFloatAttribute: function() {
3428 if (arguments.length === 1) {
3429 return parseFloat(this.getAttribute(arguments[0], 0))
3430 }
3431 if (arguments.length === 2) {
3432 return this.getAttribute(arguments[0], arguments[1])
3433 }
3434 return this.getAttribute(arguments[0], arguments[1], arguments[2])
3435 },
3436 getFloat: function(ea) {
3437 return this.getFloatAttribute(ea)
3438 },
3439 getIntAttribute: function() {
3440 if (arguments.length === 1) {
3441 return this.getAttribute(arguments[0], 0)
3442 }
3443 if (arguments.length === 2) {
3444 return this.getAttribute(arguments[0], arguments[1])
3445 }
3446 return this.getAttribute(arguments[0], arguments[1], arguments[2])
3447 },
3448 getInt: function(ea) {
3449 return this.getIntAttribute(ea)
3450 },
3451 hasChildren: function() {
3452 return this.children.length > 0
3453 },
3454 addChild: function(ea) {
3455 if (ea !== null) {
3456 ea.parent = this;
3457 this.children.push(ea)
3458 }
3459 },
3460 insertChild: function(ec, ea) {
3461 if (ec) {
3462 if (ec.getLocalName() === null && !this.hasChildren()) {
3463 var eb = this.children[this.children.length - 1];
3464 if (eb.getLocalName() === null) {
3465 eb.setContent(eb.getContent() + ec.getContent());
3466 return
3467 }
3468 }
3469 ec.parent = this;
3470 this.children.splice(ea, 0, ec)
3471 }
3472 },
3473 getChild: function(eb) {
3474 if (typeof eb === "number") {
3475 return this.children[eb]
3476 }
3477 if (eb.indexOf("/") !== -1) {
3478 return this.getChildRecursive(eb.split("/"), 0)
3479 }
3480 var ea, ee;
3481 for (var ed = 0, ec = this.getChildCount(); ed < ec; ed++) {
3482 ea = this.getChild(ed);
3483 ee = ea.getName();
3484 if (ee !== null && ee === eb) {
3485 return ea
3486 }
3487 }
3488 return null
3489 },
3490 getChildren: function() {
3491 if (arguments.length === 1) {
3492 if (typeof arguments[0] === "number") {
3493 return this.getChild(arguments[0])
3494 }
3495 if (arguments[0].indexOf("/") !== -1) {
3496 return this.getChildrenRecursive(arguments[0].split("/"), 0)
3497 }
3498 var ee = [];
3499 var ea, ed;
3500 for (var ec = 0, eb = this.getChildCount(); ec < eb; ec++) {
3501 ea = this.getChild(ec);
3502 ed = ea.getName();
3503 if (ed !== null && ed === arguments[0]) {
3504 ee.push(ea)
3505 }
3506 }
3507 return ee
3508 }
3509 return this.children
3510 },
3511 getChildCount: function() {
3512 return this.children.length
3513 },
3514 getChildRecursive: function(eb, eg) {
3515 if (eg === eb.length) {
3516 return this
3517 }
3518 var ea, ef, ee = eb[eg];
3519 for (var ed = 0, ec = this.getChildCount(); ed < ec; ed++) {
3520 ea = this.getChild(ed);
3521 ef = ea.getName();
3522 if (ef !== null && ef === ee) {
3523 return ea.getChildRecursive(eb, eg + 1)
3524 }
3525 }
3526 return null
3527 },
3528 getChildrenRecursive: function(ea, ee) {
3529 if (ee === ea.length - 1) {
3530 return this.getChildren(ea[ee])
3531 }
3532 var ed = this.getChildren(ea[ee]);
3533 var ec = [];
3534 for (var eb = 0; eb < ed.length; eb++) {
3535 ec = ec.concat(ed[eb].getChildrenRecursive(ea, ee + 1))
3536 }
3537 return ec
3538 },
3539 isLeaf: function() {
3540 return !this.hasChildren()
3541 },
3542 listChildren: function() {
3543 var ea = [];
3544 for (var ec = 0, eb = this.children.length; ec < eb; ec++) {
3545 ea.push(this.getChild(ec).getName())
3546 }
3547 return ea
3548 },
3549 removeAttribute: function(eb, ed) {
3550 this.namespace = ed || "";
3551 for (var ec = 0, ea = this.attributes.length; ec < ea; ec++) {
3552 if (this.attributes[ec].getName() === eb && this.attributes[ec].getNamespace() === this.namespace) {
3553 this.attributes.splice(ec, 1);
3554 break
3555 }
3556 }
3557 },
3558 removeChild: function(ec) {
3559 if (ec) {
3560 for (var eb = 0, ea = this.children.length; eb < ea; eb++) {
3561 if (this.children[eb].equals(ec)) {
3562 this.children.splice(eb, 1);
3563 break
3564 }
3565 }
3566 }
3567 },
3568 removeChildAtIndex: function(ea) {
3569 if (this.children.length > ea) {
3570 this.children.splice(ea, 1)
3571 }
3572 },
3573 findAttribute: function(eb, ed) {
3574 this.namespace = ed || "";
3575 for (var ec = 0, ea = this.attributes.length; ec < ea; ec++) {
3576 if (this.attributes[ec].getName() === eb && this.attributes[ec].getNamespace() === this.namespace) {
3577 return this.attributes[ec]
3578 }
3579 }
3580 return null
3581 },
3582 setAttribute: function() {
3583 var ea;
3584 if (arguments.length === 3) {
3585 var ec = arguments[0].indexOf(":");
3586 var eb = arguments[0].substring(ec + 1);
3587 ea = this.findAttribute(eb, arguments[1]);
3588 if (ea) {
3589 ea.setValue(arguments[2])
3590 } else {
3591 ea = new cT(arguments[0], eb, arguments[1], arguments[2], "CDATA");
3592 this.attributes.push(ea)
3593 }
3594 } else {
3595 ea = this.findAttribute(arguments[0]);
3596 if (ea) {
3597 ea.setValue(arguments[1])
3598 } else {
3599 ea = new cT(arguments[0], arguments[0], null, arguments[1], "CDATA");
3600 this.attributes.push(ea)
3601 }
3602 }
3603 },
3604 setString: function(ea, eb) {
3605 this.setAttribute(ea, eb)
3606 },
3607 setInt: function(ea, eb) {
3608 this.setAttribute(ea, eb)
3609 },
3610 setFloat: function(ea, eb) {
3611 this.setAttribute(ea, eb)
3612 },
3613 setContent: function(ea) {
3614 if (this.children.length > 0) {
3615 F.debug("Tried to set content for XMLElement with children")
3616 }
3617 this.content = ea
3618 },
3619 setName: function() {
3620 if (arguments.length === 1) {
3621 this.name = arguments[0];
3622 this.fullName = arguments[0];
3623 this.namespace = null
3624 } else {
3625 var ea = arguments[0].indexOf(":");
3626 if (arguments[1] === null || ea < 0) {
3627 this.name = arguments[0]
3628 } else {
3629 this.name = arguments[0].substring(ea + 1)
3630 }
3631 this.fullName = arguments[0];
3632 this.namespace = arguments[1]
3633 }
3634 },
3635 getName: function() {
3636 return this.fullName
3637 },
3638 getLocalName: function() {
3639 return this.name
3640 },
3641 getAttributeCount: function() {
3642 return this.attributes.length
3643 },
3644 toString: function() {
3645 if (this.type === "TEXT") {
3646 return this.content
3647 }
3648 if (this.type === "CDATA") {
3649 return this.cdata
3650 }
3651 var ec = this.fullName;
3652 var ed = "<" + ec;
3653 var eb, ee;
3654 for (eb = 0; eb < this.attributes.length; eb++) {
3655 var ea = this.attributes[eb];
3656 ed += " " + ea.getName() + '="' + ea.getValue() + '"'
3657 }
3658 if (this.children.length === 0) {
3659 if (this.content === "") {
3660 ed += "/>"
3661 } else {
3662 ed += ">" + this.content + "</" + ec + ">"
3663 }
3664 } else {
3665 ed += ">";
3666 for (ee = 0; ee < this.children.length; ee++) {
3667 ed += this.children[ee].toString()
3668 }
3669 ed += "</" + ec + ">"
3670 }
3671 return ed
3672 }
3673 };
3674 b9.parse = function(eb) {
3675 var ea = new b9;
3676 ea.parse(eb);
3677 return ea
3678 };
3679 var dg = cW.XML = cW.XMLElement;
3680 cW.loadXML = function(ea) {
3681 return new dg(cW, ea)
3682 };
3683 var cm = function(ed) {
3684 var ea = 0;
3685 for (var eb = 0; eb < ed.length; eb++) {
3686 if (eb !== 0) {
3687 ea = q.max(ea, q.abs(ed[eb]))
3688 } else {
3689 ea = q.abs(ed[eb])
3690 }
3691 }
3692 var ec = (ea + "").indexOf(".");
3693 if (ec === 0) {
3694 ec = 1
3695 } else {
3696 if (ec === -1) {
3697 ec = (ea + "").length
3698 }
3699 }
3700 return ec
3701 };
3702 var aX = cW.PMatrix2D = function() {
3703 if (arguments.length === 0) {
3704 this.reset()
3705 } else {
3706 if (arguments.length === 1 && arguments[0] instanceof aX) {
3707 this.set(arguments[0].array())
3708 } else {
3709 if (arguments.length === 6) {
3710 this.set(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5])
3711 }
3712 }
3713 }
3714 };
3715 aX.prototype = {
3716 set: function() {
3717 if (arguments.length === 6) {
3718 var ea = arguments;
3719 this.set([ea[0], ea[1], ea[2], ea[3], ea[4], ea[5]])
3720 } else {
3721 if (arguments.length === 1 && arguments[0] instanceof aX) {
3722 this.elements = arguments[0].array()
3723 } else {
3724 if (arguments.length === 1 && arguments[0] instanceof Array) {
3725 this.elements = arguments[0].slice()
3726 }
3727 }
3728 }
3729 },
3730 get: function() {
3731 var ea = new aX;
3732 ea.set(this.elements);
3733 return ea
3734 },
3735 reset: function() {
3736 this.set([1, 0, 0, 0, 1, 0])
3737 },
3738 array: function aE() {
3739 return this.elements.slice()
3740 },
3741 translate: function(eb, ea) {
3742 this.elements[2] = eb * this.elements[0] + ea * this.elements[1] + this.elements[2];
3743 this.elements[5] = eb * this.elements[3] + ea * this.elements[4] + this.elements[5]
3744 },
3745 invTranslate: function(eb, ea) {
3746 this.translate(-eb, -ea)
3747 },
3748 transpose: function() {},
3749 mult: function(eb, ec) {
3750 var ea, ed;
3751 if (eb instanceof A) {
3752 ea = eb.x;
3753 ed = eb.y;
3754 if (!ec) {
3755 ec = new A
3756 }
3757 } else {
3758 if (eb instanceof Array) {
3759 ea = eb[0];
3760 ed = eb[1];
3761 if (!ec) {
3762 ec = []
3763 }
3764 }
3765 } if (ec instanceof Array) {
3766 ec[0] = this.elements[0] * ea + this.elements[1] * ed + this.elements[2];
3767 ec[1] = this.elements[3] * ea + this.elements[4] * ed + this.elements[5]
3768 } else {
3769 if (ec instanceof A) {
3770 ec.x = this.elements[0] * ea + this.elements[1] * ed + this.elements[2];
3771 ec.y = this.elements[3] * ea + this.elements[4] * ed + this.elements[5];
3772 ec.z = 0
3773 }
3774 }
3775 return ec
3776 },
3777 multX: function(ea, eb) {
3778 return ea * this.elements[0] + eb * this.elements[1] + this.elements[2]
3779 },
3780 multY: function(ea, eb) {
3781 return ea * this.elements[3] + eb * this.elements[4] + this.elements[5]
3782 },
3783 skewX: function(ea) {
3784 this.apply(1, 0, 1, ea, 0, 0)
3785 },
3786 skewY: function(ea) {
3787 this.apply(1, 0, 1, 0, ea, 0)
3788 },
3789 shearX: function(ea) {
3790 this.apply(1, 0, 1, q.tan(ea), 0, 0)
3791 },
3792 shearY: function(ea) {
3793 this.apply(1, 0, 1, 0, q.tan(ea), 0)
3794 },
3795 determinant: function() {
3796 return this.elements[0] * this.elements[4] - this.elements[1] * this.elements[3]
3797 },
3798 invert: function() {
3799 var ef = this.determinant();
3800 if (q.abs(ef) > -2147483648) {
3801 var eb = this.elements[0];
3802 var eg = this.elements[1];
3803 var ee = this.elements[2];
3804 var ed = this.elements[3];
3805 var ec = this.elements[4];
3806 var ea = this.elements[5];
3807 this.elements[0] = ec / ef;
3808 this.elements[3] = -ed / ef;
3809 this.elements[1] = -eg / ef;
3810 this.elements[4] = eb / ef;
3811 this.elements[2] = (eg * ea - ec * ee) / ef;
3812 this.elements[5] = (ed * ee - eb * ea) / ef;
3813 return true
3814 }
3815 return false
3816 },
3817 scale: function(eb, ea) {
3818 if (eb && !ea) {
3819 ea = eb
3820 }
3821 if (eb && ea) {
3822 this.elements[0] *= eb;
3823 this.elements[1] *= ea;
3824 this.elements[3] *= eb;
3825 this.elements[4] *= ea
3826 }
3827 },
3828 invScale: function(eb, ea) {
3829 if (eb && !ea) {
3830 ea = eb
3831 }
3832 this.scale(1 / eb, 1 / ea)
3833 },
3834 apply: function() {
3835 var ec;
3836 if (arguments.length === 1 && arguments[0] instanceof aX) {
3837 ec = arguments[0].array()
3838 } else {
3839 if (arguments.length === 6) {
3840 ec = Array.prototype.slice.call(arguments)
3841 } else {
3842 if (arguments.length === 1 && arguments[0] instanceof Array) {
3843 ec = arguments[0]
3844 }
3845 }
3846 }
3847 var ea = [0, 0, this.elements[2], 0, 0, this.elements[5]];
3848 var ed = 0;
3849 for (var ee = 0; ee < 2; ee++) {
3850 for (var eb = 0; eb < 3; eb++, ed++) {
3851 ea[ed] += this.elements[ee * 3 + 0] * ec[eb + 0] + this.elements[ee * 3 + 1] * ec[eb + 3]
3852 }
3853 }
3854 this.elements = ea.slice()
3855 },
3856 preApply: function() {
3857 var eb;
3858 if (arguments.length === 1 && arguments[0] instanceof aX) {
3859 eb = arguments[0].array()
3860 } else {
3861 if (arguments.length === 6) {
3862 eb = Array.prototype.slice.call(arguments)
3863 } else {
3864 if (arguments.length === 1 && arguments[0] instanceof Array) {
3865 eb = arguments[0]
3866 }
3867 }
3868 }
3869 var ea = [0, 0, eb[2], 0, 0, eb[5]];
3870 ea[2] = eb[2] + this.elements[2] * eb[0] + this.elements[5] * eb[1];
3871 ea[5] = eb[5] + this.elements[2] * eb[3] + this.elements[5] * eb[4];
3872 ea[0] = this.elements[0] * eb[0] + this.elements[3] * eb[1];
3873 ea[3] = this.elements[0] * eb[3] + this.elements[3] * eb[4];
3874 ea[1] = this.elements[1] * eb[0] + this.elements[4] * eb[1];
3875 ea[4] = this.elements[1] * eb[3] + this.elements[4] * eb[4];
3876 this.elements = ea.slice()
3877 },
3878 rotate: function(ec) {
3879 var ee = q.cos(ec);
3880 var ea = q.sin(ec);
3881 var ed = this.elements[0];
3882 var eb = this.elements[1];
3883 this.elements[0] = ee * ed + ea * eb;
3884 this.elements[1] = -ea * ed + ee * eb;
3885 ed = this.elements[3];
3886 eb = this.elements[4];
3887 this.elements[3] = ee * ed + ea * eb;
3888 this.elements[4] = -ea * ed + ee * eb
3889 },
3890 rotateZ: function(ea) {
3891 this.rotate(ea)
3892 },
3893 invRotateZ: function(ea) {
3894 this.rotateZ(ea - q.PI)
3895 },
3896 print: function() {
3897 var eb = cm(this.elements);
3898 var ea = "" + cW.nfs(this.elements[0], eb, 4) + " " + cW.nfs(this.elements[1], eb, 4) + " " + cW.nfs(this.elements[2], eb, 4) + "\n" + cW.nfs(this.elements[3], eb, 4) + " " + cW.nfs(this.elements[4], eb, 4) + " " + cW.nfs(this.elements[5], eb, 4) + "\n\n";
3899 cW.println(ea)
3900 }
3901 };
3902 var aP = cW.PMatrix3D = function() {
3903 this.reset()
3904 };
3905 aP.prototype = {
3906 set: function() {
3907 if (arguments.length === 16) {
3908 this.elements = Array.prototype.slice.call(arguments)
3909 } else {
3910 if (arguments.length === 1 && arguments[0] instanceof aP) {
3911 this.elements = arguments[0].array()
3912 } else {
3913 if (arguments.length === 1 && arguments[0] instanceof Array) {
3914 this.elements = arguments[0].slice()
3915 }
3916 }
3917 }
3918 },
3919 get: function() {
3920 var ea = new aP;
3921 ea.set(this.elements);
3922 return ea
3923 },
3924 reset: function() {
3925 this.elements = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]
3926 },
3927 array: function aE() {
3928 return this.elements.slice()
3929 },
3930 translate: function(eb, ea, ec) {
3931 if (ec === t) {
3932 ec = 0
3933 }
3934 this.elements[3] += eb * this.elements[0] + ea * this.elements[1] + ec * this.elements[2];
3935 this.elements[7] += eb * this.elements[4] + ea * this.elements[5] + ec * this.elements[6];
3936 this.elements[11] += eb * this.elements[8] + ea * this.elements[9] + ec * this.elements[10];
3937 this.elements[15] += eb * this.elements[12] + ea * this.elements[13] + ec * this.elements[14]
3938 },
3939 transpose: function() {
3940 var ea = this.elements[4];
3941 this.elements[4] = this.elements[1];
3942 this.elements[1] = ea;
3943 ea = this.elements[8];
3944 this.elements[8] = this.elements[2];
3945 this.elements[2] = ea;
3946 ea = this.elements[6];
3947 this.elements[6] = this.elements[9];
3948 this.elements[9] = ea;
3949 ea = this.elements[3];
3950 this.elements[3] = this.elements[12];
3951 this.elements[12] = ea;
3952 ea = this.elements[7];
3953 this.elements[7] = this.elements[13];
3954 this.elements[13] = ea;
3955 ea = this.elements[11];
3956 this.elements[11] = this.elements[14];
3957 this.elements[14] = ea
3958 },
3959 mult: function(ec, ed) {
3960 var ea, ef, ee, eb;
3961 if (ec instanceof A) {
3962 ea = ec.x;
3963 ef = ec.y;
3964 ee = ec.z;
3965 eb = 1;
3966 if (!ed) {
3967 ed = new A
3968 }
3969 } else {
3970 if (ec instanceof Array) {
3971 ea = ec[0];
3972 ef = ec[1];
3973 ee = ec[2];
3974 eb = ec[3] || 1;
3975 if (!ed || ed.length !== 3 && ed.length !== 4) {
3976 ed = [0, 0, 0]
3977 }
3978 }
3979 } if (ed instanceof Array) {
3980 if (ed.length === 3) {
3981 ed[0] = this.elements[0] * ea + this.elements[1] * ef + this.elements[2] * ee + this.elements[3];
3982 ed[1] = this.elements[4] * ea + this.elements[5] * ef + this.elements[6] * ee + this.elements[7];
3983 ed[2] = this.elements[8] * ea + this.elements[9] * ef + this.elements[10] * ee + this.elements[11]
3984 } else {
3985 if (ed.length === 4) {
3986 ed[0] = this.elements[0] * ea + this.elements[1] * ef + this.elements[2] * ee + this.elements[3] * eb;
3987 ed[1] = this.elements[4] * ea + this.elements[5] * ef + this.elements[6] * ee + this.elements[7] * eb;
3988 ed[2] = this.elements[8] * ea + this.elements[9] * ef + this.elements[10] * ee + this.elements[11] * eb;
3989 ed[3] = this.elements[12] * ea + this.elements[13] * ef + this.elements[14] * ee + this.elements[15] * eb
3990 }
3991 }
3992 }
3993 if (ed instanceof A) {
3994 ed.x = this.elements[0] * ea + this.elements[1] * ef + this.elements[2] * ee + this.elements[3];
3995 ed.y = this.elements[4] * ea + this.elements[5] * ef + this.elements[6] * ee + this.elements[7];
3996 ed.z = this.elements[8] * ea + this.elements[9] * ef + this.elements[10] * ee + this.elements[11]
3997 }
3998 return ed
3999 },
4000 preApply: function() {
4001 var ec;
4002 if (arguments.length === 1 && arguments[0] instanceof aP) {
4003 ec = arguments[0].array()
4004 } else {
4005 if (arguments.length === 16) {
4006 ec = Array.prototype.slice.call(arguments)
4007 } else {
4008 if (arguments.length === 1 && arguments[0] instanceof Array) {
4009 ec = arguments[0]
4010 }
4011 }
4012 }
4013 var ea = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
4014 var ed = 0;
4015 for (var ee = 0; ee < 4; ee++) {
4016 for (var eb = 0; eb < 4; eb++, ed++) {
4017 ea[ed] += this.elements[eb + 0] * ec[ee * 4 + 0] + this.elements[eb + 4] * ec[ee * 4 + 1] + this.elements[eb + 8] * ec[ee * 4 + 2] + this.elements[eb + 12] * ec[ee * 4 + 3]
4018 }
4019 }
4020 this.elements = ea.slice()
4021 },
4022 apply: function() {
4023 var ec;
4024 if (arguments.length === 1 && arguments[0] instanceof aP) {
4025 ec = arguments[0].array()
4026 } else {
4027 if (arguments.length === 16) {
4028 ec = Array.prototype.slice.call(arguments)
4029 } else {
4030 if (arguments.length === 1 && arguments[0] instanceof Array) {
4031 ec = arguments[0]
4032 }
4033 }
4034 }
4035 var ea = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
4036 var ed = 0;
4037 for (var ee = 0; ee < 4; ee++) {
4038 for (var eb = 0; eb < 4; eb++, ed++) {
4039 ea[ed] += this.elements[ee * 4 + 0] * ec[eb + 0] + this.elements[ee * 4 + 1] * ec[eb + 4] + this.elements[ee * 4 + 2] * ec[eb + 8] + this.elements[ee * 4 + 3] * ec[eb + 12]
4040 }
4041 }
4042 this.elements = ea.slice()
4043 },
4044 rotate: function(ee, ea, eg, ed) {
4045 if (!eg) {
4046 this.rotateZ(ee)
4047 } else {
4048 var ef = cW.cos(ee);
4049 var ec = cW.sin(ee);
4050 var eb = 1 - ef;
4051 this.apply(eb * ea * ea + ef, eb * ea * eg - ec * ed, eb * ea * ed + ec * eg, 0, eb * ea * eg + ec * ed, eb * eg * eg + ef, eb * eg * ed - ec * ea, 0, eb * ea * ed - ec * eg, eb * eg * ed + ec * ea, eb * ed * ed + ef, 0, 0, 0, 0, 1)
4052 }
4053 },
4054 invApply: function() {
4055 if (ab === t) {
4056 ab = new aP
4057 }
4058 var ea = arguments;
4059 ab.set(ea[0], ea[1], ea[2], ea[3], ea[4], ea[5], ea[6], ea[7], ea[8], ea[9], ea[10], ea[11], ea[12], ea[13], ea[14], ea[15]);
4060 if (!ab.invert()) {
4061 return false
4062 }
4063 this.preApply(ab);
4064 return true
4065 },
4066 rotateX: function(eb) {
4067 var ec = cW.cos(eb);
4068 var ea = cW.sin(eb);
4069 this.apply([1, 0, 0, 0, 0, ec, -ea, 0, 0, ea, ec, 0, 0, 0, 0, 1])
4070 },
4071 rotateY: function(eb) {
4072 var ec = cW.cos(eb);
4073 var ea = cW.sin(eb);
4074 this.apply([ec, 0, ea, 0, 0, 1, 0, 0, -ea, 0, ec, 0, 0, 0, 0, 1])
4075 },
4076 rotateZ: function(eb) {
4077 var ec = q.cos(eb);
4078 var ea = q.sin(eb);
4079 this.apply([ec, -ea, 0, 0, ea, ec, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1])
4080 },
4081 scale: function(ec, eb, ea) {
4082 if (ec && !eb && !ea) {
4083 eb = ea = ec
4084 } else {
4085 if (ec && eb && !ea) {
4086 ea = 1
4087 }
4088 } if (ec && eb && ea) {
4089 this.elements[0] *= ec;
4090 this.elements[1] *= eb;
4091 this.elements[2] *= ea;
4092 this.elements[4] *= ec;
4093 this.elements[5] *= eb;
4094 this.elements[6] *= ea;
4095 this.elements[8] *= ec;
4096 this.elements[9] *= eb;
4097 this.elements[10] *= ea;
4098 this.elements[12] *= ec;
4099 this.elements[13] *= eb;
4100 this.elements[14] *= ea
4101 }
4102 },
4103 skewX: function(eb) {
4104 var ea = q.tan(eb);
4105 this.apply(1, ea, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)
4106 },
4107 skewY: function(eb) {
4108 var ea = q.tan(eb);
4109 this.apply(1, 0, 0, 0, ea, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)
4110 },
4111 shearX: function(eb) {
4112 var ea = q.tan(eb);
4113 this.apply(1, ea, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)
4114 },
4115 shearY: function(eb) {
4116 var ea = q.tan(eb);
4117 this.apply(1, 0, 0, 0, ea, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)
4118 },
4119 multX: function(ea, ed, ec, eb) {
4120 if (!ec) {
4121 return this.elements[0] * ea + this.elements[1] * ed + this.elements[3]
4122 }
4123 if (!eb) {
4124 return this.elements[0] * ea + this.elements[1] * ed + this.elements[2] * ec + this.elements[3]
4125 }
4126 return this.elements[0] * ea + this.elements[1] * ed + this.elements[2] * ec + this.elements[3] * eb
4127 },
4128 multY: function(ea, ed, ec, eb) {
4129 if (!ec) {
4130 return this.elements[4] * ea + this.elements[5] * ed + this.elements[7]
4131 }
4132 if (!eb) {
4133 return this.elements[4] * ea + this.elements[5] * ed + this.elements[6] * ec + this.elements[7]
4134 }
4135 return this.elements[4] * ea + this.elements[5] * ed + this.elements[6] * ec + this.elements[7] * eb
4136 },
4137 multZ: function(ea, ed, ec, eb) {
4138 if (!eb) {
4139 return this.elements[8] * ea + this.elements[9] * ed + this.elements[10] * ec + this.elements[11]
4140 }
4141 return this.elements[8] * ea + this.elements[9] * ed + this.elements[10] * ec + this.elements[11] * eb
4142 },
4143 multW: function(ea, ed, ec, eb) {
4144 if (!eb) {
4145 return this.elements[12] * ea + this.elements[13] * ed + this.elements[14] * ec + this.elements[15]
4146 }
4147 return this.elements[12] * ea + this.elements[13] * ed + this.elements[14] * ec + this.elements[15] * eb
4148 },
4149 invert: function() {
4150 var ej = this.elements[0] * this.elements[5] - this.elements[1] * this.elements[4];
4151 var ei = this.elements[0] * this.elements[6] - this.elements[2] * this.elements[4];
4152 var eh = this.elements[0] * this.elements[7] - this.elements[3] * this.elements[4];
4153 var eg = this.elements[1] * this.elements[6] - this.elements[2] * this.elements[5];
4154 var ef = this.elements[1] * this.elements[7] - this.elements[3] * this.elements[5];
4155 var ee = this.elements[2] * this.elements[7] - this.elements[3] * this.elements[6];
4156 var ed = this.elements[8] * this.elements[13] - this.elements[9] * this.elements[12];
4157 var ec = this.elements[8] * this.elements[14] - this.elements[10] * this.elements[12];
4158 var eb = this.elements[8] * this.elements[15] - this.elements[11] * this.elements[12];
4159 var eo = this.elements[9] * this.elements[14] - this.elements[10] * this.elements[13];
4160 var em = this.elements[9] * this.elements[15] - this.elements[11] * this.elements[13];
4161 var el = this.elements[10] * this.elements[15] - this.elements[11] * this.elements[14];
4162 var en = ej * el - ei * em + eh * eo + eg * eb - ef * ec + ee * ed;
4163 if (q.abs(en) <= 1e-9) {
4164 return false
4165 }
4166 var ek = [];
4167 ek[0] = +this.elements[5] * el - this.elements[6] * em + this.elements[7] * eo;
4168 ek[4] = -this.elements[4] * el + this.elements[6] * eb - this.elements[7] * ec;
4169 ek[8] = +this.elements[4] * em - this.elements[5] * eb + this.elements[7] * ed;
4170 ek[12] = -this.elements[4] * eo + this.elements[5] * ec - this.elements[6] * ed;
4171 ek[1] = -this.elements[1] * el + this.elements[2] * em - this.elements[3] * eo;
4172 ek[5] = +this.elements[0] * el - this.elements[2] * eb + this.elements[3] * ec;
4173 ek[9] = -this.elements[0] * em + this.elements[1] * eb - this.elements[3] * ed;
4174 ek[13] = +this.elements[0] * eo - this.elements[1] * ec + this.elements[2] * ed;
4175 ek[2] = +this.elements[13] * ee - this.elements[14] * ef + this.elements[15] * eg;
4176 ek[6] = -this.elements[12] * ee + this.elements[14] * eh - this.elements[15] * ei;
4177 ek[10] = +this.elements[12] * ef - this.elements[13] * eh + this.elements[15] * ej;
4178 ek[14] = -this.elements[12] * eg + this.elements[13] * ei - this.elements[14] * ej;
4179 ek[3] = -this.elements[9] * ee + this.elements[10] * ef - this.elements[11] * eg;
4180 ek[7] = +this.elements[8] * ee - this.elements[10] * eh + this.elements[11] * ei;
4181 ek[11] = -this.elements[8] * ef + this.elements[9] * eh - this.elements[11] * ej;
4182 ek[15] = +this.elements[8] * eg - this.elements[9] * ei + this.elements[10] * ej;
4183 var ea = 1 / en;
4184 ek[0] *= ea;
4185 ek[1] *= ea;
4186 ek[2] *= ea;
4187 ek[3] *= ea;
4188 ek[4] *= ea;
4189 ek[5] *= ea;
4190 ek[6] *= ea;
4191 ek[7] *= ea;
4192 ek[8] *= ea;
4193 ek[9] *= ea;
4194 ek[10] *= ea;
4195 ek[11] *= ea;
4196 ek[12] *= ea;
4197 ek[13] *= ea;
4198 ek[14] *= ea;
4199 ek[15] *= ea;
4200 this.elements = ek.slice();
4201 return true
4202 },
4203 toString: function() {
4204 var eb = "";
4205 for (var ea = 0; ea < 15; ea++) {
4206 eb += this.elements[ea] + ", "
4207 }
4208 eb += this.elements[15];
4209 return eb
4210 },
4211 print: function() {
4212 var eb = cm(this.elements);
4213 var ea = "" + cW.nfs(this.elements[0], eb, 4) + " " + cW.nfs(this.elements[1], eb, 4) + " " + cW.nfs(this.elements[2], eb, 4) + " " + cW.nfs(this.elements[3], eb, 4) + "\n" + cW.nfs(this.elements[4], eb, 4) + " " + cW.nfs(this.elements[5], eb, 4) + " " + cW.nfs(this.elements[6], eb, 4) + " " + cW.nfs(this.elements[7], eb, 4) + "\n" + cW.nfs(this.elements[8], eb, 4) + " " + cW.nfs(this.elements[9], eb, 4) + " " + cW.nfs(this.elements[10], eb, 4) + " " + cW.nfs(this.elements[11], eb, 4) + "\n" + cW.nfs(this.elements[12], eb, 4) + " " + cW.nfs(this.elements[13], eb, 4) + " " + cW.nfs(this.elements[14], eb, 4) + " " + cW.nfs(this.elements[15], eb, 4) + "\n\n";
4214 cW.println(ea)
4215 },
4216 invTranslate: function(eb, ea, ec) {
4217 this.preApply(1, 0, 0, -eb, 0, 1, 0, -ea, 0, 0, 1, -ec, 0, 0, 0, 1)
4218 },
4219 invRotateX: function(eb) {
4220 var ec = q.cos(-eb);
4221 var ea = q.sin(-eb);
4222 this.preApply([1, 0, 0, 0, 0, ec, -ea, 0, 0, ea, ec, 0, 0, 0, 0, 1])
4223 },
4224 invRotateY: function(eb) {
4225 var ec = q.cos(-eb);
4226 var ea = q.sin(-eb);
4227 this.preApply([ec, 0, ea, 0, 0, 1, 0, 0, -ea, 0, ec, 0, 0, 0, 0, 1])
4228 },
4229 invRotateZ: function(eb) {
4230 var ec = q.cos(-eb);
4231 var ea = q.sin(-eb);
4232 this.preApply([ec, -ea, 0, 0, ea, ec, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1])
4233 },
4234 invScale: function(ea, ec, eb) {
4235 this.preApply([1 / ea, 0, 0, 0, 0, 1 / ec, 0, 0, 0, 0, 1 / eb, 0, 0, 0, 0, 1])
4236 }
4237 };
4238 var V = cW.PMatrixStack = function() {
4239 this.matrixStack = []
4240 };
4241 V.prototype.load = function() {
4242 var ea = dY.$newPMatrix();
4243 if (arguments.length === 1) {
4244 ea.set(arguments[0])
4245 } else {
4246 ea.set(arguments)
4247 }
4248 this.matrixStack.push(ea)
4249 };
4250 bR.prototype.$newPMatrix = function() {
4251 return new aX
4252 };
4253 bB.prototype.$newPMatrix = function() {
4254 return new aP
4255 };
4256 V.prototype.push = function() {
4257 this.matrixStack.push(this.peek())
4258 };
4259 V.prototype.pop = function() {
4260 return this.matrixStack.pop()
4261 };
4262 V.prototype.peek = function() {
4263 var ea = dY.$newPMatrix();
4264 ea.set(this.matrixStack[this.matrixStack.length - 1]);
4265 return ea
4266 };
4267 V.prototype.mult = function(ea) {
4268 this.matrixStack[this.matrixStack.length - 1].apply(ea)
4269 };
4270 cW.split = function(eb, ea) {
4271 return eb.split(ea)
4272 };
4273 cW.splitTokens = function(eg, ef) {
4274 if (ef === t) {
4275 return eg.split(/\s+/g)
4276 }
4277 var ed = ef.split(/()/g),
4278 eb = "",
4279 ea = eg.length,
4280 ec, eh, ee = [];
4281 for (ec = 0; ec < ea; ec++) {
4282 eh = eg[ec];
4283 if (ed.indexOf(eh) > -1) {
4284 if (eb !== "") {
4285 ee.push(eb)
4286 }
4287 eb = ""
4288 } else {
4289 eb += eh
4290 }
4291 }
4292 if (eb !== "") {
4293 ee.push(eb)
4294 }
4295 return ee
4296 };
4297 cW.append = function(eb, ea) {
4298 eb[eb.length] = ea;
4299 return eb
4300 };
4301 cW.concat = function(eb, ea) {
4302 return eb.concat(ea)
4303 };
4304 cW.sort = function(ef, ed) {
4305 var eb = [];
4306 if (ef.length > 0) {
4307 var ee = ed > 0 ? ed : ef.length;
4308 for (var ec = 0; ec < ee; ec++) {
4309 eb.push(ef[ec])
4310 }
4311 if (typeof ef[0] === "string") {
4312 eb.sort()
4313 } else {
4314 eb.sort(function(eh, eg) {
4315 return eh - eg
4316 })
4317 } if (ed > 0) {
4318 for (var ea = eb.length; ea < ef.length; ea++) {
4319 eb.push(ef[ea])
4320 }
4321 }
4322 }
4323 return eb
4324 };
4325 cW.splice = function(ee, ed, eb) {
4326 if (ed.length === 0) {
4327 return ee
4328 }
4329 if (ed instanceof Array) {
4330 for (var ec = 0, ea = eb; ec < ed.length; ea++, ec++) {
4331 ee.splice(ea, 0, ed[ec])
4332 }
4333 } else {
4334 ee.splice(eb, 0, ed)
4335 }
4336 return ee
4337 };
4338 cW.subset = function(ed, ec, eb) {
4339 var ea = eb !== t ? ec + eb : ed.length;
4340 return ed.slice(ec, ea)
4341 };
4342 cW.join = function(eb, ea) {
4343 return eb.join(ea)
4344 };
4345 cW.shorten = function(ed) {
4346 var eb = [];
4347 var ea = ed.length;
4348 for (var ec = 0; ec < ea; ec++) {
4349 eb[ec] = ed[ec]
4350 }
4351 eb.pop();
4352 return eb
4353 };
4354 cW.expand = function(ec, ed) {
4355 var eb = ec.slice(0),
4356 ea = ed || ec.length * 2;
4357 eb.length = ea;
4358 return eb
4359 };
4360 cW.arrayCopy = function() {
4361 var eg, ee = 0,
4362 ec, eb = 0,
4363 ef;
4364 if (arguments.length === 2) {
4365 eg = arguments[0];
4366 ec = arguments[1];
4367 ef = eg.length
4368 } else {
4369 if (arguments.length === 3) {
4370 eg = arguments[0];
4371 ec = arguments[1];
4372 ef = arguments[2]
4373 } else {
4374 if (arguments.length === 5) {
4375 eg = arguments[0];
4376 ee = arguments[1];
4377 ec = arguments[2];
4378 eb = arguments[3];
4379 ef = arguments[4]
4380 }
4381 }
4382 }
4383 for (var ed = ee, ea = eb; ed < ef + ee; ed++, ea++) {
4384 if (ec[ea] !== t) {
4385 ec[ea] = eg[ed]
4386 } else {
4387 throw "array index out of bounds exception"
4388 }
4389 }
4390 };
4391 cW.reverse = function(ea) {
4392 return ea.reverse()
4393 };
4394 cW.mix = function(eb, ea, ec) {
4395 return eb + ((ea - eb) * ec >> 8)
4396 };
4397 cW.peg = function(ea) {
4398 return ea < 0 ? 0 : ea > 255 ? 255 : ea
4399 };
4400 cW.modes = function() {
4401 var ef = 4278190080,
4402 ec = 16711680,
4403 eb = 65280,
4404 ee = 255,
4405 ed = q.min,
4406 ea = q.max;
4407
4408 function eg(el, eo, ek, et, ev, eu, em, eq, ep, ei, ej) {
4409 var es = ed(((el & 4278190080) >>> 24) + eo, 255) << 24;
4410 var eh = ek + ((ep - ek) * eo >> 8);
4411 eh = (eh < 0 ? 0 : eh > 255 ? 255 : eh) << 16;
4412 var en = et + ((ei - et) * eo >> 8);
4413 en = (en < 0 ? 0 : en > 255 ? 255 : en) << 8;
4414 var er = ev + ((ej - ev) * eo >> 8);
4415 er = er < 0 ? 0 : er > 255 ? 255 : er;
4416 return es | eh | en | er
4417 }
4418 return {
4419 replace: function(ei, eh) {
4420 return eh
4421 },
4422 blend: function(ej, ei) {
4423 var el = (ei & ef) >>> 24,
4424 eh = ej & ec,
4425 en = ej & eb,
4426 ep = ej & ee,
4427 eo = ei & ec,
4428 ek = ei & eb,
4429 em = ei & ee;
4430 return ed(((ej & ef) >>> 24) + el, 255) << 24 | eh + ((eo - eh) * el >> 8) & ec | en + ((ek - en) * el >> 8) & eb | ep + ((em - ep) * el >> 8) & ee
4431 },
4432 add: function(ei, eh) {
4433 var ej = (eh & ef) >>> 24;
4434 return ed(((ei & ef) >>> 24) + ej, 255) << 24 | ed((ei & ec) + ((eh & ec) >> 8) * ej, ec) & ec | ed((ei & eb) + ((eh & eb) >> 8) * ej, eb) & eb | ed((ei & ee) + ((eh & ee) * ej >> 8), ee)
4435 },
4436 subtract: function(ei, eh) {
4437 var ej = (eh & ef) >>> 24;
4438 return ed(((ei & ef) >>> 24) + ej, 255) << 24 | ea((ei & ec) - ((eh & ec) >> 8) * ej, eb) & ec | ea((ei & eb) - ((eh & eb) >> 8) * ej, ee) & eb | ea((ei & ee) - ((eh & ee) * ej >> 8), 0)
4439 },
4440 lightest: function(ei, eh) {
4441 var ej = (eh & ef) >>> 24;
4442 return ed(((ei & ef) >>> 24) + ej, 255) << 24 | ea(ei & ec, ((eh & ec) >> 8) * ej) & ec | ea(ei & eb, ((eh & eb) >> 8) * ej) & eb | ea(ei & ee, (eh & ee) * ej >> 8)
4443 },
4444 darkest: function(ej, ei) {
4445 var el = (ei & ef) >>> 24,
4446 eh = ej & ec,
4447 en = ej & eb,
4448 ep = ej & ee,
4449 eo = ed(ej & ec, ((ei & ec) >> 8) * el),
4450 ek = ed(ej & eb, ((ei & eb) >> 8) * el),
4451 em = ed(ej & ee, (ei & ee) * el >> 8);
4452 return ed(((ej & ef) >>> 24) + el, 255) << 24 | eh + ((eo - eh) * el >> 8) & ec | en + ((ek - en) * el >> 8) & eb | ep + ((em - ep) * el >> 8) & ee
4453 },
4454 difference: function(el, ek) {
4455 var en = (ek & ef) >>> 24,
4456 ej = (el & ec) >> 16,
4457 eq = (el & eb) >> 8,
4458 es = el & ee,
4459 er = (ek & ec) >> 16,
4460 em = (ek & eb) >> 8,
4461 ep = ek & ee,
4462 eo = ej > er ? ej - er : er - ej,
4463 eh = eq > em ? eq - em : em - eq,
4464 ei = es > ep ? es - ep : ep - es;
4465 return eg(el, en, ej, eq, es, er, em, ep, eo, eh, ei)
4466 },
4467 exclusion: function(el, ek) {
4468 var en = (ek & ef) >>> 24,
4469 ej = (el & ec) >> 16,
4470 eq = (el & eb) >> 8,
4471 es = el & ee,
4472 er = (ek & ec) >> 16,
4473 em = (ek & eb) >> 8,
4474 ep = ek & ee,
4475 eo = ej + er - (ej * er >> 7),
4476 eh = eq + em - (eq * em >> 7),
4477 ei = es + ep - (es * ep >> 7);
4478 return eg(el, en, ej, eq, es, er, em, ep, eo, eh, ei)
4479 },
4480 multiply: function(el, ek) {
4481 var en = (ek & ef) >>> 24,
4482 ej = (el & ec) >> 16,
4483 eq = (el & eb) >> 8,
4484 es = el & ee,
4485 er = (ek & ec) >> 16,
4486 em = (ek & eb) >> 8,
4487 ep = ek & ee,
4488 eo = ej * er >> 8,
4489 eh = eq * em >> 8,
4490 ei = es * ep >> 8;
4491 return eg(el, en, ej, eq, es, er, em, ep, eo, eh, ei)
4492 },
4493 screen: function(el, ek) {
4494 var en = (ek & ef) >>> 24,
4495 ej = (el & ec) >> 16,
4496 eq = (el & eb) >> 8,
4497 es = el & ee,
4498 er = (ek & ec) >> 16,
4499 em = (ek & eb) >> 8,
4500 ep = ek & ee,
4501 eo = 255 - ((255 - ej) * (255 - er) >> 8),
4502 eh = 255 - ((255 - eq) * (255 - em) >> 8),
4503 ei = 255 - ((255 - es) * (255 - ep) >> 8);
4504 return eg(el, en, ej, eq, es, er, em, ep, eo, eh, ei)
4505 },
4506 hard_light: function(el, ek) {
4507 var en = (ek & ef) >>> 24,
4508 ej = (el & ec) >> 16,
4509 eq = (el & eb) >> 8,
4510 es = el & ee,
4511 er = (ek & ec) >> 16,
4512 em = (ek & eb) >> 8,
4513 ep = ek & ee,
4514 eo = er < 128 ? ej * er >> 7 : 255 - ((255 - ej) * (255 - er) >> 7),
4515 eh = em < 128 ? eq * em >> 7 : 255 - ((255 - eq) * (255 - em) >> 7),
4516 ei = ep < 128 ? es * ep >> 7 : 255 - ((255 - es) * (255 - ep) >> 7);
4517 return eg(el, en, ej, eq, es, er, em, ep, eo, eh, ei)
4518 },
4519 soft_light: function(el, ek) {
4520 var en = (ek & ef) >>> 24,
4521 ej = (el & ec) >> 16,
4522 eq = (el & eb) >> 8,
4523 es = el & ee,
4524 er = (ek & ec) >> 16,
4525 em = (ek & eb) >> 8,
4526 ep = ek & ee,
4527 eo = (ej * er >> 7) + (ej * ej >> 8) - (ej * ej * er >> 15),
4528 eh = (eq * em >> 7) + (eq * eq >> 8) - (eq * eq * em >> 15),
4529 ei = (es * ep >> 7) + (es * es >> 8) - (es * es * ep >> 15);
4530 return eg(el, en, ej, eq, es, er, em, ep, eo, eh, ei)
4531 },
4532 overlay: function(el, ek) {
4533 var en = (ek & ef) >>> 24,
4534 ej = (el & ec) >> 16,
4535 eq = (el & eb) >> 8,
4536 es = el & ee,
4537 er = (ek & ec) >> 16,
4538 em = (ek & eb) >> 8,
4539 ep = ek & ee,
4540 eo = ej < 128 ? ej * er >> 7 : 255 - ((255 - ej) * (255 - er) >> 7),
4541 eh = eq < 128 ? eq * em >> 7 : 255 - ((255 - eq) * (255 - em) >> 7),
4542 ei = es < 128 ? es * ep >> 7 : 255 - ((255 - es) * (255 - ep) >> 7);
4543 return eg(el, en, ej, eq, es, er, em, ep, eo, eh, ei)
4544 },
4545 dodge: function(el, ek) {
4546 var en = (ek & ef) >>> 24,
4547 ej = (el & ec) >> 16,
4548 eq = (el & eb) >> 8,
4549 es = el & ee,
4550 er = (ek & ec) >> 16,
4551 em = (ek & eb) >> 8,
4552 ep = ek & ee;
4553 var eo = 255;
4554 if (er !== 255) {
4555 eo = (ej << 8) / (255 - er);
4556 eo = eo < 0 ? 0 : eo > 255 ? 255 : eo
4557 }
4558 var eh = 255;
4559 if (em !== 255) {
4560 eh = (eq << 8) / (255 - em);
4561 eh = eh < 0 ? 0 : eh > 255 ? 255 : eh
4562 }
4563 var ei = 255;
4564 if (ep !== 255) {
4565 ei = (es << 8) / (255 - ep);
4566 ei = ei < 0 ? 0 : ei > 255 ? 255 : ei
4567 }
4568 return eg(el, en, ej, eq, es, er, em, ep, eo, eh, ei)
4569 },
4570 burn: function(el, ek) {
4571 var en = (ek & ef) >>> 24,
4572 ej = (el & ec) >> 16,
4573 eq = (el & eb) >> 8,
4574 es = el & ee,
4575 er = (ek & ec) >> 16,
4576 em = (ek & eb) >> 8,
4577 ep = ek & ee;
4578 var eo = 0;
4579 if (er !== 0) {
4580 eo = (255 - ej << 8) / er;
4581 eo = 255 - (eo < 0 ? 0 : eo > 255 ? 255 : eo)
4582 }
4583 var eh = 0;
4584 if (em !== 0) {
4585 eh = (255 - eq << 8) / em;
4586 eh = 255 - (eh < 0 ? 0 : eh > 255 ? 255 : eh)
4587 }
4588 var ei = 0;
4589 if (ep !== 0) {
4590 ei = (255 - es << 8) / ep;
4591 ei = 255 - (ei < 0 ? 0 : ei > 255 ? 255 : ei)
4592 }
4593 return eg(el, en, ej, eq, es, er, em, ep, eo, eh, ei)
4594 }
4595 }
4596 }();
4597
4598 function dH(ef, ee, ec, eb) {
4599 var ea, ed, eh, ei;
4600 if (cY === 3) {
4601 var eg = cW.color.toRGB(ef, ee, ec);
4602 ea = eg[0];
4603 ed = eg[1];
4604 eh = eg[2]
4605 } else {
4606 ea = q.round(255 * (ef / bJ));
4607 ed = q.round(255 * (ee / bI));
4608 eh = q.round(255 * (ec / bG))
4609 }
4610 ei = q.round(255 * (eb / bU));
4611 ea = ea < 0 ? 0 : ea;
4612 ed = ed < 0 ? 0 : ed;
4613 eh = eh < 0 ? 0 : eh;
4614 ei = ei < 0 ? 0 : ei;
4615 ea = ea > 255 ? 255 : ea;
4616 ed = ed > 255 ? 255 : ed;
4617 eh = eh > 255 ? 255 : eh;
4618 ei = ei > 255 ? 255 : ei;
4619 return ei << 24 & 4278190080 | ea << 16 & 16711680 | ed << 8 & 65280 | eh & 255
4620 }
4621
4622 function dK(ea, ec) {
4623 var eb;
4624 if (ea & 4278190080) {
4625 eb = q.round(255 * (ec / bU));
4626 eb = eb > 255 ? 255 : eb;
4627 eb = eb < 0 ? 0 : eb;
4628 return ea - (ea & 4278190080) + (eb << 24 & 4278190080)
4629 }
4630 if (cY === 1) {
4631 return dH(ea, ea, ea, ec)
4632 }
4633 if (cY === 3) {
4634 return dH(0, 0, ea / bJ * bG, ec)
4635 }
4636 }
4637
4638 function dM(ea) {
4639 if (ea <= bJ && ea >= 0) {
4640 if (cY === 1) {
4641 return dH(ea, ea, ea, bU)
4642 }
4643 if (cY === 3) {
4644 return dH(0, 0, ea / bJ * bG, bU)
4645 }
4646 }
4647 if (ea) {
4648 if (ea > 2147483647) {
4649 ea -= 4294967296
4650 }
4651 return ea
4652 }
4653 }
4654 cW.color = function(ea, ed, ec, eb) {
4655 if (ea !== t && ed !== t && ec !== t && eb !== t) {
4656 return dH(ea, ed, ec, eb)
4657 }
4658 if (ea !== t && ed !== t && ec !== t) {
4659 return dH(ea, ed, ec, bU)
4660 }
4661 if (ea !== t && ed !== t) {
4662 return dK(ea, ed)
4663 }
4664 if (typeof ea === "number") {
4665 return dM(ea)
4666 }
4667 return dH(bJ, bI, bG, bU)
4668 };
4669 cW.color.toString = function(ea) {
4670 return "rgba(" + ((ea >> 16) & 255) + "," + ((ea >> 8) & 255) + "," + (ea & 255) + "," + ((ea >> 24) & 255) / 255 + ")"
4671 };
4672 cW.color.toInt = function(ed, ec, ea, eb) {
4673 return eb << 24 & 4278190080 | ed << 16 & 16711680 | ec << 8 & 65280 | ea & 255
4674 };
4675 cW.color.toArray = function(ea) {
4676 return [(ea >> 16) & 255, (ea >> 8) & 255, ea & 255, (ea >> 24) & 255]
4677 };
4678 cW.color.toGLArray = function(ea) {
4679 return [((ea & 16711680) >>> 16) / 255, ((ea >> 8) & 255) / 255, (ea & 255) / 255, ((ea >> 24) & 255) / 255]
4680 };
4681 cW.color.toRGB = function(ec, ei, ef) {
4682 ec = ec > bJ ? bJ : ec;
4683 ei = ei > bI ? bI : ei;
4684 ef = ef > bG ? bG : ef;
4685 ec = ec / bJ * 360;
4686 ei = ei / bI * 100;
4687 ef = ef / bG * 100;
4688 var eh = q.round(ef / 100 * 255);
4689 if (ei === 0) {
4690 return [eh, eh, eh]
4691 }
4692 var ed = ec % 360;
4693 var ee = ed % 60;
4694 var eb = q.round(ef * (100 - ei) / 10000 * 255);
4695 var ea = q.round(ef * (6000 - ei * ee) / 600000 * 255);
4696 var eg = q.round(ef * (6000 - ei * (60 - ee)) / 600000 * 255);
4697 switch (q.floor(ed / 60)) {
4698 case 0:
4699 return [eh, eg, eb];
4700 case 1:
4701 return [ea, eh, eb];
4702 case 2:
4703 return [eb, eh, eg];
4704 case 3:
4705 return [eb, ea, eh];
4706 case 4:
4707 return [eg, eb, eh];
4708 case 5:
4709 return [eh, eb, ea]
4710 }
4711 };
4712
4713 function aS(eh) {
4714 var eg, ef, eb;
4715 eg = ((eh >> 16) & 255) / 255;
4716 ef = ((eh >> 8) & 255) / 255;
4717 eb = (eh & 255) / 255;
4718 var ea = cW.max(cW.max(eg, ef), eb),
4719 ed = cW.min(cW.min(eg, ef), eb),
4720 ec, ee;
4721 if (ed === ea) {
4722 return [0, 0, ea * bG]
4723 }
4724 ee = (ea - ed) / ea;
4725 if (eg === ea) {
4726 ec = (ef - eb) / (ea - ed)
4727 } else {
4728 if (ef === ea) {
4729 ec = 2 + (eb - eg) / (ea - ed)
4730 } else {
4731 ec = 4 + (eg - ef) / (ea - ed)
4732 }
4733 }
4734 ec /= 6;
4735 if (ec < 0) {
4736 ec += 1
4737 } else {
4738 if (ec > 1) {
4739 ec -= 1
4740 }
4741 }
4742 return [ec * bJ, ee * bI, ea * bG]
4743 }
4744 cW.brightness = function(ea) {
4745 return aS(ea)[2]
4746 };
4747 cW.saturation = function(ea) {
4748 return aS(ea)[1]
4749 };
4750 cW.hue = function(ea) {
4751 return aS(ea)[0]
4752 };
4753 cW.red = function(ea) {
4754 return ((ea >> 16) & 255) / 255 * bJ
4755 };
4756 cW.green = function(ea) {
4757 return ((ea & 65280) >>> 8) / 255 * bI
4758 };
4759 cW.blue = function(ea) {
4760 return (ea & 255) / 255 * bG
4761 };
4762 cW.alpha = function(ea) {
4763 return ((ea >> 24) & 255) / 255 * bU
4764 };
4765 cW.lerpColor = function(em, el, ef) {
4766 var ek, eq, er, es, eo, ea, eg, eu, en, ev, ee, et;
4767 var ei, eh, eb, ep, ej;
4768 var ed = cW.color(em);
4769 var ec = cW.color(el);
4770 if (cY === 3) {
4771 ei = aS(ed);
4772 eu = ((ed >> 24) & 255) / bU;
4773 eh = aS(ec);
4774 et = ((ec & 4278190080) >>> 24) / bU;
4775 ep = cW.lerp(ei[0], eh[0], ef);
4776 ej = cW.lerp(ei[1], eh[1], ef);
4777 er = cW.lerp(ei[2], eh[2], ef);
4778 eb = cW.color.toRGB(ep, ej, er);
4779 es = cW.lerp(eu, et, ef) * bU;
4780 return es << 24 & 4278190080 | (eb[0] & 255) << 16 | (eb[1] & 255) << 8 | eb[2] & 255
4781 }
4782 eo = (ed >> 16) & 255;
4783 ea = (ed >> 8) & 255;
4784 eg = ed & 255;
4785 eu = ((ed >> 24) & 255) / bU;
4786 en = (ec & 16711680) >>> 16;
4787 ev = (ec >> 8) & 255;
4788 ee = ec & 255;
4789 et = ((ec >> 24) & 255) / bU;
4790 ek = cW.lerp(eo, en, ef) | 0;
4791 eq = cW.lerp(ea, ev, ef) | 0;
4792 er = cW.lerp(eg, ee, ef) | 0;
4793 es = cW.lerp(eu, et, ef) * bU;
4794 return es << 24 & 4278190080 | ek << 16 & 16711680 | eq << 8 & 65280 | er & 255
4795 };
4796 cW.colorMode = function() {
4797 cY = arguments[0];
4798 if (arguments.length > 1) {
4799 bJ = arguments[1];
4800 bI = arguments[2] || arguments[1];
4801 bG = arguments[3] || arguments[1];
4802 bU = arguments[4] || arguments[1]
4803 }
4804 };
4805 cW.blendColor = function(eb, ea, ec) {
4806 if (ec === 0) {
4807 return cW.modes.replace(eb, ea)
4808 } else {
4809 if (ec === 1) {
4810 return cW.modes.blend(eb, ea)
4811 } else {
4812 if (ec === 2) {
4813 return cW.modes.add(eb, ea)
4814 } else {
4815 if (ec === 4) {
4816 return cW.modes.subtract(eb, ea)
4817 } else {
4818 if (ec === 8) {
4819 return cW.modes.lightest(eb, ea)
4820 } else {
4821 if (ec === 16) {
4822 return cW.modes.darkest(eb, ea)
4823 } else {
4824 if (ec === 32) {
4825 return cW.modes.difference(eb, ea)
4826 } else {
4827 if (ec === 64) {
4828 return cW.modes.exclusion(eb, ea)
4829 } else {
4830 if (ec === 128) {
4831 return cW.modes.multiply(eb, ea)
4832 } else {
4833 if (ec === 256) {
4834 return cW.modes.screen(eb, ea)
4835 } else {
4836 if (ec === 1024) {
4837 return cW.modes.hard_light(eb, ea)
4838 } else {
4839 if (ec === 2048) {
4840 return cW.modes.soft_light(eb, ea)
4841 } else {
4842 if (ec === 512) {
4843 return cW.modes.overlay(eb, ea)
4844 } else {
4845 if (ec === 4096) {
4846 return cW.modes.dodge(eb, ea)
4847 } else {
4848 if (ec === 8192) {
4849 return cW.modes.burn(eb, ea)
4850 }
4851 }
4852 }
4853 }
4854 }
4855 }
4856 }
4857 }
4858 }
4859 }
4860 }
4861 }
4862 }
4863 }
4864 }
4865 };
4866
4867 function aD() {
4868 d8.save()
4869 }
4870
4871 function cP() {
4872 d8.restore();
4873 b3 = true;
4874 aq = true
4875 }
4876 cW.printMatrix = function() {
4877 dJ.print()
4878 };
4879 bR.prototype.translate = function(ea, eb) {
4880 dJ.translate(ea, eb);
4881 aT.invTranslate(ea, eb);
4882 d8.translate(ea, eb)
4883 };
4884 bB.prototype.translate = function(ea, ec, eb) {
4885 dJ.translate(ea, ec, eb);
4886 aT.invTranslate(ea, ec, eb)
4887 };
4888 bR.prototype.scale = function(ea, eb) {
4889 dJ.scale(ea, eb);
4890 aT.invScale(ea, eb);
4891 d8.scale(ea, eb || ea)
4892 };
4893 bB.prototype.scale = function(ea, ec, eb) {
4894 dJ.scale(ea, ec, eb);
4895 aT.invScale(ea, ec, eb)
4896 };
4897 bR.prototype.transform = function(eb) {
4898 var ea = eb.array();
4899 d8.transform(ea[0], ea[3], ea[1], ea[4], ea[2], ea[5])
4900 };
4901 bB.prototype.transformm = function(ea) {
4902 throw "p.transform is currently not supported in 3D mode"
4903 };
4904 bR.prototype.pushMatrix = function() {
4905 am.load(dJ);
4906 da.load(aT);
4907 aD()
4908 };
4909 bB.prototype.pushMatrix = function() {
4910 am.load(dJ);
4911 da.load(aT)
4912 };
4913 bR.prototype.popMatrix = function() {
4914 dJ.set(am.pop());
4915 aT.set(da.pop());
4916 cP()
4917 };
4918 bB.prototype.popMatrix = function() {
4919 dJ.set(am.pop());
4920 aT.set(da.pop())
4921 };
4922 bR.prototype.resetMatrix = function() {
4923 dJ.reset();
4924 aT.reset();
4925 d8.setTransform(1, 0, 0, 1, 0, 0)
4926 };
4927 bB.prototype.resetMatrix = function() {
4928 dJ.reset();
4929 aT.reset()
4930 };
4931 ds.prototype.applyMatrix = function() {
4932 var ea = arguments;
4933 dJ.apply(ea[0], ea[1], ea[2], ea[3], ea[4], ea[5], ea[6], ea[7], ea[8], ea[9], ea[10], ea[11], ea[12], ea[13], ea[14], ea[15]);
4934 aT.invApply(ea[0], ea[1], ea[2], ea[3], ea[4], ea[5], ea[6], ea[7], ea[8], ea[9], ea[10], ea[11], ea[12], ea[13], ea[14], ea[15])
4935 };
4936 bR.prototype.applyMatrix = function() {
4937 var ea = arguments;
4938 for (var eb = ea.length; eb < 16; eb++) {
4939 ea[eb] = 0
4940 }
4941 ea[10] = ea[15] = 1;
4942 ds.prototype.applyMatrix.apply(this, ea)
4943 };
4944 cW.rotateX = function(ea) {
4945 dJ.rotateX(ea);
4946 aT.invRotateX(ea)
4947 };
4948 bR.prototype.rotateZ = function() {
4949 throw "rotateZ() is not supported in 2D mode. Use rotate(float) instead."
4950 };
4951 bB.prototype.rotateZ = function(ea) {
4952 dJ.rotateZ(ea);
4953 aT.invRotateZ(ea)
4954 };
4955 cW.rotateY = function(ea) {
4956 dJ.rotateY(ea);
4957 aT.invRotateY(ea)
4958 };
4959 bR.prototype.rotate = function(ea) {
4960 dJ.rotateZ(ea);
4961 aT.invRotateZ(ea);
4962 d8.rotate(ea)
4963 };
4964 bB.prototype.rotate = function(ea) {
4965 cW.rotateZ(ea)
4966 };
4967 bR.prototype.shearX = function(ea) {
4968 dJ.shearX(ea);
4969 d8.transform(1, 0, ea, 1, 0, 0)
4970 };
4971 bB.prototype.shearX = function(ea) {
4972 dJ.shearX(ea)
4973 };
4974 bR.prototype.shearY = function(ea) {
4975 dJ.shearY(ea);
4976 d8.transform(1, ea, 0, 1, 0, 0)
4977 };
4978 bB.prototype.shearY = function(ea) {
4979 dJ.shearY(ea)
4980 };
4981 cW.pushStyle = function() {
4982 aD();
4983 cW.pushMatrix();
4984 var ea = {
4985 doFill: aH,
4986 currentFillColor: a1,
4987 doStroke: ce,
4988 currentStrokeColor: cv,
4989 curTint: bf,
4990 curRectMode: bK,
4991 curColorMode: cY,
4992 colorModeX: bJ,
4993 colorModeZ: bG,
4994 colorModeY: bI,
4995 colorModeA: bU,
4996 curTextFont: W,
4997 horizontalTextAlignment: N,
4998 verticalTextAlignment: c1,
4999 textMode: cI,
5000 curFontName: Y,
5001 curTextSize: d0,
5002 curTextAscent: a3,
5003 curTextDescent: dA,
5004 curTextLeading: d7
5005 };
5006 bm.push(ea)
5007 };
5008 cW.popStyle = function() {
5009 var ea = bm.pop();
5010 if (ea) {
5011 cP();
5012 cW.popMatrix();
5013 aH = ea.doFill;
5014 a1 = ea.currentFillColor;
5015 ce = ea.doStroke;
5016 cv = ea.currentStrokeColor;
5017 bf = ea.curTint;
5018 bK = ea.curRectMode;
5019 cY = ea.curColorMode;
5020 bJ = ea.colorModeX;
5021 bG = ea.colorModeZ;
5022 bI = ea.colorModeY;
5023 bU = ea.colorModeA;
5024 W = ea.curTextFont;
5025 Y = ea.curFontName;
5026 d0 = ea.curTextSize;
5027 N = ea.horizontalTextAlignment;
5028 c1 = ea.verticalTextAlignment;
5029 cI = ea.textMode;
5030 a3 = ea.curTextAscent;
5031 dA = ea.curTextDescent;
5032 d7 = ea.curTextLeading
5033 } else {
5034 throw "Too many popStyle() without enough pushStyle()"
5035 }
5036 };
5037 cW.year = function() {
5038 return (new Date).getFullYear()
5039 };
5040 cW.month = function() {
5041 return (new Date).getMonth() + 1
5042 };
5043 cW.day = function() {
5044 return (new Date).getDate()
5045 };
5046 cW.hour = function() {
5047 return (new Date).getHours()
5048 };
5049 cW.minute = function() {
5050 return (new Date).getMinutes()
5051 };
5052 cW.second = function() {
5053 return (new Date).getSeconds()
5054 };
5055 cW.millis = function() {
5056 return Date.now() - dq
5057 };
5058
5059 function ct() {
5060 var ea = (Date.now() - dt) / 1000;
5061 P++;
5062 var eb = P / ea;
5063 if (ea > 0.5) {
5064 dt = Date.now();
5065 P = 0;
5066 cW.__frameRate = eb
5067 }
5068 cW.frameCount++
5069 }
5070 bR.prototype.redraw = function() {
5071 ct();
5072 d8.lineWidth = dW;
5073 var ea = cW.pmouseX,
5074 eb = cW.pmouseY;
5075 cW.pmouseX = dN;
5076 cW.pmouseY = d5;
5077 aD();
5078 cW.draw();
5079 cP();
5080 dN = cW.mouseX;
5081 d5 = cW.mouseY;
5082 cW.pmouseX = ea;
5083 cW.pmouseY = eb
5084 };
5085 bB.prototype.redraw = function() {
5086 ct();
5087 var ea = cW.pmouseX,
5088 eb = cW.pmouseY;
5089 cW.pmouseX = dN;
5090 cW.pmouseY = d5;
5091 d8.clear(d8.DEPTH_BUFFER_BIT);
5092 dC = {
5093 attributes: {},
5094 locations: {}
5095 };
5096 cW.noLights();
5097 cW.lightFalloff(1, 0, 0);
5098 cW.shininess(1);
5099 cW.ambient(255, 255, 255);
5100 cW.specular(0, 0, 0);
5101 cW.emissive(0, 0, 0);
5102 cW.camera();
5103 cW.draw();
5104 dN = cW.mouseX;
5105 d5 = cW.mouseY;
5106 cW.pmouseX = ea;
5107 cW.pmouseY = eb
5108 };
5109 cW.noLoop = function() {
5110 aC = false;
5111 ax = false;
5112 clearInterval(b4);
5113 cQ.onPause()
5114 };
5115 cW.loop = function() {
5116 if (ax) {
5117 return
5118 }
5119 dt = Date.now();
5120 P = 0;
5121 b4 = D.setInterval(function() {
5122 try {
5123 cQ.onFrameStart();
5124 cW.redraw();
5125 cQ.onFrameEnd()
5126 } catch (ea) {
5127 D.clearInterval(b4);
5128 throw ea
5129 }
5130 }, az);
5131 aC = true;
5132 ax = true;
5133 cQ.onLoop()
5134 };
5135 cW.frameRate = function(ea) {
5136 dU = ea;
5137 az = 1000 / dU;
5138 if (aC) {
5139 cW.noLoop();
5140 cW.loop()
5141 }
5142 };
5143 var au = [];
5144
5145 function bO(ec, eb, ea) {
5146 if (ec.addEventListener) {
5147 ec.addEventListener(eb, ea, false)
5148 } else {
5149 ec.attachEvent("on" + eb, ea)
5150 }
5151 au.push({
5152 elem: ec,
5153 type: eb,
5154 fn: ea
5155 })
5156 }
5157
5158 function de(ea) {
5159 var ed = ea.elem,
5160 ec = ea.type,
5161 eb = ea.fn;
5162 if (ed.removeEventListener) {
5163 ed.removeEventListener(ec, eb, false)
5164 } else {
5165 if (ed.detachEvent) {
5166 ed.detachEvent("on" + ec, eb)
5167 }
5168 }
5169 }
5170 cW.exit = function() {
5171 D.clearInterval(b4);
5172 L(cW.externals.canvas.id);
5173 delete ae.onmousedown;
5174 for (var eb in F.lib) {
5175 if (F.lib.hasOwnProperty(eb)) {
5176 if (F.lib[eb].hasOwnProperty("detach")) {
5177 F.lib[eb].detach(cW)
5178 }
5179 }
5180 }
5181 var ea = au.length;
5182 while (ea--) {
5183 de(au[ea])
5184 }
5185 cQ.onExit()
5186 };
5187 cW.cursor = function() {
5188 if (arguments.length > 1 || arguments.length === 1 && arguments[0] instanceof cW.PImage) {
5189 var ed = arguments[0],
5190 ea, ef;
5191 if (arguments.length >= 3) {
5192 ea = arguments[1];
5193 ef = arguments[2];
5194 if (ea < 0 || ef < 0 || ef >= ed.height || ea >= ed.width) {
5195 throw "x and y must be non-negative and less than the dimensions of the image"
5196 }
5197 } else {
5198 ea = ed.width >>> 1;
5199 ef = ed.height >>> 1
5200 }
5201 var eb = ed.toDataURL();
5202 var ec = 'url("' + eb + '") ' + ea + " " + ef + ", default";
5203 Z = ae.style.cursor = ec
5204 } else {
5205 if (arguments.length === 1) {
5206 var ee = arguments[0];
5207 Z = ae.style.cursor = ee
5208 } else {
5209 Z = ae.style.cursor = ck
5210 }
5211 }
5212 };
5213 cW.noCursor = function() {
5214 Z = ae.style.cursor = B.NOCURSOR
5215 };
5216 cW.link = function(ea, eb) {
5217 if (eb !== t) {
5218 D.open(ea, eb)
5219 } else {
5220 D.location = ea
5221 }
5222 };
5223 cW.beginDraw = G;
5224 cW.endDraw = G;
5225 bR.prototype.toImageData = function(ea, ed, eb, ec) {
5226 ea = ea !== t ? ea : 0;
5227 ed = ed !== t ? ed : 0;
5228 eb = eb !== t ? eb : cW.width;
5229 ec = ec !== t ? ec : cW.height;
5230 return d8.getImageData(ea, ed, eb, ec)
5231 };
5232 bB.prototype.toImageData = function(ei, eh, ej, ee) {
5233 ei = ei !== t ? ei : 0;
5234 eh = eh !== t ? eh : 0;
5235 ej = ej !== t ? ej : cW.width;
5236 ee = ee !== t ? ee : cW.height;
5237 var eg = d.createElement("canvas"),
5238 ek = eg.getContext("2d"),
5239 ed = ek.createImageData(ej, ee),
5240 eb = new b(ej * ee * 4);
5241 d8.readPixels(ei, eh, ej, ee, d8.RGBA, d8.UNSIGNED_BYTE, eb);
5242 for (var ec = 0, ef = eb.length, ea = ed.data; ec < ef; ec++) {
5243 ea[ec] = eb[(ee - 1 - q.floor(ec / 4 / ej)) * ej * 4 + ec % (ej * 4)]
5244 }
5245 return ed
5246 };
5247 cW.status = function(ea) {
5248 D.status = ea
5249 };
5250 cW.binary = function(eb, ec) {
5251 var ed;
5252 if (ec > 0) {
5253 ed = ec
5254 } else {
5255 if (eb instanceof bP) {
5256 ed = 16;
5257 eb |= 0
5258 } else {
5259 ed = 32;
5260 while (ed > 1 && !(eb >>> ed - 1 & 1)) {
5261 ed--
5262 }
5263 }
5264 }
5265 var ea = "";
5266 while (ed > 0) {
5267 ea += eb >>> --ed & 1 ? "1" : "0"
5268 }
5269 return ea
5270 };
5271 cW.unbinary = function(eb) {
5272 var ed = eb.length - 1,
5273 ec = 1,
5274 ea = 0;
5275 while (ed >= 0) {
5276 var ee = eb[ed--];
5277 if (ee !== "0" && ee !== "1") {
5278 throw "the value passed into unbinary was not an 8 bit binary number"
5279 }
5280 if (ee === "1") {
5281 ea += ec
5282 }
5283 ec <<= 1
5284 }
5285 return ea
5286 };
5287
5288 function cX(em, ek, ee, ep, eg, en) {
5289 var ec = em < 0 ? ee : ek;
5290 var eb = eg === 0;
5291 var el = eg === t || eg < 0 ? 0 : eg;
5292 var ej = q.abs(em);
5293 if (eb) {
5294 el = 1;
5295 ej *= 10;
5296 while (q.abs(q.round(ej) - ej) > 0.000001 && el < 7) {
5297 ++el;
5298 ej *= 10
5299 }
5300 } else {
5301 if (el !== 0) {
5302 ej *= q.pow(10, el)
5303 }
5304 }
5305 var ed, ei = ej * 2;
5306 if (q.floor(ej) === ej) {
5307 ed = ej
5308 } else {
5309 if (q.floor(ei) === ei) {
5310 var ea = q.floor(ej);
5311 ed = ea + ea % 2
5312 } else {
5313 ed = q.round(ej)
5314 }
5315 }
5316 var ef = "";
5317 var eo = ep + el;
5318 while (eo > 0 || ed > 0) {
5319 eo--;
5320 ef = "" + ed % 10 + ef;
5321 ed = q.floor(ed / 10)
5322 }
5323 if (en !== t) {
5324 var eh = ef.length - 3 - el;
5325 while (eh > 0) {
5326 ef = ef.substring(0, eh) + en + ef.substring(eh);
5327 eh -= 3
5328 }
5329 }
5330 if (el > 0) {
5331 return ec + ef.substring(0, ef.length - el) + "." + ef.substring(ef.length - el, ef.length)
5332 }
5333 return ec + ef
5334 }
5335
5336 function ao(eg, ef, ea, ei, eb, eh) {
5337 if (eg instanceof Array) {
5338 var ed = [];
5339 for (var ec = 0, ee = eg.length; ec < ee; ec++) {
5340 ed.push(cX(eg[ec], ef, ea, ei, eb, eh))
5341 }
5342 return ed
5343 }
5344 return cX(eg, ef, ea, ei, eb, eh)
5345 }
5346 cW.nf = function(ec, ea, eb) {
5347 return ao(ec, "", "-", ea, eb)
5348 };
5349 cW.nfs = function(ec, ea, eb) {
5350 return ao(ec, " ", "-", ea, eb)
5351 };
5352 cW.nfp = function(ec, ea, eb) {
5353 return ao(ec, "+", "-", ea, eb)
5354 };
5355 cW.nfc = function(ec, ea, eb) {
5356 return ao(ec, "", "-", ea, eb, ",")
5357 };
5358 var aM = function(ec, eb) {
5359 eb = eb === t || eb === null ? eb = 8 : eb;
5360 if (ec < 0) {
5361 ec = 4294967295 + ec + 1
5362 }
5363 var ea = Number(ec).toString(16).toUpperCase();
5364 while (ea.length < eb) {
5365 ea = "0" + ea
5366 }
5367 if (ea.length >= eb) {
5368 ea = ea.substring(ea.length - eb, ea.length)
5369 }
5370 return ea
5371 };
5372 cW.hex = function(eb, ea) {
5373 if (arguments.length === 1) {
5374 if (eb instanceof bP) {
5375 ea = 4
5376 } else {
5377 ea = 8
5378 }
5379 }
5380 return aM(eb, ea)
5381 };
5382
5383 function dF(ea) {
5384 var eb = parseInt("0x" + ea, 16);
5385 if (eb > 2147483647) {
5386 eb -= 4294967296
5387 }
5388 return eb
5389 }
5390 cW.unhex = function(ec) {
5391 if (ec instanceof Array) {
5392 var ea = [];
5393 for (var eb = 0; eb < ec.length; eb++) {
5394 ea.push(dF(ec[eb]))
5395 }
5396 return ea
5397 }
5398 return dF(ec)
5399 };
5400 cW.loadStrings = function(eb) {
5401 if (localStorage[eb]) {
5402 return localStorage[eb].split("\n")
5403 }
5404 var ea = w(eb);
5405 if (typeof ea !== "string" || ea === "") {
5406 return []
5407 }
5408 ea = ea.replace(/(\r\n?)/g, "\n").replace(/\n$/, "");
5409 return ea.split("\n")
5410 };
5411 cW.saveStrings = function(eb, ea) {
5412 localStorage[eb] = ea.join("\n")
5413 };
5414 cW.loadBytes = function(ec) {
5415 var eb = w(ec);
5416 var ea = [];
5417 for (var ed = 0; ed < eb.length; ed++) {
5418 ea.push(eb.charCodeAt(ed))
5419 }
5420 return ea
5421 };
5422
5423 function bc(ea) {
5424 return Array.prototype.slice.call(ea, 1)
5425 }
5426 cW.matchAll = function(eb, ea) {
5427 var ed = [],
5428 ec;
5429 var ee = new RegExp(ea, "g");
5430 while ((ec = ee.exec(eb)) !== null) {
5431 ed.push(ec);
5432 if (ec[0].length === 0) {
5433 ++ee.lastIndex
5434 }
5435 }
5436 return ed.length > 0 ? ed : null
5437 };
5438 cW.__contains = function(eb, ea) {
5439 if (typeof eb !== "string") {
5440 return eb.contains.apply(eb, bc(arguments))
5441 }
5442 return eb !== null && ea !== null && typeof ea === "string" && eb.indexOf(ea) > -1
5443 };
5444 cW.__replaceAll = function(ea, ec, eb) {
5445 if (typeof ea !== "string") {
5446 return ea.replaceAll.apply(ea, bc(arguments))
5447 }
5448 return ea.replace(new RegExp(ec, "g"), eb)
5449 };
5450 cW.__replaceFirst = function(ea, ec, eb) {
5451 if (typeof ea !== "string") {
5452 return ea.replaceFirst.apply(ea, bc(arguments))
5453 }
5454 return ea.replace(new RegExp(ec, ""), eb)
5455 };
5456 cW.__replace = function(ed, ef, ee) {
5457 if (typeof ed !== "string") {
5458 return ed.replace.apply(ed, bc(arguments))
5459 }
5460 if (ef instanceof RegExp) {
5461 return ed.replace(ef, ee)
5462 }
5463 if (typeof ef !== "string") {
5464 ef = ef.toString()
5465 }
5466 if (ef === "") {
5467 return ed
5468 }
5469 var ec = ed.indexOf(ef);
5470 if (ec < 0) {
5471 return ed
5472 }
5473 var eb = 0,
5474 ea = "";
5475 do {
5476 ea += ed.substring(eb, ec) + ee;
5477 eb = ec + ef.length
5478 } while ((ec = ed.indexOf(ef, eb)) >= 0);
5479 return ea + ed.substring(eb)
5480 };
5481 cW.__equals = function(eb, ea) {
5482 if (eb.equals instanceof Function) {
5483 return eb.equals.apply(eb, bc(arguments))
5484 }
5485 return eb.valueOf() === ea.valueOf()
5486 };
5487 cW.__equalsIgnoreCase = function(eb, ea) {
5488 if (typeof eb !== "string") {
5489 return eb.equalsIgnoreCase.apply(eb, bc(arguments))
5490 }
5491 return eb.toLowerCase() === ea.toLowerCase()
5492 };
5493 cW.__toCharArray = function(ec) {
5494 if (typeof ec !== "string") {
5495 return ec.toCharArray.apply(ec, bc(arguments))
5496 }
5497 var ed = [];
5498 for (var eb = 0, ea = ec.length; eb < ea; ++eb) {
5499 ed[eb] = new bP(ec.charAt(eb))
5500 }
5501 return ed
5502 };
5503 cW.__split = function(ed, ee, eb) {
5504 if (typeof ed !== "string") {
5505 return ed.split.apply(ed, bc(arguments))
5506 }
5507 var eg = new RegExp(ee);
5508 if (eb === t || eb < 1) {
5509 return ed.split(eg)
5510 }
5511 var ea = [],
5512 ef = ed,
5513 eh;
5514 while ((eh = ef.search(eg)) !== -1 && ea.length < eb - 1) {
5515 var ec = eg.exec(ef).toString();
5516 ea.push(ef.substring(0, eh));
5517 ef = ef.substring(eh + ec.length)
5518 }
5519 if (eh !== -1 || ef !== "") {
5520 ea.push(ef)
5521 }
5522 return ea
5523 };
5524 cW.__codePointAt = function(ed, eb) {
5525 var ee = ed.charCodeAt(eb),
5526 ec, ea;
5527 if (55296 <= ee && ee <= 56319) {
5528 ec = ee;
5529 ea = ed.charCodeAt(eb + 1);
5530 return (ec - 55296) * 1024 + (ea - 56320) + 65536
5531 }
5532 return ee
5533 };
5534 cW.match = function(eb, ea) {
5535 return eb.match(ea)
5536 };
5537 cW.__matches = function(eb, ea) {
5538 return (new RegExp(ea)).test(eb)
5539 };
5540 cW.__startsWith = function(ea, ec, eb) {
5541 if (typeof ea !== "string") {
5542 return ea.startsWith.apply(ea, bc(arguments))
5543 }
5544 eb = eb || 0;
5545 if (eb < 0 || eb > ea.length) {
5546 return false
5547 }
5548 return ec === "" || ec === ea ? true : ea.indexOf(ec) === eb
5549 };
5550 cW.__endsWith = function(eb, ec) {
5551 if (typeof eb !== "string") {
5552 return eb.endsWith.apply(eb, bc(arguments))
5553 }
5554 var ea = ec ? ec.length : 0;
5555 return ec === "" || ec === eb ? true : eb.indexOf(ec) === eb.length - ea
5556 };
5557 cW.__hashCode = function(ea) {
5558 if (ea.hashCode instanceof Function) {
5559 return ea.hashCode.apply(ea, bc(arguments))
5560 }
5561 return h(ea)
5562 };
5563 cW.__printStackTrace = function(ea) {
5564 cW.println("Exception: " + ea.toString())
5565 };
5566 var d9 = [];
5567 cW.println = function(ea) {
5568 var eb = d9.length;
5569 if (eb) {
5570 F.logger.log(d9.join(""));
5571 d9.length = 0
5572 }
5573 if (arguments.length === 0 && eb === 0) {
5574 F.logger.log("")
5575 } else {
5576 if (arguments.length !== 0) {
5577 F.logger.log(ea)
5578 }
5579 }
5580 };
5581 cW.print = function(ea) {
5582 d9.push(ea)
5583 };
5584 cW.str = function(ec) {
5585 if (ec instanceof Array) {
5586 var ea = [];
5587 for (var eb = 0; eb < ec.length; eb++) {
5588 ea.push(ec[eb].toString() + "")
5589 }
5590 return ea
5591 }
5592 return ec.toString() + ""
5593 };
5594 cW.trim = function(ec) {
5595 if (ec instanceof Array) {
5596 var ea = [];
5597 for (var eb = 0; eb < ec.length; eb++) {
5598 ea.push(ec[eb].replace(/^\s*/, "").replace(/\s*$/, "").replace(/\r*$/, ""))
5599 }
5600 return ea
5601 }
5602 return ec.replace(/^\s*/, "").replace(/\s*$/, "").replace(/\r*$/, "")
5603 };
5604
5605 function aR(ea) {
5606 if (typeof ea === "number") {
5607 return ea !== 0
5608 }
5609 if (typeof ea === "boolean") {
5610 return ea
5611 }
5612 if (typeof ea === "string") {
5613 return ea.toLowerCase() === "true"
5614 }
5615 if (ea instanceof bP) {
5616 return ea.code === 49 || ea.code === 84 || ea.code === 116
5617 }
5618 }
5619 cW.parseBoolean = function(ec) {
5620 if (ec instanceof Array) {
5621 var ea = [];
5622 for (var eb = 0; eb < ec.length; eb++) {
5623 ea.push(aR(ec[eb]))
5624 }
5625 return ea
5626 }
5627 return aR(ec)
5628 };
5629 cW.parseByte = function(ec) {
5630 if (ec instanceof Array) {
5631 var ea = [];
5632 for (var eb = 0; eb < ec.length; eb++) {
5633 ea.push(0 - (ec[eb] & 128) | ec[eb] & 127)
5634 }
5635 return ea
5636 }
5637 return 0 - (ec & 128) | ec & 127
5638 };
5639 cW.parseChar = function(ec) {
5640 if (typeof ec === "number") {
5641 return new bP(String.fromCharCode(ec & 65535))
5642 }
5643 if (ec instanceof Array) {
5644 var ea = [];
5645 for (var eb = 0; eb < ec.length; eb++) {
5646 ea.push(new bP(String.fromCharCode(ec[eb] & 65535)))
5647 }
5648 return ea
5649 }
5650 throw "char() may receive only one argument of type int, byte, int[], or byte[]."
5651 };
5652
5653 function cO(ea) {
5654 if (typeof ea === "number") {
5655 return ea
5656 }
5657 if (typeof ea === "boolean") {
5658 return ea ? 1 : 0
5659 }
5660 if (typeof ea === "string") {
5661 return parseFloat(ea)
5662 }
5663 if (ea instanceof bP) {
5664 return ea.code
5665 }
5666 }
5667 cW.parseFloat = function(ec) {
5668 if (ec instanceof Array) {
5669 var ea = [];
5670 for (var eb = 0; eb < ec.length; eb++) {
5671 ea.push(cO(ec[eb]))
5672 }
5673 return ea
5674 }
5675 return cO(ec)
5676 };
5677
5678 function al(ec, ea) {
5679 if (typeof ec === "number") {
5680 return ec & 4294967295
5681 }
5682 if (typeof ec === "boolean") {
5683 return ec ? 1 : 0
5684 }
5685 if (typeof ec === "string") {
5686 var eb = parseInt(ec, ea || 10);
5687 return eb & 4294967295
5688 }
5689 if (ec instanceof bP) {
5690 return ec.code
5691 }
5692 }
5693 cW.parseInt = function(ed, ec) {
5694 if (ed instanceof Array) {
5695 var ea = [];
5696 for (var eb = 0; eb < ed.length; eb++) {
5697 if (typeof ed[eb] === "string" && !/^\s*[+\-]?\d+\s*$/.test(ed[eb])) {
5698 ea.push(0)
5699 } else {
5700 ea.push(al(ed[eb], ec))
5701 }
5702 }
5703 return ea
5704 }
5705 return al(ed, ec)
5706 };
5707 cW.__int_cast = function(ea) {
5708 return 0 | ea
5709 };
5710 cW.__instanceof = function(ec, eb) {
5711 if (typeof eb !== "function") {
5712 throw "Function is expected as type argument for instanceof operator"
5713 }
5714 if (typeof ec === "string") {
5715 return eb === Object || eb === String
5716 }
5717 if (ec instanceof eb) {
5718 return true
5719 }
5720 if (typeof ec !== "object" || ec === null) {
5721 return false
5722 }
5723 var ee = ec.constructor;
5724 if (eb.$isInterface) {
5725 var ed = [];
5726 while (ee) {
5727 if (ee.$interfaces) {
5728 ed = ed.concat(ee.$interfaces)
5729 }
5730 ee = ee.$base
5731 }
5732 while (ed.length > 0) {
5733 var ea = ed.shift();
5734 if (ea === eb) {
5735 return true
5736 }
5737 if (ea.$interfaces) {
5738 ed = ed.concat(ea.$interfaces)
5739 }
5740 }
5741 return false
5742 }
5743 while (ee.hasOwnProperty("$base")) {
5744 ee = ee.$base;
5745 if (ee === eb) {
5746 return true
5747 }
5748 }
5749 return false
5750 };
5751 cW.abs = q.abs;
5752 cW.ceil = q.ceil;
5753 cW.constrain = function(eb, ec, ea) {
5754 return eb > ea ? ea : eb < ec ? ec : eb
5755 };
5756 cW.dist = function() {
5757 var ec, eb, ea;
5758 if (arguments.length === 4) {
5759 ec = arguments[0] - arguments[2];
5760 eb = arguments[1] - arguments[3];
5761 return q.sqrt(ec * ec + eb * eb)
5762 }
5763 if (arguments.length === 6) {
5764 ec = arguments[0] - arguments[3];
5765 eb = arguments[1] - arguments[4];
5766 ea = arguments[2] - arguments[5];
5767 return q.sqrt(ec * ec + eb * eb + ea * ea)
5768 }
5769 };
5770 cW.exp = q.exp;
5771 cW.floor = q.floor;
5772 cW.lerp = function(eb, ea, ec) {
5773 return (ea - eb) * ec + eb
5774 };
5775 cW.log = q.log;
5776 cW.mag = function(eb, ea, ec) {
5777 if (ec) {
5778 return q.sqrt(eb * eb + ea * ea + ec * ec)
5779 }
5780 return q.sqrt(eb * eb + ea * ea)
5781 };
5782 cW.map = function(ed, eb, ec, ea, ee) {
5783 return ea + (ee - ea) * ((ed - eb) / (ec - eb))
5784 };
5785 cW.max = function() {
5786 if (arguments.length === 2) {
5787 return arguments[0] < arguments[1] ? arguments[1] : arguments[0]
5788 }
5789 var eb = arguments.length === 1 ? arguments[0] : arguments;
5790 if (!("length" in eb && eb.length > 0)) {
5791 throw "Non-empty array is expected"
5792 }
5793 var ea = eb[0],
5794 ed = eb.length;
5795 for (var ec = 1; ec < ed; ++ec) {
5796 if (ea < eb[ec]) {
5797 ea = eb[ec]
5798 }
5799 }
5800 return ea
5801 };
5802 cW.min = function() {
5803 if (arguments.length === 2) {
5804 return arguments[0] < arguments[1] ? arguments[0] : arguments[1]
5805 }
5806 var ea = arguments.length === 1 ? arguments[0] : arguments;
5807 if (!("length" in ea && ea.length > 0)) {
5808 throw "Non-empty array is expected"
5809 }
5810 var ec = ea[0],
5811 ed = ea.length;
5812 for (var eb = 1; eb < ed; ++eb) {
5813 if (ec > ea[eb]) {
5814 ec = ea[eb]
5815 }
5816 }
5817 return ec
5818 };
5819 cW.norm = function(eb, ea, ec) {
5820 return (eb - ea) / (ec - ea)
5821 };
5822 cW.pow = q.pow;
5823 cW.round = q.round;
5824 cW.sq = function(ea) {
5825 return ea * ea
5826 };
5827 cW.sqrt = q.sqrt;
5828 cW.acos = q.acos;
5829 cW.asin = q.asin;
5830 cW.atan = q.atan;
5831 cW.atan2 = q.atan2;
5832 cW.cos = q.cos;
5833 cW.degrees = function(ea) {
5834 return ea * 180 / q.PI
5835 };
5836 cW.radians = function(ea) {
5837 return ea / 180 * q.PI
5838 };
5839 cW.sin = q.sin;
5840 cW.tan = q.tan;
5841 var bY = q.random;
5842 cW.random = function() {
5843 if (arguments.length === 0) {
5844 return bY()
5845 }
5846 if (arguments.length === 1) {
5847 return bY() * arguments[0]
5848 }
5849 var eb = arguments[0],
5850 ea = arguments[1];
5851 return bY() * (ea - eb) + eb
5852 };
5853
5854 function co(ec, eb) {
5855 var ee = ec || 362436069,
5856 ea = eb || 521288629;
5857 var ed = function() {
5858 ee = 36969 * (ee & 65535) + (ee >>> 16) & 4294967295;
5859 ea = 18000 * (ea & 65535) + (ea >>> 16) & 4294967295;
5860 return ((ee & 65535) << 16 | ea & 65535) & 4294967295
5861 };
5862 this.nextDouble = function() {
5863 var ef = ed() / 4294967296;
5864 return ef < 0 ? 1 + ef : ef
5865 };
5866 this.nextInt = ed
5867 }
5868 co.createRandomized = function() {
5869 var ea = new Date;
5870 return new co(ea / 60000 & 4294967295, ea & 4294967295)
5871 };
5872 cW.randomSeed = function(ea) {
5873 bY = (new co(ea)).nextDouble
5874 };
5875 cW.Random = function(ea) {
5876 var ed = false,
5877 eb, ec;
5878 this.nextGaussian = function() {
5879 if (ed) {
5880 ed = false;
5881 return eb
5882 }
5883 var eh, ef, ee;
5884 do {
5885 eh = 2 * ec() - 1;
5886 ef = 2 * ec() - 1;
5887 ee = eh * eh + ef * ef
5888 } while (ee >= 1 || ee === 0);
5889 var eg = q.sqrt(-2 * q.log(ee) / ee);
5890 eb = ef * eg;
5891 ed = true;
5892 return eh * eg
5893 };
5894 ec = ea === t ? q.random : (new co(ea)).nextDouble
5895 };
5896
5897 function dz(eh) {
5898 var eb = eh !== t ? new co(eh) : co.createRandomized();
5899 var eg, ee;
5900 var ed = new b(512);
5901 for (eg = 0; eg < 256; ++eg) {
5902 ed[eg] = eg
5903 }
5904 for (eg = 0; eg < 256; ++eg) {
5905 var ej = ed[ee = eb.nextInt() & 255];
5906 ed[ee] = ed[eg];
5907 ed[eg] = ej
5908 }
5909 for (eg = 0; eg < 256; ++eg) {
5910 ed[eg + 256] = ed[eg]
5911 }
5912
5913 function ea(en, ek, eq, ep) {
5914 var eo = en & 15;
5915 var em = eo < 8 ? ek : eq,
5916 el = eo < 4 ? eq : eo === 12 || eo === 14 ? ek : ep;
5917 return ((eo & 1) === 0 ? em : -em) + ((eo & 2) === 0 ? el : -el)
5918 }
5919
5920 function ef(em, ek, en) {
5921 var el = (em & 1) === 0 ? ek : en;
5922 return (em & 2) === 0 ? -el : el
5923 }
5924
5925 function ei(el, ek) {
5926 return (el & 1) === 0 ? -ek : ek
5927 }
5928
5929 function ec(em, el, ek) {
5930 return el + em * (ek - el)
5931 }
5932 this.noise3d = function(ew, ev, eu) {
5933 var en = q.floor(ew) & 255,
5934 el = q.floor(ev) & 255,
5935 ek = q.floor(eu) & 255;
5936 ew -= q.floor(ew);
5937 ev -= q.floor(ev);
5938 eu -= q.floor(eu);
5939 var er = (3 - 2 * ew) * ew * ew,
5940 eq = (3 - 2 * ev) * ev * ev,
5941 ep = (3 - 2 * eu) * eu * eu;
5942 var ey = ed[en] + el,
5943 et = ed[ey] + ek,
5944 es = ed[ey + 1] + ek,
5945 ex = ed[en + 1] + el,
5946 eo = ed[ex] + ek,
5947 em = ed[ex + 1] + ek;
5948 return ec(ep, ec(eq, ec(er, ea(ed[et], ew, ev, eu), ea(ed[eo], ew - 1, ev, eu)), ec(er, ea(ed[es], ew, ev - 1, eu), ea(ed[em], ew - 1, ev - 1, eu))), ec(eq, ec(er, ea(ed[et + 1], ew, ev, eu - 1), ea(ed[eo + 1], ew - 1, ev, eu - 1)), ec(er, ea(ed[es + 1], ew, ev - 1, eu - 1), ea(ed[em + 1], ew - 1, ev - 1, eu - 1))))
5949 };
5950 this.noise2d = function(ek, er) {
5951 var eq = q.floor(ek) & 255,
5952 eo = q.floor(er) & 255;
5953 ek -= q.floor(ek);
5954 er -= q.floor(er);
5955 var em = (3 - 2 * ek) * ek * ek,
5956 el = (3 - 2 * er) * er * er;
5957 var ep = ed[eq] + eo,
5958 en = ed[eq + 1] + eo;
5959 return ec(el, ec(em, ef(ed[ep], ek, er), ef(ed[en], ek - 1, er)), ec(em, ef(ed[ep + 1], ek, er - 1), ef(ed[en + 1], ek - 1, er - 1)))
5960 };
5961 this.noise1d = function(ek) {
5962 var em = q.floor(ek) & 255;
5963 ek -= q.floor(ek);
5964 var el = (3 - 2 * ek) * ek * ek;
5965 return ec(el, ei(ed[em], ek), ei(ed[em + 1], ek - 1))
5966 }
5967 }
5968 var bW = {
5969 generator: t,
5970 octaves: 4,
5971 fallout: 0.5,
5972 seed: t
5973 };
5974 cW.noise = function(ea, eh, eg) {
5975 if (bW.generator === t) {
5976 bW.generator = new dz(bW.seed)
5977 }
5978 var ef = bW.generator;
5979 var ee = 1,
5980 eb = 1,
5981 ed = 0;
5982 for (var ec = 0; ec < bW.octaves; ++ec) {
5983 ee *= bW.fallout;
5984 switch (arguments.length) {
5985 case 1:
5986 ed += ee * (1 + ef.noise1d(eb * ea)) / 2;
5987 break;
5988 case 2:
5989 ed += ee * (1 + ef.noise2d(eb * ea, eb * eh)) / 2;
5990 break;
5991 case 3:
5992 ed += ee * (1 + ef.noise3d(eb * ea, eb * eh, eb * eg)) / 2;
5993 break
5994 }
5995 eb *= 2
5996 }
5997 return ed
5998 };
5999 cW.noiseDetail = function(eb, ea) {
6000 bW.octaves = eb;
6001 if (ea !== t) {
6002 bW.fallout = ea
6003 }
6004 };
6005 cW.noiseSeed = function(ea) {
6006 bW.seed = ea;
6007 bW.generator = t
6008 };
6009 ds.prototype.size = function(eb, ee, ed) {
6010 if (ce) {
6011 cW.stroke(0)
6012 }
6013 if (aH) {
6014 cW.fill(255)
6015 }
6016 var ec = {
6017 fillStyle: d8.fillStyle,
6018 strokeStyle: d8.strokeStyle,
6019 lineCap: d8.lineCap,
6020 lineJoin: d8.lineJoin
6021 };
6022 if (ae.style.length > 0) {
6023 ae.style.removeProperty("width");
6024 ae.style.removeProperty("height")
6025 }
6026 ae.width = cW.width = eb || 100;
6027 ae.height = cW.height = ee || 100;
6028 for (var ef in ec) {
6029 if (ec.hasOwnProperty(ef)) {
6030 d8[ef] = ec[ef]
6031 }
6032 }
6033 cW.textFont(W);
6034 cW.background();
6035 bZ = q.max(1000, eb * ee * 0.05);
6036 cW.externals.context = d8;
6037 for (var ea = 0; ea < 720; ea++) {
6038 ah[ea] = cW.sin(ea * (q.PI / 180) * 0.5);
6039 bl[ea] = cW.cos(ea * (q.PI / 180) * 0.5)
6040 }
6041 };
6042 bR.prototype.size = function(ea, ec, eb) {
6043 if (d8 === t) {
6044 d8 = ae.getContext("2d");
6045 am = new V;
6046 da = new V;
6047 dJ = new aX;
6048 aT = new aX
6049 }
6050 ds.prototype.size.apply(this, arguments)
6051 };
6052 bB.prototype.size = function() {
6053 var eb = false;
6054 return function ea(ed, ef, ee) {
6055 if (eb) {
6056 throw "Multiple calls to size() for 3D renders are not allowed."
6057 }
6058 eb = true;
6059
6060 function eg(ei) {
6061 var el = ["experimental-webgl", "webgl", "webkit-3d"],
6062 ek;
6063 for (var ej = 0, eh = el.length; ej < eh; ej++) {
6064 ek = ei.getContext(el[ej], {
6065 antialias: false,
6066 preserveDrawingBuffer: true
6067 });
6068 if (ek) {
6069 break
6070 }
6071 }
6072 return ek
6073 }
6074 try {
6075 ae.width = cW.width = ed || 100;
6076 ae.height = cW.height = ef || 100;
6077 d8 = eg(ae);
6078 c7 = d8.createTexture();
6079 bS = d8.createTexture()
6080 } catch (ec) {
6081 F.debug(ec)
6082 }
6083 if (!d8) {
6084 throw "WebGL context is not supported on this browser."
6085 }
6086 d8.viewport(0, 0, ae.width, ae.height);
6087 d8.enable(d8.DEPTH_TEST);
6088 d8.enable(d8.BLEND);
6089 d8.blendFunc(d8.SRC_ALPHA, d8.ONE_MINUS_SRC_ALPHA);
6090 dQ = bF(d8, dE, aW);
6091 bT = bF(d8, aO, bQ);
6092 cW.strokeWeight(1);
6093 dx = bF(d8, dn, aF);
6094 d8.useProgram(dx);
6095 dZ("usingTexture3d", dx, "usingTexture", dT);
6096 cW.lightFalloff(1, 0, 0);
6097 cW.shininess(1);
6098 cW.ambient(255, 255, 255);
6099 cW.specular(0, 0, 0);
6100 cW.emissive(0, 0, 0);
6101 bh = d8.createBuffer();
6102 d8.bindBuffer(d8.ARRAY_BUFFER, bh);
6103 d8.bufferData(d8.ARRAY_BUFFER, dh, d8.STATIC_DRAW);
6104 cJ = d8.createBuffer();
6105 d8.bindBuffer(d8.ARRAY_BUFFER, cJ);
6106 d8.bufferData(d8.ARRAY_BUFFER, df, d8.STATIC_DRAW);
6107 dk = d8.createBuffer();
6108 d8.bindBuffer(d8.ARRAY_BUFFER, dk);
6109 d8.bufferData(d8.ARRAY_BUFFER, bH, d8.STATIC_DRAW);
6110 aB = d8.createBuffer();
6111 d8.bindBuffer(d8.ARRAY_BUFFER, aB);
6112 d8.bufferData(d8.ARRAY_BUFFER, ak, d8.STATIC_DRAW);
6113 b2 = d8.createBuffer();
6114 d8.bindBuffer(d8.ARRAY_BUFFER, b2);
6115 d8.bufferData(d8.ARRAY_BUFFER, ai, d8.STATIC_DRAW);
6116 bg = d8.createBuffer();
6117 b8 = d8.createBuffer();
6118 at = d8.createBuffer();
6119 aG = d8.createBuffer();
6120 bC = d8.createBuffer();
6121 af = d8.createBuffer();
6122 aw = d8.createBuffer();
6123 d8.bindBuffer(d8.ARRAY_BUFFER, aw);
6124 d8.bufferData(d8.ARRAY_BUFFER, new e([0, 0, 0]), d8.STATIC_DRAW);
6125 cH = d8.createBuffer();
6126 d8.bindBuffer(d8.ARRAY_BUFFER, cH);
6127 d8.bufferData(d8.ARRAY_BUFFER, new e([1, 1, 0, -1, 1, 0, -1, -1, 0, 1, -1, 0]), d8.STATIC_DRAW);
6128 ac = d8.createBuffer();
6129 d8.bindBuffer(d8.ARRAY_BUFFER, ac);
6130 d8.bufferData(d8.ARRAY_BUFFER, new e([0, 0, 1, 0, 1, 1, 0, 1]), d8.STATIC_DRAW);
6131 R = d8.createBuffer();
6132 d8.bindBuffer(d8.ELEMENT_ARRAY_BUFFER, R);
6133 d8.bufferData(d8.ELEMENT_ARRAY_BUFFER, new y([0, 1, 2, 2, 3, 0]), d8.STATIC_DRAW);
6134 bV = new aP;
6135 ch = new aP;
6136 dJ = new aP;
6137 aT = new aP;
6138 db = new aP;
6139 cW.camera();
6140 cW.perspective();
6141 am = new V;
6142 da = new V;
6143 c3 = new aP;
6144 aQ = new aP;
6145 aL = new aP;
6146 bz = new aP;
6147 cd = new aP;
6148 U = new aP;
6149 U.set(-1, 3, -3, 1, 3, -6, 3, 0, -3, 3, 0, 0, 1, 0, 0, 0);
6150 ds.prototype.size.apply(this, arguments)
6151 }
6152 }();
6153 bR.prototype.ambientLight = ds.prototype.a3DOnlyFunction;
6154 bB.prototype.ambientLight = function(ea, ed, ei, ej, ef, ee) {
6155 if (dL === 8) {
6156 throw "can only create " + 8 + " lights"
6157 }
6158 var eg = new A(ej, ef, ee);
6159 var eh = new aP;
6160 eh.scale(1, -1, 1);
6161 eh.apply(dJ.array());
6162 eh.mult(eg, eg);
6163 var eb = dH(ea, ed, ei, 0);
6164 var ec = [((eb >> 16) & 255) / 255, ((eb >> 8) & 255) / 255, (eb & 255) / 255];
6165 d8.useProgram(dx);
6166 d2("uLights.color.3d." + dL, dx, "uLights" + dL + ".color", ec);
6167 d2("uLights.position.3d." + dL, dx, "uLights" + dL + ".position", eg.array());
6168 dZ("uLights.type.3d." + dL, dx, "uLights" + dL + ".type", 0);
6169 dZ("uLightCount3d", dx, "uLightCount", ++dL)
6170 };
6171 bR.prototype.directionalLight = ds.prototype.a3DOnlyFunction;
6172 bB.prototype.directionalLight = function(ea, eg, ei, eh, ef, ee) {
6173 if (dL === 8) {
6174 throw "can only create " + 8 + " lights"
6175 }
6176 d8.useProgram(dx);
6177 var ej = new aP;
6178 ej.scale(1, -1, 1);
6179 ej.apply(dJ.array());
6180 ej = ej.array();
6181 var ec = [ej[0] * eh + ej[4] * ef + ej[8] * ee, ej[1] * eh + ej[5] * ef + ej[9] * ee, ej[2] * eh + ej[6] * ef + ej[10] * ee];
6182 var eb = dH(ea, eg, ei, 0);
6183 var ed = [((eb >> 16) & 255) / 255, ((eb >> 8) & 255) / 255, (eb & 255) / 255];
6184 d2("uLights.color.3d." + dL, dx, "uLights" + dL + ".color", ed);
6185 d2("uLights.position.3d." + dL, dx, "uLights" + dL + ".position", ec);
6186 dZ("uLights.type.3d." + dL, dx, "uLights" + dL + ".type", 1);
6187 dZ("uLightCount3d", dx, "uLightCount", ++dL)
6188 };
6189 bR.prototype.lightFalloff = ds.prototype.a3DOnlyFunction;
6190 bB.prototype.lightFalloff = function(eb, ea, ec) {
6191 d8.useProgram(dx);
6192 d2("uFalloff3d", dx, "uFalloff", [eb, ea, ec])
6193 };
6194 bR.prototype.lightSpecular = ds.prototype.a3DOnlyFunction;
6195 bB.prototype.lightSpecular = function(ee, ed, ea) {
6196 var eb = dH(ee, ed, ea, 0);
6197 var ec = [((eb >> 16) & 255) / 255, ((eb >> 8) & 255) / 255, (eb & 255) / 255];
6198 d8.useProgram(dx);
6199 d2("uSpecular3d", dx, "uSpecular", ec)
6200 };
6201 cW.lights = function() {
6202 cW.ambientLight(128, 128, 128);
6203 cW.directionalLight(128, 128, 128, 0, 0, -1);
6204 cW.lightFalloff(1, 0, 0);
6205 cW.lightSpecular(0, 0, 0)
6206 };
6207 bR.prototype.pointLight = ds.prototype.a3DOnlyFunction;
6208 bB.prototype.pointLight = function(ea, ed, ei, ej, ef, ee) {
6209 if (dL === 8) {
6210 throw "can only create " + 8 + " lights"
6211 }
6212 var eg = new A(ej, ef, ee);
6213 var eh = new aP;
6214 eh.scale(1, -1, 1);
6215 eh.apply(dJ.array());
6216 eh.mult(eg, eg);
6217 var eb = dH(ea, ed, ei, 0);
6218 var ec = [((eb >> 16) & 255) / 255, ((eb >> 8) & 255) / 255, (eb & 255) / 255];
6219 d8.useProgram(dx);
6220 d2("uLights.color.3d." + dL, dx, "uLights" + dL + ".color", ec);
6221 d2("uLights.position.3d." + dL, dx, "uLights" + dL + ".position", eg.array());
6222 dZ("uLights.type.3d." + dL, dx, "uLights" + dL + ".type", 2);
6223 dZ("uLightCount3d", dx, "uLightCount", ++dL)
6224 };
6225 bR.prototype.noLights = ds.prototype.a3DOnlyFunction;
6226 bB.prototype.noLights = function() {
6227 dL = 0;
6228 d8.useProgram(dx);
6229 dZ("uLightCount3d", dx, "uLightCount", dL)
6230 };
6231 bR.prototype.spotLight = ds.prototype.a3DOnlyFunction;
6232 bB.prototype.spotLight = function(ea, ei, en, eo, em, ek, ej, eh, ef, ee, eg) {
6233 if (dL === 8) {
6234 throw "can only create " + 8 + " lights"
6235 }
6236 d8.useProgram(dx);
6237 var el = new A(eo, em, ek);
6238 var ep = new aP;
6239 ep.scale(1, -1, 1);
6240 ep.apply(dJ.array());
6241 ep.mult(el, el);
6242 ep = ep.array();
6243 var ec = [ep[0] * ej + ep[4] * eh + ep[8] * ef, ep[1] * ej + ep[5] * eh + ep[9] * ef, ep[2] * ej + ep[6] * eh + ep[10] * ef];
6244 var eb = dH(ea, ei, en, 0);
6245 var ed = [((eb >> 16) & 255) / 255, ((eb >> 8) & 255) / 255, (eb & 255) / 255];
6246 d2("uLights.color.3d." + dL, dx, "uLights" + dL + ".color", ed);
6247 d2("uLights.position.3d." + dL, dx, "uLights" + dL + ".position", el.array());
6248 d2("uLights.direction.3d." + dL, dx, "uLights" + dL + ".direction", ec);
6249 d2("uLights.concentration.3d." + dL, dx, "uLights" + dL + ".concentration", eg);
6250 d2("uLights.angle.3d." + dL, dx, "uLights" + dL + ".angle", ee);
6251 dZ("uLights.type.3d." + dL, dx, "uLights" + dL + ".type", 3);
6252 dZ("uLightCount3d", dx, "uLightCount", ++dL)
6253 };
6254 bR.prototype.beginCamera = function() {
6255 throw "beginCamera() is not available in 2D mode"
6256 };
6257 bB.prototype.beginCamera = function() {
6258 if (ap) {
6259 throw "You cannot call beginCamera() again before calling endCamera()"
6260 }
6261 ap = true;
6262 dJ = ch;
6263 aT = bV
6264 };
6265 bR.prototype.endCamera = function() {
6266 throw "endCamera() is not available in 2D mode"
6267 };
6268 bB.prototype.endCamera = function() {
6269 if (!ap) {
6270 throw "You cannot call endCamera() before calling beginCamera()"
6271 }
6272 dJ.set(bV);
6273 aT.set(ch);
6274 ap = false
6275 };
6276 cW.camera = function(el, ek, ei, eg, ee, ed, et, er, ep) {
6277 if (el === t) {
6278 dl = cW.width / 2;
6279 dj = cW.height / 2;
6280 di = dj / q.tan(cK / 2);
6281 el = dl;
6282 ek = dj;
6283 ei = di;
6284 eg = dl;
6285 ee = dj;
6286 ed = 0;
6287 et = 0;
6288 er = 1;
6289 ep = 0
6290 }
6291 var ef = new A(el - eg, ek - ee, ei - ed);
6292 var eh = new A(et, er, ep);
6293 ef.normalize();
6294 var ej = A.cross(eh, ef);
6295 eh = A.cross(ef, ej);
6296 ej.normalize();
6297 eh.normalize();
6298 var eu = ej.x,
6299 es = ej.y,
6300 eq = ej.z;
6301 var ec = eh.x,
6302 eb = eh.y,
6303 ea = eh.z;
6304 var eo = ef.x,
6305 en = ef.y,
6306 em = ef.z;
6307 bV.set(eu, es, eq, 0, ec, eb, ea, 0, eo, en, em, 0, 0, 0, 0, 1);
6308 bV.translate(-el, -ek, -ei);
6309 ch.reset();
6310 ch.invApply(eu, es, eq, 0, ec, eb, ea, 0, eo, en, em, 0, 0, 0, 0, 1);
6311 ch.translate(el, ek, ei);
6312 dJ.set(bV);
6313 aT.set(ch)
6314 };
6315 cW.perspective = function(ee, ec, ef, eb) {
6316 if (arguments.length === 0) {
6317 dj = ae.height / 2;
6318 di = dj / q.tan(cK / 2);
6319 a0 = di / 10;
6320 av = di * 10;
6321 b5 = cW.width / cW.height;
6322 ee = cK;
6323 ec = b5;
6324 ef = a0;
6325 eb = av
6326 }
6327 var eg, ea, eh, ed;
6328 eg = ef * q.tan(ee / 2);
6329 ea = -eg;
6330 eh = eg * ec;
6331 ed = ea * ec;
6332 cW.frustum(ed, eh, ea, eg, ef, eb)
6333 };
6334 bR.prototype.frustum = function() {
6335 throw "Processing.js: frustum() is not supported in 2D mode"
6336 };
6337 bB.prototype.frustum = function(eg, ec, eb, ef, ee, ea) {
6338 ci = true;
6339 db = new aP;
6340 db.set(2 * ee / (ec - eg), 0, (ec + eg) / (ec - eg), 0, 0, 2 * ee / (ef - eb), (ef + eb) / (ef - eb), 0, 0, 0, -(ea + ee) / (ea - ee), -(2 * ea * ee) / (ea - ee), 0, 0, -1, 0);
6341 var ed = new aP;
6342 ed.set(db);
6343 ed.transpose();
6344 d8.useProgram(dQ);
6345 a9("projection2d", dQ, "uProjection", false, ed.array());
6346 d8.useProgram(dx);
6347 a9("projection3d", dx, "uProjection", false, ed.array());
6348 d8.useProgram(bT);
6349 a9("uProjectionUS", bT, "uProjection", false, ed.array())
6350 };
6351 cW.ortho = function(eb, em, ea, ek, eh, eg) {
6352 if (arguments.length === 0) {
6353 eb = 0;
6354 em = cW.width;
6355 ea = 0;
6356 ek = cW.height;
6357 eh = -10;
6358 eg = 10
6359 }
6360 var el = 2 / (em - eb);
6361 var ej = 2 / (ek - ea);
6362 var ei = -2 / (eg - eh);
6363 var ef = -(em + eb) / (em - eb);
6364 var ee = -(ek + ea) / (ek - ea);
6365 var ed = -(eg + eh) / (eg - eh);
6366 db = new aP;
6367 db.set(el, 0, 0, ef, 0, ej, 0, ee, 0, 0, ei, ed, 0, 0, 0, 1);
6368 var ec = new aP;
6369 ec.set(db);
6370 ec.transpose();
6371 d8.useProgram(dQ);
6372 a9("projection2d", dQ, "uProjection", false, ec.array());
6373 d8.useProgram(dx);
6374 a9("projection3d", dx, "uProjection", false, ec.array());
6375 d8.useProgram(bT);
6376 a9("uProjectionUS", bT, "uProjection", false, ec.array());
6377 ci = false
6378 };
6379 cW.printProjection = function() {
6380 db.print()
6381 };
6382 cW.printCamera = function() {
6383 bV.print()
6384 };
6385 bR.prototype.box = ds.prototype.a3DOnlyFunction;
6386 bB.prototype.box = function(ec, ef, eh) {
6387 if (!ef || !eh) {
6388 ef = eh = ec
6389 }
6390 var ee = new aP;
6391 ee.scale(ec, ef, eh);
6392 var eb = new aP;
6393 eb.scale(1, -1, 1);
6394 eb.apply(dJ.array());
6395 eb.transpose();
6396 if (aH) {
6397 d8.useProgram(dx);
6398 a9("model3d", dx, "uModel", false, ee.array());
6399 a9("view3d", dx, "uView", false, eb.array());
6400 d8.enable(d8.POLYGON_OFFSET_FILL);
6401 d8.polygonOffset(1, 1);
6402 d2("color3d", dx, "uColor", bo);
6403 if (dL > 0) {
6404 var ed = new aP;
6405 ed.set(eb);
6406 var ea = new aP;
6407 ea.set(ee);
6408 ed.mult(ea);
6409 var eg = new aP;
6410 eg.set(ed);
6411 eg.invert();
6412 eg.transpose();
6413 a9("uNormalTransform3d", dx, "uNormalTransform", false, eg.array());
6414 dc("aNormal3d", dx, "aNormal", 3, cJ)
6415 } else {
6416 cg("aNormal3d", dx, "aNormal")
6417 }
6418 dc("aVertex3d", dx, "aVertex", 3, bh);
6419 cg("aColor3d", dx, "aColor");
6420 cg("aTexture3d", dx, "aTexture");
6421 d8.drawArrays(d8.TRIANGLES, 0, dh.length / 3);
6422 d8.disable(d8.POLYGON_OFFSET_FILL)
6423 }
6424 if (dW > 0 && ce) {
6425 d8.useProgram(dQ);
6426 a9("uModel2d", dQ, "uModel", false, ee.array());
6427 a9("uView2d", dQ, "uView", false, eb.array());
6428 d2("uColor2d", dQ, "uColor", c0);
6429 dZ("uIsDrawingText2d", dQ, "uIsDrawingText", false);
6430 dc("vertex2d", dQ, "aVertex", 3, dk);
6431 cg("aTextureCoord2d", dQ, "aTextureCoord");
6432 d8.drawArrays(d8.LINES, 0, bH.length / 3)
6433 }
6434 };
6435 var cD = function() {
6436 var eb;
6437 cF = [];
6438 for (eb = 0; eb < bM; eb++) {
6439 cF.push(0);
6440 cF.push(-1);
6441 cF.push(0);
6442 cF.push(bt[eb]);
6443 cF.push(bs[eb]);
6444 cF.push(br[eb])
6445 }
6446 cF.push(0);
6447 cF.push(-1);
6448 cF.push(0);
6449 cF.push(bt[0]);
6450 cF.push(bs[0]);
6451 cF.push(br[0]);
6452 var ef, ec, ee;
6453 var ed = 0;
6454 for (eb = 2; eb < bL; eb++) {
6455 ef = ec = ed;
6456 ed += bM;
6457 ee = ed;
6458 for (var ea = 0; ea < bM; ea++) {
6459 cF.push(bt[ef]);
6460 cF.push(bs[ef]);
6461 cF.push(br[ef++]);
6462 cF.push(bt[ee]);
6463 cF.push(bs[ee]);
6464 cF.push(br[ee++])
6465 }
6466 ef = ec;
6467 ee = ed;
6468 cF.push(bt[ef]);
6469 cF.push(bs[ef]);
6470 cF.push(br[ef]);
6471 cF.push(bt[ee]);
6472 cF.push(bs[ee]);
6473 cF.push(br[ee])
6474 }
6475 for (eb = 0; eb < bM; eb++) {
6476 ee = ed + eb;
6477 cF.push(bt[ee]);
6478 cF.push(bs[ee]);
6479 cF.push(br[ee]);
6480 cF.push(0);
6481 cF.push(1);
6482 cF.push(0)
6483 }
6484 cF.push(bt[ed]);
6485 cF.push(bs[ed]);
6486 cF.push(br[ed]);
6487 cF.push(0);
6488 cF.push(1);
6489 cF.push(0);
6490 d8.bindBuffer(d8.ARRAY_BUFFER, bg);
6491 d8.bufferData(d8.ARRAY_BUFFER, new e(cF), d8.STATIC_DRAW)
6492 };
6493 cW.sphereDetail = function(eb, em) {
6494 var eh;
6495 if (arguments.length === 1) {
6496 eb = em = arguments[0]
6497 }
6498 if (eb < 3) {
6499 eb = 3
6500 }
6501 if (em < 2) {
6502 em = 2
6503 }
6504 if (eb === bM && em === bL) {
6505 return
6506 }
6507 var el = 720 / eb;
6508 var ef = new e(eb);
6509 var ec = new e(eb);
6510 for (eh = 0; eh < eb; eh++) {
6511 ef[eh] = bl[eh * el % 720 | 0];
6512 ec[eh] = ah[eh * el % 720 | 0]
6513 }
6514 var ek = eb * (em - 1) + 2;
6515 var ej = 0;
6516 bt = new e(ek);
6517 bs = new e(ek);
6518 br = new e(ek);
6519 var ei = 720 * 0.5 / em;
6520 var ee = ei;
6521 for (eh = 1; eh < em; eh++) {
6522 var ed = ah[ee % 720 | 0];
6523 var ea = -bl[ee % 720 | 0];
6524 for (var eg = 0; eg < eb; eg++) {
6525 bt[ej] = ef[eg] * ed;
6526 bs[ej] = ea;
6527 br[ej++] = ec[eg] * ed
6528 }
6529 ee += ei
6530 }
6531 bM = eb;
6532 bL = em;
6533 cD()
6534 };
6535 bR.prototype.sphere = ds.prototype.a3DOnlyFunction;
6536 bB.prototype.sphere = function() {
6537 var ee = arguments[0];
6538 if (bM < 3 || bL < 2) {
6539 cW.sphereDetail(30)
6540 }
6541 var ed = new aP;
6542 ed.scale(ee, ee, ee);
6543 var eb = new aP;
6544 eb.scale(1, -1, 1);
6545 eb.apply(dJ.array());
6546 eb.transpose();
6547 if (aH) {
6548 if (dL > 0) {
6549 var ec = new aP;
6550 ec.set(eb);
6551 var ea = new aP;
6552 ea.set(ed);
6553 ec.mult(ea);
6554 var ef = new aP;
6555 ef.set(ec);
6556 ef.invert();
6557 ef.transpose();
6558 a9("uNormalTransform3d", dx, "uNormalTransform", false, ef.array());
6559 dc("aNormal3d", dx, "aNormal", 3, bg)
6560 } else {
6561 cg("aNormal3d", dx, "aNormal")
6562 }
6563 d8.useProgram(dx);
6564 cg("aTexture3d", dx, "aTexture");
6565 a9("uModel3d", dx, "uModel", false, ed.array());
6566 a9("uView3d", dx, "uView", false, eb.array());
6567 dc("aVertex3d", dx, "aVertex", 3, bg);
6568 cg("aColor3d", dx, "aColor");
6569 d8.enable(d8.POLYGON_OFFSET_FILL);
6570 d8.polygonOffset(1, 1);
6571 d2("uColor3d", dx, "uColor", bo);
6572 d8.drawArrays(d8.TRIANGLE_STRIP, 0, cF.length / 3);
6573 d8.disable(d8.POLYGON_OFFSET_FILL)
6574 }
6575 if (dW > 0 && ce) {
6576 d8.useProgram(dQ);
6577 a9("uModel2d", dQ, "uModel", false, ed.array());
6578 a9("uView2d", dQ, "uView", false, eb.array());
6579 dc("aVertex2d", dQ, "aVertex", 3, bg);
6580 cg("aTextureCoord2d", dQ, "aTextureCoord");
6581 d2("uColor2d", dQ, "uColor", c0);
6582 dZ("uIsDrawingText", dQ, "uIsDrawingText", false);
6583 d8.drawArrays(d8.LINE_STRIP, 0, cF.length / 3)
6584 }
6585 };
6586 cW.modelX = function(eg, ef, ee) {
6587 var ei = dJ.array();
6588 var ek = ch.array();
6589 var ea = ei[0] * eg + ei[1] * ef + ei[2] * ee + ei[3];
6590 var ej = ei[4] * eg + ei[5] * ef + ei[6] * ee + ei[7];
6591 var eh = ei[8] * eg + ei[9] * ef + ei[10] * ee + ei[11];
6592 var eb = ei[12] * eg + ei[13] * ef + ei[14] * ee + ei[15];
6593 var ec = ek[0] * ea + ek[1] * ej + ek[2] * eh + ek[3] * eb;
6594 var ed = ek[12] * ea + ek[13] * ej + ek[14] * eh + ek[15] * eb;
6595 return ed !== 0 ? ec / ed : ec
6596 };
6597 cW.modelY = function(eg, ef, ee) {
6598 var ei = dJ.array();
6599 var ek = ch.array();
6600 var ea = ei[0] * eg + ei[1] * ef + ei[2] * ee + ei[3];
6601 var ej = ei[4] * eg + ei[5] * ef + ei[6] * ee + ei[7];
6602 var eh = ei[8] * eg + ei[9] * ef + ei[10] * ee + ei[11];
6603 var eb = ei[12] * eg + ei[13] * ef + ei[14] * ee + ei[15];
6604 var ec = ek[4] * ea + ek[5] * ej + ek[6] * eh + ek[7] * eb;
6605 var ed = ek[12] * ea + ek[13] * ej + ek[14] * eh + ek[15] * eb;
6606 return ed !== 0 ? ec / ed : ec
6607 };
6608 cW.modelZ = function(eg, ef, ee) {
6609 var ei = dJ.array();
6610 var ek = ch.array();
6611 var ea = ei[0] * eg + ei[1] * ef + ei[2] * ee + ei[3];
6612 var ej = ei[4] * eg + ei[5] * ef + ei[6] * ee + ei[7];
6613 var eh = ei[8] * eg + ei[9] * ef + ei[10] * ee + ei[11];
6614 var ec = ei[12] * eg + ei[13] * ef + ei[14] * ee + ei[15];
6615 var eb = ek[8] * ea + ek[9] * ej + ek[10] * eh + ek[11] * ec;
6616 var ed = ek[12] * ea + ek[13] * ej + ek[14] * eh + ek[15] * ec;
6617 return ed !== 0 ? eb / ed : eb
6618 };
6619 bR.prototype.ambient = ds.prototype.a3DOnlyFunction;
6620 bB.prototype.ambient = function(ed, ec, eb) {
6621 d8.useProgram(dx);
6622 dZ("uUsingMat3d", dx, "uUsingMat", true);
6623 var ea = cW.color(ed, ec, eb);
6624 d2("uMaterialAmbient3d", dx, "uMaterialAmbient", cW.color.toGLArray(ea).slice(0, 3))
6625 };
6626 bR.prototype.emissive = ds.prototype.a3DOnlyFunction;
6627 bB.prototype.emissive = function(ed, ec, eb) {
6628 d8.useProgram(dx);
6629 dZ("uUsingMat3d", dx, "uUsingMat", true);
6630 var ea = cW.color(ed, ec, eb);
6631 d2("uMaterialEmissive3d", dx, "uMaterialEmissive", cW.color.toGLArray(ea).slice(0, 3))
6632 };
6633 bR.prototype.shininess = ds.prototype.a3DOnlyFunction;
6634 bB.prototype.shininess = function(ea) {
6635 d8.useProgram(dx);
6636 dZ("uUsingMat3d", dx, "uUsingMat", true);
6637 d2("uShininess3d", dx, "uShininess", ea)
6638 };
6639 bR.prototype.specular = ds.prototype.a3DOnlyFunction;
6640 bB.prototype.specular = function(ed, ec, eb) {
6641 d8.useProgram(dx);
6642 dZ("uUsingMat3d", dx, "uUsingMat", true);
6643 var ea = cW.color(ed, ec, eb);
6644 d2("uMaterialSpecular3d", dx, "uMaterialSpecular", cW.color.toGLArray(ea).slice(0, 3))
6645 };
6646 cW.screenX = function(eh, eg, ef) {
6647 var ej = dJ.array();
6648 if (ej.length === 16) {
6649 var ea = ej[0] * eh + ej[1] * eg + ej[2] * ef + ej[3];
6650 var ek = ej[4] * eh + ej[5] * eg + ej[6] * ef + ej[7];
6651 var ei = ej[8] * eh + ej[9] * eg + ej[10] * ef + ej[11];
6652 var eb = ej[12] * eh + ej[13] * eg + ej[14] * ef + ej[15];
6653 var ee = db.array();
6654 var ec = ee[0] * ea + ee[1] * ek + ee[2] * ei + ee[3] * eb;
6655 var ed = ee[12] * ea + ee[13] * ek + ee[14] * ei + ee[15] * eb;
6656 if (ed !== 0) {
6657 ec /= ed
6658 }
6659 return cW.width * (1 + ec) / 2
6660 }
6661 return dJ.multX(eh, eg)
6662 };
6663 cW.screenY = function aA(eh, eg, ef) {
6664 var ej = dJ.array();
6665 if (ej.length === 16) {
6666 var ea = ej[0] * eh + ej[1] * eg + ej[2] * ef + ej[3];
6667 var ek = ej[4] * eh + ej[5] * eg + ej[6] * ef + ej[7];
6668 var ei = ej[8] * eh + ej[9] * eg + ej[10] * ef + ej[11];
6669 var eb = ej[12] * eh + ej[13] * eg + ej[14] * ef + ej[15];
6670 var ee = db.array();
6671 var ec = ee[4] * ea + ee[5] * ek + ee[6] * ei + ee[7] * eb;
6672 var ed = ee[12] * ea + ee[13] * ek + ee[14] * ei + ee[15] * eb;
6673 if (ed !== 0) {
6674 ec /= ed
6675 }
6676 return cW.height * (1 + ec) / 2
6677 }
6678 return dJ.multY(eh, eg)
6679 };
6680 cW.screenZ = function ay(eh, eg, ef) {
6681 var ej = dJ.array();
6682 if (ej.length !== 16) {
6683 return 0
6684 }
6685 var ee = db.array();
6686 var ea = ej[0] * eh + ej[1] * eg + ej[2] * ef + ej[3];
6687 var ek = ej[4] * eh + ej[5] * eg + ej[6] * ef + ej[7];
6688 var ei = ej[8] * eh + ej[9] * eg + ej[10] * ef + ej[11];
6689 var ec = ej[12] * eh + ej[13] * eg + ej[14] * ef + ej[15];
6690 var eb = ee[8] * ea + ee[9] * ek + ee[10] * ei + ee[11] * ec;
6691 var ed = ee[12] * ea + ee[13] * ek + ee[14] * ei + ee[15] * ec;
6692 if (ed !== 0) {
6693 eb /= ed
6694 }
6695 return (eb + 1) / 2
6696 };
6697 ds.prototype.fill = function() {
6698 var ea = cW.color(arguments[0], arguments[1], arguments[2], arguments[3]);
6699 if (ea === a1 && aH) {
6700 return
6701 }
6702 aH = true;
6703 a1 = ea
6704 };
6705 bR.prototype.fill = function() {
6706 ds.prototype.fill.apply(this, arguments);
6707 aq = true
6708 };
6709 bB.prototype.fill = function() {
6710 ds.prototype.fill.apply(this, arguments);
6711 bo = cW.color.toGLArray(a1)
6712 };
6713
6714 function bn() {
6715 if (aH) {
6716 if (aq) {
6717 d8.fillStyle = cW.color.toString(a1);
6718 aq = false
6719 }
6720 d8.fill()
6721 }
6722 }
6723 cW.noFill = function() {
6724 aH = false
6725 };
6726 ds.prototype.stroke = function() {
6727 var ea = cW.color(arguments[0], arguments[1], arguments[2], arguments[3]);
6728 if (ea === cv && ce) {
6729 return
6730 }
6731 ce = true;
6732 cv = ea
6733 };
6734 bR.prototype.stroke = function() {
6735 ds.prototype.stroke.apply(this, arguments);
6736 b3 = true
6737 };
6738 bB.prototype.stroke = function() {
6739 ds.prototype.stroke.apply(this, arguments);
6740 c0 = cW.color.toGLArray(cv)
6741 };
6742
6743 function dd() {
6744 if (ce) {
6745 if (b3) {
6746 d8.strokeStyle = cW.color.toString(cv);
6747 b3 = false
6748 }
6749 d8.stroke()
6750 }
6751 }
6752 cW.noStroke = function() {
6753 ce = false
6754 };
6755 ds.prototype.strokeWeight = function(ea) {
6756 dW = ea
6757 };
6758 bR.prototype.strokeWeight = function(ea) {
6759 ds.prototype.strokeWeight.apply(this, arguments);
6760 d8.lineWidth = ea
6761 };
6762 bB.prototype.strokeWeight = function(ea) {
6763 ds.prototype.strokeWeight.apply(this, arguments);
6764 d8.useProgram(dQ);
6765 d2("pointSize2d", dQ, "uPointSize", ea);
6766 d8.useProgram(bT);
6767 d2("pointSizeUnlitShape", bT, "uPointSize", ea);
6768 d8.lineWidth(ea)
6769 };
6770 cW.strokeCap = function(ea) {
6771 dY.$ensureContext().lineCap = ea
6772 };
6773 cW.strokeJoin = function(ea) {
6774 dY.$ensureContext().lineJoin = ea
6775 };
6776 bR.prototype.smooth = function() {
6777 dO = true;
6778 var ea = ae.style;
6779 ea.setProperty("image-rendering", "optimizeQuality", "important");
6780 ea.setProperty("-ms-interpolation-mode", "bicubic", "important");
6781 if (d8.hasOwnProperty("mozImageSmoothingEnabled")) {
6782 d8.mozImageSmoothingEnabled = true
6783 }
6784 };
6785 bB.prototype.smooth = function() {
6786 dO = true
6787 };
6788 bR.prototype.noSmooth = function() {
6789 dO = false;
6790 var ea = ae.style;
6791 ea.setProperty("image-rendering", "optimizeSpeed", "important");
6792 ea.setProperty("image-rendering", "-moz-crisp-edges", "important");
6793 ea.setProperty("image-rendering", "-webkit-optimize-contrast", "important");
6794 ea.setProperty("image-rendering", "optimize-contrast", "important");
6795 ea.setProperty("-ms-interpolation-mode", "nearest-neighbor", "important");
6796 if (d8.hasOwnProperty("mozImageSmoothingEnabled")) {
6797 d8.mozImageSmoothingEnabled = false
6798 }
6799 };
6800 bB.prototype.noSmooth = function() {
6801 dO = false
6802 };
6803 bR.prototype.point = function(ea, eb) {
6804 if (!ce) {
6805 return
6806 }
6807 ea = q.round(ea);
6808 eb = q.round(eb);
6809 d8.fillStyle = cW.color.toString(cv);
6810 aq = true;
6811 if (dW > 1) {
6812 d8.beginPath();
6813 d8.arc(ea, eb, dW / 2, 0, 6.283185307179586, false);
6814 d8.fill()
6815 } else {
6816 d8.fillRect(ea, eb, 1, 1)
6817 }
6818 };
6819 bB.prototype.point = function(ea, ee, ed) {
6820 var ec = new aP;
6821 ec.translate(ea, ee, ed || 0);
6822 ec.transpose();
6823 var eb = new aP;
6824 eb.scale(1, -1, 1);
6825 eb.apply(dJ.array());
6826 eb.transpose();
6827 d8.useProgram(dQ);
6828 a9("uModel2d", dQ, "uModel", false, ec.array());
6829 a9("uView2d", dQ, "uView", false, eb.array());
6830 if (dW > 0 && ce) {
6831 d2("uColor2d", dQ, "uColor", c0);
6832 dZ("uIsDrawingText2d", dQ, "uIsDrawingText", false);
6833 dZ("uSmooth2d", dQ, "uSmooth", dO);
6834 dc("aVertex2d", dQ, "aVertex", 3, aw);
6835 cg("aTextureCoord2d", dQ, "aTextureCoord");
6836 d8.drawArrays(d8.POINTS, 0, 1)
6837 }
6838 };
6839 cW.beginShape = function(ea) {
6840 dR = ea;
6841 d6 = [];
6842 bb = []
6843 };
6844 bR.prototype.vertex = function(eb, ed, ea) {
6845 var ec = [];
6846 if (du) {
6847 du = false
6848 }
6849 ec.isVert = true;
6850 ec[0] = eb;
6851 ec[1] = ed;
6852 ec[2] = 0;
6853 ec[3] = 0;
6854 ec[4] = 0;
6855 ec[5] = a1;
6856 ec[6] = cv;
6857 bb.push(ec);
6858 if (ea) {
6859 bb[bb.length - 1]["moveTo"] = ea
6860 }
6861 };
6862 bB.prototype.vertex = function(ea, ef, ee, ed, ec) {
6863 var eb = [];
6864 if (du) {
6865 du = false
6866 }
6867 eb.isVert = true;
6868 if (ec === t && dT) {
6869 ec = ed;
6870 ed = ee;
6871 ee = 0
6872 }
6873 if (ed !== t && ec !== t) {
6874 if (d4 === 2) {
6875 ed /= cs.width;
6876 ec /= cs.height
6877 }
6878 ed = ed > 1 ? 1 : ed;
6879 ed = ed < 0 ? 0 : ed;
6880 ec = ec > 1 ? 1 : ec;
6881 ec = ec < 0 ? 0 : ec
6882 }
6883 eb[0] = ea;
6884 eb[1] = ef;
6885 eb[2] = ee || 0;
6886 eb[3] = ed || 0;
6887 eb[4] = ec || 0;
6888 eb[5] = bo[0];
6889 eb[6] = bo[1];
6890 eb[7] = bo[2];
6891 eb[8] = bo[3];
6892 eb[9] = c0[0];
6893 eb[10] = c0[1];
6894 eb[11] = c0[2];
6895 eb[12] = c0[3];
6896 eb[13] = a8;
6897 eb[14] = a7;
6898 eb[15] = a6;
6899 bb.push(eb)
6900 };
6901 var d1 = function(ec, eb) {
6902 var ea = new aP;
6903 ea.scale(1, -1, 1);
6904 ea.apply(dJ.array());
6905 ea.transpose();
6906 d8.useProgram(bT);
6907 a9("uViewUS", bT, "uView", false, ea.array());
6908 dZ("uSmoothUS", bT, "uSmooth", dO);
6909 dc("aVertexUS", bT, "aVertex", 3, aw);
6910 d8.bufferData(d8.ARRAY_BUFFER, new e(ec), d8.STREAM_DRAW);
6911 dc("aColorUS", bT, "aColor", 4, aG);
6912 d8.bufferData(d8.ARRAY_BUFFER, new e(eb), d8.STREAM_DRAW);
6913 d8.drawArrays(d8.POINTS, 0, ec.length / 3)
6914 };
6915 var bj = function(ee, ed, ec) {
6916 var eb;
6917 if (ed === "LINES") {
6918 eb = d8.LINES
6919 } else {
6920 if (ed === "LINE_LOOP") {
6921 eb = d8.LINE_LOOP
6922 } else {
6923 eb = d8.LINE_STRIP
6924 }
6925 }
6926 var ea = new aP;
6927 ea.scale(1, -1, 1);
6928 ea.apply(dJ.array());
6929 ea.transpose();
6930 d8.useProgram(bT);
6931 a9("uViewUS", bT, "uView", false, ea.array());
6932 dc("aVertexUS", bT, "aVertex", 3, b8);
6933 d8.bufferData(d8.ARRAY_BUFFER, new e(ee), d8.STREAM_DRAW);
6934 dc("aColorUS", bT, "aColor", 4, bC);
6935 d8.bufferData(d8.ARRAY_BUFFER, new e(ec), d8.STREAM_DRAW);
6936 d8.drawArrays(eb, 0, ee.length / 3)
6937 };
6938 var dm = function(ef, ee, ed, ec) {
6939 var eb;
6940 if (ee === "TRIANGLES") {
6941 eb = d8.TRIANGLES
6942 } else {
6943 if (ee === "TRIANGLE_FAN") {
6944 eb = d8.TRIANGLE_FAN
6945 } else {
6946 eb = d8.TRIANGLE_STRIP
6947 }
6948 }
6949 var ea = new aP;
6950 ea.scale(1, -1, 1);
6951 ea.apply(dJ.array());
6952 ea.transpose();
6953 d8.useProgram(dx);
6954 a9("model3d", dx, "uModel", false, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
6955 a9("view3d", dx, "uView", false, ea.array());
6956 d8.enable(d8.POLYGON_OFFSET_FILL);
6957 d8.polygonOffset(1, 1);
6958 d2("color3d", dx, "uColor", [-1, 0, 0, 0]);
6959 dc("vertex3d", dx, "aVertex", 3, at);
6960 d8.bufferData(d8.ARRAY_BUFFER, new e(ef), d8.STREAM_DRAW);
6961 if (dT && bf !== null) {
6962 bw(ed)
6963 }
6964 dc("aColor3d", dx, "aColor", 4, aG);
6965 d8.bufferData(d8.ARRAY_BUFFER, new e(ed), d8.STREAM_DRAW);
6966 cg("aNormal3d", dx, "aNormal");
6967 if (dT) {
6968 dZ("uUsingTexture3d", dx, "uUsingTexture", dT);
6969 dc("aTexture3d", dx, "aTexture", 2, af);
6970 d8.bufferData(d8.ARRAY_BUFFER, new e(ec), d8.STREAM_DRAW)
6971 }
6972 d8.drawArrays(eb, 0, ef.length / 3);
6973 d8.disable(d8.POLYGON_OFFSET_FILL)
6974 };
6975
6976 function cS() {
6977 bn();
6978 dd();
6979 d8.closePath()
6980 }
6981 bR.prototype.endShape = function(eh) {
6982 if (bb.length === 0) {
6983 return
6984 }
6985 var ed = eh === 2;
6986 if (ed) {
6987 bb.push(bb[0])
6988 }
6989 var ec = [];
6990 var ea = [];
6991 var ej = [];
6992 var em = [];
6993 var ef = [];
6994 var ei;
6995 du = true;
6996 var eg, ee, eb;
6997 var el = bb.length;
6998 for (eg = 0; eg < el; eg++) {
6999 ei = bb[eg];
7000 for (ee = 0; ee < 3; ee++) {
7001 ea.push(ei[ee])
7002 }
7003 }
7004 for (eg = 0; eg < el; eg++) {
7005 ei = bb[eg];
7006 for (ee = 5; ee < 9; ee++) {
7007 ej.push(ei[ee])
7008 }
7009 }
7010 for (eg = 0; eg < el; eg++) {
7011 ei = bb[eg];
7012 for (ee = 9; ee < 13; ee++) {
7013 em.push(ei[ee])
7014 }
7015 }
7016 for (eg = 0; eg < el; eg++) {
7017 ei = bb[eg];
7018 ef.push(ei[3]);
7019 ef.push(ei[4])
7020 }
7021 if (dP && (dR === 20 || dR === t)) {
7022 if (el > 3) {
7023 var ek = [],
7024 en = 1 - aJ;
7025 d8.beginPath();
7026 d8.moveTo(bb[1][0], bb[1][1]);
7027 for (eg = 1; eg + 2 < el; eg++) {
7028 ei = bb[eg];
7029 ek[0] = [ei[0], ei[1]];
7030 ek[1] = [ei[0] + (en * bb[eg + 1][0] - en * bb[eg - 1][0]) / 6, ei[1] + (en * bb[eg + 1][1] - en * bb[eg - 1][1]) / 6];
7031 ek[2] = [bb[eg + 1][0] + (en * bb[eg][0] - en * bb[eg + 2][0]) / 6, bb[eg + 1][1] + (en * bb[eg][1] - en * bb[eg + 2][1]) / 6];
7032 ek[3] = [bb[eg + 1][0], bb[eg + 1][1]];
7033 d8.bezierCurveTo(ek[1][0], ek[1][1], ek[2][0], ek[2][1], ek[3][0], ek[3][1])
7034 }
7035 cS()
7036 }
7037 } else {
7038 if (aa && (dR === 20 || dR === t)) {
7039 d8.beginPath();
7040 for (eg = 0; eg < el; eg++) {
7041 ei = bb[eg];
7042 if (bb[eg]["isVert"]) {
7043 if (bb[eg]["moveTo"]) {
7044 d8.moveTo(ei[0], ei[1])
7045 } else {
7046 d8.lineTo(ei[0], ei[1])
7047 }
7048 } else {
7049 d8.bezierCurveTo(bb[eg][0], bb[eg][1], bb[eg][2], bb[eg][3], bb[eg][4], bb[eg][5])
7050 }
7051 }
7052 cS()
7053 } else {
7054 if (dR === 2) {
7055 for (eg = 0; eg < el; eg++) {
7056 ei = bb[eg];
7057 if (ce) {
7058 cW.stroke(ei[6])
7059 }
7060 cW.point(ei[0], ei[1])
7061 }
7062 } else {
7063 if (dR === 4) {
7064 for (eg = 0; eg + 1 < el; eg += 2) {
7065 ei = bb[eg];
7066 if (ce) {
7067 cW.stroke(bb[eg + 1][6])
7068 }
7069 cW.line(ei[0], ei[1], bb[eg + 1][0], bb[eg + 1][1])
7070 }
7071 } else {
7072 if (dR === 9) {
7073 for (eg = 0; eg + 2 < el; eg += 3) {
7074 ei = bb[eg];
7075 d8.beginPath();
7076 d8.moveTo(ei[0], ei[1]);
7077 d8.lineTo(bb[eg + 1][0], bb[eg + 1][1]);
7078 d8.lineTo(bb[eg + 2][0], bb[eg + 2][1]);
7079 d8.lineTo(ei[0], ei[1]);
7080 if (aH) {
7081 cW.fill(bb[eg + 2][5]);
7082 bn()
7083 }
7084 if (ce) {
7085 cW.stroke(bb[eg + 2][6]);
7086 dd()
7087 }
7088 d8.closePath()
7089 }
7090 } else {
7091 if (dR === 10) {
7092 for (eg = 0; eg + 1 < el; eg++) {
7093 ei = bb[eg];
7094 d8.beginPath();
7095 d8.moveTo(bb[eg + 1][0], bb[eg + 1][1]);
7096 d8.lineTo(ei[0], ei[1]);
7097 if (ce) {
7098 cW.stroke(bb[eg + 1][6])
7099 }
7100 if (aH) {
7101 cW.fill(bb[eg + 1][5])
7102 }
7103 if (eg + 2 < el) {
7104 d8.lineTo(bb[eg + 2][0], bb[eg + 2][1]);
7105 if (ce) {
7106 cW.stroke(bb[eg + 2][6])
7107 }
7108 if (aH) {
7109 cW.fill(bb[eg + 2][5])
7110 }
7111 }
7112 cS()
7113 }
7114 } else {
7115 if (dR === 11) {
7116 if (el > 2) {
7117 d8.beginPath();
7118 d8.moveTo(bb[0][0], bb[0][1]);
7119 d8.lineTo(bb[1][0], bb[1][1]);
7120 d8.lineTo(bb[2][0], bb[2][1]);
7121 if (aH) {
7122 cW.fill(bb[2][5]);
7123 bn()
7124 }
7125 if (ce) {
7126 cW.stroke(bb[2][6]);
7127 dd()
7128 }
7129 d8.closePath();
7130 for (eg = 3; eg < el; eg++) {
7131 ei = bb[eg];
7132 d8.beginPath();
7133 d8.moveTo(bb[0][0], bb[0][1]);
7134 d8.lineTo(bb[eg - 1][0], bb[eg - 1][1]);
7135 d8.lineTo(ei[0], ei[1]);
7136 if (aH) {
7137 cW.fill(ei[5]);
7138 bn()
7139 }
7140 if (ce) {
7141 cW.stroke(ei[6]);
7142 dd()
7143 }
7144 d8.closePath()
7145 }
7146 }
7147 } else {
7148 if (dR === 16) {
7149 for (eg = 0; eg + 3 < el; eg += 4) {
7150 ei = bb[eg];
7151 d8.beginPath();
7152 d8.moveTo(ei[0], ei[1]);
7153 for (ee = 1; ee < 4; ee++) {
7154 d8.lineTo(bb[eg + ee][0], bb[eg + ee][1])
7155 }
7156 d8.lineTo(ei[0], ei[1]);
7157 if (aH) {
7158 cW.fill(bb[eg + 3][5]);
7159 bn()
7160 }
7161 if (ce) {
7162 cW.stroke(bb[eg + 3][6]);
7163 dd()
7164 }
7165 d8.closePath()
7166 }
7167 } else {
7168 if (dR === 17) {
7169 if (el > 3) {
7170 for (eg = 0; eg + 1 < el; eg += 2) {
7171 ei = bb[eg];
7172 d8.beginPath();
7173 if (eg + 3 < el) {
7174 d8.moveTo(bb[eg + 2][0], bb[eg + 2][1]);
7175 d8.lineTo(ei[0], ei[1]);
7176 d8.lineTo(bb[eg + 1][0], bb[eg + 1][1]);
7177 d8.lineTo(bb[eg + 3][0], bb[eg + 3][1]);
7178 if (aH) {
7179 cW.fill(bb[eg + 3][5])
7180 }
7181 if (ce) {
7182 cW.stroke(bb[eg + 3][6])
7183 }
7184 } else {
7185 d8.moveTo(ei[0], ei[1]);
7186 d8.lineTo(bb[eg + 1][0], bb[eg + 1][1])
7187 }
7188 cS()
7189 }
7190 }
7191 } else {
7192 d8.beginPath();
7193 d8.moveTo(bb[0][0], bb[0][1]);
7194 for (eg = 1; eg < el; eg++) {
7195 ei = bb[eg];
7196 if (ei.isVert) {
7197 if (ei.moveTo) {
7198 d8.moveTo(ei[0], ei[1])
7199 } else {
7200 d8.lineTo(ei[0], ei[1])
7201 }
7202 }
7203 }
7204 cS()
7205 }
7206 }
7207 }
7208 }
7209 }
7210 }
7211 }
7212 }
7213 }
7214 dP = false;
7215 aa = false;
7216 cb = [];
7217 c2 = 0;
7218 if (ed) {
7219 bb.pop()
7220 }
7221 };
7222 bB.prototype.endShape = function(eh) {
7223 if (bb.length === 0) {
7224 return
7225 }
7226 var ed = eh === 2;
7227 var ec = [];
7228 var ea = [];
7229 var ej = [];
7230 var em = [];
7231 var ef = [];
7232 var ei;
7233 du = true;
7234 var eg, ee, eb;
7235 var el = bb.length;
7236 for (eg = 0; eg < el; eg++) {
7237 ei = bb[eg];
7238 for (ee = 0; ee < 3; ee++) {
7239 ea.push(ei[ee])
7240 }
7241 }
7242 for (eg = 0; eg < el; eg++) {
7243 ei = bb[eg];
7244 for (ee = 5; ee < 9; ee++) {
7245 ej.push(ei[ee])
7246 }
7247 }
7248 for (eg = 0; eg < el; eg++) {
7249 ei = bb[eg];
7250 for (ee = 9; ee < 13; ee++) {
7251 em.push(ei[ee])
7252 }
7253 }
7254 for (eg = 0; eg < el; eg++) {
7255 ei = bb[eg];
7256 ef.push(ei[3]);
7257 ef.push(ei[4])
7258 }
7259 if (ed) {
7260 ea.push(bb[0][0]);
7261 ea.push(bb[0][1]);
7262 ea.push(bb[0][2]);
7263 for (eg = 5; eg < 9; eg++) {
7264 ej.push(bb[0][eg])
7265 }
7266 for (eg = 9; eg < 13; eg++) {
7267 em.push(bb[0][eg])
7268 }
7269 ef.push(bb[0][3]);
7270 ef.push(bb[0][4])
7271 }
7272 if (dP && (dR === 20 || dR === t)) {
7273 ec = ea;
7274 if (ce) {
7275 bj(ec, null, em)
7276 }
7277 if (aH) {
7278 dm(ea, null, ej)
7279 }
7280 } else {
7281 if (aa && (dR === 20 || dR === t)) {
7282 ec = ea;
7283 ec.splice(ec.length - 3);
7284 em.splice(em.length - 4);
7285 if (ce) {
7286 bj(ec, null, em)
7287 }
7288 if (aH) {
7289 dm(ea, "TRIANGLES", ej)
7290 }
7291 } else {
7292 if (dR === 2) {
7293 for (eg = 0; eg < el; eg++) {
7294 ei = bb[eg];
7295 for (ee = 0; ee < 3; ee++) {
7296 ec.push(ei[ee])
7297 }
7298 }
7299 d1(ec, em)
7300 } else {
7301 if (dR === 4) {
7302 for (eg = 0; eg < el; eg++) {
7303 ei = bb[eg];
7304 for (ee = 0; ee < 3; ee++) {
7305 ec.push(ei[ee])
7306 }
7307 }
7308 for (eg = 0; eg < el; eg++) {
7309 ei = bb[eg];
7310 for (ee = 5; ee < 9; ee++) {
7311 ej.push(ei[ee])
7312 }
7313 }
7314 bj(ec, "LINES", em)
7315 } else {
7316 if (dR === 9) {
7317 if (el > 2) {
7318 for (eg = 0; eg + 2 < el; eg += 3) {
7319 ea = [];
7320 ef = [];
7321 ec = [];
7322 ej = [];
7323 em = [];
7324 for (ee = 0; ee < 3; ee++) {
7325 for (eb = 0; eb < 3; eb++) {
7326 ec.push(bb[eg + ee][eb]);
7327 ea.push(bb[eg + ee][eb])
7328 }
7329 }
7330 for (ee = 0; ee < 3; ee++) {
7331 for (eb = 3; eb < 5; eb++) {
7332 ef.push(bb[eg + ee][eb])
7333 }
7334 }
7335 for (ee = 0; ee < 3; ee++) {
7336 for (eb = 5; eb < 9; eb++) {
7337 ej.push(bb[eg + ee][eb]);
7338 em.push(bb[eg + ee][eb + 4])
7339 }
7340 }
7341 if (ce) {
7342 bj(ec, "LINE_LOOP", em)
7343 }
7344 if (aH || dT) {
7345 dm(ea, "TRIANGLES", ej, ef)
7346 }
7347 }
7348 }
7349 } else {
7350 if (dR === 10) {
7351 if (el > 2) {
7352 for (eg = 0; eg + 2 < el; eg++) {
7353 ec = [];
7354 ea = [];
7355 em = [];
7356 ej = [];
7357 ef = [];
7358 for (ee = 0; ee < 3; ee++) {
7359 for (eb = 0; eb < 3; eb++) {
7360 ec.push(bb[eg + ee][eb]);
7361 ea.push(bb[eg + ee][eb])
7362 }
7363 }
7364 for (ee = 0; ee < 3; ee++) {
7365 for (eb = 3; eb < 5; eb++) {
7366 ef.push(bb[eg + ee][eb])
7367 }
7368 }
7369 for (ee = 0; ee < 3; ee++) {
7370 for (eb = 5; eb < 9; eb++) {
7371 em.push(bb[eg + ee][eb + 4]);
7372 ej.push(bb[eg + ee][eb])
7373 }
7374 }
7375 if (aH || dT) {
7376 dm(ea, "TRIANGLE_STRIP", ej, ef)
7377 }
7378 if (ce) {
7379 bj(ec, "LINE_LOOP", em)
7380 }
7381 }
7382 }
7383 } else {
7384 if (dR === 11) {
7385 if (el > 2) {
7386 for (eg = 0; eg < 3; eg++) {
7387 ei = bb[eg];
7388 for (ee = 0; ee < 3; ee++) {
7389 ec.push(ei[ee])
7390 }
7391 }
7392 for (eg = 0; eg < 3; eg++) {
7393 ei = bb[eg];
7394 for (ee = 9; ee < 13; ee++) {
7395 em.push(ei[ee])
7396 }
7397 }
7398 if (ce) {
7399 bj(ec, "LINE_LOOP", em)
7400 }
7401 for (eg = 2; eg + 1 < el; eg++) {
7402 ec = [];
7403 em = [];
7404 ec.push(bb[0][0]);
7405 ec.push(bb[0][1]);
7406 ec.push(bb[0][2]);
7407 em.push(bb[0][9]);
7408 em.push(bb[0][10]);
7409 em.push(bb[0][11]);
7410 em.push(bb[0][12]);
7411 for (ee = 0; ee < 2; ee++) {
7412 for (eb = 0; eb < 3; eb++) {
7413 ec.push(bb[eg + ee][eb])
7414 }
7415 }
7416 for (ee = 0; ee < 2; ee++) {
7417 for (eb = 9; eb < 13; eb++) {
7418 em.push(bb[eg + ee][eb])
7419 }
7420 }
7421 if (ce) {
7422 bj(ec, "LINE_STRIP", em)
7423 }
7424 }
7425 if (aH || dT) {
7426 dm(ea, "TRIANGLE_FAN", ej, ef)
7427 }
7428 }
7429 } else {
7430 if (dR === 16) {
7431 for (eg = 0; eg + 3 < el; eg += 4) {
7432 ec = [];
7433 for (ee = 0; ee < 4; ee++) {
7434 ei = bb[eg + ee];
7435 for (eb = 0; eb < 3; eb++) {
7436 ec.push(ei[eb])
7437 }
7438 }
7439 if (ce) {
7440 bj(ec, "LINE_LOOP", em)
7441 }
7442 if (aH) {
7443 ea = [];
7444 ej = [];
7445 ef = [];
7446 for (ee = 0; ee < 3; ee++) {
7447 ea.push(bb[eg][ee])
7448 }
7449 for (ee = 5; ee < 9; ee++) {
7450 ej.push(bb[eg][ee])
7451 }
7452 for (ee = 0; ee < 3; ee++) {
7453 ea.push(bb[eg + 1][ee])
7454 }
7455 for (ee = 5; ee < 9; ee++) {
7456 ej.push(bb[eg + 1][ee])
7457 }
7458 for (ee = 0; ee < 3; ee++) {
7459 ea.push(bb[eg + 3][ee])
7460 }
7461 for (ee = 5; ee < 9; ee++) {
7462 ej.push(bb[eg + 3][ee])
7463 }
7464 for (ee = 0; ee < 3; ee++) {
7465 ea.push(bb[eg + 2][ee])
7466 }
7467 for (ee = 5; ee < 9; ee++) {
7468 ej.push(bb[eg + 2][ee])
7469 }
7470 if (dT) {
7471 ef.push(bb[eg + 0][3]);
7472 ef.push(bb[eg + 0][4]);
7473 ef.push(bb[eg + 1][3]);
7474 ef.push(bb[eg + 1][4]);
7475 ef.push(bb[eg + 3][3]);
7476 ef.push(bb[eg + 3][4]);
7477 ef.push(bb[eg + 2][3]);
7478 ef.push(bb[eg + 2][4])
7479 }
7480 dm(ea, "TRIANGLE_STRIP", ej, ef)
7481 }
7482 }
7483 } else {
7484 if (dR === 17) {
7485 var ek = [];
7486 if (el > 3) {
7487 for (eg = 0; eg < 2; eg++) {
7488 ei = bb[eg];
7489 for (ee = 0; ee < 3; ee++) {
7490 ec.push(ei[ee])
7491 }
7492 }
7493 for (eg = 0; eg < 2; eg++) {
7494 ei = bb[eg];
7495 for (ee = 9; ee < 13; ee++) {
7496 em.push(ei[ee])
7497 }
7498 }
7499 bj(ec, "LINE_STRIP", em);
7500 if (el > 4 && el % 2 > 0) {
7501 ek = ea.splice(ea.length - 3);
7502 bb.pop()
7503 }
7504 for (eg = 0; eg + 3 < el; eg += 2) {
7505 ec = [];
7506 em = [];
7507 for (ee = 0; ee < 3; ee++) {
7508 ec.push(bb[eg + 1][ee])
7509 }
7510 for (ee = 0; ee < 3; ee++) {
7511 ec.push(bb[eg + 3][ee])
7512 }
7513 for (ee = 0; ee < 3; ee++) {
7514 ec.push(bb[eg + 2][ee])
7515 }
7516 for (ee = 0; ee < 3; ee++) {
7517 ec.push(bb[eg + 0][ee])
7518 }
7519 for (ee = 9; ee < 13; ee++) {
7520 em.push(bb[eg + 1][ee])
7521 }
7522 for (ee = 9; ee < 13; ee++) {
7523 em.push(bb[eg + 3][ee])
7524 }
7525 for (ee = 9; ee < 13; ee++) {
7526 em.push(bb[eg + 2][ee])
7527 }
7528 for (ee = 9; ee < 13; ee++) {
7529 em.push(bb[eg + 0][ee])
7530 }
7531 if (ce) {
7532 bj(ec, "LINE_STRIP", em)
7533 }
7534 }
7535 if (aH || dT) {
7536 dm(ea, "TRIANGLE_LIST", ej, ef)
7537 }
7538 }
7539 } else {
7540 if (el === 1) {
7541 for (ee = 0; ee < 3; ee++) {
7542 ec.push(bb[0][ee])
7543 }
7544 for (ee = 9; ee < 13; ee++) {
7545 em.push(bb[0][ee])
7546 }
7547 d1(ec, em)
7548 } else {
7549 for (eg = 0; eg < el; eg++) {
7550 ei = bb[eg];
7551 for (ee = 0; ee < 3; ee++) {
7552 ec.push(ei[ee])
7553 }
7554 for (ee = 5; ee < 9; ee++) {
7555 em.push(ei[ee])
7556 }
7557 }
7558 if (ce && ed) {
7559 bj(ec, "LINE_LOOP", em)
7560 } else {
7561 if (ce && !ed) {
7562 bj(ec, "LINE_STRIP", em)
7563 }
7564 } if (aH || dT) {
7565 dm(ea, "TRIANGLE_FAN", ej, ef)
7566 }
7567 }
7568 }
7569 }
7570 }
7571 }
7572 }
7573 }
7574 }
7575 dT = false;
7576 d8.useProgram(dx);
7577 dZ("usingTexture3d", dx, "uUsingTexture", dT)
7578 }
7579 }
7580 dP = false;
7581 aa = false;
7582 cb = [];
7583 c2 = 0
7584 };
7585 var aY = function(ed, ec) {
7586 var ee = 1 / ed;
7587 var eb = ee * ee;
7588 var ea = eb * ee;
7589 ec.set(0, 0, 0, 1, ea, eb, ee, 0, 6 * ea, 2 * eb, 0, 0, 6 * ea, 0, 0, 0)
7590 };
7591 var dr = function() {
7592 if (!aL) {
7593 c3 = new aP;
7594 aL = new aP;
7595 cM = true
7596 }
7597 var ea = aJ;
7598 c3.set((ea - 1) / 2, (ea + 3) / 2, (-3 - ea) / 2, (1 - ea) / 2, 1 - ea, (-5 - ea) / 2, ea + 2, (ea - 1) / 2, (ea - 1) / 2, 0, (1 - ea) / 2, 0, 0, 1, 0, 0);
7599 aY(Q, aL);
7600 if (!cd) {
7601 aQ = new aP
7602 }
7603 aQ.set(c3);
7604 aQ.preApply(cd);
7605 aL.apply(c3)
7606 };
7607 bR.prototype.bezierVertex = function() {
7608 aa = true;
7609 var ea = [];
7610 if (du) {
7611 throw "vertex() must be used at least once before calling bezierVertex()"
7612 }
7613 for (var eb = 0; eb < arguments.length; eb++) {
7614 ea[eb] = arguments[eb]
7615 }
7616 bb.push(ea);
7617 bb[bb.length - 1]["isVert"] = false
7618 };
7619 bB.prototype.bezierVertex = function() {
7620 aa = true;
7621 var eh = [];
7622 if (du) {
7623 throw "vertex() must be used at least once before calling bezierVertex()"
7624 }
7625 if (arguments.length === 9) {
7626 if (bz === t) {
7627 bz = new aP
7628 }
7629 var em = bb.length - 1;
7630 aY(cy, bz);
7631 bz.apply(U);
7632 var eo = bz.array();
7633 var ed = bb[em][0],
7634 en = bb[em][1],
7635 eg = bb[em][2];
7636 var ej = eo[4] * ed + eo[5] * arguments[0] + eo[6] * arguments[3] + eo[7] * arguments[6];
7637 var ei = eo[8] * ed + eo[9] * arguments[0] + eo[10] * arguments[3] + eo[11] * arguments[6];
7638 var ef = eo[12] * ed + eo[13] * arguments[0] + eo[14] * arguments[3] + eo[15] * arguments[6];
7639 var ep = eo[4] * en + eo[5] * arguments[1] + eo[6] * arguments[4] + eo[7] * arguments[7];
7640 var el = eo[8] * en + eo[9] * arguments[1] + eo[10] * arguments[4] + eo[11] * arguments[7];
7641 var ek = eo[12] * en + eo[13] * arguments[1] + eo[14] * arguments[4] + eo[15] * arguments[7];
7642 var ec = eo[4] * eg + eo[5] * arguments[2] + eo[6] * arguments[5] + eo[7] * arguments[8];
7643 var eb = eo[8] * eg + eo[9] * arguments[2] + eo[10] * arguments[5] + eo[11] * arguments[8];
7644 var ea = eo[12] * eg + eo[13] * arguments[2] + eo[14] * arguments[5] + eo[15] * arguments[8];
7645 for (var ee = 0; ee < cy; ee++) {
7646 ed += ej;
7647 ej += ei;
7648 ei += ef;
7649 en += ep;
7650 ep += el;
7651 el += ek;
7652 eg += ec;
7653 ec += eb;
7654 eb += ea;
7655 cW.vertex(ed, en, eg)
7656 }
7657 cW.vertex(arguments[6], arguments[7], arguments[8])
7658 }
7659 };
7660 cW.texture = function(ed) {
7661 var eb = dY.$ensureContext();
7662 if (ed.__texture) {
7663 eb.bindTexture(eb.TEXTURE_2D, ed.__texture)
7664 } else {
7665 if (ed.localName === "canvas") {
7666 eb.bindTexture(eb.TEXTURE_2D, c7);
7667 eb.texImage2D(eb.TEXTURE_2D, 0, eb.RGBA, eb.RGBA, eb.UNSIGNED_BYTE, ed);
7668 eb.texParameteri(eb.TEXTURE_2D, eb.TEXTURE_MAG_FILTER, eb.LINEAR);
7669 eb.texParameteri(eb.TEXTURE_2D, eb.TEXTURE_MIN_FILTER, eb.LINEAR);
7670 eb.generateMipmap(eb.TEXTURE_2D);
7671 cs.width = ed.width;
7672 cs.height = ed.height
7673 } else {
7674 var ec = eb.createTexture(),
7675 ef = d.createElement("canvas"),
7676 ea = ef.getContext("2d"),
7677 ee;
7678 if (ed.width & ed.width - 1 === 0) {
7679 ef.width = ed.width
7680 } else {
7681 ee = 1;
7682 while (ee < ed.width) {
7683 ee *= 2
7684 }
7685 ef.width = ee
7686 } if (ed.height & ed.height - 1 === 0) {
7687 ef.height = ed.height
7688 } else {
7689 ee = 1;
7690 while (ee < ed.height) {
7691 ee *= 2
7692 }
7693 ef.height = ee
7694 }
7695 ea.drawImage(ed.sourceImg, 0, 0, ed.width, ed.height, 0, 0, ef.width, ef.height);
7696 eb.bindTexture(eb.TEXTURE_2D, ec);
7697 eb.texParameteri(eb.TEXTURE_2D, eb.TEXTURE_MIN_FILTER, eb.LINEAR_MIPMAP_LINEAR);
7698 eb.texParameteri(eb.TEXTURE_2D, eb.TEXTURE_MAG_FILTER, eb.LINEAR);
7699 eb.texParameteri(eb.TEXTURE_2D, eb.TEXTURE_WRAP_T, eb.CLAMP_TO_EDGE);
7700 eb.texParameteri(eb.TEXTURE_2D, eb.TEXTURE_WRAP_S, eb.CLAMP_TO_EDGE);
7701 eb.texImage2D(eb.TEXTURE_2D, 0, eb.RGBA, eb.RGBA, eb.UNSIGNED_BYTE, ef);
7702 eb.generateMipmap(eb.TEXTURE_2D);
7703 ed.__texture = ec;
7704 cs.width = ed.width;
7705 cs.height = ed.height
7706 }
7707 }
7708 dT = true;
7709 eb.useProgram(dx);
7710 dZ("usingTexture3d", dx, "uUsingTexture", dT)
7711 };
7712 cW.textureMode = function(ea) {
7713 d4 = ea
7714 };
7715 var ar = function(ev, eg, em, et, ef, el, er, ee, ek, ep, ed, ei) {
7716 var ew = et;
7717 var eh = ef;
7718 var en = el;
7719 var ej = aL.array();
7720 var eu = ej[4] * ev + ej[5] * et + ej[6] * er + ej[7] * ep;
7721 var es = ej[8] * ev + ej[9] * et + ej[10] * er + ej[11] * ep;
7722 var eq = ej[12] * ev + ej[13] * et + ej[14] * er + ej[15] * ep;
7723 var ez = ej[4] * eg + ej[5] * ef + ej[6] * ee + ej[7] * ed;
7724 var ey = ej[8] * eg + ej[9] * ef + ej[10] * ee + ej[11] * ed;
7725 var ex = ej[12] * eg + ej[13] * ef + ej[14] * ee + ej[15] * ed;
7726 var ec = ej[4] * em + ej[5] * el + ej[6] * ek + ej[7] * ei;
7727 var eb = ej[8] * em + ej[9] * el + ej[10] * ek + ej[11] * ei;
7728 var ea = ej[12] * em + ej[13] * el + ej[14] * ek + ej[15] * ei;
7729 cW.vertex(ew, eh, en);
7730 for (var eo = 0; eo < Q; eo++) {
7731 ew += eu;
7732 eu += es;
7733 es += eq;
7734 eh += ez;
7735 ez += ey;
7736 ey += ex;
7737 en += ec;
7738 ec += eb;
7739 eb += ea;
7740 cW.vertex(ew, eh, en)
7741 }
7742 };
7743 bR.prototype.curveVertex = function(ea, eb) {
7744 dP = true;
7745 cW.vertex(ea, eb)
7746 };
7747 bB.prototype.curveVertex = function(ea, ed, ec) {
7748 dP = true;
7749 if (!cM) {
7750 dr()
7751 }
7752 var eb = [];
7753 eb[0] = ea;
7754 eb[1] = ed;
7755 eb[2] = ec;
7756 cb.push(eb);
7757 c2++;
7758 if (c2 > 3) {
7759 ar(cb[c2 - 4][0], cb[c2 - 4][1], cb[c2 - 4][2], cb[c2 - 3][0], cb[c2 - 3][1], cb[c2 - 3][2], cb[c2 - 2][0], cb[c2 - 2][1], cb[c2 - 2][2], cb[c2 - 1][0], cb[c2 - 1][1], cb[c2 - 1][2])
7760 }
7761 };
7762 bR.prototype.curve = function(ef, eh, ed, eg, eb, ee, ea, ec) {
7763 cW.beginShape();
7764 cW.curveVertex(ef, eh);
7765 cW.curveVertex(ed, eg);
7766 cW.curveVertex(eb, ee);
7767 cW.curveVertex(ea, ec);
7768 cW.endShape()
7769 };
7770 bB.prototype.curve = function(ec, ek, eg, eb, ej, ef, ea, ei, ee, el, eh, ed) {
7771 if (ed !== t) {
7772 cW.beginShape();
7773 cW.curveVertex(ec, ek, eg);
7774 cW.curveVertex(eb, ej, ef);
7775 cW.curveVertex(ea, ei, ee);
7776 cW.curveVertex(el, eh, ed);
7777 cW.endShape();
7778 return
7779 }
7780 cW.beginShape();
7781 cW.curveVertex(ec, ek);
7782 cW.curveVertex(eg, eb);
7783 cW.curveVertex(ej, ef);
7784 cW.curveVertex(ea, ei);
7785 cW.endShape()
7786 };
7787 cW.curveTightness = function(ea) {
7788 aJ = ea
7789 };
7790 cW.curveDetail = function(ea) {
7791 Q = ea;
7792 dr()
7793 };
7794 cW.rectMode = function(ea) {
7795 bK = ea
7796 };
7797 cW.imageMode = function(ea) {
7798 switch (ea) {
7799 case 0:
7800 bk = aZ;
7801 break;
7802 case 1:
7803 bk = b1;
7804 break;
7805 case 3:
7806 bk = aN;
7807 break;
7808 default:
7809 throw "Invalid imageMode"
7810 }
7811 };
7812 cW.ellipseMode = function(ea) {
7813 cN = ea
7814 };
7815 cW.arc = function(em, ek, ed, eo, ec, el) {
7816 if (ed <= 0 || el < ec) {
7817 return
7818 }
7819 if (cN === 1) {
7820 ed = ed - em;
7821 eo = eo - ek
7822 } else {
7823 if (cN === 2) {
7824 em = em - ed;
7825 ek = ek - eo;
7826 ed = ed * 2;
7827 eo = eo * 2
7828 } else {
7829 if (cN === 3) {
7830 em = em - ed / 2;
7831 ek = ek - eo / 2
7832 }
7833 }
7834 }
7835 while (ec < 0) {
7836 ec += 6.283185307179586;
7837 el += 6.283185307179586
7838 }
7839 if (el - ec > 6.283185307179586) {
7840 ec = 0;
7841 el = 6.283185307179586
7842 }
7843 var en = ed / 2,
7844 ep = eo / 2,
7845 eh = em + en,
7846 ef = ek + ep,
7847 eb = 0 | 0.5 + ec * cW.RAD_TO_DEG * 2,
7848 ej = 0 | 0.5 + el * cW.RAD_TO_DEG * 2,
7849 ei, eg;
7850 if (aH) {
7851 var ee = ce;
7852 ce = false;
7853 cW.beginShape();
7854 cW.vertex(eh, ef);
7855 for (ei = eb; ei <= ej; ei++) {
7856 eg = ei % 720;
7857 cW.vertex(eh + bl[eg] * en, ef + ah[eg] * ep)
7858 }
7859 cW.endShape(2);
7860 ce = ee
7861 }
7862 if (ce) {
7863 var ea = aH;
7864 aH = false;
7865 cW.beginShape();
7866 for (ei = eb; ei <= ej; ei++) {
7867 eg = ei % 720;
7868 cW.vertex(eh + bl[eg] * en, ef + ah[eg] * ep)
7869 }
7870 cW.endShape();
7871 aH = ea
7872 }
7873 };
7874 bR.prototype.line = function(eb, ei, ea, eg) {
7875 if (!ce) {
7876 return
7877 }
7878 eb = q.round(eb);
7879 ea = q.round(ea);
7880 ei = q.round(ei);
7881 eg = q.round(eg);
7882 if (eb === ea && ei === eg) {
7883 cW.point(eb, ei);
7884 return
7885 }
7886 var ec = t,
7887 ej = t,
7888 ef = true,
7889 eh = dJ.array(),
7890 ed = [1, 0, 0, 0, 1, 0];
7891 for (var ee = 0; ee < 6 && ef; ee++) {
7892 ef = eh[ee] === ed[ee]
7893 }
7894 if (ef) {
7895 if (eb === ea) {
7896 if (ei > eg) {
7897 ec = ei;
7898 ei = eg;
7899 eg = ec
7900 }
7901 eg++;
7902 if (dW % 2 === 1) {
7903 d8.translate(0.5, 0)
7904 }
7905 } else {
7906 if (ei === eg) {
7907 if (eb > ea) {
7908 ec = eb;
7909 eb = ea;
7910 ea = ec
7911 }
7912 ea++;
7913 if (dW % 2 === 1) {
7914 d8.translate(0, 0.5)
7915 }
7916 }
7917 } if (dW === 1) {
7918 ej = d8.lineCap;
7919 d8.lineCap = "butt"
7920 }
7921 }
7922 d8.beginPath();
7923 d8.moveTo(eb || 0, ei || 0);
7924 d8.lineTo(ea || 0, eg || 0);
7925 dd();
7926 if (ef) {
7927 if (eb === ea && dW % 2 === 1) {
7928 d8.translate(-0.5, 0)
7929 } else {
7930 if (ei === eg && dW % 2 === 1) {
7931 d8.translate(0, -0.5)
7932 }
7933 } if (dW === 1) {
7934 d8.lineCap = ej
7935 }
7936 }
7937 };
7938 bB.prototype.line = function(ec, ef, eh, eb, ed, eg) {
7939 if (ed === t || eg === t) {
7940 eg = 0;
7941 ed = eb;
7942 eb = eh;
7943 eh = 0
7944 }
7945 if (ec === eb && ef === ed && eh === eg) {
7946 cW.point(ec, ef, eh);
7947 return
7948 }
7949 var ee = [ec, ef, eh, eb, ed, eg];
7950 var ea = new aP;
7951 ea.scale(1, -1, 1);
7952 ea.apply(dJ.array());
7953 ea.transpose();
7954 if (dW > 0 && ce) {
7955 d8.useProgram(dQ);
7956 a9("uModel2d", dQ, "uModel", false, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
7957 a9("uView2d", dQ, "uView", false, ea.array());
7958 d2("uColor2d", dQ, "uColor", c0);
7959 dZ("uIsDrawingText", dQ, "uIsDrawingText", false);
7960 dc("aVertex2d", dQ, "aVertex", 3, b8);
7961 cg("aTextureCoord2d", dQ, "aTextureCoord");
7962 d8.bufferData(d8.ARRAY_BUFFER, new e(ee), d8.STREAM_DRAW);
7963 d8.drawArrays(d8.LINES, 0, 2)
7964 }
7965 };
7966 bR.prototype.bezier = function() {
7967 if (arguments.length !== 8) {
7968 throw "You must use 8 parameters for bezier() in 2D mode"
7969 }
7970 cW.beginShape();
7971 cW.vertex(arguments[0], arguments[1]);
7972 cW.bezierVertex(arguments[2], arguments[3], arguments[4], arguments[5], arguments[6], arguments[7]);
7973 cW.endShape()
7974 };
7975 bB.prototype.bezier = function() {
7976 if (arguments.length !== 12) {
7977 throw "You must use 12 parameters for bezier() in 3D mode"
7978 }
7979 cW.beginShape();
7980 cW.vertex(arguments[0], arguments[1], arguments[2]);
7981 cW.bezierVertex(arguments[3], arguments[4], arguments[5], arguments[6], arguments[7], arguments[8], arguments[9], arguments[10], arguments[11]);
7982 cW.endShape()
7983 };
7984 cW.bezierDetail = function(ea) {
7985 cy = ea
7986 };
7987 cW.bezierPoint = function(eb, ea, ee, ed, ec) {
7988 return (1 - ec) * (1 - ec) * (1 - ec) * eb + 3 * (1 - ec) * (1 - ec) * ec * ea + 3 * (1 - ec) * ec * ec * ee + ec * ec * ec * ed
7989 };
7990 cW.bezierTangent = function(eb, ea, ee, ed, ec) {
7991 return 3 * ec * ec * (-eb + 3 * ea - 3 * ee + ed) + 6 * ec * (eb - 2 * ea + ee) + 3 * (-eb + ea)
7992 };
7993 cW.curvePoint = function(eb, ea, ee, ed, ec) {
7994 return 0.5 * (2 * ea + (-eb + ee) * ec + (2 * eb - 5 * ea + 4 * ee - ed) * ec * ec + (-eb + 3 * ea - 3 * ee + ed) * ec * ec * ec)
7995 };
7996 cW.curveTangent = function(eb, ea, ee, ed, ec) {
7997 return 0.5 * (-eb + ee + 2 * (2 * eb - 5 * ea + 4 * ee - ed) * ec + 3 * (-eb + 3 * ea - 3 * ee + ed) * ec * ec)
7998 };
7999 cW.triangle = function(ed, ef, eb, ee, ea, ec) {
8000 cW.beginShape(9);
8001 cW.vertex(ed, ef, 0);
8002 cW.vertex(eb, ee, 0);
8003 cW.vertex(ea, ec, 0);
8004 cW.endShape()
8005 };
8006 cW.quad = function(ef, eh, ed, eg, eb, ee, ea, ec) {
8007 cW.beginShape(16);
8008 cW.vertex(ef, eh, 0);
8009 cW.vertex(ed, eg, 0);
8010 cW.vertex(eb, ee, 0);
8011 cW.vertex(ea, ec, 0);
8012 cW.endShape()
8013 };
8014 var bN = function(eg, ef, ea, eh, ej, ee, ei, eb) {
8015 if (eb === t) {
8016 ee = ej;
8017 ei = ej;
8018 eb = ej
8019 }
8020 var ec = ea / 2,
8021 ed = eh / 2;
8022 if (ej > ec || ej > ed) {
8023 ej = q.min(ec, ed)
8024 }
8025 if (ee > ec || ee > ed) {
8026 ee = q.min(ec, ed)
8027 }
8028 if (ei > ec || ei > ed) {
8029 ei = q.min(ec, ed)
8030 }
8031 if (eb > ec || eb > ed) {
8032 eb = q.min(ec, ed)
8033 }
8034 if (!aH || ce) {
8035 d8.translate(0.5, 0.5)
8036 }
8037 d8.beginPath();
8038 d8.moveTo(eg + ej, ef);
8039 d8.lineTo(eg + ea - ee, ef);
8040 d8.quadraticCurveTo(eg + ea, ef, eg + ea, ef + ee);
8041 d8.lineTo(eg + ea, ef + eh - ei);
8042 d8.quadraticCurveTo(eg + ea, ef + eh, eg + ea - ei, ef + eh);
8043 d8.lineTo(eg + eb, ef + eh);
8044 d8.quadraticCurveTo(eg, ef + eh, eg, ef + eh - eb);
8045 d8.lineTo(eg, ef + ej);
8046 d8.quadraticCurveTo(eg, ef, eg + ej, ef);
8047 if (!aH || ce) {
8048 d8.translate(-0.5, -0.5)
8049 }
8050 bn();
8051 dd()
8052 };
8053 bR.prototype.rect = function(eb, eh, ee, ea, ec, ef, ed, eg) {
8054 if (!ee && !ea) {
8055 return
8056 }
8057 if (bK === 1) {
8058 ee -= eb;
8059 ea -= eh
8060 } else {
8061 if (bK === 2) {
8062 ee *= 2;
8063 ea *= 2;
8064 eb -= ee / 2;
8065 eh -= ea / 2
8066 } else {
8067 if (bK === 3) {
8068 eb -= ee / 2;
8069 eh -= ea / 2
8070 }
8071 }
8072 }
8073 eb = q.round(eb);
8074 eh = q.round(eh);
8075 ee = q.round(ee);
8076 ea = q.round(ea);
8077 if (ec !== t) {
8078 bN(eb, eh, ee, ea, ec, ef, ed, eg);
8079 return
8080 }
8081 if (ce && dW % 2 === 1) {
8082 d8.translate(0.5, 0.5)
8083 }
8084 d8.beginPath();
8085 d8.rect(eb, eh, ee, ea);
8086 bn();
8087 dd();
8088 if (ce && dW % 2 === 1) {
8089 d8.translate(-0.5, -0.5)
8090 }
8091 };
8092 bB.prototype.rect = function(ei, eh, ea, ek, em, ef, el, eb) {
8093 if (em !== t) {
8094 throw "rect() with rounded corners is not supported in 3D mode"
8095 }
8096 if (bK === 1) {
8097 ea -= ei;
8098 ek -= eh
8099 } else {
8100 if (bK === 2) {
8101 ea *= 2;
8102 ek *= 2;
8103 ei -= ea / 2;
8104 eh -= ek / 2
8105 } else {
8106 if (bK === 3) {
8107 ei -= ea / 2;
8108 eh -= ek / 2
8109 }
8110 }
8111 }
8112 var ee = new aP;
8113 ee.translate(ei, eh, 0);
8114 ee.scale(ea, ek, 1);
8115 ee.transpose();
8116 var eg = new aP;
8117 eg.scale(1, -1, 1);
8118 eg.apply(dJ.array());
8119 eg.transpose();
8120 if (dW > 0 && ce) {
8121 d8.useProgram(dQ);
8122 a9("uModel2d", dQ, "uModel", false, ee.array());
8123 a9("uView2d", dQ, "uView", false, eg.array());
8124 d2("uColor2d", dQ, "uColor", c0);
8125 dZ("uIsDrawingText2d", dQ, "uIsDrawingText", false);
8126 dc("aVertex2d", dQ, "aVertex", 3, aB);
8127 cg("aTextureCoord2d", dQ, "aTextureCoord");
8128 d8.drawArrays(d8.LINE_LOOP, 0, ak.length / 3)
8129 }
8130 if (aH) {
8131 d8.useProgram(dx);
8132 a9("uModel3d", dx, "uModel", false, ee.array());
8133 a9("uView3d", dx, "uView", false, eg.array());
8134 d8.enable(d8.POLYGON_OFFSET_FILL);
8135 d8.polygonOffset(1, 1);
8136 d2("color3d", dx, "uColor", bo);
8137 if (dL > 0) {
8138 var ej = new aP;
8139 ej.set(eg);
8140 var ec = new aP;
8141 ec.set(ee);
8142 ej.mult(ec);
8143 var ed = new aP;
8144 ed.set(ej);
8145 ed.invert();
8146 ed.transpose();
8147 a9("uNormalTransform3d", dx, "uNormalTransform", false, ed.array());
8148 dc("aNormal3d", dx, "aNormal", 3, b2)
8149 } else {
8150 cg("normal3d", dx, "aNormal")
8151 }
8152 dc("vertex3d", dx, "aVertex", 3, aB);
8153 d8.drawArrays(d8.TRIANGLE_FAN, 0, ak.length / 3);
8154 d8.disable(d8.POLYGON_OFFSET_FILL)
8155 }
8156 };
8157 bR.prototype.ellipse = function(eg, ef, eb, ei) {
8158 eg = eg || 0;
8159 ef = ef || 0;
8160 if (eb <= 0 && ei <= 0) {
8161 return
8162 }
8163 if (cN === 2) {
8164 eb *= 2;
8165 ei *= 2
8166 } else {
8167 if (cN === 1) {
8168 eb = eb - eg;
8169 ei = ei - ef;
8170 eg += eb / 2;
8171 ef += ei / 2
8172 } else {
8173 if (cN === 0) {
8174 eg += eb / 2;
8175 ef += ei / 2
8176 }
8177 }
8178 } if (eb === ei) {
8179 d8.beginPath();
8180 d8.arc(eg, ef, eb / 2, 0, 6.283185307179586, false);
8181 bn();
8182 dd()
8183 } else {
8184 var eh = eb / 2,
8185 ee = ei / 2,
8186 ea = 0.5522847498307933,
8187 ed = ea * eh,
8188 ec = ea * ee;
8189 cW.beginShape();
8190 cW.vertex(eg + eh, ef);
8191 cW.bezierVertex(eg + eh, ef - ec, eg + ed, ef - ee, eg, ef - ee);
8192 cW.bezierVertex(eg - ed, ef - ee, eg - eh, ef - ec, eg - eh, ef);
8193 cW.bezierVertex(eg - eh, ef + ec, eg - ed, ef + ee, eg, ef + ee);
8194 cW.bezierVertex(eg + ed, ef + ee, eg + eh, ef + ec, eg + eh, ef);
8195 cW.endShape()
8196 }
8197 };
8198 bB.prototype.ellipse = function(en, em, ec, ep) {
8199 en = en || 0;
8200 em = em || 0;
8201 if (ec <= 0 && ep <= 0) {
8202 return
8203 }
8204 if (cN === 2) {
8205 ec *= 2;
8206 ep *= 2
8207 } else {
8208 if (cN === 1) {
8209 ec = ec - en;
8210 ep = ep - em;
8211 en += ec / 2;
8212 em += ep / 2
8213 } else {
8214 if (cN === 0) {
8215 en += ec / 2;
8216 em += ep / 2
8217 }
8218 }
8219 }
8220 var eo = ec / 2,
8221 ej = ep / 2,
8222 ea = 0.5522847498307933,
8223 ee = ea * eo,
8224 ed = ea * ej;
8225 cW.beginShape();
8226 cW.vertex(en + eo, em);
8227 cW.bezierVertex(en + eo, em - ed, 0, en + ee, em - ej, 0, en, em - ej, 0);
8228 cW.bezierVertex(en - ee, em - ej, 0, en - eo, em - ed, 0, en - eo, em, 0);
8229 cW.bezierVertex(en - eo, em + ed, 0, en - ee, em + ej, 0, en, em + ej, 0);
8230 cW.bezierVertex(en + ee, em + ej, 0, en + eo, em + ed, 0, en + eo, em, 0);
8231 cW.endShape();
8232 if (aH) {
8233 var ef = 0,
8234 ek = 0,
8235 eh, eg;
8236 for (eh = 0; eh < bb.length; eh++) {
8237 ef += bb[eh][0];
8238 ek += bb[eh][1]
8239 }
8240 ef /= bb.length;
8241 ek /= bb.length;
8242 var ei = [],
8243 eb = [],
8244 el = [];
8245 ei[0] = ef;
8246 ei[1] = ek;
8247 ei[2] = 0;
8248 ei[3] = 0;
8249 ei[4] = 0;
8250 ei[5] = bo[0];
8251 ei[6] = bo[1];
8252 ei[7] = bo[2];
8253 ei[8] = bo[3];
8254 ei[9] = c0[0];
8255 ei[10] = c0[1];
8256 ei[11] = c0[2];
8257 ei[12] = c0[3];
8258 ei[13] = a8;
8259 ei[14] = a7;
8260 ei[15] = a6;
8261 bb.unshift(ei);
8262 for (eh = 0; eh < bb.length; eh++) {
8263 for (eg = 0; eg < 3; eg++) {
8264 eb.push(bb[eh][eg])
8265 }
8266 for (eg = 5; eg < 9; eg++) {
8267 el.push(bb[eh][eg])
8268 }
8269 }
8270 dm(eb, "TRIANGLE_FAN", el)
8271 }
8272 };
8273 cW.normal = function(ea, ec, eb) {
8274 if (arguments.length !== 3 || !(typeof ea === "number" && typeof ec === "number" && typeof eb === "number")) {
8275 throw "normal() requires three numeric arguments."
8276 }
8277 a8 = ea;
8278 a7 = ec;
8279 a6 = eb;
8280 if (dR !== 0) {
8281 if (a2 === 0) {
8282 a2 = 1
8283 } else {
8284 if (a2 === 1) {
8285 a2 = 2
8286 }
8287 }
8288 }
8289 };
8290 cW.save = function(eb, ea) {
8291 if (ea !== t) {
8292 return D.open(ea.toDataURL(), "_blank")
8293 }
8294 return D.open(cW.externals.canvas.toDataURL(), "_blank")
8295 };
8296 var cw = 0;
8297 cW.saveFrame = function(ea) {
8298 if (ea === t) {
8299 ea = "screen-####.png"
8300 }
8301 var eb = ea.replace(/#+/, function(ed) {
8302 var ec = "" + cw++;
8303 while (ec.length < ed.length) {
8304 ec = "0" + ec
8305 }
8306 return ec
8307 });
8308 cW.save(eb)
8309 };
8310 var cc = d.createElement("canvas").getContext("2d");
8311 var X = [t, t, t];
8312
8313 function by(eh, eb, eg) {
8314 var ed = X.shift();
8315 if (ed === t) {
8316 ed = {};
8317 ed.canvas = d.createElement("canvas");
8318 ed.context = ed.canvas.getContext("2d")
8319 }
8320 X.push(ed);
8321 var ec = ed.canvas,
8322 ee = ed.context,
8323 ef = eb || eh.width,
8324 ea = eg || eh.height;
8325 ec.width = ef;
8326 ec.height = ea;
8327 if (!eh) {
8328 ee.clearRect(0, 0, ef, ea)
8329 } else {
8330 if ("data" in eh) {
8331 ee.putImageData(eh, 0, 0)
8332 } else {
8333 ee.clearRect(0, 0, ef, ea);
8334 ee.drawImage(eh, 0, 0, ef, ea)
8335 }
8336 }
8337 return ed
8338 }
8339
8340 function b0(ea) {
8341 return {
8342 getLength: function(eb) {
8343 return function() {
8344 if (eb.isRemote) {
8345 throw "Image is loaded remotely. Cannot get length."
8346 } else {
8347 return eb.imageData.data.length ? eb.imageData.data.length / 4 : 0
8348 }
8349 }
8350 }(ea),
8351 getPixel: function(eb) {
8352 return function(ec) {
8353 var ee = ec * 4,
8354 ed = eb.imageData.data;
8355 if (eb.isRemote) {
8356 throw "Image is loaded remotely. Cannot get pixels."
8357 }
8358 return (ed[ee + 3] & 255) << 24 | (ed[ee] & 255) << 16 | (ed[ee + 1] & 255) << 8 | ed[ee + 2] & 255
8359 }
8360 }(ea),
8361 setPixel: function(eb) {
8362 return function(ec, ef) {
8363 var ee = ec * 4,
8364 ed = eb.imageData.data;
8365 if (eb.isRemote) {
8366 throw "Image is loaded remotely. Cannot set pixel."
8367 }
8368 ed[ee + 0] = (ef >> 16) & 255;
8369 ed[ee + 1] = (ef >> 8) & 255;
8370 ed[ee + 2] = ef & 255;
8371 ed[ee + 3] = (ef >> 24) & 255;
8372 eb.__isDirty = true
8373 }
8374 }(ea),
8375 toArray: function(eb) {
8376 return function() {
8377 var ec = [],
8378 ef = eb.imageData.data,
8379 ee = eb.width * eb.height;
8380 if (eb.isRemote) {
8381 throw "Image is loaded remotely. Cannot get pixels."
8382 }
8383 for (var ed = 0, eg = 0; ed < ee; ed++, eg += 4) {
8384 ec.push((ef[eg + 3] & 255) << 24 | (ef[eg] & 255) << 16 | (ef[eg + 1] & 255) << 8 | ef[eg + 2] & 255)
8385 }
8386 return ec
8387 }
8388 }(ea),
8389 set: function(eb) {
8390 return function(ec) {
8391 var eg, ef, eh;
8392 if (this.isRemote) {
8393 throw "Image is loaded remotely. Cannot set pixels."
8394 }
8395 ef = eb.imageData.data;
8396 for (var ed = 0, ee = ec.length; ed < ee; ed++) {
8397 eh = ec[ed];
8398 eg = ed * 4;
8399 ef[eg + 0] = (eh >> 16) & 255;
8400 ef[eg + 1] = (eh >> 8) & 255;
8401 ef[eg + 2] = eh & 255;
8402 ef[eg + 3] = (eh >> 24) & 255
8403 }
8404 eb.__isDirty = true
8405 }
8406 }(ea)
8407 }
8408 }
8409 var cG = function(ed, eg, ee) {
8410 this.__isDirty = false;
8411 if (ed instanceof HTMLImageElement) {
8412 this.fromHTMLImageData(ed)
8413 } else {
8414 if (eg || ee) {
8415 this.width = ed || 1;
8416 this.height = eg || 1;
8417 var eb = this.sourceImg = d.createElement("canvas");
8418 eb.width = this.width;
8419 eb.height = this.height;
8420 var eh = this.imageData = eb.getContext("2d").createImageData(this.width, this.height);
8421 this.format = ee === 2 || ee === 4 ? ee : 1;
8422 if (this.format === 1) {
8423 for (var ec = 3, ef = this.imageData.data, ea = ef.length; ec < ea; ec += 4) {
8424 ef[ec] = 255
8425 }
8426 }
8427 this.__isDirty = true;
8428 this.updatePixels()
8429 } else {
8430 this.width = 0;
8431 this.height = 0;
8432 this.imageData = cc.createImageData(1, 1);
8433 this.format = 2
8434 }
8435 }
8436 this.pixels = b0(this)
8437 };
8438 cG.prototype = {
8439 __isPImage: true,
8440 updatePixels: function() {
8441 var ea = this.sourceImg;
8442 if (ea && ea instanceof HTMLCanvasElement && this.__isDirty) {
8443 ea.getContext("2d").putImageData(this.imageData, 0, 0)
8444 }
8445 this.__isDirty = false
8446 },
8447 fromHTMLImageData: function(ea) {
8448 var eb = by(ea);
8449 try {
8450 var ed = eb.context.getImageData(0, 0, ea.width, ea.height);
8451 this.fromImageData(ed)
8452 } catch (ec) {
8453 if (ea.width && ea.height) {
8454 this.isRemote = true;
8455 this.width = ea.width;
8456 this.height = ea.height
8457 }
8458 }
8459 this.sourceImg = ea
8460 },
8461 get: function(ea, ed, eb, ec) {
8462 if (!arguments.length) {
8463 return cW.get(this)
8464 }
8465 if (arguments.length === 2) {
8466 return cW.get(ea, ed, this)
8467 }
8468 if (arguments.length === 4) {
8469 return cW.get(ea, ed, eb, ec, this)
8470 }
8471 },
8472 set: function(ea, ec, eb) {
8473 cW.set(ea, ec, eb, this);
8474 this.__isDirty = true
8475 },
8476 blend: function(ei, ee, ed, eb, eg, ej, eh, ef, ea, ec) {
8477 if (arguments.length === 9) {
8478 cW.blend(this, ei, ee, ed, eb, eg, ej, eh, ef, ea, this)
8479 } else {
8480 if (arguments.length === 10) {
8481 cW.blend(ei, ee, ed, eb, eg, ej, eh, ef, ea, ec, this)
8482 }
8483 }
8484 delete this.sourceImg
8485 },
8486 copy: function(eh, ee, ed, ec, eb, ei, eg, ef, ea) {
8487 if (arguments.length === 8) {
8488 cW.blend(this, eh, ee, ed, ec, eb, ei, eg, ef, 0, this)
8489 } else {
8490 if (arguments.length === 9) {
8491 cW.blend(eh, ee, ed, ec, eb, ei, eg, ef, ea, 0, this)
8492 }
8493 }
8494 delete this.sourceImg
8495 },
8496 filter: function(eb, ea) {
8497 if (arguments.length === 2) {
8498 cW.filter(eb, ea, this)
8499 } else {
8500 if (arguments.length === 1) {
8501 cW.filter(eb, null, this)
8502 }
8503 }
8504 delete this.sourceImg
8505 },
8506 save: function(ea) {
8507 cW.save(ea, this)
8508 },
8509 resize: function(ea, ec) {
8510 if (this.isRemote) {
8511 throw "Image is loaded remotely. Cannot resize."
8512 }
8513 if (this.width !== 0 || this.height !== 0) {
8514 if (ea === 0 && ec !== 0) {
8515 ea = q.floor(this.width / this.height * ec)
8516 } else {
8517 if (ec === 0 && ea !== 0) {
8518 ec = q.floor(this.height / this.width * ea)
8519 }
8520 }
8521 var eb = by(this.imageData).canvas;
8522 var ed = by(eb, ea, ec).context.getImageData(0, 0, ea, ec);
8523 this.fromImageData(ed)
8524 }
8525 },
8526 mask: function(ea) {
8527 var ed = this.toImageData(),
8528 ec, eb;
8529 if (ea instanceof cG || ea.__isPImage) {
8530 if (ea.width === this.width && ea.height === this.height) {
8531 ea = ea.toImageData();
8532 for (ec = 2, eb = this.width * this.height * 4; ec < eb; ec += 4) {
8533 ed.data[ec + 1] = ea.data[ec]
8534 }
8535 } else {
8536 throw "mask must have the same dimensions as PImage."
8537 }
8538 } else {
8539 if (ea instanceof Array) {
8540 if (this.width * this.height === ea.length) {
8541 for (ec = 0, eb = ea.length; ec < eb; ++ec) {
8542 ed.data[ec * 4 + 3] = ea[ec]
8543 }
8544 } else {
8545 throw "mask array must be the same length as PImage pixels array."
8546 }
8547 }
8548 }
8549 this.fromImageData(ed)
8550 },
8551 loadPixels: G,
8552 toImageData: function() {
8553 if (this.isRemote) {
8554 return this.sourceImg
8555 }
8556 if (!this.__isDirty) {
8557 return this.imageData
8558 }
8559 var ea = by(this.sourceImg);
8560 return ea.context.getImageData(0, 0, this.width, this.height)
8561 },
8562 toDataURL: function() {
8563 if (this.isRemote) {
8564 throw "Image is loaded remotely. Cannot create dataURI."
8565 }
8566 var ea = by(this.imageData);
8567 return ea.canvas.toDataURL()
8568 },
8569 fromImageData: function(ee) {
8570 var eb = ee.width,
8571 ed = ee.height,
8572 ec = d.createElement("canvas"),
8573 ea = ec.getContext("2d");
8574 this.width = ec.width = eb;
8575 this.height = ec.height = ed;
8576 ea.putImageData(ee, 0, 0);
8577 this.format = 2;
8578 this.imageData = ee;
8579 this.sourceImg = ec
8580 }
8581 };
8582 cW.PImage = cG;
8583 cW.createImage = function(ea, eb, ec) {
8584 return new cG(ea, eb, ec)
8585 };
8586 cW.loadImage = function(eb, ec, ee) {
8587 if (ec) {
8588 eb = eb + "." + ec
8589 }
8590 var ed;
8591 if (cQ.imageCache.images[eb]) {
8592 ed = new cG(cQ.imageCache.images[eb]);
8593 ed.loaded = true;
8594 return ed
8595 }
8596 ed = new cG;
8597 var ea = d.createElement("img");
8598 ed.sourceImg = ea;
8599 ea.onload = function(ei, eg, ef) {
8600 var ej = ei;
8601 var eh = eg;
8602 var ek = ef;
8603 return function() {
8604 eh.fromHTMLImageData(ej);
8605 eh.loaded = true;
8606 if (ek) {
8607 ek()
8608 }
8609 }
8610 }(ea, ed, ee);
8611 ea.src = eb;
8612 return ed
8613 };
8614 cW.requestImage = cW.loadImage;
8615
8616 function c9(ea, ed) {
8617 var eb;
8618 if (ea >= cW.width || ea < 0 || ed < 0 || ed >= cW.height) {
8619 return 0
8620 }
8621 if (dV) {
8622 var ec = ((0 | ea) + cW.width * (0 | ed)) * 4;
8623 eb = cW.imageData.data;
8624 return (eb[ec + 3] & 255) << 24 | (eb[ec] & 255) << 16 | (eb[ec + 1] & 255) << 8 | eb[ec + 2] & 255
8625 }
8626 eb = cW.toImageData(0 | ea, 0 | ed, 1, 1).data;
8627 return (eb[3] & 255) << 24 | (eb[0] & 255) << 16 | (eb[1] & 255) << 8 | eb[2] & 255
8628 }
8629
8630 function c8(ea, ee, eb) {
8631 if (eb.isRemote) {
8632 throw "Image is loaded remotely. Cannot get x,y."
8633 }
8634 var ed = ee * eb.width * 4 + ea * 4,
8635 ec = eb.imageData.data;
8636 return (ec[ed + 3] & 255) << 24 | (ec[ed] & 255) << 16 | (ec[ed + 1] & 255) << 8 | ec[ed + 2] & 255
8637 }
8638
8639 function c6(ea, ee, eb, ec) {
8640 var ed = new cG(eb, ec, 2);
8641 ed.fromImageData(cW.toImageData(ea, ee, eb, ec));
8642 return ed
8643 }
8644
8645 function c5(ef, ee, eg, el, er) {
8646 if (er.isRemote) {
8647 throw "Image is loaded remotely. Cannot get x,y,w,h."
8648 }
8649 var ep = new cG(eg, el, 2),
8650 ec = ep.imageData.data,
8651 ed = er.width,
8652 em = er.height,
8653 eo = er.imageData.data;
8654 var ea = q.max(0, -ee),
8655 eb = q.max(0, -ef),
8656 eh = q.min(el, em - ee),
8657 ei = q.min(eg, ed - ef);
8658 for (var ek = ea; ek < eh; ++ek) {
8659 var en = ((ee + ek) * ed + (ef + eb)) * 4;
8660 var eq = (ek * eg + eb) * 4;
8661 for (var ej = eb; ej < ei; ++ej) {
8662 ec[eq++] = eo[en++];
8663 ec[eq++] = eo[en++];
8664 ec[eq++] = eo[en++];
8665 ec[eq++] = eo[en++]
8666 }
8667 }
8668 ep.__isDirty = true;
8669 return ep
8670 }
8671 cW.get = function(ea, ee, eb, ed, ec) {
8672 if (ec !== undefined) {
8673 return c5(ea, ee, eb, ed, ec)
8674 }
8675 if (ed !== undefined) {
8676 return c6(ea, ee, eb, ed)
8677 }
8678 if (eb !== undefined) {
8679 return c8(ea, ee, eb)
8680 }
8681 if (ee !== undefined) {
8682 return c9(ea, ee)
8683 }
8684 if (ea !== undefined) {
8685 return c5(0, 0, ea.width, ea.height, ea)
8686 }
8687 return c6(0, 0, cW.width, cW.height)
8688 };
8689 cW.createGraphics = function(ea, ec, eb) {
8690 var ed = new F;
8691 ed.size(ea, ec, eb);
8692 ed.background(0, 0);
8693 return ed
8694 };
8695
8696 function T() {
8697 if (dV) {
8698 d8 = aj;
8699 dV = false;
8700 cW.updatePixels()
8701 }
8702 }
8703
8704 function cq() {
8705 function eb(ef, ed) {
8706 function ee() {
8707 T();
8708 d8[ed].apply(d8, arguments)
8709 }
8710 ef[ed] = ee
8711 }
8712
8713 function ea(eg, ee) {
8714 function ed() {
8715 T();
8716 return d8[ee]
8717 }
8718
8719 function ef(eh) {
8720 T();
8721 d8[ee] = eh
8722 }
8723 cW.defineProperty(eg, ee, {
8724 get: ed,
8725 set: ef
8726 })
8727 }
8728 for (var ec in d8) {
8729 if (typeof d8[ec] === "function") {
8730 eb(this, ec)
8731 } else {
8732 ea(this, ec)
8733 }
8734 }
8735 }
8736
8737 function cC() {
8738 if (dV) {
8739 return
8740 }
8741 cW.loadPixels();
8742 if (cn === null) {
8743 aj = d8;
8744 cn = new cq
8745 }
8746 dV = true;
8747 d8 = cn;
8748 d3 = 0
8749 }
8750
8751 function bx(ea, ec, eb) {
8752 if (ea < cW.width && ea >= 0 && ec >= 0 && ec < cW.height) {
8753 cC();
8754 cW.pixels.setPixel((0 | ea) + cW.width * (0 | ec), eb);
8755 if (++d3 > bZ) {
8756 T()
8757 }
8758 }
8759 }
8760
8761 function bv(ea, eg, ed, eb) {
8762 if (eb.isRemote) {
8763 throw "Image is loaded remotely. Cannot set x,y."
8764 }
8765 var ef = cW.color.toArray(ed);
8766 var ee = eg * eb.width * 4 + ea * 4;
8767 var ec = eb.imageData.data;
8768 ec[ee] = ef[0];
8769 ec[ee + 1] = ef[1];
8770 ec[ee + 2] = ef[2];
8771 ec[ee + 3] = ef[3]
8772 }
8773 cW.set = function(ea, ef, ed, ec) {
8774 var eb, ee;
8775 if (arguments.length === 3) {
8776 if (typeof ed === "number") {
8777 bx(ea, ef, ed)
8778 } else {
8779 if (ed instanceof cG || ed.__isPImage) {
8780 cW.image(ed, ea, ef)
8781 }
8782 }
8783 } else {
8784 if (arguments.length === 4) {
8785 bv(ea, ef, ed, ec)
8786 }
8787 }
8788 };
8789 cW.imageData = {};
8790 cW.pixels = {
8791 getLength: function() {
8792 return cW.imageData.data.length ? cW.imageData.data.length / 4 : 0
8793 },
8794 getPixel: function(ea) {
8795 var ec = ea * 4,
8796 eb = cW.imageData.data;
8797 return eb[ec + 3] << 24 & 4278190080 | eb[ec + 0] << 16 & 16711680 | eb[ec + 1] << 8 & 65280 | eb[ec + 2] & 255
8798 },
8799 setPixel: function(ea, ed) {
8800 var ec = ea * 4,
8801 eb = cW.imageData.data;
8802 eb[ec + 0] = (ed & 16711680) >>> 16;
8803 eb[ec + 1] = (ed & 65280) >>> 8;
8804 eb[ec + 2] = ed & 255;
8805 eb[ec + 3] = (ed & 4278190080) >>> 24
8806 },
8807 toArray: function() {
8808 var ea = [],
8809 ec = cW.imageData.width * cW.imageData.height,
8810 ed = cW.imageData.data;
8811 for (var eb = 0, ee = 0; eb < ec; eb++, ee += 4) {
8812 ea.push(ed[ee + 3] << 24 & 4278190080 | ed[ee + 0] << 16 & 16711680 | ed[ee + 1] << 8 & 65280 | ed[ee + 2] & 255)
8813 }
8814 return ea
8815 },
8816 set: function(ea) {
8817 for (var eb = 0, ec = ea.length; eb < ec; eb++) {
8818 this.setPixel(eb, ea[eb])
8819 }
8820 }
8821 };
8822 cW.loadPixels = function() {
8823 cW.imageData = dY.$ensureContext().getImageData(0, 0, cW.width, cW.height)
8824 };
8825 cW.updatePixels = function() {
8826 if (cW.imageData) {
8827 dY.$ensureContext().putImageData(cW.imageData, 0, 0)
8828 }
8829 };
8830 cW.hint = function(eb) {
8831 var ea = dY.$ensureContext();
8832 if (eb === 4) {
8833 ea.disable(ea.DEPTH_TEST);
8834 ea.depthMask(false);
8835 ea.clear(ea.DEPTH_BUFFER_BIT)
8836 } else {
8837 if (eb === -4) {
8838 ea.enable(ea.DEPTH_TEST);
8839 ea.depthMask(true)
8840 } else {
8841 if (eb === -1 || eb === 2) {
8842 dO = true
8843 } else {
8844 if (eb === 1) {
8845 dO = false
8846 }
8847 }
8848 }
8849 }
8850 };
8851 var bE = function(ed, ec, eb, ea) {
8852 var ee;
8853 if (ed instanceof cG || ed.__isPImage) {
8854 ee = ed;
8855 if (!ee.loaded) {
8856 throw "Error using image in background(): PImage not loaded."
8857 }
8858 if (ee.width !== cW.width || ee.height !== cW.height) {
8859 throw "Background image must be the same dimensions as the canvas."
8860 }
8861 } else {
8862 ee = cW.color(ed, ec, eb, ea)
8863 }
8864 a4 = ee
8865 };
8866 bR.prototype.background = function(ed, ec, eb, ea) {
8867 if (ed !== t) {
8868 bE(ed, ec, eb, ea)
8869 }
8870 if (a4 instanceof cG || a4.__isPImage) {
8871 aD();
8872 d8.setTransform(1, 0, 0, 1, 0, 0);
8873 cW.image(a4, 0, 0);
8874 cP()
8875 } else {
8876 aD();
8877 d8.setTransform(1, 0, 0, 1, 0, 0);
8878 if (cW.alpha(a4) !== bU) {
8879 d8.clearRect(0, 0, cW.width, cW.height)
8880 }
8881 d8.fillStyle = cW.color.toString(a4);
8882 d8.fillRect(0, 0, cW.width, cW.height);
8883 aq = true;
8884 cP()
8885 }
8886 };
8887 bB.prototype.background = function(ed, ec, eb, ea) {
8888 if (arguments.length > 0) {
8889 bE(ed, ec, eb, ea)
8890 }
8891 var ee = cW.color.toGLArray(a4);
8892 d8.clearColor(ee[0], ee[1], ee[2], ee[3]);
8893 d8.clear(d8.COLOR_BUFFER_BIT | d8.DEPTH_BUFFER_BIT)
8894 };
8895 bR.prototype.image = function(ed, ei, eg, ej, ee) {
8896 ei = q.round(ei);
8897 eg = q.round(eg);
8898 if (ed.width > 0) {
8899 var ek = ej || ed.width;
8900 var eh = ee || ed.height;
8901 var ea = bk(ei || 0, eg || 0, ej || ed.width, ee || ed.height, arguments.length < 4);
8902 var ef = !!ed.sourceImg && bf === null;
8903 if (ef) {
8904 var eb = ed.sourceImg;
8905 if (ed.__isDirty) {
8906 ed.updatePixels()
8907 }
8908 d8.drawImage(eb, 0, 0, eb.width, eb.height, ea.x, ea.y, ea.w, ea.h)
8909 } else {
8910 var ec = ed.toImageData();
8911 if (bf !== null) {
8912 bf(ec);
8913 ed.__isDirty = true
8914 }
8915 d8.drawImage(by(ec).canvas, 0, 0, ed.width, ed.height, ea.x, ea.y, ea.w, ea.h)
8916 }
8917 }
8918 };
8919 bB.prototype.image = function(ec, ea, ee, eb, ed) {
8920 if (ec.width > 0) {
8921 ea = q.round(ea);
8922 ee = q.round(ee);
8923 eb = eb || ec.width;
8924 ed = ed || ec.height;
8925 cW.beginShape(cW.QUADS);
8926 cW.texture(ec);
8927 cW.vertex(ea, ee, 0, 0, 0);
8928 cW.vertex(ea, ee + ed, 0, 0, ed);
8929 cW.vertex(ea + eb, ee + ed, 0, eb, ed);
8930 cW.vertex(ea + eb, ee, 0, eb, 0);
8931 cW.endShape()
8932 }
8933 };
8934 cW.tint = function(ed, ec, ea, ei) {
8935 var ef = cW.color(ed, ec, ea, ei);
8936 var eb = cW.red(ef) / bJ;
8937 var ee = cW.green(ef) / bI;
8938 var eg = cW.blue(ef) / bG;
8939 var eh = cW.alpha(ef) / bU;
8940 bf = function(em) {
8941 var el = em.data,
8942 ek = 4 * em.width * em.height;
8943 for (var ej = 0; ej < ek;) {
8944 el[ej++] *= eb;
8945 el[ej++] *= ee;
8946 el[ej++] *= eg;
8947 el[ej++] *= eh
8948 }
8949 };
8950 bw = function(ek) {
8951 for (var ej = 0; ej < ek.length;) {
8952 ek[ej++] = eb;
8953 ek[ej++] = ee;
8954 ek[ej++] = eg;
8955 ek[ej++] = eh
8956 }
8957 }
8958 };
8959 cW.noTint = function() {
8960 bf = null;
8961 bw = null
8962 };
8963 cW.copy = function(ea, ef, ee, eg, ec, ei, eh, eb, ed) {
8964 if (ed === t) {
8965 ed = eb;
8966 eb = eh;
8967 eh = ei;
8968 ei = ec;
8969 ec = eg;
8970 eg = ee;
8971 ee = ef;
8972 ef = ea;
8973 ea = cW
8974 }
8975 cW.blend(ea, ef, ee, eg, ec, ei, eh, eb, ed, 0)
8976 };
8977 cW.blend = function(ea, ek, ej, en, ef, ep, eo, eb, eh, eg, ed) {
8978 if (ea.isRemote) {
8979 throw "Image is loaded remotely. Cannot blend image."
8980 }
8981 if (eg === t) {
8982 eg = eh;
8983 eh = eb;
8984 eb = eo;
8985 eo = ep;
8986 ep = ef;
8987 ef = en;
8988 en = ej;
8989 ej = ek;
8990 ek = ea;
8991 ea = cW
8992 }
8993 var ec = ek + en,
8994 ei = ej + ef,
8995 em = ep + eb,
8996 ee = eo + eh,
8997 el = ed || cW;
8998 if (ed === t || eg === t) {
8999 cW.loadPixels()
9000 }
9001 ea.loadPixels();
9002 if (ea === cW && cW.intersect(ek, ej, ec, ei, ep, eo, em, ee)) {
9003 cW.blit_resize(cW.get(ek, ej, ec - ek, ei - ej), 0, 0, ec - ek - 1, ei - ej - 1, el.imageData.data, el.width, el.height, ep, eo, em, ee, eg)
9004 } else {
9005 cW.blit_resize(ea, ek, ej, ec, ei, el.imageData.data, el.width, el.height, ep, eo, em, ee, eg)
9006 } if (ed === t) {
9007 cW.updatePixels()
9008 }
9009 };
9010 var bp = function(ee) {
9011 var ea = cW.floor(ee * 3.5),
9012 ec, eb;
9013 ea = ea < 1 ? 1 : ea < 248 ? ea : 248;
9014 if (cW.shared.blurRadius !== ea) {
9015 cW.shared.blurRadius = ea;
9016 cW.shared.blurKernelSize = 1 + (cW.shared.blurRadius << 1);
9017 cW.shared.blurKernel = new e(cW.shared.blurKernelSize);
9018 var eg = cW.shared.blurKernel;
9019 var ef = cW.shared.blurKernelSize;
9020 var ed = cW.shared.blurRadius;
9021 for (ec = 0; ec < ef; ec++) {
9022 eg[ec] = 0
9023 }
9024 var eh = (ea - 1) * (ea - 1);
9025 for (ec = 1; ec < ea; ec++) {
9026 eg[ea + ec] = eg[eb] = eh
9027 }
9028 eg[ea] = ea * ea
9029 }
9030 };
9031 var b7 = function(eo, et) {
9032 var ec, ef, el, eq, er, eA, es;
9033 var ev, en, ez, ey, ep;
9034 var ei = et.pixels.getLength();
9035 var eu = new e(ei);
9036 var eD = new e(ei);
9037 var eh = new e(ei);
9038 var eC = new e(ei);
9039 var eB = 0;
9040 var ek, ej, ex, ee;
9041 bp(eo);
9042 var eb = et.height;
9043 var ea = et.width;
9044 var ew = cW.shared.blurKernelSize;
9045 var em = cW.shared.blurRadius;
9046 var eg = cW.shared.blurKernel;
9047 var ed = et.imageData.data;
9048 for (ej = 0; ej < eb; ej++) {
9049 for (ek = 0; ek < ea; ek++) {
9050 eq = el = ef = er = ec = 0;
9051 ev = ek - em;
9052 if (ev < 0) {
9053 ep = -ev;
9054 ev = 0
9055 } else {
9056 if (ev >= ea) {
9057 break
9058 }
9059 ep = 0
9060 }
9061 for (ex = ep; ex < ew; ex++) {
9062 if (ev >= ea) {
9063 break
9064 }
9065 ee = (ev + eB) * 4;
9066 es = eg[ex];
9067 er += es * ed[ee + 3];
9068 ef += es * ed[ee];
9069 el += es * ed[ee + 1];
9070 eq += es * ed[ee + 2];
9071 ec += es;
9072 ev++
9073 }
9074 en = eB + ek;
9075 eC[en] = er / ec;
9076 eu[en] = ef / ec;
9077 eD[en] = el / ec;
9078 eh[en] = eq / ec
9079 }
9080 eB += ea
9081 }
9082 eB = 0;
9083 ez = -em;
9084 ey = ez * ea;
9085 for (ej = 0; ej < eb; ej++) {
9086 for (ek = 0; ek < ea; ek++) {
9087 eq = el = ef = er = ec = 0;
9088 if (ez < 0) {
9089 ep = en = -ez;
9090 ev = ek
9091 } else {
9092 if (ez >= eb) {
9093 break
9094 }
9095 ep = 0;
9096 en = ez;
9097 ev = ek + ey
9098 }
9099 for (ex = ep; ex < ew; ex++) {
9100 if (en >= eb) {
9101 break
9102 }
9103 es = eg[ex];
9104 er += es * eC[ev];
9105 ef += es * eu[ev];
9106 el += es * eD[ev];
9107 eq += es * eh[ev];
9108 ec += es;
9109 en++;
9110 ev += ea
9111 }
9112 ee = (ek + eB) * 4;
9113 ed[ee] = ef / ec;
9114 ed[ee + 1] = el / ec;
9115 ed[ee + 2] = eq / ec;
9116 ed[ee + 3] = er / ec
9117 }
9118 eB += ea;
9119 ey += ea;
9120 ez++
9121 }
9122 };
9123 var cf = function(er, el) {
9124 var eh = 0;
9125 var ev = el.pixels.getLength();
9126 var em = new K(ev);
9127 var ep, eb, ek, ej, ed;
9128 var eq, ee, eg, ei, ec, en, eu, ea, es, ef, et, eo;
9129 if (!er) {
9130 while (eh < ev) {
9131 ep = eh;
9132 eb = eh + el.width;
9133 while (eh < eb) {
9134 ek = ej = el.pixels.getPixel(eh);
9135 ee = eh - 1;
9136 eq = eh + 1;
9137 eg = eh - el.width;
9138 ei = eh + el.width;
9139 if (ee < ep) {
9140 ee = eh
9141 }
9142 if (eq >= eb) {
9143 eq = eh
9144 }
9145 if (eg < 0) {
9146 eg = 0
9147 }
9148 if (ei >= ev) {
9149 ei = eh
9150 }
9151 eu = el.pixels.getPixel(eg);
9152 en = el.pixels.getPixel(ee);
9153 ea = el.pixels.getPixel(ei);
9154 ec = el.pixels.getPixel(eq);
9155 ed = 77 * (ek >> 16 & 255) + 151 * (ek >> 8 & 255) + 28 * (ek & 255);
9156 ef = 77 * (en >> 16 & 255) + 151 * (en >> 8 & 255) + 28 * (en & 255);
9157 es = 77 * (ec >> 16 & 255) + 151 * (ec >> 8 & 255) + 28 * (ec & 255);
9158 et = 77 * (eu >> 16 & 255) + 151 * (eu >> 8 & 255) + 28 * (eu & 255);
9159 eo = 77 * (ea >> 16 & 255) + 151 * (ea >> 8 & 255) + 28 * (ea & 255);
9160 if (ef > ed) {
9161 ej = en;
9162 ed = ef
9163 }
9164 if (es > ed) {
9165 ej = ec;
9166 ed = es
9167 }
9168 if (et > ed) {
9169 ej = eu;
9170 ed = et
9171 }
9172 if (eo > ed) {
9173 ej = ea;
9174 ed = eo
9175 }
9176 em[eh++] = ej
9177 }
9178 }
9179 } else {
9180 while (eh < ev) {
9181 ep = eh;
9182 eb = eh + el.width;
9183 while (eh < eb) {
9184 ek = ej = el.pixels.getPixel(eh);
9185 ee = eh - 1;
9186 eq = eh + 1;
9187 eg = eh - el.width;
9188 ei = eh + el.width;
9189 if (ee < ep) {
9190 ee = eh
9191 }
9192 if (eq >= eb) {
9193 eq = eh
9194 }
9195 if (eg < 0) {
9196 eg = 0
9197 }
9198 if (ei >= ev) {
9199 ei = eh
9200 }
9201 eu = el.pixels.getPixel(eg);
9202 en = el.pixels.getPixel(ee);
9203 ea = el.pixels.getPixel(ei);
9204 ec = el.pixels.getPixel(eq);
9205 ed = 77 * (ek >> 16 & 255) + 151 * (ek >> 8 & 255) + 28 * (ek & 255);
9206 ef = 77 * (en >> 16 & 255) + 151 * (en >> 8 & 255) + 28 * (en & 255);
9207 es = 77 * (ec >> 16 & 255) + 151 * (ec >> 8 & 255) + 28 * (ec & 255);
9208 et = 77 * (eu >> 16 & 255) + 151 * (eu >> 8 & 255) + 28 * (eu & 255);
9209 eo = 77 * (ea >> 16 & 255) + 151 * (ea >> 8 & 255) + 28 * (ea & 255);
9210 if (ef < ed) {
9211 ej = en;
9212 ed = ef
9213 }
9214 if (es < ed) {
9215 ej = ec;
9216 ed = es
9217 }
9218 if (et < ed) {
9219 ej = eu;
9220 ed = et
9221 }
9222 if (eo < ed) {
9223 ej = ea;
9224 ed = eo
9225 }
9226 em[eh++] = ej
9227 }
9228 }
9229 }
9230 el.pixels.set(em)
9231 };
9232 cW.filter = function(eh, eg, ed) {
9233 var ek, ef, eb, ej;
9234 if (arguments.length === 3) {
9235 ed.loadPixels();
9236 ek = ed
9237 } else {
9238 cW.loadPixels();
9239 ek = cW
9240 } if (eg === t) {
9241 eg = null
9242 }
9243 if (ek.isRemote) {
9244 throw "Image is loaded remotely. Cannot filter image."
9245 }
9246 var el = ek.pixels.getLength();
9247 switch (eh) {
9248 case 11:
9249 var em = eg || 1;
9250 b7(em, ek);
9251 break;
9252 case 12:
9253 if (ek.format === 4) {
9254 for (ej = 0; ej < el; ej++) {
9255 ef = 255 - ek.pixels.getPixel(ej);
9256 ek.pixels.setPixel(ej, 4278190080 | ef << 16 | ef << 8 | ef)
9257 }
9258 ek.format = 1
9259 } else {
9260 for (ej = 0; ej < el; ej++) {
9261 ef = ek.pixels.getPixel(ej);
9262 eb = 77 * (ef >> 16 & 255) + 151 * (ef >> 8 & 255) + 28 * (ef & 255) >> 8;
9263 ek.pixels.setPixel(ej, ef & 4278190080 | eb << 16 | eb << 8 | eb)
9264 }
9265 }
9266 break;
9267 case 13:
9268 for (ej = 0; ej < el; ej++) {
9269 ek.pixels.setPixel(ej, ek.pixels.getPixel(ej) ^ 16777215)
9270 }
9271 break;
9272 case 15:
9273 if (eg === null) {
9274 throw "Use filter(POSTERIZE, int levels) instead of filter(POSTERIZE)"
9275 }
9276 var ep = cW.floor(eg);
9277 if (ep < 2 || ep > 255) {
9278 throw "Levels must be between 2 and 255 for filter(POSTERIZE, levels)"
9279 }
9280 var ei = ep - 1;
9281 for (ej = 0; ej < el; ej++) {
9282 var ea = ek.pixels.getPixel(ej) >> 16 & 255;
9283 var en = ek.pixels.getPixel(ej) >> 8 & 255;
9284 var ec = ek.pixels.getPixel(ej) & 255;
9285 ea = (ea * ep >> 8) * 255 / ei;
9286 en = (en * ep >> 8) * 255 / ei;
9287 ec = (ec * ep >> 8) * 255 / ei;
9288 ek.pixels.setPixel(ej, 4278190080 & ek.pixels.getPixel(ej) | ea << 16 | en << 8 | ec)
9289 }
9290 break;
9291 case 14:
9292 for (ej = 0; ej < el; ej++) {
9293 ek.pixels.setPixel(ej, ek.pixels.getPixel(ej) | 4278190080)
9294 }
9295 ek.format = 1;
9296 break;
9297 case 16:
9298 if (eg === null) {
9299 eg = 0.5
9300 }
9301 if (eg < 0 || eg > 1) {
9302 throw "Level must be between 0 and 1 for filter(THRESHOLD, level)"
9303 }
9304 var ee = cW.floor(eg * 255);
9305 for (ej = 0; ej < el; ej++) {
9306 var eo = cW.max((ek.pixels.getPixel(ej) & 16711680) >> 16, cW.max((ek.pixels.getPixel(ej) & 65280) >> 8, ek.pixels.getPixel(ej) & 255));
9307 ek.pixels.setPixel(ej, ek.pixels.getPixel(ej) & 4278190080 | (eo < ee ? 0 : 16777215))
9308 }
9309 break;
9310 case 17:
9311 cf(true, ek);
9312 break;
9313 case 18:
9314 cf(false, ek);
9315 break
9316 }
9317 ek.updatePixels()
9318 };
9319 cW.shared = {
9320 fracU: 0,
9321 ifU: 0,
9322 fracV: 0,
9323 ifV: 0,
9324 u1: 0,
9325 u2: 0,
9326 v1: 0,
9327 v2: 0,
9328 sX: 0,
9329 sY: 0,
9330 iw: 0,
9331 iw1: 0,
9332 ih1: 0,
9333 ul: 0,
9334 ll: 0,
9335 ur: 0,
9336 lr: 0,
9337 cUL: 0,
9338 cLL: 0,
9339 cUR: 0,
9340 cLR: 0,
9341 srcXOffset: 0,
9342 srcYOffset: 0,
9343 r: 0,
9344 g: 0,
9345 b: 0,
9346 a: 0,
9347 srcBuffer: null,
9348 blurRadius: 0,
9349 blurKernelSize: 0,
9350 blurKernel: null
9351 };
9352 cW.intersect = function(ec, ej, eb, ei, en, eg, em, ef) {
9353 var el = eb - ec + 1;
9354 var ee = ei - ej + 1;
9355 var ea = em - en + 1;
9356 var eh = ef - eg + 1;
9357 if (en < ec) {
9358 ea += en - ec;
9359 if (ea > el) {
9360 ea = el
9361 }
9362 } else {
9363 var ek = el + ec - en;
9364 if (ea > ek) {
9365 ea = ek
9366 }
9367 } if (eg < ej) {
9368 eh += eg - ej;
9369 if (eh > ee) {
9370 eh = ee
9371 }
9372 } else {
9373 var ed = ee + ej - eg;
9374 if (eh > ed) {
9375 eh = ed
9376 }
9377 }
9378 return !(ea <= 0 || eh <= 0)
9379 };
9380 var dS = {};
9381 dS[1] = cW.modes.blend;
9382 dS[2] = cW.modes.add;
9383 dS[4] = cW.modes.subtract;
9384 dS[8] = cW.modes.lightest;
9385 dS[16] = cW.modes.darkest;
9386 dS[0] = cW.modes.replace;
9387 dS[32] = cW.modes.difference;
9388 dS[64] = cW.modes.exclusion;
9389 dS[128] = cW.modes.multiply;
9390 dS[256] = cW.modes.screen;
9391 dS[512] = cW.modes.overlay;
9392 dS[1024] = cW.modes.hard_light;
9393 dS[2048] = cW.modes.soft_light;
9394 dS[4096] = cW.modes.dodge;
9395 dS[8192] = cW.modes.burn;
9396 cW.blit_resize = function(en, ez, et, ey, es, eE, ej, er, ex, eo, ew, em, ep) {
9397 var eC, eB;
9398 if (ez < 0) {
9399 ez = 0
9400 }
9401 if (et < 0) {
9402 et = 0
9403 }
9404 if (ey >= en.width) {
9405 ey = en.width - 1
9406 }
9407 if (es >= en.height) {
9408 es = en.height - 1
9409 }
9410 var eI = ey - ez;
9411 var eN = es - et;
9412 var ea = ew - ex;
9413 var ek = em - eo;
9414 if (ea <= 0 || ek <= 0 || eI <= 0 || eN <= 0 || ex >= ej || eo >= er || ez >= en.width || et >= en.height) {
9415 return
9416 }
9417 var eh = q.floor(eI / ea * 32768);
9418 var ee = q.floor(eN / ek * 32768);
9419 var eG = cW.shared;
9420 eG.srcXOffset = q.floor(ex < 0 ? -ex * eh : ez * 32768);
9421 eG.srcYOffset = q.floor(eo < 0 ? -eo * ee : et * 32768);
9422 if (ex < 0) {
9423 ea += ex;
9424 ex = 0
9425 }
9426 if (eo < 0) {
9427 ek += eo;
9428 eo = 0
9429 }
9430 ea = q.min(ea, ej - ex);
9431 ek = q.min(ek, er - eo);
9432 var eu = eo * ej + ex;
9433 var eQ;
9434 eG.srcBuffer = en.imageData.data;
9435 eG.iw = en.width;
9436 eG.iw1 = en.width - 1;
9437 eG.ih1 = en.height - 1;
9438 var ev = cW.filter_bilinear,
9439 eK = cW.filter_new_scanline,
9440 ei = dS[ep],
9441 eH, eM, eF, eJ, ec, ed, eb = 4278190080,
9442 eL = 16711680,
9443 eA = 65280,
9444 eg = 255,
9445 eP = 32767,
9446 eD = 15,
9447 el = 1,
9448 eq = 9,
9449 ef = eG.srcBuffer,
9450 eO = q.min;
9451 for (eB = 0; eB < ek; eB++) {
9452 eG.sX = eG.srcXOffset;
9453 eG.fracV = eG.srcYOffset & eP;
9454 eG.ifV = eP - eG.fracV;
9455 eG.v1 = (eG.srcYOffset >> eD) * eG.iw;
9456 eG.v2 = eO((eG.srcYOffset >> eD) + 1, eG.ih1) * eG.iw;
9457 for (eC = 0; eC < ea; eC++) {
9458 eM = (eu + eC) * 4;
9459 eQ = eE[eM + 3] << 24 & eb | eE[eM] << 16 & eL | eE[eM + 1] << 8 & eA | eE[eM + 2] & eg;
9460 eG.fracU = eG.sX & eP;
9461 eG.ifU = eP - eG.fracU;
9462 eG.ul = eG.ifU * eG.ifV >> eD;
9463 eG.ll = eG.ifU * eG.fracV >> eD;
9464 eG.ur = eG.fracU * eG.ifV >> eD;
9465 eG.lr = eG.fracU * eG.fracV >> eD;
9466 eG.u1 = eG.sX >> eD;
9467 eG.u2 = eO(eG.u1 + 1, eG.iw1);
9468 eF = (eG.v1 + eG.u1) * 4;
9469 eJ = (eG.v1 + eG.u2) * 4;
9470 ec = (eG.v2 + eG.u1) * 4;
9471 ed = (eG.v2 + eG.u2) * 4;
9472 eG.cUL = ef[eF + 3] << 24 & eb | ef[eF] << 16 & eL | ef[eF + 1] << 8 & eA | ef[eF + 2] & eg;
9473 eG.cUR = ef[eJ + 3] << 24 & eb | ef[eJ] << 16 & eL | ef[eJ + 1] << 8 & eA | ef[eJ + 2] & eg;
9474 eG.cLL = ef[ec + 3] << 24 & eb | ef[ec] << 16 & eL | ef[ec + 1] << 8 & eA | ef[ec + 2] & eg;
9475 eG.cLR = ef[ed + 3] << 24 & eb | ef[ed] << 16 & eL | ef[ed + 1] << 8 & eA | ef[ed + 2] & eg;
9476 eG.r = eG.ul * ((eG.cUL & eL) >> 16) + eG.ll * ((eG.cLL & eL) >> 16) + eG.ur * ((eG.cUR & eL) >> 16) + eG.lr * ((eG.cLR & eL) >> 16) << el & eL;
9477 eG.g = eG.ul * (eG.cUL & eA) + eG.ll * (eG.cLL & eA) + eG.ur * (eG.cUR & eA) + eG.lr * (eG.cLR & eA) >>> eD & eA;
9478 eG.b = eG.ul * (eG.cUL & eg) + eG.ll * (eG.cLL & eg) + eG.ur * (eG.cUR & eg) + eG.lr * (eG.cLR & eg) >>> eD;
9479 eG.a = eG.ul * ((eG.cUL & eb) >>> 24) + eG.ll * ((eG.cLL & eb) >>> 24) + eG.ur * ((eG.cUR & eb) >>> 24) + eG.lr * ((eG.cLR & eb) >>> 24) << eq & eb;
9480 eH = ei(eQ, eG.a | eG.r | eG.g | eG.b);
9481 eE[eM] = (eH & eL) >>> 16;
9482 eE[eM + 1] = (eH & eA) >>> 8;
9483 eE[eM + 2] = eH & eg;
9484 eE[eM + 3] = (eH & eb) >>> 24;
9485 eG.sX += eh
9486 }
9487 eu += ej;
9488 eG.srcYOffset += ee
9489 }
9490 };
9491 cW.loadFont = function(eb, ec) {
9492 if (eb === t) {
9493 throw "font name required in loadFont."
9494 }
9495 if (eb.indexOf(".svg") === -1) {
9496 if (ec === t) {
9497 ec = W.size
9498 }
9499 return H.get(eb, ec)
9500 }
9501 var ea = cW.loadGlyphs(eb);
9502 return {
9503 name: eb,
9504 css: "12px sans-serif",
9505 glyph: true,
9506 units_per_em: ea.units_per_em,
9507 horiz_adv_x: 1 / ea.units_per_em * ea.horiz_adv_x,
9508 ascent: ea.ascent,
9509 descent: ea.descent,
9510 width: function(eh) {
9511 var ef = 0;
9512 var ed = eh.length;
9513 for (var ee = 0; ee < ed; ee++) {
9514 try {
9515 ef += parseFloat(cW.glyphLook(cW.glyphTable[eb], eh[ee]).horiz_adv_x)
9516 } catch (eg) {
9517 F.debug(eg)
9518 }
9519 }
9520 return ef / cW.glyphTable[eb].units_per_em
9521 }
9522 }
9523 };
9524 cW.createFont = function(ea, eb) {
9525 return cW.loadFont(ea, eb)
9526 };
9527 cW.textFont = function(ea, ec) {
9528 if (ec !== t) {
9529 if (!ea.glyph) {
9530 ea = H.get(ea.name, ec)
9531 }
9532 d0 = ec
9533 }
9534 W = ea;
9535 Y = W.name;
9536 a3 = W.ascent;
9537 dA = W.descent;
9538 d7 = W.leading;
9539 var eb = dY.$ensureContext();
9540 eb.font = W.css
9541 };
9542 cW.textSize = function(eb) {
9543 W = H.get(Y, eb);
9544 d0 = eb;
9545 a3 = W.ascent;
9546 dA = W.descent;
9547 d7 = W.leading;
9548 var ea = dY.$ensureContext();
9549 ea.font = W.css
9550 };
9551 cW.textAscent = function() {
9552 return a3
9553 };
9554 cW.textDescent = function() {
9555 return dA
9556 };
9557 cW.textLeading = function(ea) {
9558 d7 = ea
9559 };
9560 cW.textAlign = function(eb, ea) {
9561 N = eb;
9562 c1 = ea || 0
9563 };
9564
9565 function bu(ea) {
9566 if (ea instanceof String) {
9567 return ea
9568 }
9569 if (typeof ea === "number") {
9570 if (ea === (0 | ea)) {
9571 return ea.toString()
9572 }
9573 return cW.nf(ea, 0, 3)
9574 }
9575 if (ea === null || ea === t) {
9576 return ""
9577 }
9578 return ea.toString()
9579 }
9580 bR.prototype.textWidth = function(ee) {
9581 var ea = bu(ee).split(/\r?\n/g),
9582 ec = 0;
9583 var eb, ed = ea.length;
9584 d8.font = W.css;
9585 for (eb = 0; eb < ed; ++eb) {
9586 ec = q.max(ec, W.measureTextWidth(ea[eb]))
9587 }
9588 return ec | 0
9589 };
9590 bB.prototype.textWidth = function(ef) {
9591 var ea = bu(ef).split(/\r?\n/g),
9592 ed = 0;
9593 var ec, ee = ea.length;
9594 if (cE === t) {
9595 cE = d.createElement("canvas")
9596 }
9597 var eb = cE.getContext("2d");
9598 eb.font = W.css;
9599 for (ec = 0; ec < ee; ++ec) {
9600 ed = q.max(ed, eb.measureText(ea[ec]).width)
9601 }
9602 return ed | 0
9603 };
9604 cW.glyphLook = function(ea, eb) {
9605 try {
9606 switch (eb) {
9607 case "1":
9608 return ea.one;
9609 case "2":
9610 return ea.two;
9611 case "3":
9612 return ea.three;
9613 case "4":
9614 return ea.four;
9615 case "5":
9616 return ea.five;
9617 case "6":
9618 return ea.six;
9619 case "7":
9620 return ea.seven;
9621 case "8":
9622 return ea.eight;
9623 case "9":
9624 return ea.nine;
9625 case "0":
9626 return ea.zero;
9627 case " ":
9628 return ea.space;
9629 case "$":
9630 return ea.dollar;
9631 case "!":
9632 return ea.exclam;
9633 case '"':
9634 return ea.quotedbl;
9635 case "#":
9636 return ea.numbersign;
9637 case "%":
9638 return ea.percent;
9639 case "&":
9640 return ea.ampersand;
9641 case "'":
9642 return ea.quotesingle;
9643 case "(":
9644 return ea.parenleft;
9645 case ")":
9646 return ea.parenright;
9647 case "*":
9648 return ea.asterisk;
9649 case "+":
9650 return ea.plus;
9651 case ",":
9652 return ea.comma;
9653 case "-":
9654 return ea.hyphen;
9655 case ".":
9656 return ea.period;
9657 case "/":
9658 return ea.slash;
9659 case "_":
9660 return ea.underscore;
9661 case ":":
9662 return ea.colon;
9663 case ";":
9664 return ea.semicolon;
9665 case "<":
9666 return ea.less;
9667 case "=":
9668 return ea.equal;
9669 case ">":
9670 return ea.greater;
9671 case "?":
9672 return ea.question;
9673 case "@":
9674 return ea.at;
9675 case "[":
9676 return ea.bracketleft;
9677 case "\\":
9678 return ea.backslash;
9679 case "]":
9680 return ea.bracketright;
9681 case "^":
9682 return ea.asciicircum;
9683 case "`":
9684 return ea.grave;
9685 case "{":
9686 return ea.braceleft;
9687 case "|":
9688 return ea.bar;
9689 case "}":
9690 return ea.braceright;
9691 case "~":
9692 return ea.asciitilde;
9693 default:
9694 return ea[eb]
9695 }
9696 } catch (ec) {
9697 F.debug(ec)
9698 }
9699 };
9700 bR.prototype.text$line = function(ei, el, ek, ej, ef) {
9701 var eh = 0,
9702 eg = 0;
9703 if (!W.glyph) {
9704 if (ei && "fillText" in d8) {
9705 if (aq) {
9706 d8.fillStyle = cW.color.toString(a1);
9707 aq = false
9708 }
9709 if (ef === 39 || ef === 3) {
9710 eh = W.measureTextWidth(ei);
9711 if (ef === 39) {
9712 eg = -eh
9713 } else {
9714 eg = -eh / 2
9715 }
9716 }
9717 d8.fillText(ei, el + eg, ek)
9718 }
9719 } else {
9720 var ea = cW.glyphTable[Y];
9721 aD();
9722 d8.translate(el, ek + d0);
9723 if (ef === 39 || ef === 3) {
9724 eh = ea.width(ei);
9725 if (ef === 39) {
9726 eg = -eh
9727 } else {
9728 eg = -eh / 2
9729 }
9730 }
9731 var em = ea.units_per_em,
9732 ee = 1 / em * d0;
9733 d8.scale(ee, ee);
9734 for (var eb = 0, ec = ei.length; eb < ec; eb++) {
9735 try {
9736 cW.glyphLook(ea, ei[eb]).draw()
9737 } catch (ed) {
9738 F.debug(ed)
9739 }
9740 }
9741 cP()
9742 }
9743 };
9744 bB.prototype.text$line = function(eh, el, ek, ei, ef) {
9745 if (cE === t) {
9746 cE = d.createElement("canvas")
9747 }
9748 var eb = d8;
9749 d8 = cE.getContext("2d");
9750 d8.font = W.css;
9751 var eg = W.measureTextWidth(eh);
9752 cE.width = eg;
9753 cE.height = d0;
9754 d8 = cE.getContext("2d");
9755 d8.font = W.css;
9756 d8.textBaseline = "top";
9757 bR.prototype.text$line(eh, 0, 0, 0, 37);
9758 var ea = cE.width / cE.height;
9759 d8 = eb;
9760 d8.bindTexture(d8.TEXTURE_2D, bS);
9761 d8.texImage2D(d8.TEXTURE_2D, 0, d8.RGBA, d8.RGBA, d8.UNSIGNED_BYTE, cE);
9762 d8.texParameteri(d8.TEXTURE_2D, d8.TEXTURE_MAG_FILTER, d8.LINEAR);
9763 d8.texParameteri(d8.TEXTURE_2D, d8.TEXTURE_MIN_FILTER, d8.LINEAR);
9764 d8.texParameteri(d8.TEXTURE_2D, d8.TEXTURE_WRAP_T, d8.CLAMP_TO_EDGE);
9765 d8.texParameteri(d8.TEXTURE_2D, d8.TEXTURE_WRAP_S, d8.CLAMP_TO_EDGE);
9766 var ee = 0;
9767 if (ef === 39) {
9768 ee = -eg
9769 } else {
9770 if (ef === 3) {
9771 ee = -eg / 2
9772 }
9773 }
9774 var ec = new aP;
9775 var ed = d0 * 0.5;
9776 ec.translate(el + ee - ed / 2, ek - ed, ei);
9777 ec.scale(-ea * ed, -ed, ed);
9778 ec.translate(-1, -1, -1);
9779 ec.transpose();
9780 var ej = new aP;
9781 ej.scale(1, -1, 1);
9782 ej.apply(dJ.array());
9783 ej.transpose();
9784 d8.useProgram(dQ);
9785 dc("aVertex2d", dQ, "aVertex", 3, cH);
9786 dc("aTextureCoord2d", dQ, "aTextureCoord", 2, ac);
9787 dZ("uSampler2d", dQ, "uSampler", [0]);
9788 dZ("uIsDrawingText2d", dQ, "uIsDrawingText", true);
9789 a9("uModel2d", dQ, "uModel", false, ec.array());
9790 a9("uView2d", dQ, "uView", false, ej.array());
9791 d2("uColor2d", dQ, "uColor", bo);
9792 d8.bindBuffer(d8.ELEMENT_ARRAY_BUFFER, R);
9793 d8.drawElements(d8.TRIANGLES, 6, d8.UNSIGNED_SHORT, 0)
9794 };
9795
9796 function bi(ed, eg, ef, ee) {
9797 var ei, ec;
9798 if (ed.indexOf("\n") < 0) {
9799 ei = [ed];
9800 ec = 1
9801 } else {
9802 ei = ed.split(/\r?\n/g);
9803 ec = ei.length
9804 }
9805 var ea = 0;
9806 if (c1 === 101) {
9807 ea = a3 + dA
9808 } else {
9809 if (c1 === 3) {
9810 ea = a3 / 2 - (ec - 1) * d7 / 2
9811 } else {
9812 if (c1 === 102) {
9813 ea = -(dA + (ec - 1) * d7)
9814 }
9815 }
9816 }
9817 for (var eb = 0; eb < ec; ++eb) {
9818 var eh = ei[eb];
9819 dY.text$line(eh, eg, ef + ea, ee, N);
9820 ea += d7
9821 }
9822 }
9823
9824 function bd(eq, el, ek, ep, en, ej) {
9825 if (eq.length === 0 || ep === 0 || en === 0) {
9826 return
9827 }
9828 if (d0 > en) {
9829 return
9830 }
9831 var em = -1;
9832 var ee = 0;
9833 var ea = 0;
9834 var eg = [];
9835 for (var ef = 0, es = eq.length; ef < es; ef++) {
9836 var eh = eq[ef];
9837 var ev = eh === " ";
9838 var eo = W.measureTextWidth(eh);
9839 if (eh !== "\n" && ea + eo <= ep) {
9840 if (ev) {
9841 em = ef
9842 }
9843 ea += eo
9844 } else {
9845 if (em + 1 === ee) {
9846 if (ef > 0) {
9847 em = ef
9848 } else {
9849 return
9850 }
9851 }
9852 if (eh === "\n") {
9853 eg.push({
9854 text: eq.substring(ee, ef),
9855 width: ea
9856 });
9857 ee = ef + 1
9858 } else {
9859 eg.push({
9860 text: eq.substring(ee, em + 1),
9861 width: ea
9862 });
9863 ee = em + 1
9864 }
9865 ea = 0;
9866 ef = ee - 1
9867 }
9868 }
9869 if (ee < es) {
9870 eg.push({
9871 text: eq.substring(ee),
9872 width: ea
9873 })
9874 }
9875 var eu = 1,
9876 ei = a3;
9877 if (N === 3) {
9878 eu = ep / 2
9879 } else {
9880 if (N === 39) {
9881 eu = ep
9882 }
9883 }
9884 var er = eg.length,
9885 eb = q.min(er, q.floor(en / d7));
9886 if (c1 === 101) {
9887 ei = a3 + dA
9888 } else {
9889 if (c1 === 3) {
9890 ei = en / 2 - d7 * (eb / 2 - 1)
9891 } else {
9892 if (c1 === 102) {
9893 ei = dA + d7
9894 }
9895 }
9896 }
9897 var ec, ed, et;
9898 for (ec = 0; ec < er; ec++) {
9899 et = ec * d7;
9900 if (ei + et > en - dA) {
9901 break
9902 }
9903 ed = eg[ec];
9904 dY.text$line(ed.text, el + eu, ek + ei + et, ej, N)
9905 }
9906 }
9907 cW.text = function() {
9908 if (cI === 5) {
9909 return
9910 }
9911 if (arguments.length === 3) {
9912 bi(bu(arguments[0]), arguments[1], arguments[2], 0)
9913 } else {
9914 if (arguments.length === 4) {
9915 bi(bu(arguments[0]), arguments[1], arguments[2], arguments[3])
9916 } else {
9917 if (arguments.length === 5) {
9918 bd(bu(arguments[0]), arguments[1], arguments[2], arguments[3], arguments[4], 0)
9919 } else {
9920 if (arguments.length === 6) {
9921 bd(bu(arguments[0]), arguments[1], arguments[2], arguments[3], arguments[4], arguments[5])
9922 }
9923 }
9924 }
9925 }
9926 };
9927 cW.textMode = function(ea) {
9928 cI = ea
9929 };
9930 cW.loadGlyphs = function(eg) {
9931 var ei, eh, ee, ec, ep, eo, en, eq, ek, er, el, em = "[0-9\\-]+",
9932 ej;
9933 var ef = function(ex, ew) {
9934 var eu = 0,
9935 et = [],
9936 es, ev = new RegExp(ex, "g");
9937 es = et[eu] = ev.exec(ew);
9938 while (es) {
9939 eu++;
9940 es = et[eu] = ev.exec(ew)
9941 }
9942 return et
9943 };
9944 var eb = function(ex) {
9945 var ey = ef("[A-Za-z][0-9\\- ]+|Z", ex);
9946 var ew = function() {
9947 aD();
9948 return dY.$ensureContext()
9949 };
9950 var eu = function() {
9951 bn();
9952 dd();
9953 cP()
9954 };
9955 ej = "return {draw:function(){var curContext=beforePathDraw();curContext.beginPath();";
9956 ei = 0;
9957 eh = 0;
9958 ee = 0;
9959 ec = 0;
9960 ep = 0;
9961 eo = 0;
9962 ex = 0;
9963 eq = 0;
9964 ek = "";
9965 er = ey.length - 1;
9966 for (var et = 0; et < er; et++) {
9967 var es = ey[et][0],
9968 ev = ef(em, es);
9969 switch (es[0]) {
9970 case "M":
9971 ei = parseFloat(ev[0][0]);
9972 eh = parseFloat(ev[1][0]);
9973 ej += "curContext.moveTo(" + ei + "," + -eh + ");";
9974 break;
9975 case "L":
9976 ei = parseFloat(ev[0][0]);
9977 eh = parseFloat(ev[1][0]);
9978 ej += "curContext.lineTo(" + ei + "," + -eh + ");";
9979 break;
9980 case "H":
9981 ei = parseFloat(ev[0][0]);
9982 ej += "curContext.lineTo(" + ei + "," + -eh + ");";
9983 break;
9984 case "V":
9985 eh = parseFloat(ev[0][0]);
9986 ej += "curContext.lineTo(" + ei + "," + -eh + ");";
9987 break;
9988 case "T":
9989 ep = parseFloat(ev[0][0]);
9990 eo = parseFloat(ev[1][0]);
9991 if (ek === "Q" || ek === "T") {
9992 ex = q.sqrt(q.pow(ei - ee, 2) + q.pow(ec - eh, 2));
9993 eq = q.PI + q.atan2(ee - ei, ec - eh);
9994 ee = ei + q.sin(eq) * ex;
9995 ec = eh + q.cos(eq) * ex
9996 } else {
9997 ee = ei;
9998 ec = eh
9999 }
10000 ej += "curContext.quadraticCurveTo(" + ee + "," + -ec + "," + ep + "," + -eo + ");";
10001 ei = ep;
10002 eh = eo;
10003 break;
10004 case "Q":
10005 ee = parseFloat(ev[0][0]);
10006 ec = parseFloat(ev[1][0]);
10007 ep = parseFloat(ev[2][0]);
10008 eo = parseFloat(ev[3][0]);
10009 ej += "curContext.quadraticCurveTo(" + ee + "," + -ec + "," + ep + "," + -eo + ");";
10010 ei = ep;
10011 eh = eo;
10012 break;
10013 case "Z":
10014 ej += "curContext.closePath();";
10015 break
10016 }
10017 ek = es[0]
10018 }
10019 ej += "afterPathDraw();";
10020 ej += "curContext.translate(" + el + ",0);";
10021 ej += "}}";
10022 return (new Function("beforePathDraw", "afterPathDraw", ej))(ew, eu)
10023 };
10024 var ea = function(ev) {
10025 var eu = ev.getElementsByTagName("font");
10026 cW.glyphTable[eg].horiz_adv_x = eu[0].getAttribute("horiz-adv-x");
10027 var ex = ev.getElementsByTagName("font-face")[0];
10028 cW.glyphTable[eg].units_per_em = parseFloat(ex.getAttribute("units-per-em"));
10029 cW.glyphTable[eg].ascent = parseFloat(ex.getAttribute("ascent"));
10030 cW.glyphTable[eg].descent = parseFloat(ex.getAttribute("descent"));
10031 var ez = ev.getElementsByTagName("glyph"),
10032 et = ez.length;
10033 for (var ey = 0; ey < et; ey++) {
10034 var es = ez[ey].getAttribute("unicode");
10035 var ew = ez[ey].getAttribute("glyph-name");
10036 el = ez[ey].getAttribute("horiz-adv-x");
10037 if (el === null) {
10038 el = cW.glyphTable[eg].horiz_adv_x
10039 }
10040 en = ez[ey].getAttribute("d");
10041 if (en !== t) {
10042 ej = eb(en);
10043 cW.glyphTable[eg][ew] = {
10044 name: ew,
10045 unicode: es,
10046 horiz_adv_x: el,
10047 draw: ej.draw
10048 }
10049 }
10050 }
10051 };
10052 var ed = function() {
10053 var eu;
10054 try {
10055 eu = d.implementation.createDocument("", "", null)
10056 } catch (ew) {
10057 F.debug(ew.message);
10058 return
10059 }
10060 try {
10061 eu.async = false;
10062 eu.load(eg);
10063 ea(eu.getElementsByTagName("svg")[0])
10064 } catch (et) {
10065 F.debug(et);
10066 try {
10067 var es = new D.XMLHttpRequest;
10068 es.open("GET", eg, false);
10069 es.send(null);
10070 ea(es.responseXML.documentElement)
10071 } catch (ev) {
10072 F.debug(et)
10073 }
10074 }
10075 };
10076 cW.glyphTable[eg] = {};
10077 ed(eg);
10078 return cW.glyphTable[eg]
10079 };
10080 cW.param = function(ec) {
10081 var eb = "data-processing-" + ec;
10082 if (ae.hasAttribute(eb)) {
10083 return ae.getAttribute(eb)
10084 }
10085 for (var ed = 0, ea = ae.childNodes.length; ed < ea; ++ed) {
10086 var ee = ae.childNodes.item(ed);
10087 if (ee.nodeType !== 1 || ee.tagName.toLowerCase() !== "param") {
10088 continue
10089 }
10090 if (ee.getAttribute("name") === ec) {
10091 return ee.getAttribute("value")
10092 }
10093 }
10094 if (cQ.params.hasOwnProperty(ec)) {
10095 return cQ.params[ec]
10096 }
10097 return null
10098 };
10099
10100 function cL(eb) {
10101 if (eb === "3D") {
10102 dY = new bB
10103 } else {
10104 if (eb === "2D") {
10105 dY = new bR
10106 } else {
10107 dY = new ca
10108 }
10109 }
10110 for (var ea in ca.prototype) {
10111 if (ca.prototype.hasOwnProperty(ea) && ea.indexOf("$") < 0) {
10112 cW[ea] = dY[ea]
10113 }
10114 }
10115 dY.$init()
10116 }
10117
10118 function cU(ea) {
10119 return function() {
10120 cL("2D");
10121 return dY[ea].apply(this, arguments)
10122 }
10123 }
10124 ca.prototype.translate = cU("translate");
10125 ca.prototype.transform = cU("transform");
10126 ca.prototype.scale = cU("scale");
10127 ca.prototype.pushMatrix = cU("pushMatrix");
10128 ca.prototype.popMatrix = cU("popMatrix");
10129 ca.prototype.resetMatrix = cU("resetMatrix");
10130 ca.prototype.applyMatrix = cU("applyMatrix");
10131 ca.prototype.rotate = cU("rotate");
10132 ca.prototype.rotateZ = cU("rotateZ");
10133 ca.prototype.shearX = cU("shearX");
10134 ca.prototype.shearY = cU("shearY");
10135 ca.prototype.redraw = cU("redraw");
10136 ca.prototype.toImageData = cU("toImageData");
10137 ca.prototype.ambientLight = cU("ambientLight");
10138 ca.prototype.directionalLight = cU("directionalLight");
10139 ca.prototype.lightFalloff = cU("lightFalloff");
10140 ca.prototype.lightSpecular = cU("lightSpecular");
10141 ca.prototype.pointLight = cU("pointLight");
10142 ca.prototype.noLights = cU("noLights");
10143 ca.prototype.spotLight = cU("spotLight");
10144 ca.prototype.beginCamera = cU("beginCamera");
10145 ca.prototype.endCamera = cU("endCamera");
10146 ca.prototype.frustum = cU("frustum");
10147 ca.prototype.box = cU("box");
10148 ca.prototype.sphere = cU("sphere");
10149 ca.prototype.ambient = cU("ambient");
10150 ca.prototype.emissive = cU("emissive");
10151 ca.prototype.shininess = cU("shininess");
10152 ca.prototype.specular = cU("specular");
10153 ca.prototype.fill = cU("fill");
10154 ca.prototype.stroke = cU("stroke");
10155 ca.prototype.strokeWeight = cU("strokeWeight");
10156 ca.prototype.smooth = cU("smooth");
10157 ca.prototype.noSmooth = cU("noSmooth");
10158 ca.prototype.point = cU("point");
10159 ca.prototype.vertex = cU("vertex");
10160 ca.prototype.endShape = cU("endShape");
10161 ca.prototype.bezierVertex = cU("bezierVertex");
10162 ca.prototype.curveVertex = cU("curveVertex");
10163 ca.prototype.curve = cU("curve");
10164 ca.prototype.line = cU("line");
10165 ca.prototype.bezier = cU("bezier");
10166 ca.prototype.rect = cU("rect");
10167 ca.prototype.ellipse = cU("ellipse");
10168 ca.prototype.background = cU("background");
10169 ca.prototype.image = cU("image");
10170 ca.prototype.textWidth = cU("textWidth");
10171 ca.prototype.text$line = cU("text$line");
10172 ca.prototype.$ensureContext = cU("$ensureContext");
10173 ca.prototype.$newPMatrix = cU("$newPMatrix");
10174 ca.prototype.size = function(ea, ec, eb) {
10175 cL(eb === 2 ? "3D" : "2D");
10176 cW.size(ea, ec, eb)
10177 };
10178 ca.prototype.$init = G;
10179 bR.prototype.$init = function() {
10180 cW.size(cW.width, cW.height);
10181 d8.lineCap = "round";
10182 cW.noSmooth();
10183 cW.disableContextMenu()
10184 };
10185 bB.prototype.$init = function() {
10186 cW.use3DContext = true;
10187 cW.disableContextMenu()
10188 };
10189 ds.prototype.$ensureContext = function() {
10190 return d8
10191 };
10192
10193 function dy(eb, ed) {
10194 var ec = eb,
10195 ea = 0,
10196 ee = 0;
10197 cW.pmouseX = cW.mouseX;
10198 cW.pmouseY = cW.mouseY;
10199 if (ec.offsetParent) {
10200 do {
10201 ea += ec.offsetLeft;
10202 ee += ec.offsetTop
10203 } while (!!(ec = ec.offsetParent))
10204 }
10205 ec = eb;
10206 do {
10207 ea -= ec.scrollLeft || 0;
10208 ee -= ec.scrollTop || 0
10209 } while (!!(ec = ec.parentNode));
10210 ea += ad;
10211 ee += dp;
10212 ea += aU;
10213 ee += bX;
10214 ea += D.pageXOffset;
10215 ee += D.pageYOffset;
10216 return {
10217 X: ea,
10218 Y: ee
10219 }
10220 }
10221
10222 function aI(ea, eb) {
10223 var ec = dy(ea, eb);
10224 cW.mouseX = eb.pageX - ec.X;
10225 cW.mouseY = eb.pageY - ec.Y
10226 }
10227
10228 function cu(eb) {
10229 var ed = dy(eb.changedTouches[0].target, eb.changedTouches[0]),
10230 ea;
10231 for (ea = 0; ea < eb.touches.length; ea++) {
10232 var ef = eb.touches[ea];
10233 ef.offsetX = ef.pageX - ed.X;
10234 ef.offsetY = ef.pageY - ed.Y
10235 }
10236 for (ea = 0; ea < eb.targetTouches.length; ea++) {
10237 var ec = eb.targetTouches[ea];
10238 ec.offsetX = ec.pageX - ed.X;
10239 ec.offsetY = ec.pageY - ed.Y
10240 }
10241 for (ea = 0; ea < eb.changedTouches.length; ea++) {
10242 var ee = eb.changedTouches[ea];
10243 ee.offsetX = ee.pageX - ed.X;
10244 ee.offsetY = ee.pageY - ed.Y
10245 }
10246 return eb
10247 }
10248 bO(ae, "touchstart", function(ec) {
10249 ae.setAttribute("style", "-webkit-user-select: none");
10250 ae.setAttribute("onclick", "void(0)");
10251 ae.setAttribute("style", "-webkit-tap-highlight-color:rgba(0,0,0,0)");
10252 for (var eb = 0, ea = au.length; eb < ea; eb++) {
10253 var ed = au[eb].type;
10254 if (ed === "mouseout" || ed === "mousemove" || ed === "mousedown" || ed === "mouseup" || ed === "DOMMouseScroll" || ed === "mousewheel" || ed === "touchstart") {
10255 de(au[eb])
10256 }
10257 }
10258 if (cW.touchStart !== t || cW.touchMove !== t || cW.touchEnd !== t || cW.touchCancel !== t) {
10259 bO(ae, "touchstart", function(ee) {
10260 if (cW.touchStart !== t) {
10261 ee = cu(ee);
10262 cW.touchStart(ee)
10263 }
10264 });
10265 bO(ae, "touchmove", function(ee) {
10266 if (cW.touchMove !== t) {
10267 ee.preventDefault();
10268 ee = cu(ee);
10269 cW.touchMove(ee)
10270 }
10271 });
10272 bO(ae, "touchend", function(ee) {
10273 if (cW.touchEnd !== t) {
10274 ee = cu(ee);
10275 cW.touchEnd(ee)
10276 }
10277 });
10278 bO(ae, "touchcancel", function(ee) {
10279 if (cW.touchCancel !== t) {
10280 ee = cu(ee);
10281 cW.touchCancel(ee)
10282 }
10283 })
10284 } else {
10285 bO(ae, "touchstart", function(ee) {
10286 aI(ae, ee.touches[0]);
10287 cW.__mousePressed = true;
10288 cW.mouseDragging = false;
10289 cW.mouseButton = 37;
10290 if (typeof cW.mousePressed === "function") {
10291 cW.mousePressed()
10292 }
10293 });
10294 bO(ae, "touchmove", function(ee) {
10295 ee.preventDefault();
10296 aI(ae, ee.touches[0]);
10297 if (typeof cW.mouseMoved === "function" && !cW.__mousePressed) {
10298 cW.mouseMoved()
10299 }
10300 if (typeof cW.mouseDragged === "function" && cW.__mousePressed) {
10301 cW.mouseDragged();
10302 cW.mouseDragging = true
10303 }
10304 });
10305 bO(ae, "touchend", function(ee) {
10306 cW.__mousePressed = false;
10307 if (typeof cW.mouseClicked === "function" && !cW.mouseDragging) {
10308 cW.mouseClicked()
10309 }
10310 if (typeof cW.mouseReleased === "function") {
10311 cW.mouseReleased()
10312 }
10313 })
10314 }
10315 ae.dispatchEvent(ec)
10316 });
10317 (function() {
10318 var ea = true,
10319 eb = function(ec) {
10320 ec.preventDefault();
10321 ec.stopPropagation()
10322 };
10323 cW.disableContextMenu = function() {
10324 if (!ea) {
10325 return
10326 }
10327 bO(ae, "contextmenu", eb);
10328 ea = false
10329 };
10330 cW.enableContextMenu = function() {
10331 if (ea) {
10332 return
10333 }
10334 de({
10335 elem: ae,
10336 type: "contextmenu",
10337 fn: eb
10338 });
10339 ea = true
10340 }
10341 })();
10342 bO(ae, "mousemove", function(ea) {
10343 aI(ae, ea);
10344 if (typeof cW.mouseMoved === "function" && !cW.__mousePressed) {
10345 cW.mouseMoved()
10346 }
10347 if (typeof cW.mouseDragged === "function" && cW.__mousePressed) {
10348 cW.mouseDragged();
10349 cW.mouseDragging = true
10350 }
10351 });
10352 bO(ae, "mouseout", function(ea) {
10353 if (typeof cW.mouseOut === "function") {
10354 cW.mouseOut()
10355 }
10356 });
10357 bO(ae, "mouseover", function(ea) {
10358 aI(ae, ea);
10359 if (typeof cW.mouseOver === "function") {
10360 cW.mouseOver()
10361 }
10362 });
10363 ae.onmousedown = function() {
10364 ae.focus();
10365 return false
10366 };
10367 bO(ae, "mousedown", function(ea) {
10368 cW.__mousePressed = true;
10369 cW.mouseDragging = false;
10370 switch (ea.which) {
10371 case 1:
10372 cW.mouseButton = 37;
10373 break;
10374 case 2:
10375 cW.mouseButton = 3;
10376 break;
10377 case 3:
10378 cW.mouseButton = 39;
10379 break
10380 }
10381 if (typeof cW.mousePressed === "function") {
10382 cW.mousePressed()
10383 }
10384 });
10385 bO(ae, "mouseup", function(ea) {
10386 cW.__mousePressed = false;
10387 if (typeof cW.mouseClicked === "function" && !cW.mouseDragging) {
10388 cW.mouseClicked()
10389 }
10390 if (typeof cW.mouseReleased === "function") {
10391 cW.mouseReleased()
10392 }
10393 });
10394 var an = function(ea) {
10395 var eb = 0;
10396 if (ea.wheelDelta) {
10397 eb = ea.wheelDelta / 120;
10398 if (D.opera) {
10399 eb = -eb
10400 }
10401 } else {
10402 if (ea.detail) {
10403 eb = -ea.detail / 3
10404 }
10405 }
10406 cW.mouseScroll = eb;
10407 if (eb && typeof cW.mouseScrolled === "function") {
10408 cW.mouseScrolled()
10409 }
10410 };
10411 bO(d, "DOMMouseScroll", an);
10412 bO(d, "mousewheel", an);
10413 if (!ae.getAttribute("tabindex")) {
10414 ae.setAttribute("tabindex", 0)
10415 }
10416
10417 function dD(eb) {
10418 var ea = eb.which || eb.keyCode;
10419 switch (ea) {
10420 case 13:
10421 return 10;
10422 case 91:
10423 case 93:
10424 case 224:
10425 return 157;
10426 case 57392:
10427 return 17;
10428 case 46:
10429 return 127;
10430 case 45:
10431 return 155
10432 }
10433 return ea
10434 }
10435
10436 function cB(eb) {
10437 var ec = eb.which || eb.keyCode;
10438 var ea = eb.shiftKey || eb.ctrlKey || eb.altKey || eb.metaKey;
10439 switch (ec) {
10440 case 13:
10441 ec = ea ? 13 : 10;
10442 break;
10443 case 8:
10444 ec = ea ? 127 : 8;
10445 break
10446 }
10447 return new bP(ec)
10448 }
10449
10450 function cR(ea) {
10451 if (typeof ea.preventDefault === "function") {
10452 ea.preventDefault()
10453 } else {
10454 if (typeof ea.stopPropagation === "function") {
10455 ea.stopPropagation()
10456 }
10457 }
10458 return false
10459 }
10460
10461 function dG() {
10462 var ea;
10463 for (ea in ag) {
10464 if (ag.hasOwnProperty(ea)) {
10465 cW.__keyPressed = true;
10466 return
10467 }
10468 }
10469 cW.__keyPressed = false
10470 }
10471
10472 function cx() {
10473 cW.__keyPressed = false;
10474 ag = [];
10475 dI = null
10476 }
10477
10478 function bq(ea, eb) {
10479 ag[ea] = eb;
10480 dI = null;
10481 cW.key = eb;
10482 cW.keyCode = ea;
10483 cW.keyPressed();
10484 cW.keyCode = 0;
10485 cW.keyTyped();
10486 dG()
10487 }
10488
10489 function cz(eb) {
10490 var ea = dD(eb);
10491 if (ea === 127) {
10492 bq(ea, new bP(127));
10493 return
10494 }
10495 if (dX.indexOf(ea) < 0) {
10496 dI = ea;
10497 return
10498 }
10499 var ec = new bP(65535);
10500 cW.key = ec;
10501 cW.keyCode = ea;
10502 ag[ea] = ec;
10503 cW.keyPressed();
10504 dI = null;
10505 dG();
10506 return cR(eb)
10507 }
10508
10509 function dv(eb) {
10510 if (dI === null) {
10511 return
10512 }
10513 var ea = dI,
10514 ec = cB(eb);
10515 bq(ea, ec);
10516 return cR(eb)
10517 }
10518
10519 function cp(eb) {
10520 var ea = dD(eb),
10521 ec = ag[ea];
10522 if (ec === t) {
10523 return
10524 }
10525 cW.key = ec;
10526 cW.keyCode = ea;
10527 cW.keyReleased();
10528 delete ag[ea];
10529 dG()
10530 }
10531 if (!cV) {
10532 if (ba instanceof F.Sketch) {
10533 cQ = ba
10534 } else {
10535 if (typeof ba === "function") {
10536 cQ = new F.Sketch(ba)
10537 } else {
10538 if (!ba) {
10539 cQ = new F.Sketch(function() {})
10540 } else {
10541 cQ = F.compile(ba)
10542 }
10543 }
10544 }
10545 cW.externals.sketch = cQ;
10546 cL();
10547 ae.onfocus = function() {
10548 cW.focused = true
10549 };
10550 ae.onblur = function() {
10551 cW.focused = false;
10552 if (!cQ.options.globalKeyEvents) {
10553 cx()
10554 }
10555 };
10556 if (cQ.options.pauseOnBlur) {
10557 bO(D, "focus", function() {
10558 if (aC) {
10559 cW.loop()
10560 }
10561 });
10562 bO(D, "blur", function() {
10563 if (aC && ax) {
10564 cW.noLoop();
10565 aC = true
10566 }
10567 cx()
10568 })
10569 }
10570 var aV = cQ.options.globalKeyEvents ? D : ae;
10571 bO(aV, "keydown", cz);
10572 bO(aV, "keypress", dv);
10573 bO(aV, "keyup", cp);
10574 for (var c4 in F.lib) {
10575 if (F.lib.hasOwnProperty(c4)) {
10576 if (F.lib[c4].hasOwnProperty("attach")) {
10577 F.lib[c4].attach(cW)
10578 } else {
10579 if (F.lib[c4] instanceof Function) {
10580 F.lib[c4].call(this)
10581 }
10582 }
10583 }
10584 }
10585 var dB = 100;
10586 var b6 = function(ed) {
10587 if (!(cQ.imageCache.pending || H.preloading.pending(dB))) {
10588 if (D.opera) {
10589 var ec, eb, ea = cQ.imageCache.operaCache;
10590 for (ec in ea) {
10591 if (ea.hasOwnProperty(ec)) {
10592 eb = ea[ec];
10593 if (eb !== null) {
10594 d.body.removeChild(eb)
10595 }
10596 delete ea[ec]
10597 }
10598 }
10599 }
10600 cQ.attach(ed, g);
10601 cQ.onLoad(ed);
10602 if (ed.setup) {
10603 ed.setup();
10604 ed.resetMatrix();
10605 cQ.onSetup()
10606 }
10607 T();
10608 if (ed.draw) {
10609 if (!aC) {
10610 ed.redraw()
10611 } else {
10612 ed.loop()
10613 }
10614 }
10615 } else {
10616 D.setTimeout(function() {
10617 b6(ed)
10618 }, dB)
10619 }
10620 };
10621 a(this);
10622 b6(cW)
10623 } else {
10624 cQ = new F.Sketch;
10625 cL();
10626 cW.size = function(ea, ec, eb) {
10627 if (eb && eb === 2) {
10628 cL("3D")
10629 } else {
10630 cL("2D")
10631 }
10632 cW.size(ea, ec, eb)
10633 }
10634 }
10635 };
10636 F.debug = s;
10637 F.prototype = g;
10638
10639 function u() {
10640 var R = ["abs", "acos", "alpha", "ambient", "ambientLight", "append", "applyMatrix", "arc", "arrayCopy", "asin", "atan", "atan2", "background", "beginCamera", "beginDraw", "beginShape", "bezier", "bezierDetail", "bezierPoint", "bezierTangent", "bezierVertex", "binary", "blend", "blendColor", "blit_resize", "blue", "box", "breakShape", "brightness", "camera", "ceil", "Character", "color", "colorMode", "concat", "constrain", "copy", "cos", "createFont", "createGraphics", "createImage", "cursor", "curve", "curveDetail", "curvePoint", "curveTangent", "curveTightness", "curveVertex", "day", "degrees", "directionalLight", "disableContextMenu", "dist", "draw", "ellipse", "ellipseMode", "emissive", "enableContextMenu", "endCamera", "endDraw", "endShape", "exit", "exp", "expand", "externals", "fill", "filter", "floor", "focused", "frameCount", "frameRate", "frustum", "get", "glyphLook", "glyphTable", "green", "height", "hex", "hint", "hour", "hue", "image", "imageMode", "intersect", "join", "key", "keyCode", "keyPressed", "keyReleased", "keyTyped", "lerp", "lerpColor", "lightFalloff", "lights", "lightSpecular", "line", "link", "loadBytes", "loadFont", "loadGlyphs", "loadImage", "loadPixels", "loadShape", "loadXML", "loadStrings", "log", "loop", "mag", "map", "match", "matchAll", "max", "millis", "min", "minute", "mix", "modelX", "modelY", "modelZ", "modes", "month", "mouseButton", "mouseClicked", "mouseDragged", "mouseMoved", "mouseOut", "mouseOver", "mousePressed", "mouseReleased", "mouseScroll", "mouseScrolled", "mouseX", "mouseY", "name", "nf", "nfc", "nfp", "nfs", "noCursor", "noFill", "noise", "noiseDetail", "noiseSeed", "noLights", "noLoop", "norm", "normal", "noSmooth", "noStroke", "noTint", "ortho", "param", "parseBoolean", "parseByte", "parseChar", "parseFloat", "parseInt", "peg", "perspective", "PImage", "pixels", "PMatrix2D", "PMatrix3D", "PMatrixStack", "pmouseX", "pmouseY", "point", "pointLight", "popMatrix", "popStyle", "pow", "print", "printCamera", "println", "printMatrix", "printProjection", "PShape", "PShapeSVG", "pushMatrix", "pushStyle", "quad", "radians", "random", "Random", "randomSeed", "rect", "rectMode", "red", "redraw", "requestImage", "resetMatrix", "reverse", "rotate", "rotateX", "rotateY", "rotateZ", "round", "saturation", "save", "saveFrame", "saveStrings", "scale", "screenX", "screenY", "screenZ", "second", "set", "setup", "shape", "shapeMode", "shared", "shearX", "shearY", "shininess", "shorten", "sin", "size", "smooth", "sort", "specular", "sphere", "sphereDetail", "splice", "split", "splitTokens", "spotLight", "sq", "sqrt", "status", "str", "stroke", "strokeCap", "strokeJoin", "strokeWeight", "subset", "tan", "text", "textAlign", "textAscent", "textDescent", "textFont", "textLeading", "textMode", "textSize", "texture", "textureMode", "textWidth", "tint", "toImageData", "touchCancel", "touchEnd", "touchMove", "touchStart", "translate", "transform", "triangle", "trim", "unbinary", "unhex", "updatePixels", "use3DContext", "vertex", "width", "XMLElement", "XML", "year", "__contains", "__equals", "__equalsIgnoreCase", "__frameRate", "__hashCode", "__int_cast", "__instanceof", "__keyPressed", "__mousePressed", "__printStackTrace", "__replace", "__replaceAll", "__replaceFirst", "__toCharArray", "__split", "__codePointAt", "__startsWith", "__endsWith", "__matches"];
10641 var P = {};
10642 var Q, O;
10643 for (Q = 0, O = R.length; Q < O; ++Q) {
10644 P[R[Q]] = null
10645 }
10646 for (var S in F.lib) {
10647 if (F.lib.hasOwnProperty(S)) {
10648 if (F.lib[S].exports) {
10649 var N = F.lib[S].exports;
10650 for (Q = 0, O = N.length; Q < O; ++Q) {
10651 P[N[Q]] = null
10652 }
10653 }
10654 }
10655 }
10656 return P
10657 }
10658
10659 function c(ar) {
10660 var aX = u();
10661
10662 function aE(bq) {
10663 var bt = [];
10664 var bv = bq.split(/([\{\[\(\)\]\}])/);
10665 var by = bv[0];
10666 var bw = [];
10667 for (var bs = 1; bs < bv.length; bs += 2) {
10668 var bx = bv[bs];
10669 if (bx === "[" || bx === "{" || bx === "(") {
10670 bw.push(by);
10671 by = bx
10672 } else {
10673 if (bx === "]" || bx === "}" || bx === ")") {
10674 var br = bx === "}" ? "A" : bx === ")" ? "B" : "C";
10675 var bu = bt.length;
10676 bt.push(by + bx);
10677 by = bw.pop() + '"' + br + (bu + 1) + '"'
10678 }
10679 }
10680 by += bv[bs + 1]
10681 }
10682 bt.unshift(by);
10683 return bt
10684 }
10685
10686 function aj(br, bq) {
10687 return br.replace(/'(\d+)'/g, function(bt, bs) {
10688 var bu = bq[bs];
10689 if (bu.charAt(0) === "/") {
10690 return bu
10691 }
10692 return /^'((?:[^'\\\n])|(?:\\.[0-9A-Fa-f]*))'$/.test(bu) ? "(new $p.Character(" + bu + "))" : bu
10693 })
10694 }
10695
10696 function aP(bt) {
10697 var bs = /^\s*/.exec(bt),
10698 bq;
10699 if (bs[0].length === bt.length) {
10700 bq = {
10701 left: bs[0],
10702 middle: "",
10703 right: ""
10704 }
10705 } else {
10706 var br = /\s*$/.exec(bt);
10707 bq = {
10708 left: bs[0],
10709 middle: bt.substring(bs[0].length, br.index),
10710 right: br[0]
10711 }
10712 }
10713 bq.untrim = function(bu) {
10714 return this.left + bu + this.right
10715 };
10716 return bq
10717 }
10718
10719 function a6(bq) {
10720 return bq.replace(/^\s+/, "").replace(/\s+$/, "")
10721 }
10722
10723 function av(bs, bt) {
10724 for (var br = 0, bq = bt.length; br < bq; ++br) {
10725 bs[bt[br]] = null
10726 }
10727 return bs
10728 }
10729
10730 function ba(br) {
10731 for (var bq in br) {
10732 if (br.hasOwnProperty(bq)) {
10733 return false
10734 }
10735 }
10736 return true
10737 }
10738
10739 function aQ(bq) {
10740 return bq.substring(2, bq.length - 1)
10741 }
10742 var bg = ar.replace(/\r\n?|\n\r/g, "\n");
10743 var N = [];
10744 var a3 = bg.replace(/("(?:[^"\\\n]|\\.)*")|('(?:[^'\\\n]|\\.)*')|(([\[\(=|&!\^:?]\s*)(\/(?![*\/])(?:[^\/\\\n]|\\.)*\/[gim]*)\b)|(\/\/[^\n]*\n)|(\/\*(?:(?!\*\/)(?:.|\n))*\*\/)/g, function(by, br, bv, bw, bt, bx, bq, bs) {
10745 var bu;
10746 if (br || bv) {
10747 bu = N.length;
10748 N.push(by);
10749 return "'" + bu + "'"
10750 }
10751 if (bw) {
10752 bu = N.length;
10753 N.push(bx);
10754 return bt + "'" + bu + "'"
10755 }
10756 return bs !== "" ? " " : "\n"
10757 });
10758 a3 = a3.replace(/__x([0-9A-F]{4})/g, function(br, bq) {
10759 return "__x005F_x" + bq
10760 });
10761 a3 = a3.replace(/\$/g, "__x0024");
10762 var Z;
10763 var aA = a3;
10764 var aa = function(br, bs, bq, bt) {
10765 if (!!bs || !!bt) {
10766 return br
10767 }
10768 Z = true;
10769 return ""
10770 };
10771 do {
10772 Z = false;
10773 aA = aA.replace(/([<]?)<\s*((?:\?|[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*)(?:\[\])*(?:\s+(?:extends|super)\s+[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*)?(?:\s*,\s*(?:\?|[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*)(?:\[\])*(?:\s+(?:extends|super)\s+[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*)?)*)\s*>([=]?)/g, aa)
10774 } while (Z);
10775 var bk = aE(aA);
10776 var al;
10777 var aJ = {},
10778 a9, az = 0;
10779
10780 function bc(br, bq) {
10781 var bs = bk.length;
10782 bk.push(br);
10783 return '"' + bq + bs + '"'
10784 }
10785
10786 function a7() {
10787 return "class" + ++az
10788 }
10789
10790 function bl(br, bs, bq) {
10791 br.classId = bs;
10792 br.scopeId = bq;
10793 aJ[bs] = br
10794 }
10795 var V, S, ap, aV, bi, aZ;
10796 var O = /\b((?:(?:public|private|final|protected|static|abstract)\s+)*)(class|interface)\s+([A-Za-z_$][\w$]*\b)(\s+extends\s+[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*(?:\s*,\s*[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*\b)*)?(\s+implements\s+[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*(?:\s*,\s*[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*\b)*)?\s*("A\d+")/g;
10797 var bb = /\b((?:(?:public|private|final|protected|static|abstract|synchronized)\s+)*)((?!(?:else|new|return|throw|function|public|private|protected)\b)[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*(?:\s*"C\d+")*)\s*([A-Za-z_$][\w$]*\b)\s*("B\d+")(\s*throws\s+[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*(?:\s*,\s*[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*)*)?\s*("A\d+"|;)/g;
10798 var aM = /^((?:(?:public|private|final|protected|static)\s+)*)((?!(?:else|new|return|throw)\b)[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*(?:\s*"C\d+")*)\s*([A-Za-z_$][\w$]*\b)\s*(?:"C\d+"\s*)*([=,]|$)/;
10799 var bm = /\b((?:(?:public|private|final|protected|static|abstract)\s+)*)((?!(?:new|return|throw)\b)[A-Za-z_$][\w$]*\b)\s*("B\d+")(\s*throws\s+[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*(?:\s*,\s*[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*)*)?\s*("A\d+")/g;
10800 var W = /^((?:(?:public|private|final|protected|static)\s+)*)((?!(?:new|return|throw)\b)[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*(?:\s*"C\d+")*)\s*/;
10801 var au = /\bfunction(?:\s+([A-Za-z_$][\w$]*))?\s*("B\d+")\s*("A\d+")/g;
10802
10803 function ae(br) {
10804 var bq = br;
10805 bq = bq.replace(O, function(bs) {
10806 return bc(bs, "E")
10807 });
10808 bq = bq.replace(bb, function(bs) {
10809 return bc(bs, "D")
10810 });
10811 bq = bq.replace(au, function(bs) {
10812 return bc(bs, "H")
10813 });
10814 return bq
10815 }
10816
10817 function bd(bs, br) {
10818 var bq = bs.replace(bm, function(bx, bu, bv, by, bw, bt) {
10819 if (bv !== br) {
10820 return bx
10821 }
10822 return bc(bx, "G")
10823 });
10824 return bq
10825 }
10826
10827 function aH(bq) {
10828 this.name = bq
10829 }
10830 aH.prototype.toString = function() {
10831 return this.name
10832 };
10833
10834 function ao(br, bq) {
10835 this.params = br;
10836 this.methodArgsParam = bq
10837 }
10838 ao.prototype.getNames = function() {
10839 var bs = [];
10840 for (var br = 0, bq = this.params.length; br < bq; ++br) {
10841 bs.push(this.params[br].name)
10842 }
10843 return bs
10844 };
10845 ao.prototype.prependMethodArgs = function(bq) {
10846 if (!this.methodArgsParam) {
10847 return bq
10848 }
10849 return "{\nvar " + this.methodArgsParam.name + " = Array.prototype.slice.call(arguments, " + this.params.length + ");\n" + bq.substring(1)
10850 };
10851 ao.prototype.toString = function() {
10852 if (this.params.length === 0) {
10853 return "()"
10854 }
10855 var bq = "(";
10856 for (var bs = 0, br = this.params.length; bs < br; ++bs) {
10857 bq += this.params[bs] + ", "
10858 }
10859 return bq.substring(0, bq.length - 2) + ")"
10860 };
10861
10862 function aD(bw) {
10863 var bt = a6(bw.substring(1, bw.length - 1));
10864 var bq = [],
10865 bu = null;
10866 if (bt !== "") {
10867 var br = bt.split(",");
10868 for (var bs = 0; bs < br.length; ++bs) {
10869 var bv = /\b([A-Za-z_$][\w$]*\b)(\s*"[ABC][\d]*")*\s*$/.exec(br[bs]);
10870 if (bs === br.length - 1 && br[bs].indexOf("...") >= 0) {
10871 bu = new aH(bv[1]);
10872 break
10873 }
10874 bq.push(new aH(bv[1]))
10875 }
10876 }
10877 return new ao(bq, bu)
10878 }
10879
10880 function aq(bu) {
10881 var bt = bu;
10882 bt = bt.replace(/\bnew\s+([A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*)(?:\s*"C\d+")+\s*("A\d+")/g, function(bw, bv, bx) {
10883 return bx
10884 });
10885 bt = bt.replace(/\bnew\s+([A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*)(?:\s*"B\d+")\s*("A\d+")/g, function(bw, bv, bx) {
10886 return bc(bw, "F")
10887 });
10888 bt = bt.replace(au, function(bv) {
10889 return bc(bv, "H")
10890 });
10891 bt = bt.replace(/\bnew\s+([A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*)\s*("C\d+"(?:\s*"C\d+")*)/g, function(bA, bz, bx) {
10892 var bw = bx.replace(/"C(\d+)"/g, function(bC, bB) {
10893 return bk[bB]
10894 }).replace(/\[\s*\]/g, "[null]").replace(/\s*\]\s*\[\s*/g, ", ");
10895 var by = "{" + bw.substring(1, bw.length - 1) + "}";
10896 var bv = "('" + bz + "', " + bc(by, "A") + ")";
10897 return "$p.createJavaArray" + bc(bv, "B")
10898 });
10899 bt = bt.replace(/(\.\s*length)\s*"B\d+"/g, "$1");
10900 bt = bt.replace(/#([0-9A-Fa-f]{6})\b/g, function(bv, bw) {
10901 return "0xFF" + bw
10902 });
10903 bt = bt.replace(/"B(\d+)"(\s*(?:[\w$']|"B))/g, function(by, bw, bx) {
10904 var bz = bk[bw];
10905 if (!/^\(\s*[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*\s*(?:"C\d+"\s*)*\)$/.test(bz)) {
10906 return by
10907 }
10908 if (/^\(\s*int\s*\)$/.test(bz)) {
10909 return "(int)" + bx
10910 }
10911 var bv = bz.split(/"C(\d+)"/g);
10912 if (bv.length > 1) {
10913 if (!/^\[\s*\]$/.test(bk[bv[1]])) {
10914 return by
10915 }
10916 }
10917 return "" + bx
10918 });
10919 bt = bt.replace(/\(int\)([^,\]\)\}\?\:\*\+\-\/\^\|\%\&\~<\>\=]+)/g, function(bw, bv) {
10920 var bx = aP(bv);
10921 return bx.untrim("__int_cast(" + bx.middle + ")")
10922 });
10923 bt = bt.replace(/\bsuper(\s*"B\d+")/g, "$$superCstr$1").replace(/\bsuper(\s*\.)/g, "$$super$1");
10924 bt = bt.replace(/\b0+((\d*)(?:\.[\d*])?(?:[eE][\-\+]?\d+)?[fF]?)\b/, function(bx, bw, bv) {
10925 if (bw === bv) {
10926 return bx
10927 }
10928 return bv === "" ? "0" + bw : bw
10929 });
10930 bt = bt.replace(/\b(\.?\d+\.?)[fF]\b/g, "$1");
10931 bt = bt.replace(/([^\s])%([^=\s])/g, "$1 % $2");
10932 bt = bt.replace(/\b(frameRate|keyPressed|mousePressed)\b(?!\s*"B)/g, "__$1");
10933 bt = bt.replace(/\b(boolean|byte|char|float|int)\s*"B/g, function(bw, bv) {
10934 return "parse" + bv.substring(0, 1).toUpperCase() + bv.substring(1) + '"B'
10935 });
10936 bt = bt.replace(/\bpixels\b\s*(("C(\d+)")|\.length)?(\s*=(?!=)([^,\]\)\}]+))?/g, function(bw, bA, bv, bz, by, bB) {
10937 if (bv) {
10938 var bx = bk[bz];
10939 if (by) {
10940 return "pixels.setPixel" + bc("(" + bx.substring(1, bx.length - 1) + "," + bB + ")", "B")
10941 }
10942 return "pixels.getPixel" + bc("(" + bx.substring(1, bx.length - 1) + ")", "B")
10943 }
10944 if (bA) {
10945 return "pixels.getLength" + bc("()", "B")
10946 }
10947 if (by) {
10948 return "pixels.set" + bc("(" + bB + ")", "B")
10949 }
10950 return "pixels.toArray" + bc("()", "B")
10951 });
10952 var bs;
10953
10954 function br(bw, bv, bA, by) {
10955 var bx = bk[by];
10956 bs = true;
10957 var bz = aP(bx.substring(1, bx.length - 1));
10958 return "__" + bA + (bz.middle === "" ? bc("(" + bv.replace(/\.\s*$/, "") + ")", "B") : bc("(" + bv.replace(/\.\s*$/, "") + "," + bz.middle + ")", "B"))
10959 }
10960 do {
10961 bs = false;
10962 bt = bt.replace(/((?:'\d+'|\b[A-Za-z_$][\w$]*\s*(?:"[BC]\d+")*)\s*\.\s*(?:[A-Za-z_$][\w$]*\s*(?:"[BC]\d+"\s*)*\.\s*)*)(replace|replaceAll|replaceFirst|contains|equals|equalsIgnoreCase|hashCode|toCharArray|printStackTrace|split|startsWith|endsWith|codePointAt|matches)\s*"B(\d+)"/g, br)
10963 } while (bs);
10964
10965 function bq(bx, bv, bw) {
10966 bs = true;
10967 return "__instanceof" + bc("(" + bv + ", " + bw + ")", "B")
10968 }
10969 do {
10970 bs = false;
10971 bt = bt.replace(/((?:'\d+'|\b[A-Za-z_$][\w$]*\s*(?:"[BC]\d+")*)\s*(?:\.\s*[A-Za-z_$][\w$]*\s*(?:"[BC]\d+"\s*)*)*)instanceof\s+([A-Za-z_$][\w$]*\s*(?:\.\s*[A-Za-z_$][\w$]*)*)/g, bq)
10972 } while (bs);
10973 bt = bt.replace(/\bthis(\s*"B\d+")/g, "$$constr$1");
10974 return bt
10975 }
10976
10977 function aC(br, bq) {
10978 this.baseInterfaceName = br;
10979 this.body = bq;
10980 bq.owner = this
10981 }
10982 aC.prototype.toString = function() {
10983 return "new (" + this.body + ")"
10984 };
10985
10986 function ai(bs) {
10987 var br = (new RegExp(/\bnew\s*([A-Za-z_$][\w$]*\s*(?:\.\s*[A-Za-z_$][\w$]*)*)\s*"B\d+"\s*"A(\d+)"/)).exec(bs);
10988 var bv = a9,
10989 bu = a7();
10990 a9 = bu;
10991 var bq = br[1] + "$" + bu;
10992 var bt = new aC(bq, V(bk[br[2]], bq, "", "implements " + br[1]));
10993 bl(bt, bu, bv);
10994 a9 = bv;
10995 return bt
10996 }
10997
10998 function af(br, bs, bq) {
10999 this.name = br;
11000 this.params = bs;
11001 this.body = bq
11002 }
11003 af.prototype.toString = function() {
11004 var bs = al;
11005 var bt = av({
11006 "this": null
11007 }, this.params.getNames());
11008 al = function(bu) {
11009 return bt.hasOwnProperty(bu.name) ? bu.name : bs(bu)
11010 };
11011 var br = "function";
11012 if (this.name) {
11013 br += " " + this.name
11014 }
11015 var bq = this.params.prependMethodArgs(this.body.toString());
11016 br += this.params + " " + bq;
11017 al = bs;
11018 return br
11019 };
11020
11021 function aK(br) {
11022 var bq = (new RegExp(/\b([A-Za-z_$][\w$]*)\s*"B(\d+)"\s*"A(\d+)"/)).exec(br);
11023 return new af(bq[1] !== "function" ? bq[1] : null, aD(bk[bq[2]]), ap(bk[bq[3]]))
11024 }
11025
11026 function ad(bq) {
11027 this.members = bq
11028 }
11029 ad.prototype.toString = function() {
11030 var bs = al;
11031 al = function(bu) {
11032 return bu.name === "this" ? "this" : bs(bu)
11033 };
11034 var bq = "";
11035 for (var bt = 0, br = this.members.length; bt < br; ++bt) {
11036 if (this.members[bt].label) {
11037 bq += this.members[bt].label + ": "
11038 }
11039 bq += this.members[bt].value.toString() + ", "
11040 }
11041 al = bs;
11042 return bq.substring(0, bq.length - 2)
11043 };
11044
11045 function aF(bt) {
11046 var bq = bt.split(",");
11047 for (var bs = 0; bs < bq.length; ++bs) {
11048 var br = bq[bs].indexOf(":");
11049 if (br < 0) {
11050 bq[bs] = {
11051 value: aZ(bq[bs])
11052 }
11053 } else {
11054 bq[bs] = {
11055 label: a6(bq[bs].substring(0, br)),
11056 value: aZ(a6(bq[bs].substring(br + 1)))
11057 }
11058 }
11059 }
11060 return new ad(bq)
11061 }
11062
11063 function ay(bs) {
11064 if (bs.charAt(0) === "(" || bs.charAt(0) === "[") {
11065 return bs.charAt(0) + ay(bs.substring(1, bs.length - 1)) + bs.charAt(bs.length - 1)
11066 }
11067 if (bs.charAt(0) === "{") {
11068 if (/^\{\s*(?:[A-Za-z_$][\w$]*|'\d+')\s*:/.test(bs)) {
11069 return "{" + bc(bs.substring(1, bs.length - 1), "I") + "}"
11070 }
11071 return "[" + ay(bs.substring(1, bs.length - 1)) + "]"
11072 }
11073 var br = aP(bs);
11074 var bq = aq(br.middle);
11075 bq = bq.replace(/"[ABC](\d+)"/g, function(bu, bt) {
11076 return ay(bk[bt])
11077 });
11078 return br.untrim(bq)
11079 }
11080
11081 function R(bq) {
11082 return bq.replace(/(\.\s*)?((?:\b[A-Za-z_]|\$)[\w$]*)(\s*\.\s*([A-Za-z_$][\w$]*)(\s*\()?)?/g, function(bt, bv, br, bx, bw, bu) {
11083 if (bv) {
11084 return bt
11085 }
11086 var bs = {
11087 name: br,
11088 member: bw,
11089 callSign: !!bu
11090 };
11091 return al(bs) + (bx === t ? "" : bx)
11092 })
11093 }
11094
11095 function bp(br, bq) {
11096 this.expr = br;
11097 this.transforms = bq
11098 }
11099 bp.prototype.toString = function() {
11100 var bq = this.transforms;
11101 var br = R(this.expr);
11102 return br.replace(/"!(\d+)"/g, function(bt, bs) {
11103 return bq[bs].toString()
11104 })
11105 };
11106 aZ = function(bs) {
11107 var br = [];
11108 var bq = ay(bs);
11109 bq = bq.replace(/"H(\d+)"/g, function(bu, bt) {
11110 br.push(aK(bk[bt]));
11111 return '"!' + (br.length - 1) + '"'
11112 });
11113 bq = bq.replace(/"F(\d+)"/g, function(bu, bt) {
11114 br.push(ai(bk[bt]));
11115 return '"!' + (br.length - 1) + '"'
11116 });
11117 bq = bq.replace(/"I(\d+)"/g, function(bu, bt) {
11118 br.push(aF(bk[bt]));
11119 return '"!' + (br.length - 1) + '"'
11120 });
11121 return new bp(bq, br)
11122 };
11123
11124 function a4(bq, bs, br) {
11125 this.name = bq;
11126 this.value = bs;
11127 this.isDefault = br
11128 }
11129 a4.prototype.toString = function() {
11130 return this.name + " = " + this.value
11131 };
11132
11133 function ak(bu, br) {
11134 var bv = bu.indexOf("=");
11135 var bq, bt, bs;
11136 if (bv < 0) {
11137 bq = bu;
11138 bt = br;
11139 bs = true
11140 } else {
11141 bq = bu.substring(0, bv);
11142 bt = aZ(bu.substring(bv + 1));
11143 bs = false
11144 }
11145 return new a4(a6(bq.replace(/(\s*"C\d+")+/g, "")), bt, bs)
11146 }
11147
11148 function aT(bq) {
11149 if (bq === "int" || bq === "float") {
11150 return "0"
11151 }
11152 if (bq === "boolean") {
11153 return "false"
11154 }
11155 if (bq === "color") {
11156 return "0x00000000"
11157 }
11158 return "null"
11159 }
11160
11161 function aI(br, bq) {
11162 this.definitions = br;
11163 this.varType = bq
11164 }
11165 aI.prototype.getNames = function() {
11166 var bs = [];
11167 for (var br = 0, bq = this.definitions.length; br < bq; ++br) {
11168 bs.push(this.definitions[br].name)
11169 }
11170 return bs
11171 };
11172 aI.prototype.toString = function() {
11173 return "var " + this.definitions.join(",")
11174 };
11175
11176 function ah(bq) {
11177 this.expression = bq
11178 }
11179 ah.prototype.toString = function() {
11180 return this.expression.toString()
11181 };
11182
11183 function bn(bu) {
11184 if (aM.test(bu)) {
11185 var bt = W.exec(bu);
11186 var bs = bu.substring(bt[0].length).split(",");
11187 var bq = aT(bt[2]);
11188 for (var br = 0; br < bs.length; ++br) {
11189 bs[br] = ak(bs[br], bq)
11190 }
11191 return new aI(bs, bt[2])
11192 }
11193 return new ah(aZ(bu))
11194 }
11195
11196 function a1(bq, bs, br) {
11197 this.initStatement = bq;
11198 this.condition = bs;
11199 this.step = br
11200 }
11201 a1.prototype.toString = function() {
11202 return "(" + this.initStatement + "; " + this.condition + "; " + this.step + ")"
11203 };
11204
11205 function aS(br, bq) {
11206 this.initStatement = br;
11207 this.container = bq
11208 }
11209 aS.prototype.toString = function() {
11210 var bq = this.initStatement.toString();
11211 if (bq.indexOf("=") >= 0) {
11212 bq = bq.substring(0, bq.indexOf("="))
11213 }
11214 return "(" + bq + " in " + this.container + ")"
11215 };
11216
11217 function aY(br, bq) {
11218 this.initStatement = br;
11219 this.container = bq
11220 }
11221 aY.iteratorId = 0;
11222 aY.prototype.toString = function() {
11223 var bu = this.initStatement.toString();
11224 var br = "$it" + aY.iteratorId++;
11225 var bt = bu.replace(/^\s*var\s*/, "").split("=")[0];
11226 var bs = "var " + br + " = new $p.ObjectIterator(" + this.container + "), " + bt + " = void(0)";
11227 var bq = br + ".hasNext() && ((" + bt + " = " + br + ".next()) || true)";
11228 return "(" + bs + "; " + bq + ";)"
11229 };
11230
11231 function Y(br) {
11232 var bq;
11233 if (/\bin\b/.test(br)) {
11234 bq = br.substring(1, br.length - 1).split(/\bin\b/g);
11235 return new aS(bn(a6(bq[0])), aZ(bq[1]))
11236 }
11237 if (br.indexOf(":") >= 0 && br.indexOf(";") < 0) {
11238 bq = br.substring(1, br.length - 1).split(":");
11239 return new aY(bn(a6(bq[0])), aZ(bq[1]))
11240 }
11241 bq = br.substring(1, br.length - 1).split(";");
11242 return new a1(bn(a6(bq[0])), aZ(bq[1]), aZ(bq[2]))
11243 }
11244
11245 function a2(bq) {
11246 bq.sort(function(bs, br) {
11247 return br.weight - bs.weight
11248 })
11249 }
11250
11251 function ab(bs, bq, br) {
11252 this.name = bs;
11253 this.body = bq;
11254 this.isStatic = br;
11255 bq.owner = this
11256 }
11257 ab.prototype.toString = function() {
11258 return "" + this.body
11259 };
11260
11261 function an(bs, bq, br) {
11262 this.name = bs;
11263 this.body = bq;
11264 this.isStatic = br;
11265 bq.owner = this
11266 }
11267 an.prototype.toString = function() {
11268 return "" + this.body
11269 };
11270
11271 function T(bs) {
11272 var br = O.exec(bs);
11273 O.lastIndex = 0;
11274 var bt = br[1].indexOf("static") >= 0;
11275 var bq = bk[aQ(br[6])],
11276 bv;
11277 var bw = a9,
11278 bu = a7();
11279 a9 = bu;
11280 if (br[2] === "interface") {
11281 bv = new ab(br[3], S(bq, br[3], br[4]), bt)
11282 } else {
11283 bv = new an(br[3], V(bq, br[3], br[4], br[5]), bt)
11284 }
11285 bl(bv, bu, bw);
11286 a9 = bw;
11287 return bv
11288 }
11289
11290 function ac(bs, bt, bq, br) {
11291 this.name = bs;
11292 this.params = bt;
11293 this.body = bq;
11294 this.isStatic = br
11295 }
11296 ac.prototype.toString = function() {
11297 var bt = av({}, this.params.getNames());
11298 var bs = al;
11299 al = function(bu) {
11300 return bt.hasOwnProperty(bu.name) ? bu.name : bs(bu)
11301 };
11302 var br = this.params.prependMethodArgs(this.body.toString());
11303 var bq = "function " + this.methodId + this.params + " " + br + "\n";
11304 al = bs;
11305 return bq
11306 };
11307
11308 function P(bt) {
11309 var br = bb.exec(bt);
11310 bb.lastIndex = 0;
11311 var bs = br[1].indexOf("static") >= 0;
11312 var bq = br[6] !== ";" ? bk[aQ(br[6])] : "{}";
11313 return new ac(br[3], aD(bk[aQ(br[4])]), ap(bq), bs)
11314 }
11315
11316 function am(bs, br, bq) {
11317 this.definitions = bs;
11318 this.fieldType = br;
11319 this.isStatic = bq
11320 }
11321 am.prototype.getNames = function() {
11322 var bs = [];
11323 for (var br = 0, bq = this.definitions.length; br < bq; ++br) {
11324 bs.push(this.definitions[br].name)
11325 }
11326 return bs
11327 };
11328 am.prototype.toString = function() {
11329 var bx = al({
11330 name: "[this]"
11331 });
11332 if (this.isStatic) {
11333 var bw = this.owner.name;
11334 var bu = [];
11335 for (var bv = 0, bt = this.definitions.length; bv < bt; ++bv) {
11336 var bs = this.definitions[bv];
11337 var bq = bs.name,
11338 by = bw + "." + bq;
11339 var br = "if(" + by + " === void(0)) {\n " + by + " = " + bs.value + "; }\n$p.defineProperty(" + bx + ", '" + bq + "', { get: function(){return " + by + ";}, set: function(val){" + by + " = val;} });\n";
11340 bu.push(br)
11341 }
11342 return bu.join("")
11343 }
11344 return bx + "." + this.definitions.join("; " + bx + ".")
11345 };
11346
11347 function bf(bv) {
11348 var bu = W.exec(bv);
11349 var bq = bu[1].indexOf("static") >= 0;
11350 var bt = bv.substring(bu[0].length).split(/,\s*/g);
11351 var br = aT(bu[2]);
11352 for (var bs = 0; bs < bt.length; ++bs) {
11353 bt[bs] = ak(bt[bs], br)
11354 }
11355 return new am(bt, bu[2], bq)
11356 }
11357
11358 function aN(br, bq) {
11359 this.params = br;
11360 this.body = bq
11361 }
11362 aN.prototype.toString = function() {
11363 var bt = av({}, this.params.getNames());
11364 var br = al;
11365 al = function(bu) {
11366 return bt.hasOwnProperty(bu.name) ? bu.name : br(bu)
11367 };
11368 var bs = "function $constr_" + this.params.params.length + this.params.toString();
11369 var bq = this.params.prependMethodArgs(this.body.toString());
11370 if (!/\$(superCstr|constr)\b/.test(bq)) {
11371 bq = "{\n$superCstr();\n" + bq.substring(1)
11372 }
11373 al = br;
11374 return bs + bq + "\n"
11375 };
11376
11377 function at(bs) {
11378 var bq = (new RegExp(/"B(\d+)"\s*"A(\d+)"/)).exec(bs);
11379 var br = aD(bk[bq[1]]);
11380 return new aN(br, ap(bk[bq[2]]))
11381 }
11382
11383 function aO(bs, bv, bu, bq, bw, bx) {
11384 var bt, br;
11385 this.name = bs;
11386 this.interfacesNames = bv;
11387 this.methodsNames = bu;
11388 this.fields = bq;
11389 this.innerClasses = bw;
11390 this.misc = bx;
11391 for (bt = 0, br = bq.length; bt < br; ++bt) {
11392 bq[bt].owner = this
11393 }
11394 }
11395 aO.prototype.getMembers = function(bx, bq, bv) {
11396 if (this.owner.base) {
11397 this.owner.base.body.getMembers(bx, bq, bv)
11398 }
11399 var bu, bt, bs, br;
11400 for (bu = 0, bs = this.fields.length; bu < bs; ++bu) {
11401 var bz = this.fields[bu].getNames();
11402 for (bt = 0, br = bz.length; bt < br; ++bt) {
11403 bx[bz[bt]] = this.fields[bu]
11404 }
11405 }
11406 for (bu = 0, bs = this.methodsNames.length; bu < bs; ++bu) {
11407 var bw = this.methodsNames[bu];
11408 bq[bw] = true
11409 }
11410 for (bu = 0, bs = this.innerClasses.length; bu < bs; ++bu) {
11411 var by = this.innerClasses[bu];
11412 bv[by.name] = by
11413 }
11414 };
11415 aO.prototype.toString = function() {
11416 function br(bH) {
11417 var bG = 0;
11418 while (bH) {
11419 ++bG;
11420 bH = bH.scope
11421 }
11422 return bG
11423 }
11424 var bA = br(this.owner);
11425 var bB = this.name;
11426 var bx = "";
11427 var bC = "";
11428 var bE = {},
11429 bz = {},
11430 by = {};
11431 this.getMembers(bE, bz, by);
11432 var bw, bu, bv, bt;
11433 if (this.owner.interfaces) {
11434 var bq = [],
11435 bs;
11436 for (bw = 0, bu = this.interfacesNames.length; bw < bu; ++bw) {
11437 if (!this.owner.interfaces[bw]) {
11438 continue
11439 }
11440 bs = al({
11441 name: this.interfacesNames[bw]
11442 });
11443 bq.push(bs);
11444 bx += "$p.extendInterfaceMembers(" + bB + ", " + bs + ");\n"
11445 }
11446 bC += bB + ".$interfaces = [" + bq.join(", ") + "];\n"
11447 }
11448 bC += bB + ".$isInterface = true;\n";
11449 bC += bB + ".$methods = ['" + this.methodsNames.join("', '") + "'];\n";
11450 a2(this.innerClasses);
11451 for (bw = 0, bu = this.innerClasses.length; bw < bu; ++bw) {
11452 var bF = this.innerClasses[bw];
11453 if (bF.isStatic) {
11454 bx += bB + "." + bF.name + " = " + bF + ";\n"
11455 }
11456 }
11457 for (bw = 0, bu = this.fields.length; bw < bu; ++bw) {
11458 var bD = this.fields[bw];
11459 if (bD.isStatic) {
11460 bx += bB + "." + bD.definitions.join(";\n" + bB + ".") + ";\n"
11461 }
11462 }
11463 return "(function() {\nfunction " + bB + "() { throw 'Unable to create the interface'; }\n" + bx + bC + "return " + bB + ";\n})()"
11464 };
11465 S = function(bw, br, bB) {
11466 var bC = bw.substring(1, bw.length - 1);
11467 bC = ae(bC);
11468 bC = bd(bC, br);
11469 var bz = [],
11470 bt = [];
11471 bC = bC.replace(/"([DE])(\d+)"/g, function(bF, bE, bD) {
11472 if (bE === "D") {
11473 bz.push(bD)
11474 } else {
11475 if (bE === "E") {
11476 bt.push(bD)
11477 }
11478 }
11479 return ""
11480 });
11481 var bx = bC.split(/;(?:\s*;)*/g);
11482 var bu;
11483 var bv, bs;
11484 if (bB !== t) {
11485 bu = bB.replace(/^\s*extends\s+(.+?)\s*$/g, "$1").split(/\s*,\s*/g)
11486 }
11487 for (bv = 0, bs = bz.length; bv < bs; ++bv) {
11488 var bq = P(bk[bz[bv]]);
11489 bz[bv] = bq.name
11490 }
11491 for (bv = 0, bs = bx.length - 1; bv < bs; ++bv) {
11492 var bA = aP(bx[bv]);
11493 bx[bv] = bf(bA.middle)
11494 }
11495 var by = bx.pop();
11496 for (bv = 0, bs = bt.length; bv < bs; ++bv) {
11497 bt[bv] = T(bk[bt[bv]])
11498 }
11499 return new aO(br, bu, bz, bx, bt, {
11500 tail: by
11501 })
11502 };
11503
11504 function aB(br, by, bx, bw, bs, bz, bA, bu, bq) {
11505 var bv, bt;
11506 this.name = br;
11507 this.baseClassName = by;
11508 this.interfacesNames = bx;
11509 this.functions = bw;
11510 this.methods = bs;
11511 this.fields = bz;
11512 this.cstrs = bA;
11513 this.innerClasses = bu;
11514 this.misc = bq;
11515 for (bv = 0, bt = bz.length; bv < bt; ++bv) {
11516 bz[bv].owner = this
11517 }
11518 }
11519 aB.prototype.getMembers = function(bx, br, bw) {
11520 if (this.owner.base) {
11521 this.owner.base.body.getMembers(bx, br, bw)
11522 }
11523 var bv, bu, bt, bs;
11524 for (bv = 0, bt = this.fields.length; bv < bt; ++bv) {
11525 var bz = this.fields[bv].getNames();
11526 for (bu = 0, bs = bz.length; bu < bs; ++bu) {
11527 bx[bz[bu]] = this.fields[bv]
11528 }
11529 }
11530 for (bv = 0, bt = this.methods.length; bv < bt; ++bv) {
11531 var bq = this.methods[bv];
11532 br[bq.name] = bq
11533 }
11534 for (bv = 0, bt = this.innerClasses.length; bv < bt; ++bv) {
11535 var by = this.innerClasses[bv];
11536 bw[by.name] = by
11537 }
11538 };
11539 aB.prototype.toString = function() {
11540 function bN(bV) {
11541 var bU = 0;
11542 while (bV) {
11543 ++bU;
11544 bV = bV.scope
11545 }
11546 return bU
11547 }
11548 var bB = bN(this.owner);
11549 var bG = "$this_" + bB;
11550 var bs = this.name;
11551 var bx = "var " + bG + " = this;\n";
11552 var bH = "";
11553 var bz = "";
11554 var bS = {},
11555 bT = {},
11556 bJ = {};
11557 this.getMembers(bS, bT, bJ);
11558 var bR = al;
11559 al = function(bV) {
11560 var bU = bV.name;
11561 if (bU === "this") {
11562 return bV.callSign || !bV.member ? bG + ".$self" : bG
11563 }
11564 if (bS.hasOwnProperty(bU)) {
11565 return bS[bU].isStatic ? bs + "." + bU : bG + "." + bU
11566 }
11567 if (bJ.hasOwnProperty(bU)) {
11568 return bG + "." + bU
11569 }
11570 if (bT.hasOwnProperty(bU)) {
11571 return bT[bU].isStatic ? bs + "." + bU : bG + ".$self." + bU
11572 }
11573 return bR(bV)
11574 };
11575 var bA;
11576 if (this.baseClassName) {
11577 bA = bR({
11578 name: this.baseClassName
11579 });
11580 bx += "var $super = { $upcast: " + bG + " };\n";
11581 bx += "function $superCstr(){" + bA + ".apply($super,arguments);if(!('$self' in $super)) $p.extendClassChain($super)}\n";
11582 bz += bs + ".$base = " + bA + ";\n"
11583 } else {
11584 bx += "function $superCstr(){$p.extendClassChain(" + bG + ")}\n"
11585 } if (this.owner.base) {
11586 bH += "$p.extendStaticMembers(" + bs + ", " + bA + ");\n"
11587 }
11588 var bM, bK, bL, bI;
11589 if (this.owner.interfaces) {
11590 var bw = [],
11591 bq;
11592 for (bM = 0, bK = this.interfacesNames.length; bM < bK; ++bM) {
11593 if (!this.owner.interfaces[bM]) {
11594 continue
11595 }
11596 bq = bR({
11597 name: this.interfacesNames[bM]
11598 });
11599 bw.push(bq);
11600 bH += "$p.extendInterfaceMembers(" + bs + ", " + bq + ");\n"
11601 }
11602 bz += bs + ".$interfaces = [" + bw.join(", ") + "];\n"
11603 }
11604 if (this.functions.length > 0) {
11605 bx += this.functions.join("\n") + "\n"
11606 }
11607 a2(this.innerClasses);
11608 for (bM = 0, bK = this.innerClasses.length; bM < bK; ++bM) {
11609 var bD = this.innerClasses[bM];
11610 if (bD.isStatic) {
11611 bH += bs + "." + bD.name + " = " + bD + ";\n";
11612 bx += bG + "." + bD.name + " = " + bs + "." + bD.name + ";\n"
11613 } else {
11614 bx += bG + "." + bD.name + " = " + bD + ";\n"
11615 }
11616 }
11617 for (bM = 0, bK = this.fields.length; bM < bK; ++bM) {
11618 var br = this.fields[bM];
11619 if (br.isStatic) {
11620 bH += bs + "." + br.definitions.join(";\n" + bs + ".") + ";\n";
11621 for (bL = 0, bI = br.definitions.length; bL < bI; ++bL) {
11622 var bu = br.definitions[bL].name,
11623 by = bs + "." + bu;
11624 bx += "$p.defineProperty(" + bG + ", '" + bu + "', {get: function(){return " + by + "}, set: function(val){" + by + " = val}});\n"
11625 }
11626 } else {
11627 bx += bG + "." + br.definitions.join(";\n" + bG + ".") + ";\n"
11628 }
11629 }
11630 var bC = {};
11631 for (bM = 0, bK = this.methods.length; bM < bK; ++bM) {
11632 var bt = this.methods[bM];
11633 var bP = bC[bt.name];
11634 var bv = bt.name + "$" + bt.params.params.length;
11635 var bF = !!bt.params.methodArgsParam;
11636 if (bP) {
11637 ++bP;
11638 bv += "_" + bP
11639 } else {
11640 bP = 1
11641 }
11642 bt.methodId = bv;
11643 bC[bt.name] = bP;
11644 if (bt.isStatic) {
11645 bH += bt;
11646 bH += "$p.addMethod(" + bs + ", '" + bt.name + "', " + bv + ", " + bF + ");\n";
11647 bx += "$p.addMethod(" + bG + ", '" + bt.name + "', " + bv + ", " + bF + ");\n"
11648 } else {
11649 bx += bt;
11650 bx += "$p.addMethod(" + bG + ", '" + bt.name + "', " + bv + ", " + bF + ");\n"
11651 }
11652 }
11653 bx += a6(this.misc.tail);
11654 if (this.cstrs.length > 0) {
11655 bx += this.cstrs.join("\n") + "\n"
11656 }
11657 bx += "function $constr() {\n";
11658 var bQ = [];
11659 for (bM = 0, bK = this.cstrs.length; bM < bK; ++bM) {
11660 var bO = this.cstrs[bM].params.params.length;
11661 var bE = !!this.cstrs[bM].params.methodArgsParam;
11662 bQ.push("if(arguments.length " + (bE ? ">=" : "===") + " " + bO + ") { $constr_" + bO + ".apply(" + bG + ", arguments); }")
11663 }
11664 if (bQ.length > 0) {
11665 bx += bQ.join(" else ") + " else "
11666 }
11667 bx += "$superCstr();\n}\n";
11668 bx += "$constr.apply(null, arguments);\n";
11669 al = bR;
11670 return "(function() {\nfunction " + bs + "() {\n" + bx + "}\n" + bH + bz + "return " + bs + ";\n})()"
11671 };
11672 V = function(bz, br, bq, bC) {
11673 var bE = bz.substring(1, bz.length - 1);
11674 bE = ae(bE);
11675 bE = bd(bE, br);
11676 var bs = [],
11677 bt = [],
11678 bD = [],
11679 bw = [];
11680 bE = bE.replace(/"([DEGH])(\d+)"/g, function(bH, bG, bF) {
11681 if (bG === "D") {
11682 bs.push(bF)
11683 } else {
11684 if (bG === "E") {
11685 bt.push(bF)
11686 } else {
11687 if (bG === "H") {
11688 bw.push(bF)
11689 } else {
11690 bD.push(bF)
11691 }
11692 }
11693 }
11694 return ""
11695 });
11696 var by = bE.replace(/^(?:\s*;)+/, "").split(/;(?:\s*;)*/g);
11697 var bx, bv;
11698 var bu;
11699 if (bq !== t) {
11700 bx = bq.replace(/^\s*extends\s+([A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*)\s*$/g, "$1")
11701 }
11702 if (bC !== t) {
11703 bv = bC.replace(/^\s*implements\s+(.+?)\s*$/g, "$1").split(/\s*,\s*/g)
11704 }
11705 for (bu = 0; bu < bw.length; ++bu) {
11706 bw[bu] = aK(bk[bw[bu]])
11707 }
11708 for (bu = 0; bu < bs.length; ++bu) {
11709 bs[bu] = P(bk[bs[bu]])
11710 }
11711 for (bu = 0; bu < by.length - 1; ++bu) {
11712 var bB = aP(by[bu]);
11713 by[bu] = bf(bB.middle)
11714 }
11715 var bA = by.pop();
11716 for (bu = 0; bu < bD.length; ++bu) {
11717 bD[bu] = at(bk[bD[bu]])
11718 }
11719 for (bu = 0; bu < bt.length; ++bu) {
11720 bt[bu] = T(bk[bt[bu]])
11721 }
11722 return new aB(br, bx, bv, bw, bs, by, bD, bt, {
11723 tail: bA
11724 })
11725 };
11726
11727 function aw(br, bq) {
11728 this.name = br;
11729 this.body = bq;
11730 bq.owner = this
11731 }
11732 aw.prototype.toString = function() {
11733 return "var " + this.name + " = " + this.body + ";\n$p." + this.name + " = " + this.name + ";\n"
11734 };
11735
11736 function a5(br, bq) {
11737 this.name = br;
11738 this.body = bq;
11739 bq.owner = this
11740 }
11741 a5.prototype.toString = function() {
11742 return "var " + this.name + " = " + this.body + ";\n$p." + this.name + " = " + this.name + ";\n"
11743 };
11744
11745 function bo(bs) {
11746 var br = O.exec(bs);
11747 O.lastIndex = 0;
11748 var bq = bk[aQ(br[6])];
11749 var bv = a9,
11750 bt = a7();
11751 a9 = bt;
11752 var bu;
11753 if (br[2] === "interface") {
11754 bu = new aw(br[3], S(bq, br[3], br[4]))
11755 } else {
11756 bu = new a5(br[3], V(bq, br[3], br[4], br[5]))
11757 }
11758 bl(bu, bt, bv);
11759 a9 = bv;
11760 return bu
11761 }
11762
11763 function aR(br, bs, bq) {
11764 this.name = br;
11765 this.params = bs;
11766 this.body = bq
11767 }
11768 aR.prototype.toString = function() {
11769 var bt = av({}, this.params.getNames());
11770 var bs = al;
11771 al = function(bu) {
11772 return bt.hasOwnProperty(bu.name) ? bu.name : bs(bu)
11773 };
11774 var br = this.params.prependMethodArgs(this.body.toString());
11775 var bq = "function " + this.name + this.params + " " + br + "\n$p." + this.name + " = " + this.name + ";";
11776 al = bs;
11777 return bq
11778 };
11779
11780 function aW(bs) {
11781 var br = bb.exec(bs);
11782 var bq = bb.lastIndex = 0;
11783 return new aR(br[3], aD(bk[aQ(br[4])]), ap(bk[aQ(br[6])]))
11784 }
11785
11786 function ag(bq) {
11787 var br = bq;
11788 br = br.replace(/\b(catch\s*"B\d+"\s*"A\d+")(\s*catch\s*"B\d+"\s*"A\d+")+/g, "$1");
11789 return br
11790 }
11791
11792 function aU(bq, br) {
11793 this.argument = bq;
11794 this.misc = br
11795 }
11796 aU.prototype.toString = function() {
11797 return this.misc.prefix + this.argument.toString()
11798 };
11799
11800 function Q(bq, br) {
11801 this.argument = bq;
11802 this.misc = br
11803 }
11804 Q.prototype.toString = function() {
11805 return this.misc.prefix + this.argument.toString()
11806 };
11807
11808 function ax(bq, br, bs) {
11809 this.name = bq;
11810 this.argument = br;
11811 this.misc = bs
11812 }
11813 ax.prototype.toString = function() {
11814 var bq = this.misc.prefix;
11815 if (this.argument !== t) {
11816 bq += this.argument.toString()
11817 }
11818 return bq
11819 };
11820
11821 function aL(bq) {
11822 this.expr = bq
11823 }
11824 aL.prototype.toString = function() {
11825 return "case " + this.expr + ":"
11826 };
11827
11828 function X(bq) {
11829 this.label = bq
11830 }
11831 X.prototype.toString = function() {
11832 return this.label
11833 };
11834 aV = function(by, bz, bs) {
11835 var bD = new RegExp(/\b(catch|for|if|switch|while|with)\s*"B(\d+)"|\b(do|else|finally|return|throw|try|break|continue)\b|("[ADEH](\d+)")|\b(case)\s+([^:]+):|\b([A-Za-z_$][\w$]*\s*:)|(;)/g);
11836 var bA = [];
11837 by = ag(by);
11838 var bx = 0,
11839 bt, br;
11840 while ((bt = bD.exec(by)) !== null) {
11841 if (bt[1] !== t) {
11842 var bw = by.lastIndexOf('"B', bD.lastIndex);
11843 var bC = by.substring(bx, bw);
11844 if (bt[1] === "for") {
11845 bA.push(new aU(Y(bk[bt[2]]), {
11846 prefix: bC
11847 }))
11848 } else {
11849 if (bt[1] === "catch") {
11850 bA.push(new Q(aD(bk[bt[2]]), {
11851 prefix: bC
11852 }))
11853 } else {
11854 bA.push(new ax(bt[1], aZ(bk[bt[2]]), {
11855 prefix: bC
11856 }))
11857 }
11858 }
11859 } else {
11860 if (bt[3] !== t) {
11861 bA.push(new ax(bt[3], t, {
11862 prefix: by.substring(bx, bD.lastIndex)
11863 }))
11864 } else {
11865 if (bt[4] !== t) {
11866 br = by.substring(bx, bD.lastIndex - bt[4].length);
11867 if (a6(br).length !== 0) {
11868 continue
11869 }
11870 bA.push(br);
11871 var bu = bt[4].charAt(1),
11872 bq = bt[5];
11873 if (bu === "D") {
11874 bA.push(bz(bk[bq]))
11875 } else {
11876 if (bu === "E") {
11877 bA.push(bs(bk[bq]))
11878 } else {
11879 if (bu === "H") {
11880 bA.push(aK(bk[bq]))
11881 } else {
11882 bA.push(ap(bk[bq]))
11883 }
11884 }
11885 }
11886 } else {
11887 if (bt[6] !== t) {
11888 bA.push(new aL(aZ(a6(bt[7]))))
11889 } else {
11890 if (bt[8] !== t) {
11891 br = by.substring(bx, bD.lastIndex - bt[8].length);
11892 if (a6(br).length !== 0) {
11893 continue
11894 }
11895 bA.push(new X(by.substring(bx, bD.lastIndex)))
11896 } else {
11897 var bB = aP(by.substring(bx, bD.lastIndex - 1));
11898 bA.push(bB.left);
11899 bA.push(bn(bB.middle));
11900 bA.push(bB.right + ";")
11901 }
11902 }
11903 }
11904 }
11905 }
11906 bx = bD.lastIndex
11907 }
11908 var bv = aP(by.substring(bx));
11909 bA.push(bv.left);
11910 if (bv.middle !== "") {
11911 bA.push(bn(bv.middle));
11912 bA.push(";" + bv.right)
11913 }
11914 return bA
11915 };
11916
11917 function be(br) {
11918 var bs = [];
11919 for (var bt = 0, bq = br.length; bt < bq; ++bt) {
11920 var bu = br[bt];
11921 if (bu instanceof aI) {
11922 bs = bs.concat(bu.getNames())
11923 } else {
11924 if (bu instanceof aU && bu.argument.initStatement instanceof aI) {
11925 bs = bs.concat(bu.argument.initStatement.getNames())
11926 } else {
11927 if (bu instanceof ab || bu instanceof an || bu instanceof aw || bu instanceof a5 || bu instanceof aR || bu instanceof af) {
11928 bs.push(bu.name)
11929 }
11930 }
11931 }
11932 }
11933 return av({}, bs)
11934 }
11935
11936 function U(bq) {
11937 this.statements = bq
11938 }
11939 U.prototype.toString = function() {
11940 var bs = be(this.statements);
11941 var br = al;
11942 if (!ba(bs)) {
11943 al = function(bt) {
11944 return bs.hasOwnProperty(bt.name) ? bt.name : br(bt)
11945 }
11946 }
11947 var bq = "{\n" + this.statements.join("") + "\n}";
11948 al = br;
11949 return bq
11950 };
11951 ap = function(br) {
11952 var bq = aP(br.substring(1, br.length - 1));
11953 return new U(aV(bq.middle))
11954 };
11955
11956 function aG(bq) {
11957 this.statements = bq
11958 }
11959 aG.prototype.toString = function() {
11960 var bu = [],
11961 bv = [],
11962 bw;
11963 for (var bt = 0, br = this.statements.length; bt < br; ++bt) {
11964 bw = this.statements[bt];
11965 if (bw instanceof a5 || bw instanceof aw) {
11966 bu.push(bw)
11967 } else {
11968 bv.push(bw)
11969 }
11970 }
11971 a2(bu);
11972 var bs = be(this.statements);
11973 al = function(by) {
11974 var bx = by.name;
11975 if (bs.hasOwnProperty(bx)) {
11976 return bx
11977 }
11978 if (aX.hasOwnProperty(bx) || B.hasOwnProperty(bx) || g.hasOwnProperty(bx)) {
11979 return "$p." + bx
11980 }
11981 return bx
11982 };
11983 var bq = "// this code was autogenerated from PJS\n(function($p) {\n" + bu.join("") + "\n" + bv.join("") + "\n})";
11984 al = null;
11985 return bq
11986 };
11987 bi = function() {
11988 var bq = ae(bk[0]);
11989 bq = bq.replace(/\bimport\s+[^;]+;/g, "");
11990 return new aG(aV(bq, aW, bo))
11991 };
11992
11993 function bj(bq) {
11994 var bu = {};
11995 var bs, by;
11996 for (bs in aJ) {
11997 if (aJ.hasOwnProperty(bs)) {
11998 by = aJ[bs];
11999 var bE = by.scopeId,
12000 br = by.name;
12001 if (bE) {
12002 var bD = aJ[bE];
12003 by.scope = bD;
12004 if (bD.inScope === t) {
12005 bD.inScope = {}
12006 }
12007 bD.inScope[br] = by
12008 } else {
12009 bu[br] = by
12010 }
12011 }
12012 }
12013
12014 function bB(bF, bI) {
12015 var bL = bI.split(".");
12016 var bH = bF.scope,
12017 bK;
12018 while (bH) {
12019 if (bH.hasOwnProperty(bL[0])) {
12020 bK = bH[bL[0]];
12021 break
12022 }
12023 bH = bH.scope
12024 }
12025 if (bK === t) {
12026 bK = bu[bL[0]]
12027 }
12028 for (var bJ = 1, bG = bL.length; bJ < bG && bK; ++bJ) {
12029 bK = bK.inScope[bL[bJ]]
12030 }
12031 return bK
12032 }
12033 for (bs in aJ) {
12034 if (aJ.hasOwnProperty(bs)) {
12035 by = aJ[bs];
12036 var bx = by.body.baseClassName;
12037 if (bx) {
12038 var bA = bB(by, bx);
12039 if (bA) {
12040 by.base = bA;
12041 if (!bA.derived) {
12042 bA.derived = []
12043 }
12044 bA.derived.push(by)
12045 }
12046 }
12047 var bw = by.body.interfacesNames,
12048 bC = [],
12049 bv, bt;
12050 if (bw && bw.length > 0) {
12051 for (bv = 0, bt = bw.length; bv < bt; ++bv) {
12052 var bz = bB(by, bw[bv]);
12053 bC.push(bz);
12054 if (!bz) {
12055 continue
12056 }
12057 if (!bz.derived) {
12058 bz.derived = []
12059 }
12060 bz.derived.push(by)
12061 }
12062 if (bC.length > 0) {
12063 by.interfaces = bC
12064 }
12065 }
12066 }
12067 }
12068 }
12069
12070 function a8(bq) {
12071 var bv = [],
12072 bs = {};
12073 var br, by, bw;
12074 for (br in aJ) {
12075 if (aJ.hasOwnProperty(br)) {
12076 bw = aJ[br];
12077 if (!bw.inScope && !bw.derived) {
12078 bv.push(br);
12079 bw.weight = 0
12080 } else {
12081 var bx = [];
12082 if (bw.inScope) {
12083 for (by in bw.inScope) {
12084 if (bw.inScope.hasOwnProperty(by)) {
12085 bx.push(bw.inScope[by])
12086 }
12087 }
12088 }
12089 if (bw.derived) {
12090 bx = bx.concat(bw.derived)
12091 }
12092 bs[br] = bx
12093 }
12094 }
12095 }
12096
12097 function bz(bB, bD) {
12098 var bA = bs[bB];
12099 if (!bA) {
12100 return false
12101 }
12102 var bC = bA.indexOf(bD);
12103 if (bC < 0) {
12104 return false
12105 }
12106 bA.splice(bC, 1);
12107 if (bA.length > 0) {
12108 return false
12109 }
12110 delete bs[bB];
12111 return true
12112 }
12113 while (bv.length > 0) {
12114 br = bv.shift();
12115 bw = aJ[br];
12116 if (bw.scopeId && bz(bw.scopeId, bw)) {
12117 bv.push(bw.scopeId);
12118 aJ[bw.scopeId].weight = bw.weight + 1
12119 }
12120 if (bw.base && bz(bw.base.classId, bw)) {
12121 bv.push(bw.base.classId);
12122 bw.base.weight = bw.weight + 1
12123 }
12124 if (bw.interfaces) {
12125 var bu, bt;
12126 for (bu = 0, bt = bw.interfaces.length; bu < bt; ++bu) {
12127 if (!bw.interfaces[bu] || !bz(bw.interfaces[bu].classId, bw)) {
12128 continue
12129 }
12130 bv.push(bw.interfaces[bu].classId);
12131 bw.interfaces[bu].weight = bw.weight + 1
12132 }
12133 }
12134 }
12135 }
12136 var bh = bi();
12137 bj(bh);
12138 a8(bh);
12139 var a0 = bh.toString();
12140 a0 = a0.replace(/\s*\n(?:[\t ]*\n)+/g, "\n\n");
12141 a0 = a0.replace(/__x([0-9A-F]{4})/g, function(br, bq) {
12142 return String.fromCharCode(parseInt(bq, 16))
12143 });
12144 return aj(a0, N)
12145 }
12146
12147 function z(O, ad) {
12148 var X = (new RegExp(/\/\*\s*@pjs\s+((?:[^\*]|\*+[^\*\/])*)\*\//g)).exec(O);
12149 if (X && X.length === 2) {
12150 var N = [],
12151 Q = X.splice(1, 2)[0].replace(/\{([\s\S]*?)\}/g, function() {
12152 return function(ag, ah) {
12153 N.push(ah);
12154 return "{" + (N.length - 1) + "}"
12155 }
12156 }()).replace("\n", "").replace("\r", "").split(";");
12157 var W = function(ag) {
12158 return ag.replace(/^\s*["']?/, "").replace(/["']?\s*$/, "")
12159 };
12160 for (var aa = 0, Y = Q.length; aa < Y; aa++) {
12161 var U = Q[aa].split("=");
12162 if (U && U.length === 2) {
12163 var af = W(U[0]),
12164 V = W(U[1]),
12165 ae = [];
12166 if (af === "preload") {
12167 ae = V.split(",");
12168 for (var Z = 0, ab = ae.length; Z < ab; Z++) {
12169 var ac = W(ae[Z]);
12170 ad.imageCache.add(ac)
12171 }
12172 } else {
12173 if (af === "font") {
12174 ae = V.split(",");
12175 for (var R = 0, T = ae.length; R < T; R++) {
12176 var S = W(ae[R]),
12177 P = /^\{(\d*?)\}$/.exec(S);
12178 H.preloading.add(P ? JSON.parse("{" + N[P[1]] + "}") : S)
12179 }
12180 } else {
12181 if (af === "pauseOnBlur") {
12182 ad.options.pauseOnBlur = V === "true"
12183 } else {
12184 if (af === "globalKeyEvents") {
12185 ad.options.globalKeyEvents = V === "true"
12186 } else {
12187 if (af.substring(0, 6) === "param-") {
12188 ad.params[af.substring(6)] = V
12189 } else {
12190 ad.options[af] = V
12191 }
12192 }
12193 }
12194 }
12195 }
12196 }
12197 }
12198 }
12199 return O
12200 }
12201 F.compile = function(N) {
12202 var Q = new F.Sketch;
12203 var O = z(N, Q);
12204 var P = c(O);
12205 Q.sourceCode = P;
12206 return Q
12207 };
12208 var j = function() {
12209 var T = {},
12210 Q = "undefined",
12211 R = "function",
12212 N = !1,
12213 S = !0,
12214 O = 512,
12215 P = "log";
12216 if (typeof tinylog !== Q && typeof tinylog[P] === R) {
12217 T[P] = tinylog[P]
12218 } else {
12219 if (typeof d !== Q && !d.fake) {
12220 (function() {
12221 var ao = d,
12222 am = "div",
12223 ac = "style",
12224 ag = "title",
12225 ab = {
12226 zIndex: 10000,
12227 position: "fixed",
12228 bottom: "0px",
12229 width: "100%",
12230 height: "15%",
12231 fontFamily: "sans-serif",
12232 color: "#ccc",
12233 backgroundColor: "black"
12234 },
12235 ae = {
12236 position: "relative",
12237 fontFamily: "monospace",
12238 overflow: "auto",
12239 height: "100%",
12240 paddingTop: "5px"
12241 },
12242 ai = {
12243 height: "5px",
12244 marginTop: "-5px",
12245 cursor: "n-resize",
12246 backgroundColor: "darkgrey"
12247 },
12248 an = {
12249 position: "absolute",
12250 top: "5px",
12251 right: "20px",
12252 color: "#111",
12253 MozBorderRadius: "4px",
12254 webkitBorderRadius: "4px",
12255 borderRadius: "4px",
12256 cursor: "pointer",
12257 fontWeight: "normal",
12258 textAlign: "center",
12259 padding: "3px 5px",
12260 backgroundColor: "#333",
12261 fontSize: "12px"
12262 },
12263 Y = {
12264 minHeight: "16px"
12265 },
12266 af = {
12267 fontSize: "12px",
12268 margin: "0 8px 0 8px",
12269 maxWidth: "100%",
12270 whiteSpace: "pre-wrap",
12271 overflow: "auto"
12272 },
12273 ad = ao.defaultView,
12274 al = ao.documentElement,
12275 U = al[ac],
12276 W = function() {
12277 var aq = arguments.length,
12278 ap, at, ar;
12279 while (aq--) {
12280 at = arguments[aq--];
12281 ap = arguments[aq][ac];
12282 for (ar in at) {
12283 if (at.hasOwnProperty(ar)) {
12284 ap[ar] = at[ar]
12285 }
12286 }
12287 }
12288 },
12289 aj = function(ar, aq, ap) {
12290 if (ar.addEventListener) {
12291 ar.addEventListener(aq, ap, N)
12292 } else {
12293 if (ar.attachEvent) {
12294 ar.attachEvent("on" + aq, ap)
12295 }
12296 }
12297 return [ar, aq, ap]
12298 },
12299 V = function(ar, aq, ap) {
12300 if (ar.removeEventListener) {
12301 ar.removeEventListener(aq, ap, N)
12302 } else {
12303 if (ar.detachEvent) {
12304 ar.detachEvent("on" + aq, ap)
12305 }
12306 }
12307 },
12308 aa = function(aq) {
12309 var ap = aq.childNodes,
12310 ar = ap.length;
12311 while (ar--) {
12312 aq.removeChild(ap.item(0))
12313 }
12314 },
12315 ak = function(aq, ap) {
12316 return aq.appendChild(ap)
12317 },
12318 ah = function(ap) {
12319 return ao.createElement(ap)
12320 },
12321 Z = function(ap) {
12322 return ao.createTextNode(ap)
12323 },
12324 X = T[P] = function(aE) {
12325 var aw, ax = U.paddingBottom,
12326 ar = ah(am),
12327 aB = ar[ac],
12328 aC = ak(ar, ah(am)),
12329 au = ak(ar, ah(am)),
12330 at = ak(ar, ah(am)),
12331 aD = N,
12332 av = N,
12333 aq = N,
12334 ay = 0,
12335 ap = function() {
12336 U.paddingBottom = ar.clientHeight + "px"
12337 },
12338 aA = function(aF) {
12339 var aG = ad.innerHeight,
12340 aH = aC.clientHeight;
12341 if (aF < 0) {
12342 aF = 0
12343 } else {
12344 if (aF + aH > aG) {
12345 aF = aG - aH
12346 }
12347 }
12348 aB.height = aF / aG * 100 + "%";
12349 ap()
12350 },
12351 az = [aj(ao, "mousemove", function(aF) {
12352 if (aD) {
12353 aA(ad.innerHeight - aF.clientY);
12354 au.scrollTop = aq
12355 }
12356 }), aj(ao, "mouseup", function() {
12357 if (aD) {
12358 aD = aq = N
12359 }
12360 }), aj(aC, "dblclick", function(aF) {
12361 aF.preventDefault();
12362 if (av) {
12363 aA(av);
12364 av = N
12365 } else {
12366 av = ar.clientHeight;
12367 aB.height = "0px"
12368 }
12369 }), aj(aC, "mousedown", function(aF) {
12370 aF.preventDefault();
12371 aD = S;
12372 aq = au.scrollTop
12373 }), aj(aC, "contextmenu", function() {
12374 aD = N
12375 }), aj(at, "click", function() {
12376 aw()
12377 })];
12378 aw = function() {
12379 var aF = az.length;
12380 while (aF--) {
12381 V.apply(T, az[aF])
12382 }
12383 al.removeChild(ar);
12384 U.paddingBottom = ax;
12385 aa(au);
12386 aa(ar);
12387 T[P] = X
12388 };
12389 W(ar, ab, au, ae, aC, ai, at, an);
12390 at[ag] = "Close Log";
12391 ak(at, Z("\u2716"));
12392 aC[ag] = "Double-click to toggle log minimization";
12393 al.insertBefore(ar, al.firstChild);
12394 T[P] = function(aH) {
12395 if (ay === O) {
12396 au.removeChild(au.firstChild)
12397 } else {
12398 ay++
12399 }
12400 var aG = ak(au, ah(am)),
12401 aF = ak(aG, ah(am));
12402 aG[ag] = (new Date).toLocaleTimeString();
12403 W(aG, Y, aF, af);
12404 ak(aF, Z(aH));
12405 au.scrollTop = au.scrollHeight
12406 };
12407 T[P](aE);
12408 ap()
12409 }
12410 })()
12411 } else {
12412 if (typeof print === R) {
12413 T[P] = print
12414 }
12415 }
12416 }
12417 return T
12418 }();
12419 F.logger = j;
12420 F.version = "1.4.1";
12421 F.lib = {};
12422 F.registerLibrary = function(N, O) {
12423 F.lib[N] = O;
12424 if (O.hasOwnProperty("init")) {
12425 O.init(g)
12426 }
12427 };
12428 F.instances = k;
12429 F.getInstanceById = function(N) {
12430 return k[J[N]]
12431 };
12432 F.Sketch = function(N) {
12433 this.attachFunction = N;
12434 this.options = {
12435 pauseOnBlur: false,
12436 globalKeyEvents: false
12437 };
12438 this.onLoad = G;
12439 this.onSetup = G;
12440 this.onPause = G;
12441 this.onLoop = G;
12442 this.onFrameStart = G;
12443 this.onFrameEnd = G;
12444 this.onExit = G;
12445 this.params = {};
12446 this.imageCache = {
12447 pending: 0,
12448 images: {},
12449 operaCache: {},
12450 add: function(P, O) {
12451 if (this.images[P]) {
12452 return
12453 }
12454 if (!n) {
12455 this.images[P] = null
12456 }
12457 if (!O) {
12458 O = new Image;
12459 O.onload = function(R) {
12460 return function() {
12461 R.pending--
12462 }
12463 }(this);
12464 this.pending++;
12465 O.src = P
12466 }
12467 this.images[P] = O;
12468 if (D.opera) {
12469 var Q = d.createElement("div");
12470 Q.appendChild(O);
12471 Q.style.position = "absolute";
12472 Q.style.opacity = 0;
12473 Q.style.width = "1px";
12474 Q.style.height = "1px";
12475 if (!this.operaCache[P]) {
12476 d.body.appendChild(Q);
12477 this.operaCache[P] = Q
12478 }
12479 }
12480 }
12481 };
12482 this.sourceCode = undefined;
12483 this.attach = function(P) {
12484 if (typeof this.attachFunction === "function") {
12485 this.attachFunction(P)
12486 } else {
12487 if (this.sourceCode) {
12488 var O = (new Function("return (" + this.sourceCode + ");"))();
12489 O(P);
12490 this.attachFunction = O
12491 } else {
12492 throw "Unable to attach sketch to the processing instance"
12493 }
12494 }
12495 };
12496 this.toString = function() {
12497 var O;
12498 var P = "((function(Sketch) {\n";
12499 P += "var sketch = new Sketch(\n" + this.sourceCode + ");\n";
12500 for (O in this.options) {
12501 if (this.options.hasOwnProperty(O)) {
12502 var Q = this.options[O];
12503 P += "sketch.options." + O + " = " + (typeof Q === "string" ? '"' + Q + '"' : "" + Q) + ";\n"
12504 }
12505 }
12506 for (O in this.imageCache) {
12507 if (this.options.hasOwnProperty(O)) {
12508 P += 'sketch.imageCache.add("' + O + '");\n'
12509 }
12510 }
12511 P += "return sketch;\n})(Processing.Sketch))";
12512 return P
12513 }
12514 };
12515 var v = function(Q, N) {
12516 var O = [],
12517 U = [],
12518 V = N.length,
12519 S = 0;
12520
12521 function T(W, Y) {
12522 var X = new XMLHttpRequest;
12523 X.onreadystatechange = function() {
12524 if (X.readyState === 4) {
12525 var Z;
12526 if (X.status !== 200 && X.status !== 0) {
12527 Z = "Invalid XHR status " + X.status
12528 } else {
12529 if (X.responseText === "") {
12530 if ("withCredentials" in new XMLHttpRequest && (new XMLHttpRequest).withCredentials === false && D.location.protocol === "file:") {
12531 Z = "XMLHttpRequest failure, possibly due to a same-origin policy violation. You can try loading this page in another browser, or load it from http://localhost using a local webserver. See the Processing.js README for a more detailed explanation of this problem and solutions."
12532 } else {
12533 Z = "File is empty."
12534 }
12535 }
12536 }
12537 Y(X.responseText, Z)
12538 }
12539 };
12540 X.open("GET", W, true);
12541 if (X.overrideMimeType) {
12542 X.overrideMimeType("application/json")
12543 }
12544 X.setRequestHeader("If-Modified-Since", "Fri, 01 Jan 1960 00:00:00 GMT");
12545 X.send(null)
12546 }
12547
12548 function P(X, W) {
12549 function Z(ac, aa) {
12550 O[X] = ac;
12551 ++S;
12552 if (aa) {
12553 U.push(W + " ==> " + aa)
12554 }
12555 if (S === V) {
12556 if (U.length === 0) {
12557 try {
12558 return new F(Q, O.join("\n"))
12559 } catch (ab) {
12560 throw "Processing.js: Unable to execute pjs sketch: " + ab
12561 }
12562 } else {
12563 throw "Processing.js: Unable to load pjs sketch files: " + U.join("\n")
12564 }
12565 }
12566 }
12567 if (W.charAt(0) === "#") {
12568 var Y = d.getElementById(W.substring(1));
12569 if (Y) {
12570 Z(Y.text || Y.textContent)
12571 } else {
12572 Z("", "Unable to load pjs sketch: element with id '" + W.substring(1) + "' was not found")
12573 }
12574 return
12575 }
12576 T(W, Z)
12577 }
12578 for (var R = 0; R < V; ++R) {
12579 P(R, N[R])
12580 }
12581 };
12582 var I = function() {
12583 d.removeEventListener("DOMContentLoaded", I, false);
12584 k = [];
12585 var O = d.getElementsByTagName("canvas"),
12586 U;
12587 for (var T = 0, P = O.length; T < P; T++) {
12588 var W = O[T].getAttribute("data-processing-sources");
12589 if (W === null) {
12590 W = O[T].getAttribute("data-src");
12591 if (W === null) {
12592 W = O[T].getAttribute("datasrc")
12593 }
12594 }
12595 if (W) {
12596 U = W.split(/\s+/g);
12597 for (var S = 0; S < U.length;) {
12598 if (U[S]) {
12599 S++
12600 } else {
12601 U.splice(S, 1)
12602 }
12603 }
12604 v(O[T], U)
12605 }
12606 }
12607 var ac, aa, N, Z, ab = d.getElementsByTagName("script"),
12608 Q = [];
12609 for (ac = ab.length - 1; ac >= 0; ac--) {
12610 Q.push(ab[ac])
12611 }
12612 for (ac = 0, aa = Q.length; ac < aa; ac++) {
12613 var Y = Q[ac];
12614 if (!Y.getAttribute) {
12615 continue
12616 }
12617 var X = Y.getAttribute("type");
12618 if (X && (X.toLowerCase() === "text/processing" || X.toLowerCase() === "application/processing")) {
12619 var V = Y.getAttribute("data-processing-target");
12620 O = t;
12621 if (V) {
12622 O = d.getElementById(V)
12623 } else {
12624 var R = Y.nextSibling;
12625 while (R && R.nodeType !== 1) {
12626 R = R.nextSibling
12627 }
12628 if (R && R.nodeName.toLowerCase() === "canvas") {
12629 O = R
12630 }
12631 } if (O) {
12632 if (Y.getAttribute("src")) {
12633 U = Y.getAttribute("src").split(/\s+/);
12634 v(O, U);
12635 continue
12636 }
12637 N = Y.textContent || Y.text;
12638 Z = new F(O, N)
12639 }
12640 }
12641 }
12642 };
12643 F.reload = function() {
12644 if (k.length > 0) {
12645 for (var N = k.length - 1; N >= 0; N--) {
12646 if (k[N]) {
12647 k[N].exit()
12648 }
12649 }
12650 }
12651 I()
12652 };
12653 F.loadSketchFromSources = v;
12654 F.disableInit = function() {
12655 if (n) {
12656 d.removeEventListener("DOMContentLoaded", I, false)
12657 }
12658 };
12659 if (n) {
12660 D.Processing = F;
12661 d.addEventListener("DOMContentLoaded", I, false)
12662 } else {
12663 this.Processing = F
12664 }
12665})(window, window.document, Math); \ No newline at end of file
diff --git a/Back/ZJW/javascripts/site.js b/Back/ZJW/javascripts/site.js
new file mode 100644
index 0000000..5570df0
--- /dev/null
+++ b/Back/ZJW/javascripts/site.js
@@ -0,0 +1,12 @@
1(function() {
2 var canvas;
3
4 canvas = $('#processing');
5
6 $(window).on("load", function() {
7 canvas.width = window.innerWidth;
8 canvas.height = window.innerHeight;
9 return console.log(canvas.width, canvas.height);
10 });
11
12}).call(this);
diff --git a/Back/ZJW/javascripts/viz.pde b/Back/ZJW/javascripts/viz.pde
new file mode 100644
index 0000000..4084708
--- /dev/null
+++ b/Back/ZJW/javascripts/viz.pde
@@ -0,0 +1,81 @@
1ArrayList particles;
2int maxParticles = 255;
3
4void setup() {
5 size(window.innerWidth, window.innerHeight);
6 particles = new ArrayList();
7 rectMode(CENTER);
8}
9
10void draw() {
11 background(21, 32, 46);
12
13 if(particles.size() < maxParticles) {
14 x = random(0, width);
15 y = random(0, height);
16 PVector l = new PVector(x, y);
17 Particle particle = new Particle(l);
18 particles.add(particle);
19 }
20
21
22 for(int i=0; i<particles.size(); i++) {
23 Particle p = (Particle) particles.get(i);
24 Particle next;
25
26 if(i>1) {
27 next = (Particle) particles.get(i-1);
28 stroke(57,219,255,10);
29 line(next.location.x, next.location.x, p.location.x, p.location.y)
30 }
31
32
33 // Run the particle
34 p.run();
35
36 if(p.isDead()) {
37 particles.remove(i);
38 }
39 }
40}
41
42class Particle {
43 PVector location;
44 PVector velocity;
45 PVector acceleration;
46 float lifespan;
47 float rectSize;
48
49 Particle(PVector l) {
50 location = l.get();
51 velocity = new PVector(random(0,0.05),random(0.02, 0.8));
52 acceleration = new PVector(random(0, 0.01),random(0,0.01));
53 lifespan = 255.0;
54 rectSize = 5;
55 }
56
57 void run() {
58 display();
59 update();
60 }
61
62 void display() {
63 noStroke();
64 fill(73, 219, 255, lifespan/5);
65 rect(location.x, location.y, rectSize, rectSize);
66 }
67
68 void update() {
69 lifespan -= 2;
70 velocity.add(acceleration);
71 location.add(velocity);
72 }
73
74 boolean isDead() {
75 if (lifespan < 0) {
76 return true;
77 } else {
78 return false;
79 }
80 }
81}
diff --git a/Back/ZJW/javascripts/webflow.js b/Back/ZJW/javascripts/webflow.js
new file mode 100644
index 0000000..b048709
--- /dev/null
+++ b/Back/ZJW/javascripts/webflow.js
@@ -0,0 +1,4445 @@
1/*!
2 * ----------------------------------------------------------------------
3 * Webflow: Front-end site library
4 * @license MIT
5 * Other scripts may access this api using an async handler:
6 * var Webflow = Webflow || [];
7 * Webflow.push(readyFunction);
8 * ----------------------------------------------------------------------
9 */
10var Webflow = {
11 w: Webflow
12};
13Webflow.init = function() {
14 'use strict';
15
16 var $ = window.$;
17 var api = {};
18 var modules = {};
19 var primary = [];
20 var secondary = this.w || [];
21 var $win = $(window);
22 var _ = api._ = underscore();
23 var domready = false;
24 var tram = window.tram;
25 var Modernizr = window.Modernizr;
26 var noop = function() {};
27 tram.config.hideBackface = false;
28 tram.config.keepInherited = true;
29
30 /**
31 * Webflow.define() - Define a webflow.js module
32 * @param {string} name
33 * @param {function} factory
34 */
35 api.define = function(name, factory) {
36 var module = modules[name] = factory($, _);
37 if (!module) return;
38 // If running in Webflow app, subscribe to design/preview events
39 if (api.env()) {
40 $.isFunction(module.design) && window.addEventListener('__wf_design', module.design);
41 $.isFunction(module.preview) && window.addEventListener('__wf_preview', module.preview);
42 }
43 // Subscribe to module front-end events
44 $.isFunction(module.destroy) && $win.on('__wf_destroy', module.destroy);
45 // Look for a ready method on module
46 if (module.ready && $.isFunction(module.ready)) {
47 // If domready has already happened, call ready method
48 if (domready) module.ready();
49 // Otherwise push ready method into primary queue
50 else primary.push(module.ready);
51 }
52 };
53
54 /**
55 * Webflow.require() - Load a Webflow.js module
56 * @param {string} name
57 * @return {object}
58 */
59 api.require = function(name) {
60 return modules[name];
61 };
62
63 /**
64 * Webflow.push() - Add a ready handler into secondary queue
65 * @param {function} ready Callback to invoke on domready
66 */
67 api.push = function(ready) {
68 // If domready has already happened, invoke handler
69 if (domready) {
70 $.isFunction(ready) && ready();
71 return;
72 }
73 // Otherwise push into secondary queue
74 secondary.push(ready);
75 };
76
77 /**
78 * Webflow.env() - Get the state of the Webflow app
79 * @param {string} mode [optional]
80 * @return {boolean}
81 */
82 api.env = function(mode) {
83 var designFlag = window.__wf_design;
84 var inApp = typeof designFlag != 'undefined';
85 if (!mode) return inApp;
86 if (mode == 'design') return inApp && designFlag;
87 if (mode == 'preview') return inApp && !designFlag;
88 if (mode == 'slug') return inApp && window.__wf_slug;
89 };
90
91 // Feature detects + browser sniffs ಠ_ಠ
92 var userAgent = navigator.userAgent.toLowerCase();
93 var appVersion = navigator.appVersion.toLowerCase();
94 api.env.touch = ('ontouchstart' in window) || window.DocumentTouch && document instanceof window.DocumentTouch;
95 var chrome = api.env.chrome = (window.chrome || /chrome/.test(userAgent)) && parseInt(appVersion.match(/chrome\/(\d+)\./)[1], 10);
96 var ios = api.env.ios = Modernizr && Modernizr.ios;
97 api.env.safari = /safari/.test(userAgent) && !chrome && !ios;
98
99 /**
100 * Webflow.resize, Webflow.scroll - throttled event proxies
101 */
102 var resizeEvents = 'resize.webflow orientationchange.webflow load.webflow';
103 var scrollEvents = 'scroll.webflow ' + resizeEvents;
104 api.resize = eventProxy($win, resizeEvents);
105 api.scroll = eventProxy($win, scrollEvents);
106 api.redraw = eventProxy();
107
108 // Create a proxy instance for throttled events
109 function eventProxy(target, types) {
110
111 // Set up throttled method (using custom frame-based _.throttle)
112 var handlers = [];
113 var proxy = {};
114 proxy.up = _.throttle(function(evt) {
115 _.each(handlers, function(h) {
116 h(evt);
117 });
118 });
119
120 // Bind events to target
121 if (target && types) target.on(types, proxy.up);
122
123 /**
124 * Add an event handler
125 * @param {function} handler
126 */
127 proxy.on = function(handler) {
128 if (typeof handler != 'function') return;
129 if (_.contains(handlers, handler)) return;
130 handlers.push(handler);
131 };
132
133 /**
134 * Remove an event handler
135 * @param {function} handler
136 */
137 proxy.off = function(handler) {
138 handlers = _.filter(handlers, function(h) {
139 return h !== handler;
140 });
141 };
142 return proxy;
143 }
144
145 // Provide optional IX events to components
146 api.ixEvents = function() {
147 var ix = api.require('ix');
148 return (ix && ix.events) || {
149 reset: noop,
150 intro: noop,
151 outro: noop
152 };
153 };
154
155 // Webflow.location() - Wrap window.location in api
156 api.location = function(url) {
157 window.location = url;
158 };
159
160 // Webflow.app - Designer-specific methods
161 api.app = api.env() ? {} : null;
162 if (api.app) {
163
164 // Trigger redraw for specific elements
165 var Event = window.Event;
166 var redraw = new Event('__wf_redraw');
167 api.app.redrawElement = function(i, el) {
168 el.dispatchEvent(redraw);
169 };
170
171 // Webflow.location - Re-route location change to trigger an event
172 api.location = function(url) {
173 window.dispatchEvent(new CustomEvent('__wf_location', {
174 detail: url
175 }));
176 };
177 }
178
179 // Webflow.ready() - Call primary and secondary handlers
180 api.ready = function() {
181 domready = true;
182 $.each(primary.concat(secondary), function(index, value) {
183 $.isFunction(value) && value();
184 });
185 // Trigger resize
186 api.resize.up();
187 };
188
189 // Webflow.destroy() - Trigger a cleanup event for all modules
190 api.destroy = function() {
191 $win.triggerHandler('__wf_destroy');
192 };
193
194 // Listen for domready
195 $(api.ready);
196
197 /*!
198 * Webflow._ (aka) Underscore.js 1.6.0 (custom build)
199 * _.each
200 * _.map
201 * _.find
202 * _.filter
203 * _.any
204 * _.contains
205 * _.delay
206 * _.defer
207 * _.throttle (webflow)
208 * _.debounce
209 * _.keys
210 * _.has
211 * _.now
212 *
213 * http://underscorejs.org
214 * (c) 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
215 * Underscore may be freely distributed under the MIT license.
216 */
217 function underscore() {
218 var _ = {};
219
220 // Current version.
221 _.VERSION = '1.6.0-Webflow';
222
223 // Establish the object that gets returned to break out of a loop iteration.
224 var breaker = {};
225
226 // Save bytes in the minified (but not gzipped) version:
227 var ArrayProto = Array.prototype,
228 ObjProto = Object.prototype,
229 FuncProto = Function.prototype;
230
231 // Create quick reference variables for speed access to core prototypes.
232 var
233 push = ArrayProto.push,
234 slice = ArrayProto.slice,
235 concat = ArrayProto.concat,
236 toString = ObjProto.toString,
237 hasOwnProperty = ObjProto.hasOwnProperty;
238
239 // All **ECMAScript 5** native function implementations that we hope to use
240 // are declared here.
241 var
242 nativeForEach = ArrayProto.forEach,
243 nativeMap = ArrayProto.map,
244 nativeReduce = ArrayProto.reduce,
245 nativeReduceRight = ArrayProto.reduceRight,
246 nativeFilter = ArrayProto.filter,
247 nativeEvery = ArrayProto.every,
248 nativeSome = ArrayProto.some,
249 nativeIndexOf = ArrayProto.indexOf,
250 nativeLastIndexOf = ArrayProto.lastIndexOf,
251 nativeIsArray = Array.isArray,
252 nativeKeys = Object.keys,
253 nativeBind = FuncProto.bind;
254
255 // Collection Functions
256 // --------------------
257
258 // The cornerstone, an `each` implementation, aka `forEach`.
259 // Handles objects with the built-in `forEach`, arrays, and raw objects.
260 // Delegates to **ECMAScript 5**'s native `forEach` if available.
261 var each = _.each = _.forEach = function(obj, iterator, context) {
262 /* jshint shadow:true */
263 if (obj == null) return obj;
264 if (nativeForEach && obj.forEach === nativeForEach) {
265 obj.forEach(iterator, context);
266 } else if (obj.length === +obj.length) {
267 for (var i = 0, length = obj.length; i < length; i++) {
268 if (iterator.call(context, obj[i], i, obj) === breaker) return;
269 }
270 } else {
271 var keys = _.keys(obj);
272 for (var i = 0, length = keys.length; i < length; i++) {
273 if (iterator.call(context, obj[keys[i]], keys[i], obj) === breaker) return;
274 }
275 }
276 return obj;
277 };
278
279 // Return the results of applying the iterator to each element.
280 // Delegates to **ECMAScript 5**'s native `map` if available.
281 _.map = _.collect = function(obj, iterator, context) {
282 var results = [];
283 if (obj == null) return results;
284 if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);
285 each(obj, function(value, index, list) {
286 results.push(iterator.call(context, value, index, list));
287 });
288 return results;
289 };
290
291 // Return the first value which passes a truth test. Aliased as `detect`.
292 _.find = _.detect = function(obj, predicate, context) {
293 var result;
294 any(obj, function(value, index, list) {
295 if (predicate.call(context, value, index, list)) {
296 result = value;
297 return true;
298 }
299 });
300 return result;
301 };
302
303 // Return all the elements that pass a truth test.
304 // Delegates to **ECMAScript 5**'s native `filter` if available.
305 // Aliased as `select`.
306 _.filter = _.select = function(obj, predicate, context) {
307 var results = [];
308 if (obj == null) return results;
309 if (nativeFilter && obj.filter === nativeFilter) return obj.filter(predicate, context);
310 each(obj, function(value, index, list) {
311 if (predicate.call(context, value, index, list)) results.push(value);
312 });
313 return results;
314 };
315
316 // Determine if at least one element in the object matches a truth test.
317 // Delegates to **ECMAScript 5**'s native `some` if available.
318 // Aliased as `any`.
319 var any = _.some = _.any = function(obj, predicate, context) {
320 predicate || (predicate = _.identity);
321 var result = false;
322 if (obj == null) return result;
323 if (nativeSome && obj.some === nativeSome) return obj.some(predicate, context);
324 each(obj, function(value, index, list) {
325 if (result || (result = predicate.call(context, value, index, list))) return breaker;
326 });
327 return !!result;
328 };
329
330 // Determine if the array or object contains a given value (using `===`).
331 // Aliased as `include`.
332 _.contains = _.include = function(obj, target) {
333 if (obj == null) return false;
334 if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1;
335 return any(obj, function(value) {
336 return value === target;
337 });
338 };
339
340 // Function (ahem) Functions
341 // --------------------
342
343 // Delays a function for the given number of milliseconds, and then calls
344 // it with the arguments supplied.
345 _.delay = function(func, wait) {
346 var args = slice.call(arguments, 2);
347 return setTimeout(function() {
348 return func.apply(null, args);
349 }, wait);
350 };
351
352 // Defers a function, scheduling it to run after the current call stack has
353 // cleared.
354 _.defer = function(func) {
355 return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1)));
356 };
357
358 // Returns a function, that, when invoked, will only be triggered once every
359 // browser animation frame - using tram's requestAnimationFrame polyfill.
360 _.throttle = function(func) {
361 var wait, args, context;
362 return function() {
363 if (wait) return;
364 wait = true;
365 args = arguments;
366 context = this;
367 tram.frame(function() {
368 wait = false;
369 func.apply(context, args);
370 });
371 };
372 };
373
374 // Returns a function, that, as long as it continues to be invoked, will not
375 // be triggered. The function will be called after it stops being called for
376 // N milliseconds. If `immediate` is passed, trigger the function on the
377 // leading edge, instead of the trailing.
378 _.debounce = function(func, wait, immediate) {
379 var timeout, args, context, timestamp, result;
380
381 var later = function() {
382 var last = _.now() - timestamp;
383 if (last < wait) {
384 timeout = setTimeout(later, wait - last);
385 } else {
386 timeout = null;
387 if (!immediate) {
388 result = func.apply(context, args);
389 context = args = null;
390 }
391 }
392 };
393
394 return function() {
395 context = this;
396 args = arguments;
397 timestamp = _.now();
398 var callNow = immediate && !timeout;
399 if (!timeout) {
400 timeout = setTimeout(later, wait);
401 }
402 if (callNow) {
403 result = func.apply(context, args);
404 context = args = null;
405 }
406
407 return result;
408 };
409 };
410
411 // Object Functions
412 // ----------------
413
414 // Retrieve the names of an object's properties.
415 // Delegates to **ECMAScript 5**'s native `Object.keys`
416 _.keys = function(obj) {
417 if (!_.isObject(obj)) return [];
418 if (nativeKeys) return nativeKeys(obj);
419 var keys = [];
420 for (var key in obj)
421 if (_.has(obj, key)) keys.push(key);
422 return keys;
423 };
424
425 // Shortcut function for checking if an object has a given property directly
426 // on itself (in other words, not on a prototype).
427 _.has = function(obj, key) {
428 return hasOwnProperty.call(obj, key);
429 };
430
431 // Is a given variable an object?
432 _.isObject = function(obj) {
433 return obj === Object(obj);
434 };
435
436 // Utility Functions
437 // -----------------
438
439 // A (possibly faster) way to get the current timestamp as an integer.
440 _.now = Date.now || function() {
441 return new Date().getTime();
442 };
443
444 // Export underscore
445 return _;
446 }
447
448 // Export api
449 Webflow = api;
450};
451/*!
452 * ----------------------------------------------------------------------
453 * Webflow: 3rd party plugins
454 */
455/* jshint ignore:start */
456/*!
457 * tram.js v0.8.1-global
458 * Cross-browser CSS3 transitions in JavaScript
459 * https://github.com/bkwld/tram
460 * MIT License
461 */
462window.tram = function(a) {
463 function b(a, b) {
464 var c = new L.Bare;
465 return c.init(a, b)
466 }
467
468 function c(a) {
469 return a.replace(/[A-Z]/g, function(a) {
470 return "-" + a.toLowerCase()
471 })
472 }
473
474 function d(a) {
475 var b = parseInt(a.slice(1), 16),
476 c = b >> 16 & 255,
477 d = b >> 8 & 255,
478 e = 255 & b;
479 return [c, d, e]
480 }
481
482 function e(a, b, c) {
483 return "#" + (1 << 24 | a << 16 | b << 8 | c).toString(16).slice(1)
484 }
485
486 function f() {}
487
488 function g(a, b) {
489 _("Type warning: Expected: [" + a + "] Got: [" + typeof b + "] " + b)
490 }
491
492 function h(a, b, c) {
493 _("Units do not match [" + a + "]: " + b + ", " + c)
494 }
495
496 function i(a, b, c) {
497 if (void 0 !== b && (c = b), void 0 === a) return c;
498 var d = c;
499 return Z.test(a) || !$.test(a) ? d = parseInt(a, 10) : $.test(a) && (d = 1e3 * parseFloat(a)), 0 > d && (d = 0), d === d ? d : c
500 }
501
502 function j(a) {
503 for (var b = -1, c = a ? a.length : 0, d = []; ++b < c;) {
504 var e = a[b];
505 e && d.push(e)
506 }
507 return d
508 }
509 var k = function(a, b, c) {
510 function d(a) {
511 return "object" == typeof a
512 }
513
514 function e(a) {
515 return "function" == typeof a
516 }
517
518 function f() {}
519
520 function g(h, i) {
521 function j() {
522 var a = new k;
523 return e(a.init) && a.init.apply(a, arguments), a
524 }
525
526 function k() {}
527 i === c && (i = h, h = Object), j.Bare = k;
528 var l, m = f[a] = h[a],
529 n = k[a] = j[a] = new f;
530 return n.constructor = j, j.mixin = function(b) {
531 return k[a] = j[a] = g(j, b)[a], j
532 }, j.open = function(a) {
533 if (l = {}, e(a) ? l = a.call(j, n, m, j, h) : d(a) && (l = a), d(l))
534 for (var c in l) b.call(l, c) && (n[c] = l[c]);
535 return e(n.init) || (n.init = h), j
536 }, j.open(i)
537 }
538 return g
539 }("prototype", {}.hasOwnProperty),
540 l = {
541 ease: ["ease",
542 function(a, b, c, d) {
543 var e = (a /= d) * a,
544 f = e * a;
545 return b + c * (-2.75 * f * e + 11 * e * e + -15.5 * f + 8 * e + .25 * a)
546 }
547 ],
548 "ease-in": ["ease-in",
549 function(a, b, c, d) {
550 var e = (a /= d) * a,
551 f = e * a;
552 return b + c * (-1 * f * e + 3 * e * e + -3 * f + 2 * e)
553 }
554 ],
555 "ease-out": ["ease-out",
556 function(a, b, c, d) {
557 var e = (a /= d) * a,
558 f = e * a;
559 return b + c * (.3 * f * e + -1.6 * e * e + 2.2 * f + -1.8 * e + 1.9 * a)
560 }
561 ],
562 "ease-in-out": ["ease-in-out",
563 function(a, b, c, d) {
564 var e = (a /= d) * a,
565 f = e * a;
566 return b + c * (2 * f * e + -5 * e * e + 2 * f + 2 * e)
567 }
568 ],
569 linear: ["linear",
570 function(a, b, c, d) {
571 return c * a / d + b
572 }
573 ],
574 "ease-in-quad": ["cubic-bezier(0.550, 0.085, 0.680, 0.530)",
575 function(a, b, c, d) {
576 return c * (a /= d) * a + b
577 }
578 ],
579 "ease-out-quad": ["cubic-bezier(0.250, 0.460, 0.450, 0.940)",
580 function(a, b, c, d) {
581 return -c * (a /= d) * (a - 2) + b
582 }
583 ],
584 "ease-in-out-quad": ["cubic-bezier(0.455, 0.030, 0.515, 0.955)",
585 function(a, b, c, d) {
586 return (a /= d / 2) < 1 ? c / 2 * a * a + b : -c / 2 * (--a * (a - 2) - 1) + b
587 }
588 ],
589 "ease-in-cubic": ["cubic-bezier(0.550, 0.055, 0.675, 0.190)",
590 function(a, b, c, d) {
591 return c * (a /= d) * a * a + b
592 }
593 ],
594 "ease-out-cubic": ["cubic-bezier(0.215, 0.610, 0.355, 1)",
595 function(a, b, c, d) {
596 return c * ((a = a / d - 1) * a * a + 1) + b
597 }
598 ],
599 "ease-in-out-cubic": ["cubic-bezier(0.645, 0.045, 0.355, 1)",
600 function(a, b, c, d) {
601 return (a /= d / 2) < 1 ? c / 2 * a * a * a + b : c / 2 * ((a -= 2) * a * a + 2) + b
602 }
603 ],
604 "ease-in-quart": ["cubic-bezier(0.895, 0.030, 0.685, 0.220)",
605 function(a, b, c, d) {
606 return c * (a /= d) * a * a * a + b
607 }
608 ],
609 "ease-out-quart": ["cubic-bezier(0.165, 0.840, 0.440, 1)",
610 function(a, b, c, d) {
611 return -c * ((a = a / d - 1) * a * a * a - 1) + b
612 }
613 ],
614 "ease-in-out-quart": ["cubic-bezier(0.770, 0, 0.175, 1)",
615 function(a, b, c, d) {
616 return (a /= d / 2) < 1 ? c / 2 * a * a * a * a + b : -c / 2 * ((a -= 2) * a * a * a - 2) + b
617 }
618 ],
619 "ease-in-quint": ["cubic-bezier(0.755, 0.050, 0.855, 0.060)",
620 function(a, b, c, d) {
621 return c * (a /= d) * a * a * a * a + b
622 }
623 ],
624 "ease-out-quint": ["cubic-bezier(0.230, 1, 0.320, 1)",
625 function(a, b, c, d) {
626 return c * ((a = a / d - 1) * a * a * a * a + 1) + b
627 }
628 ],
629 "ease-in-out-quint": ["cubic-bezier(0.860, 0, 0.070, 1)",
630 function(a, b, c, d) {
631 return (a /= d / 2) < 1 ? c / 2 * a * a * a * a * a + b : c / 2 * ((a -= 2) * a * a * a * a + 2) + b
632 }
633 ],
634 "ease-in-sine": ["cubic-bezier(0.470, 0, 0.745, 0.715)",
635 function(a, b, c, d) {
636 return -c * Math.cos(a / d * (Math.PI / 2)) + c + b
637 }
638 ],
639 "ease-out-sine": ["cubic-bezier(0.390, 0.575, 0.565, 1)",
640 function(a, b, c, d) {
641 return c * Math.sin(a / d * (Math.PI / 2)) + b
642 }
643 ],
644 "ease-in-out-sine": ["cubic-bezier(0.445, 0.050, 0.550, 0.950)",
645 function(a, b, c, d) {
646 return -c / 2 * (Math.cos(Math.PI * a / d) - 1) + b
647 }
648 ],
649 "ease-in-expo": ["cubic-bezier(0.950, 0.050, 0.795, 0.035)",
650 function(a, b, c, d) {
651 return 0 === a ? b : c * Math.pow(2, 10 * (a / d - 1)) + b
652 }
653 ],
654 "ease-out-expo": ["cubic-bezier(0.190, 1, 0.220, 1)",
655 function(a, b, c, d) {
656 return a === d ? b + c : c * (-Math.pow(2, -10 * a / d) + 1) + b
657 }
658 ],
659 "ease-in-out-expo": ["cubic-bezier(1, 0, 0, 1)",
660 function(a, b, c, d) {
661 return 0 === a ? b : a === d ? b + c : (a /= d / 2) < 1 ? c / 2 * Math.pow(2, 10 * (a - 1)) + b : c / 2 * (-Math.pow(2, -10 * --a) + 2) + b
662 }
663 ],
664 "ease-in-circ": ["cubic-bezier(0.600, 0.040, 0.980, 0.335)",
665 function(a, b, c, d) {
666 return -c * (Math.sqrt(1 - (a /= d) * a) - 1) + b
667 }
668 ],
669 "ease-out-circ": ["cubic-bezier(0.075, 0.820, 0.165, 1)",
670 function(a, b, c, d) {
671 return c * Math.sqrt(1 - (a = a / d - 1) * a) + b
672 }
673 ],
674 "ease-in-out-circ": ["cubic-bezier(0.785, 0.135, 0.150, 0.860)",
675 function(a, b, c, d) {
676 return (a /= d / 2) < 1 ? -c / 2 * (Math.sqrt(1 - a * a) - 1) + b : c / 2 * (Math.sqrt(1 - (a -= 2) * a) + 1) + b
677 }
678 ],
679 "ease-in-back": ["cubic-bezier(0.600, -0.280, 0.735, 0.045)",
680 function(a, b, c, d, e) {
681 return void 0 === e && (e = 1.70158), c * (a /= d) * a * ((e + 1) * a - e) + b
682 }
683 ],
684 "ease-out-back": ["cubic-bezier(0.175, 0.885, 0.320, 1.275)",
685 function(a, b, c, d, e) {
686 return void 0 === e && (e = 1.70158), c * ((a = a / d - 1) * a * ((e + 1) * a + e) + 1) + b
687 }
688 ],
689 "ease-in-out-back": ["cubic-bezier(0.680, -0.550, 0.265, 1.550)",
690 function(a, b, c, d, e) {
691 return void 0 === e && (e = 1.70158), (a /= d / 2) < 1 ? c / 2 * a * a * (((e *= 1.525) + 1) * a - e) + b : c / 2 * ((a -= 2) * a * (((e *= 1.525) + 1) * a + e) + 2) + b
692 }
693 ]
694 },
695 m = {
696 "ease-in-back": "cubic-bezier(0.600, 0, 0.735, 0.045)",
697 "ease-out-back": "cubic-bezier(0.175, 0.885, 0.320, 1)",
698 "ease-in-out-back": "cubic-bezier(0.680, 0, 0.265, 1)"
699 },
700 n = document,
701 o = window,
702 p = "bkwld-tram",
703 q = /[\-\.0-9]/g,
704 r = /[A-Z]/,
705 s = "number",
706 t = /^(rgb|#)/,
707 u = /(em|cm|mm|in|pt|pc|px)$/,
708 v = /(em|cm|mm|in|pt|pc|px|%)$/,
709 w = /(deg|rad|turn)$/,
710 x = "unitless",
711 y = /(all|none) 0s ease 0s/,
712 z = /^(width|height)$/,
713 A = " ",
714 B = n.createElement("a"),
715 C = ["Webkit", "Moz", "O", "ms"],
716 D = ["-webkit-", "-moz-", "-o-", "-ms-"],
717 E = function(a) {
718 if (a in B.style) return {
719 dom: a,
720 css: a
721 };
722 var b, c, d = "",
723 e = a.split("-");
724 for (b = 0; b < e.length; b++) d += e[b].charAt(0).toUpperCase() + e[b].slice(1);
725 for (b = 0; b < C.length; b++)
726 if (c = C[b] + d, c in B.style) return {
727 dom: c,
728 css: D[b] + a
729 }
730 },
731 F = b.support = {
732 bind: Function.prototype.bind,
733 transform: E("transform"),
734 transition: E("transition"),
735 backface: E("backface-visibility"),
736 timing: E("transition-timing-function")
737 };
738 if (F.transition) {
739 var G = F.timing.dom;
740 if (B.style[G] = l["ease-in-back"][0], !B.style[G])
741 for (var H in m) l[H][0] = m[H]
742 }
743 var I = b.frame = function() {
744 var a = o.requestAnimationFrame || o.webkitRequestAnimationFrame || o.mozRequestAnimationFrame || o.oRequestAnimationFrame || o.msRequestAnimationFrame;
745 return a && F.bind ? a.bind(o) : function(a) {
746 o.setTimeout(a, 16)
747 }
748 }(),
749 J = b.now = function() {
750 var a = o.performance,
751 b = a && (a.now || a.webkitNow || a.msNow || a.mozNow);
752 return b && F.bind ? b.bind(a) : Date.now || function() {
753 return +new Date
754 }
755 }(),
756 K = k(function(b) {
757 function d(a, b) {
758 var c = j(("" + a).split(A)),
759 d = c[0];
760 b = b || {};
761 var e = X[d];
762 if (!e) return _("Unsupported property: " + d);
763 if (!b.weak || !this.props[d]) {
764 var f = e[0],
765 g = this.props[d];
766 return g || (g = this.props[d] = new f.Bare), g.init(this.$el, c, e, b), g
767 }
768 }
769
770 function e(a, b, c) {
771 if (a) {
772 var e = typeof a;
773 if (b || (this.timer && this.timer.destroy(), this.queue = [], this.active = !1), "number" == e && b) return this.timer = new R({
774 duration: a,
775 context: this,
776 complete: h
777 }), void(this.active = !0);
778 if ("string" == e && b) {
779 switch (a) {
780 case "hide":
781 n.call(this);
782 break;
783 case "stop":
784 k.call(this);
785 break;
786 case "redraw":
787 o.call(this);
788 break;
789 default:
790 d.call(this, a, c && c[1])
791 }
792 return h.call(this)
793 }
794 if ("function" == e) return void a.call(this, this);
795 if ("object" == e) {
796 var f = 0;
797 t.call(this, a, function(a, b) {
798 a.span > f && (f = a.span), a.stop(), a.animate(b)
799 }, function(a) {
800 "wait" in a && (f = i(a.wait, 0))
801 }), s.call(this), f > 0 && (this.timer = new R({
802 duration: f,
803 context: this
804 }), this.active = !0, b && (this.timer.complete = h));
805 var g = this,
806 j = !1,
807 l = {};
808 I(function() {
809 t.call(g, a, function(a) {
810 a.active && (j = !0, l[a.name] = a.nextStyle)
811 }), j && g.$el.css(l)
812 })
813 }
814 }
815 }
816
817 function f(a) {
818 a = i(a, 0), this.active ? this.queue.push({
819 options: a
820 }) : (this.timer = new R({
821 duration: a,
822 context: this,
823 complete: h
824 }), this.active = !0)
825 }
826
827 function g(a) {
828 return this.active ? (this.queue.push({
829 options: a,
830 args: arguments
831 }), void(this.timer.complete = h)) : _("No active transition timer. Use start() or wait() before then().")
832 }
833
834 function h() {
835 if (this.timer && this.timer.destroy(), this.active = !1, this.queue.length) {
836 var a = this.queue.shift();
837 e.call(this, a.options, !0, a.args)
838 }
839 }
840
841 function k(a) {
842 this.timer && this.timer.destroy(), this.queue = [], this.active = !1;
843 var b;
844 "string" == typeof a ? (b = {}, b[a] = 1) : b = "object" == typeof a && null != a ? a : this.props, t.call(this, b, u), s.call(this)
845 }
846
847 function l(a) {
848 k.call(this, a), t.call(this, a, v, w)
849 }
850
851 function m(a) {
852 "string" != typeof a && (a = "block"), this.el.style.display = a
853 }
854
855 function n() {
856 k.call(this), this.el.style.display = "none"
857 }
858
859 function o() {
860 this.el.offsetHeight
861 }
862
863 function q() {
864 k.call(this), a.removeData(this.el, p), this.$el = this.el = null
865 }
866
867 function s() {
868 var a, b, c = [];
869 this.upstream && c.push(this.upstream);
870 for (a in this.props) b = this.props[a], b.active && c.push(b.string);
871 c = c.join(","), this.style !== c && (this.style = c, this.el.style[F.transition.dom] = c)
872 }
873
874 function t(a, b, e) {
875 var f, g, h, i, j = b !== u,
876 k = {};
877 for (f in a) h = a[f], f in Y ? (k.transform || (k.transform = {}), k.transform[f] = h) : (r.test(f) && (f = c(f)), f in X ? k[f] = h : (i || (i = {}), i[f] = h));
878 for (f in k) {
879 if (h = k[f], g = this.props[f], !g) {
880 if (!j) continue;
881 g = d.call(this, f)
882 }
883 b.call(this, g, h)
884 }
885 e && i && e.call(this, i)
886 }
887
888 function u(a) {
889 a.stop()
890 }
891
892 function v(a, b) {
893 a.set(b)
894 }
895
896 function w(a) {
897 this.$el.css(a)
898 }
899
900 function x(a, c) {
901 b[a] = function() {
902 return this.children ? z.call(this, c, arguments) : (this.el && c.apply(this, arguments), this)
903 }
904 }
905
906 function z(a, b) {
907 var c, d = this.children.length;
908 for (c = 0; d > c; c++) a.apply(this.children[c], b);
909 return this
910 }
911 b.init = function(b) {
912 if (this.$el = a(b), this.el = this.$el[0], this.props = {}, this.queue = [], this.style = "", this.active = !1, T.keepInherited && !T.fallback) {
913 var c = V(this.el, "transition");
914 c && !y.test(c) && (this.upstream = c)
915 }
916 F.backface && T.hideBackface && U(this.el, F.backface.css, "hidden")
917 }, x("add", d), x("start", e), x("wait", f), x("then", g), x("next", h), x("stop", k), x("set", l), x("show", m), x("hide", n), x("redraw", o), x("destroy", q)
918 }),
919 L = k(K, function(b) {
920 function c(b, c) {
921 var d = a.data(b, p) || a.data(b, p, new K.Bare);
922 return d.el || d.init(b), c ? d.start(c) : d
923 }
924 b.init = function(b, d) {
925 var e = a(b);
926 if (!e.length) return this;
927 if (1 === e.length) return c(e[0], d);
928 var f = [];
929 return e.each(function(a, b) {
930 f.push(c(b, d))
931 }), this.children = f, this
932 }
933 }),
934 M = k(function(a) {
935 function b() {
936 var a = this.get();
937 this.update("auto");
938 var b = this.get();
939 return this.update(a), b
940 }
941
942 function c(a, b, c) {
943 return void 0 !== b && (c = b), a in l ? a : c
944 }
945
946 function d(a) {
947 var b = /rgba?\((\d+),\s*(\d+),\s*(\d+)/.exec(a);
948 return (b ? e(b[1], b[2], b[3]) : a).replace(/#(\w)(\w)(\w)$/, "#$1$1$2$2$3$3")
949 }
950 var f = {
951 duration: 500,
952 ease: "ease",
953 delay: 0
954 };
955 a.init = function(a, b, d, e) {
956 this.$el = a, this.el = a[0];
957 var g = b[0];
958 d[2] && (g = d[2]), W[g] && (g = W[g]), this.name = g, this.type = d[1], this.duration = i(b[1], this.duration, f.duration), this.ease = c(b[2], this.ease, f.ease), this.delay = i(b[3], this.delay, f.delay), this.span = this.duration + this.delay, this.active = !1, this.nextStyle = null, this.auto = z.test(this.name), this.unit = e.unit || this.unit || T.defaultUnit, this.angle = e.angle || this.angle || T.defaultAngle, T.fallback || e.fallback ? this.animate = this.fallback : (this.animate = this.transition, this.string = this.name + A + this.duration + "ms" + ("ease" != this.ease ? A + l[this.ease][0] : "") + (this.delay ? A + this.delay + "ms" : ""))
959 }, a.set = function(a) {
960 a = this.convert(a, this.type), this.update(a), this.redraw()
961 }, a.transition = function(a) {
962 this.active = !0, a = this.convert(a, this.type), this.auto && ("auto" == this.el.style[this.name] && (this.update(this.get()), this.redraw()), "auto" == a && (a = b.call(this))), this.nextStyle = a
963 }, a.fallback = function(a) {
964 var c = this.el.style[this.name] || this.convert(this.get(), this.type);
965 a = this.convert(a, this.type), this.auto && ("auto" == c && (c = this.convert(this.get(), this.type)), "auto" == a && (a = b.call(this))), this.tween = new Q({
966 from: c,
967 to: a,
968 duration: this.duration,
969 delay: this.delay,
970 ease: this.ease,
971 update: this.update,
972 context: this
973 })
974 }, a.get = function() {
975 return V(this.el, this.name)
976 }, a.update = function(a) {
977 U(this.el, this.name, a)
978 }, a.stop = function() {
979 (this.active || this.nextStyle) && (this.active = !1, this.nextStyle = null, U(this.el, this.name, this.get()));
980 var a = this.tween;
981 a && a.context && a.destroy()
982 }, a.convert = function(a, b) {
983 if ("auto" == a && this.auto) return a;
984 var c, e = "number" == typeof a,
985 f = "string" == typeof a;
986 switch (b) {
987 case s:
988 if (e) return a;
989 if (f && "" === a.replace(q, "")) return +a;
990 c = "number(unitless)";
991 break;
992 case t:
993 if (f) {
994 if ("" === a && this.original) return this.original;
995 if (b.test(a)) return "#" == a.charAt(0) && 7 == a.length ? a : d(a)
996 }
997 c = "hex or rgb string";
998 break;
999 case u:
1000 if (e) return a + this.unit;
1001 if (f && b.test(a)) return a;
1002 c = "number(px) or string(unit)";
1003 break;
1004 case v:
1005 if (e) return a + this.unit;
1006 if (f && b.test(a)) return a;
1007 c = "number(px) or string(unit or %)";
1008 break;
1009 case w:
1010 if (e) return a + this.angle;
1011 if (f && b.test(a)) return a;
1012 c = "number(deg) or string(angle)";
1013 break;
1014 case x:
1015 if (e) return a;
1016 if (f && v.test(a)) return a;
1017 c = "number(unitless) or string(unit or %)"
1018 }
1019 return g(c, a), a
1020 }, a.redraw = function() {
1021 this.el.offsetHeight
1022 }
1023 }),
1024 N = k(M, function(a, b) {
1025 a.init = function() {
1026 b.init.apply(this, arguments), this.original || (this.original = this.convert(this.get(), t))
1027 }
1028 }),
1029 O = k(M, function(a, b) {
1030 a.init = function() {
1031 b.init.apply(this, arguments), this.animate = this.fallback
1032 }, a.get = function() {
1033 return this.$el[this.name]()
1034 }, a.update = function(a) {
1035 this.$el[this.name](a)
1036 }
1037 }),
1038 P = k(M, function(a, b) {
1039 function c(a, b) {
1040 var c, d, e, f, g;
1041 for (c in a) f = Y[c], e = f[0], d = f[1] || c, g = this.convert(a[c], e), b.call(this, d, g, e)
1042 }
1043 a.init = function() {
1044 b.init.apply(this, arguments), this.current || (this.current = {}, Y.perspective && T.perspective && (this.current.perspective = T.perspective, U(this.el, this.name, this.style(this.current)), this.redraw()))
1045 }, a.set = function(a) {
1046 c.call(this, a, function(a, b) {
1047 this.current[a] = b
1048 }), U(this.el, this.name, this.style(this.current)), this.redraw()
1049 }, a.transition = function(a) {
1050 var b = this.values(a);
1051 this.tween = new S({
1052 current: this.current,
1053 values: b,
1054 duration: this.duration,
1055 delay: this.delay,
1056 ease: this.ease
1057 });
1058 var c, d = {};
1059 for (c in this.current) d[c] = c in b ? b[c] : this.current[c];
1060 this.active = !0, this.nextStyle = this.style(d)
1061 }, a.fallback = function(a) {
1062 var b = this.values(a);
1063 this.tween = new S({
1064 current: this.current,
1065 values: b,
1066 duration: this.duration,
1067 delay: this.delay,
1068 ease: this.ease,
1069 update: this.update,
1070 context: this
1071 })
1072 }, a.update = function() {
1073 U(this.el, this.name, this.style(this.current))
1074 }, a.style = function(a) {
1075 var b, c = "";
1076 for (b in a) c += b + "(" + a[b] + ") ";
1077 return c
1078 }, a.values = function(a) {
1079 var b, d = {};
1080 return c.call(this, a, function(a, c, e) {
1081 d[a] = c, void 0 === this.current[a] && (b = 0, ~a.indexOf("scale") && (b = 1), this.current[a] = this.convert(b, e))
1082 }), d
1083 }
1084 }),
1085 Q = k(function(b) {
1086 function c(a) {
1087 1 === n.push(a) && I(g)
1088 }
1089
1090 function g() {
1091 var a, b, c, d = n.length;
1092 if (d)
1093 for (I(g), b = J(), a = d; a--;) c = n[a], c && c.render(b)
1094 }
1095
1096 function i(b) {
1097 var c, d = a.inArray(b, n);
1098 d >= 0 && (c = n.slice(d + 1), n.length = d, c.length && (n = n.concat(c)))
1099 }
1100
1101 function j(a) {
1102 return Math.round(a * o) / o
1103 }
1104
1105 function k(a, b, c) {
1106 return e(a[0] + c * (b[0] - a[0]), a[1] + c * (b[1] - a[1]), a[2] + c * (b[2] - a[2]))
1107 }
1108 var m = {
1109 ease: l.ease[1],
1110 from: 0,
1111 to: 1
1112 };
1113 b.init = function(a) {
1114 this.duration = a.duration || 0, this.delay = a.delay || 0;
1115 var b = a.ease || m.ease;
1116 l[b] && (b = l[b][1]), "function" != typeof b && (b = m.ease), this.ease = b, this.update = a.update || f, this.complete = a.complete || f, this.context = a.context || this, this.name = a.name;
1117 var c = a.from,
1118 d = a.to;
1119 void 0 === c && (c = m.from), void 0 === d && (d = m.to), this.unit = a.unit || "", "number" == typeof c && "number" == typeof d ? (this.begin = c, this.change = d - c) : this.format(d, c), this.value = this.begin + this.unit, this.start = J(), a.autoplay !== !1 && this.play()
1120 }, b.play = function() {
1121 this.active || (this.start || (this.start = J()), this.active = !0, c(this))
1122 }, b.stop = function() {
1123 this.active && (this.active = !1, i(this))
1124 }, b.render = function(a) {
1125 var b, c = a - this.start;
1126 if (this.delay) {
1127 if (c <= this.delay) return;
1128 c -= this.delay
1129 }
1130 if (c < this.duration) {
1131 var d = this.ease(c, 0, 1, this.duration);
1132 return b = this.startRGB ? k(this.startRGB, this.endRGB, d) : j(this.begin + d * this.change), this.value = b + this.unit, void this.update.call(this.context, this.value)
1133 }
1134 b = this.endHex || this.begin + this.change, this.value = b + this.unit, this.update.call(this.context, this.value), this.complete.call(this.context), this.destroy()
1135 }, b.format = function(a, b) {
1136 if (b += "", a += "", "#" == a.charAt(0)) return this.startRGB = d(b), this.endRGB = d(a), this.endHex = a, this.begin = 0, void(this.change = 1);
1137 if (!this.unit) {
1138 var c = b.replace(q, ""),
1139 e = a.replace(q, "");
1140 c !== e && h("tween", b, a), this.unit = c
1141 }
1142 b = parseFloat(b), a = parseFloat(a), this.begin = this.value = b, this.change = a - b
1143 }, b.destroy = function() {
1144 this.stop(), this.context = null, this.ease = this.update = this.complete = f
1145 };
1146 var n = [],
1147 o = 1e3
1148 }),
1149 R = k(Q, function(a) {
1150 a.init = function(a) {
1151 this.duration = a.duration || 0, this.complete = a.complete || f, this.context = a.context, this.play()
1152 }, a.render = function(a) {
1153 var b = a - this.start;
1154 b < this.duration || (this.complete.call(this.context), this.destroy())
1155 }
1156 }),
1157 S = k(Q, function(a, b) {
1158 a.init = function(a) {
1159 this.context = a.context, this.update = a.update, this.tweens = [], this.current = a.current;
1160 var b, c;
1161 for (b in a.values) c = a.values[b], this.current[b] !== c && this.tweens.push(new Q({
1162 name: b,
1163 from: this.current[b],
1164 to: c,
1165 duration: a.duration,
1166 delay: a.delay,
1167 ease: a.ease,
1168 autoplay: !1
1169 }));
1170 this.play()
1171 }, a.render = function(a) {
1172 var b, c, d = this.tweens.length,
1173 e = !1;
1174 for (b = d; b--;) c = this.tweens[b], c.context && (c.render(a), this.current[c.name] = c.value, e = !0);
1175 return e ? void(this.update && this.update.call(this.context)) : this.destroy()
1176 }, a.destroy = function() {
1177 if (b.destroy.call(this), this.tweens) {
1178 var a, c = this.tweens.length;
1179 for (a = c; a--;) this.tweens[a].destroy();
1180 this.tweens = null, this.current = null
1181 }
1182 }
1183 }),
1184 T = b.config = {
1185 defaultUnit: "px",
1186 defaultAngle: "deg",
1187 keepInherited: !1,
1188 hideBackface: !1,
1189 perspective: "",
1190 fallback: !F.transition,
1191 agentTests: []
1192 };
1193 b.fallback = function(a) {
1194 if (!F.transition) return T.fallback = !0;
1195 T.agentTests.push("(" + a + ")");
1196 var b = new RegExp(T.agentTests.join("|"), "i");
1197 T.fallback = b.test(navigator.userAgent)
1198 }, b.fallback("6.0.[2-5] Safari"), b.tween = function(a) {
1199 return new Q(a)
1200 }, b.delay = function(a, b, c) {
1201 return new R({
1202 complete: b,
1203 duration: a,
1204 context: c
1205 })
1206 }, a.fn.tram = function(a) {
1207 return b.call(null, this, a)
1208 };
1209 var U = a.style,
1210 V = a.css,
1211 W = {
1212 transform: F.transform && F.transform.css
1213 },
1214 X = {
1215 color: [N, t],
1216 background: [N, t, "background-color"],
1217 "outline-color": [N, t],
1218 "border-color": [N, t],
1219 "border-top-color": [N, t],
1220 "border-right-color": [N, t],
1221 "border-bottom-color": [N, t],
1222 "border-left-color": [N, t],
1223 "border-width": [M, u],
1224 "border-top-width": [M, u],
1225 "border-right-width": [M, u],
1226 "border-bottom-width": [M, u],
1227 "border-left-width": [M, u],
1228 "border-spacing": [M, u],
1229 "letter-spacing": [M, u],
1230 margin: [M, u],
1231 "margin-top": [M, u],
1232 "margin-right": [M, u],
1233 "margin-bottom": [M, u],
1234 "margin-left": [M, u],
1235 padding: [M, u],
1236 "padding-top": [M, u],
1237 "padding-right": [M, u],
1238 "padding-bottom": [M, u],
1239 "padding-left": [M, u],
1240 "outline-width": [M, u],
1241 opacity: [M, s],
1242 top: [M, v],
1243 right: [M, v],
1244 bottom: [M, v],
1245 left: [M, v],
1246 "font-size": [M, v],
1247 "text-indent": [M, v],
1248 "word-spacing": [M, v],
1249 width: [M, v],
1250 "min-width": [M, v],
1251 "max-width": [M, v],
1252 height: [M, v],
1253 "min-height": [M, v],
1254 "max-height": [M, v],
1255 "line-height": [M, x],
1256 "scroll-top": [O, s, "scrollTop"],
1257 "scroll-left": [O, s, "scrollLeft"]
1258 },
1259 Y = {};
1260 F.transform && (X.transform = [P], Y = {
1261 x: [v, "translateX"],
1262 y: [v, "translateY"],
1263 rotate: [w],
1264 rotateX: [w],
1265 rotateY: [w],
1266 scale: [s],
1267 scaleX: [s],
1268 scaleY: [s],
1269 skew: [w],
1270 skewX: [w],
1271 skewY: [w]
1272 }), F.transform && F.backface && (Y.z = [v, "translateZ"], Y.rotateZ = [w], Y.scaleZ = [s], Y.perspective = [u]);
1273 var Z = /ms/,
1274 $ = /s|\./,
1275 _ = function() {
1276 var a = "warn",
1277 b = window.console;
1278 return b && b[a] ? function(c) {
1279 b[a](c)
1280 } : f
1281 }();
1282 return a.tram = b
1283}(window.jQuery);
1284/*!
1285 * jQuery-ajaxTransport-XDomainRequest - v1.0.1 - 2013-10-17
1286 * https://github.com/MoonScript/jQuery-ajaxTransport-XDomainRequest
1287 * Copyright (c) 2013 Jason Moon (@JSONMOON)
1288 * Licensed MIT (/blob/master/LICENSE.txt)
1289 */
1290(function($) {
1291 if (!$.support.cors && $.ajaxTransport && window.XDomainRequest) {
1292 var n = /^https?:\/\//i;
1293 var o = /^get|post$/i;
1294 var p = new RegExp('^' + location.protocol, 'i');
1295 var q = /text\/html/i;
1296 var r = /\/json/i;
1297 var s = /\/xml/i;
1298 $.ajaxTransport('* text html xml json', function(i, j, k) {
1299 if (i.crossDomain && i.async && o.test(i.type) && n.test(i.url) && p.test(i.url)) {
1300 var l = null;
1301 var m = (j.dataType || '').toLowerCase();
1302 return {
1303 send: function(f, g) {
1304 l = new XDomainRequest();
1305 if (/^\d+$/.test(j.timeout)) {
1306 l.timeout = j.timeout
1307 }
1308 l.ontimeout = function() {
1309 g(500, 'timeout')
1310 };
1311 l.onload = function() {
1312 var a = 'Content-Length: ' + l.responseText.length + '\r\nContent-Type: ' + l.contentType;
1313 var b = {
1314 code: 200,
1315 message: 'success'
1316 };
1317 var c = {
1318 text: l.responseText
1319 };
1320 try {
1321 if (m === 'html' || q.test(l.contentType)) {
1322 c.html = l.responseText
1323 } else if (m === 'json' || (m !== 'text' && r.test(l.contentType))) {
1324 try {
1325 c.json = $.parseJSON(l.responseText)
1326 } catch (e) {
1327 b.code = 500;
1328 b.message = 'parseerror'
1329 }
1330 } else if (m === 'xml' || (m !== 'text' && s.test(l.contentType))) {
1331 var d = new ActiveXObject('Microsoft.XMLDOM');
1332 d.async = false;
1333 try {
1334 d.loadXML(l.responseText)
1335 } catch (e) {
1336 d = undefined
1337 }
1338 if (!d || !d.documentElement || d.getElementsByTagName('parsererror').length) {
1339 b.code = 500;
1340 b.message = 'parseerror';
1341 throw 'Invalid XML: ' + l.responseText;
1342 }
1343 c.xml = d
1344 }
1345 } catch (parseMessage) {
1346 throw parseMessage;
1347 } finally {
1348 g(b.code, b.message, c, a)
1349 }
1350 };
1351 l.onprogress = function() {};
1352 l.onerror = function() {
1353 g(500, 'error', {
1354 text: l.responseText
1355 })
1356 };
1357 var h = '';
1358 if (j.data) {
1359 h = ($.type(j.data) === 'string') ? j.data : $.param(j.data)
1360 }
1361 l.open(i.type, i.url);
1362 l.send(h)
1363 },
1364 abort: function() {
1365 if (l) {
1366 l.abort()
1367 }
1368 }
1369 }
1370 }
1371 })
1372 }
1373})(jQuery);
1374/* jshint ignore:end */
1375/**
1376 * ----------------------------------------------------------------------
1377 * Init lib after plugins
1378 */
1379Webflow.init();
1380/**
1381 * ----------------------------------------------------------------------
1382 * Webflow: Interactions
1383 */
1384Webflow.define('ix', function($, _) {
1385 'use strict';
1386
1387 var api = {};
1388 var designer;
1389 var $win = $(window);
1390 var namespace = '.w-ix';
1391 var tram = window.tram;
1392 var env = Webflow.env;
1393 var ios = env.ios;
1394 var inApp = env();
1395 var emptyFix = env.chrome && env.chrome < 35;
1396 var transNone = 'none 0s ease 0s';
1397 var introEvent = 'w-ix-intro' + namespace;
1398 var outroEvent = 'w-ix-outro' + namespace;
1399 var fallbackProps = /width|height/;
1400 var eventQueue = [];
1401 var $subs = $();
1402 var config = {};
1403 var anchors = [];
1404 var loads = [];
1405 var readys = [];
1406 var unique = 0;
1407 var store;
1408
1409 // Component types and proxy selectors
1410 var components = {
1411 tabs: '.w-tab-link, .w-tab-pane',
1412 dropdown: '.w-dropdown',
1413 slider: '.w-slide',
1414 navbar: '.w-nav'
1415 };
1416
1417 // -----------------------------------
1418 // Module methods
1419
1420 api.init = function(list) {
1421 setTimeout(function() {
1422 init(list);
1423 }, 1);
1424 };
1425
1426 api.preview = function() {
1427 designer = false;
1428 setTimeout(function() {
1429 init(window.__wf_ix);
1430 }, 1);
1431 };
1432
1433 api.design = function() {
1434 designer = true;
1435 $subs.each(teardown);
1436 Webflow.scroll.off(scroll);
1437 asyncEvents();
1438 anchors = [];
1439 loads = [];
1440 readys = [];
1441 };
1442
1443 api.run = run;
1444 api.events = {};
1445 api.style = inApp ? styleApp : stylePub;
1446
1447 // -----------------------------------
1448 // Private methods
1449
1450 function init(list) {
1451 if (!list) return;
1452 store = {};
1453
1454 // Map all interactions to a hash using slug as key.
1455 config = {};
1456 _.each(list, function(item) {
1457 config[item.slug] = item.value;
1458 });
1459
1460 // Build each element's interaction keying from data attribute
1461 var els = $('[data-ix]');
1462 if (!els.length) return;
1463 els.each(teardown);
1464 els.each(build);
1465
1466 // Listen for scroll events if any anchors exist
1467 if (anchors.length) {
1468 Webflow.scroll.on(scroll);
1469 setTimeout(scroll, 1);
1470 }
1471
1472 // Handle loads or readys if they exist
1473 if (loads.length) $win.on('load', runLoads);
1474 if (readys.length) setTimeout(runReadys, 1);
1475
1476 // Init module events
1477 initEvents();
1478 }
1479
1480 function build(i, el) {
1481 var $el = $(el);
1482 var id = $el.attr('data-ix');
1483 var ix = config[id];
1484 if (!ix) return;
1485 var triggers = ix.triggers;
1486 if (!triggers) return;
1487 var state = store[id] || (store[id] = {});
1488
1489 // Set initial styles, unless we detect an iOS device + any non-iOS triggers
1490 var setStyles = !(ios && _.any(triggers, isNonIOS));
1491 if (setStyles) api.style($el, ix.style);
1492
1493 _.each(triggers, function(trigger) {
1494 var type = trigger.type;
1495 var stepsB = trigger.stepsB && trigger.stepsB.length;
1496
1497 function runA() {
1498 run(trigger, $el, {
1499 group: 'A'
1500 });
1501 }
1502
1503 function runB() {
1504 run(trigger, $el, {
1505 group: 'B'
1506 });
1507 }
1508
1509 if (type == 'load') {
1510 (trigger.preload && !inApp) ? loads.push(runA) : readys.push(runA);
1511 return;
1512 }
1513
1514 if (type == 'click') {
1515 var stateKey = 'click:' + unique++;
1516 if (trigger.descend) stateKey += ':descend';
1517 if (trigger.siblings) stateKey += ':siblings';
1518 if (trigger.selector) stateKey += ':' + trigger.selector;
1519
1520 $el.on('click' + namespace, function(evt) {
1521 if ($el.attr('href') === '#') evt.preventDefault();
1522
1523 run(trigger, $el, {
1524 group: state[stateKey] ? 'B' : 'A'
1525 });
1526 if (stepsB) state[stateKey] = !state[stateKey];
1527 });
1528 $subs = $subs.add($el);
1529 return;
1530 }
1531
1532 if (type == 'hover') {
1533 $el.on('mouseenter' + namespace, runA);
1534 $el.on('mouseleave' + namespace, runB);
1535 $subs = $subs.add($el);
1536 return;
1537 }
1538
1539 // Check for a component proxy selector
1540 var proxy = components[type];
1541 if (proxy) {
1542 var $proxy = $el.closest(proxy);
1543 $proxy.on(introEvent, runA).on(outroEvent, runB);
1544 $subs = $subs.add($proxy);
1545 return;
1546 }
1547
1548 // Ignore the following triggers on iOS devices
1549 if (ios) return;
1550
1551 if (type == 'scroll') {
1552 anchors.push({
1553 el: $el,
1554 trigger: trigger,
1555 state: {
1556 active: false
1557 },
1558 offsetTop: convert(trigger.offsetTop),
1559 offsetBot: convert(trigger.offsetBot)
1560 });
1561 return;
1562 }
1563 });
1564 }
1565
1566 function isNonIOS(trigger) {
1567 return trigger.type == 'scroll';
1568 }
1569
1570 function convert(offset) {
1571 if (!offset) return 0;
1572 offset = offset + '';
1573 var result = parseInt(offset, 10);
1574 if (result !== result) return 0;
1575 if (offset.indexOf('%') > 0) {
1576 result = result / 100;
1577 if (result >= 1) result = 0.999;
1578 }
1579 return result;
1580 }
1581
1582 function teardown(i, el) {
1583 $(el).off(namespace);
1584 }
1585
1586 function scroll() {
1587 var viewTop = $win.scrollTop();
1588 var viewHeight = $win.height();
1589
1590 // Check each anchor for a valid scroll trigger
1591 var count = anchors.length;
1592 for (var i = 0; i < count; i++) {
1593 var anchor = anchors[i];
1594 var $el = anchor.el;
1595 var trigger = anchor.trigger;
1596 var stepsB = trigger.stepsB && trigger.stepsB.length;
1597 var state = anchor.state;
1598 var top = $el.offset().top;
1599 var height = $el.outerHeight();
1600 var offsetTop = anchor.offsetTop;
1601 var offsetBot = anchor.offsetBot;
1602 if (offsetTop < 1 && offsetTop > 0) offsetTop *= viewHeight;
1603 if (offsetBot < 1 && offsetBot > 0) offsetBot *= viewHeight;
1604 var active = (top + height - offsetTop >= viewTop && top + offsetBot <= viewTop + viewHeight);
1605 if (active === state.active) continue;
1606 if (active === false && !stepsB) continue;
1607 state.active = active;
1608 run(trigger, $el, {
1609 group: active ? 'A' : 'B'
1610 });
1611 }
1612 }
1613
1614 function runLoads() {
1615 var count = loads.length;
1616 for (var i = 0; i < count; i++) {
1617 loads[i]();
1618 }
1619 }
1620
1621 function runReadys() {
1622 var count = readys.length;
1623 for (var i = 0; i < count; i++) {
1624 readys[i]();
1625 }
1626 }
1627
1628 function run(trigger, $el, opts, replay) {
1629 opts = opts || {};
1630 var done = opts.done;
1631
1632 // Do not run in designer unless forced
1633 if (designer && !opts.force) return;
1634
1635 // Operate on a set of grouped steps
1636 var group = opts.group || 'A';
1637 var loop = trigger['loop' + group];
1638 var steps = trigger['steps' + group];
1639 if (!steps || !steps.length) return;
1640 if (steps.length < 2) loop = false;
1641
1642 // One-time init before any loops
1643 if (!replay) {
1644
1645 // Find selector within element descendants, siblings, or query whole document
1646 var selector = trigger.selector;
1647 if (selector) {
1648 $el = (
1649 trigger.descend ? $el.find(selector) :
1650 trigger.siblings ? $el.siblings(selector) :
1651 $(selector)
1652 );
1653 if (inApp) $el.attr('data-ix-affect', 1);
1654 }
1655
1656 // Apply empty fix for certain Chrome versions
1657 if (emptyFix) $el.addClass('w-ix-emptyfix');
1658 }
1659
1660 var _tram = tram($el);
1661
1662 // Add steps
1663 var meta = {};
1664 for (var i = 0; i < steps.length; i++) {
1665 addStep(_tram, steps[i], meta);
1666 }
1667
1668 function fin() {
1669 // Run trigger again if looped
1670 if (loop) return run(trigger, $el, opts, true);
1671
1672 // Reset any 'auto' values
1673 if (meta.width == 'auto') _tram.set({
1674 width: 'auto'
1675 });
1676 if (meta.height == 'auto') _tram.set({
1677 height: 'auto'
1678 });
1679
1680 // Run callback
1681 done && done();
1682 }
1683
1684 // Add final step to queue if tram has started
1685 meta.start ? _tram.then(fin) : fin();
1686 }
1687
1688 function addStep(_tram, step, meta) {
1689 var addMethod = 'add';
1690 var startMethod = 'start';
1691
1692 // Once the transition has started, we will always use then() to add to the queue.
1693 if (meta.start) addMethod = startMethod = 'then';
1694
1695 // Parse transitions string on the current step
1696 var transitions = step.transition;
1697 if (transitions) {
1698 transitions = transitions.split(',');
1699 for (var i = 0; i < transitions.length; i++) {
1700 var transition = transitions[i];
1701 var options = fallbackProps.test(transition) ? {
1702 fallback: true
1703 } : null;
1704 _tram[addMethod](transition, options);
1705 }
1706 }
1707
1708 // Build a clean object to pass to the tram method
1709 var clean = tramify(step) || {};
1710
1711 // Store last width and height values
1712 if (clean.width != null) meta.width = clean.width;
1713 if (clean.height != null) meta.height = clean.height;
1714
1715 // When transitions are not present, set values immediately and continue queue.
1716 if (transitions == null) {
1717
1718 // If we have started, wrap set() in then() and reset queue
1719 if (meta.start) {
1720 _tram.then(function() {
1721 var queue = this.queue;
1722 this.set(clean);
1723 if (clean.display) {
1724 _tram.redraw();
1725 Webflow.redraw.up();
1726 }
1727 this.queue = queue;
1728 this.next();
1729 });
1730 } else {
1731 _tram.set(clean);
1732
1733 // Always redraw after setting display
1734 if (clean.display) {
1735 _tram.redraw();
1736 Webflow.redraw.up();
1737 }
1738 }
1739
1740 // Use the wait() method to kick off queue in absence of transitions.
1741 var wait = clean.wait;
1742 if (wait != null) {
1743 _tram.wait(wait);
1744 meta.start = true;
1745 }
1746
1747 // Otherwise, when transitions are present
1748 } else {
1749
1750 // If display is present, handle it separately
1751 if (clean.display) {
1752 var display = clean.display;
1753 delete clean.display;
1754
1755 // If we've already started, we need to wrap it in a then()
1756 if (meta.start) {
1757 _tram.then(function() {
1758 var queue = this.queue;
1759 this.set({
1760 display: display
1761 }).redraw();
1762 Webflow.redraw.up();
1763 this.queue = queue;
1764 this.next();
1765 });
1766 } else {
1767 _tram.set({
1768 display: display
1769 }).redraw();
1770 Webflow.redraw.up();
1771 }
1772 }
1773
1774 // Otherwise, start a transition using the current start method.
1775 _tram[startMethod](clean);
1776 meta.start = true;
1777 }
1778 }
1779
1780 // (In app) Set styles immediately and manage upstream transition
1781 function styleApp(el, data) {
1782 var _tram = tram(el);
1783
1784 // Get computed transition value
1785 el.css('transition', '');
1786 var computed = el.css('transition');
1787
1788 // If computed is disabled, clear upstream
1789 if (computed === transNone) computed = _tram.upstream = null;
1790
1791 // Disable upstream temporarily
1792 _tram.upstream = transNone;
1793
1794 // Set values immediately
1795 _tram.set(tramify(data));
1796
1797 // Only restore upstream in preview mode
1798 _tram.upstream = computed;
1799 }
1800
1801 // (Published) Set styles immediately on specified jquery element
1802 function stylePub(el, data) {
1803 tram(el).set(tramify(data));
1804 }
1805
1806 // Build a clean object for tram
1807 function tramify(obj) {
1808 var result = {};
1809 var found = false;
1810 for (var x in obj) {
1811 if (x === 'transition') continue;
1812 result[x] = obj[x];
1813 found = true;
1814 }
1815 // If empty, return null for tram.set/stop compliance
1816 return found ? result : null;
1817 }
1818
1819 // Events used by other webflow modules
1820 var events = {
1821 reset: function(i, el) {
1822 el.__wf_intro = null;
1823 },
1824 intro: function(i, el) {
1825 if (el.__wf_intro) return;
1826 el.__wf_intro = true;
1827 $(el).triggerHandler(introEvent);
1828 },
1829 outro: function(i, el) {
1830 if (!el.__wf_intro) return;
1831 el.__wf_intro = null;
1832 $(el).triggerHandler(outroEvent);
1833 }
1834 };
1835
1836 // Trigger events in queue + point to sync methods
1837 function initEvents() {
1838 var count = eventQueue.length;
1839 for (var i = 0; i < count; i++) {
1840 var memo = eventQueue[i];
1841 memo[0](0, memo[1]);
1842 }
1843 eventQueue = [];
1844 $.extend(api.events, events);
1845 }
1846
1847 // Replace events with async methods prior to init
1848 function asyncEvents() {
1849 _.each(events, function(func, name) {
1850 api.events[name] = function(i, el) {
1851 eventQueue.push([func, el]);
1852 };
1853 });
1854 }
1855
1856 asyncEvents();
1857
1858 // Export module
1859 return api;
1860});
1861/**
1862 * ----------------------------------------------------------------------
1863 * Webflow: Touch events
1864 */
1865Webflow.define('touch', function($, _) {
1866 'use strict';
1867
1868 var api = {};
1869 var fallback = !document.addEventListener;
1870 var getSelection = window.getSelection;
1871
1872 // Fallback to click events in old IE
1873 if (fallback) {
1874 $.event.special.tap = {
1875 bindType: 'click',
1876 delegateType: 'click'
1877 };
1878 }
1879
1880 api.init = function(el) {
1881 if (fallback) return null;
1882 el = typeof el === 'string' ? $(el).get(0) : el;
1883 return el ? new Touch(el) : null;
1884 };
1885
1886 function Touch(el) {
1887 var active = false;
1888 var dirty = false;
1889 var useTouch = false;
1890 var thresholdX = Math.min(Math.round(window.innerWidth * 0.04), 40);
1891 var startX, startY, lastX;
1892 var _move = _.throttle(move);
1893
1894 el.addEventListener('touchstart', start, false);
1895 el.addEventListener('touchmove', _move, false);
1896 el.addEventListener('touchend', end, false);
1897 el.addEventListener('touchcancel', cancel, false);
1898 el.addEventListener('mousedown', start, false);
1899 el.addEventListener('mousemove', _move, false);
1900 el.addEventListener('mouseup', end, false);
1901 el.addEventListener('mouseout', cancel, false);
1902
1903 function start(evt) {
1904 // We don’t handle multi-touch events yet.
1905 var touches = evt.touches;
1906 if (touches && touches.length > 1) {
1907 return;
1908 }
1909
1910 active = true;
1911 dirty = false;
1912
1913 if (touches) {
1914 useTouch = true;
1915 startX = touches[0].clientX;
1916 startY = touches[0].clientY;
1917 } else {
1918 startX = evt.clientX;
1919 startY = evt.clientY;
1920 }
1921
1922 lastX = startX;
1923 }
1924
1925 function move(evt) {
1926 if (!active) return;
1927
1928 if (useTouch && evt.type === 'mousemove') {
1929 evt.preventDefault();
1930 evt.stopPropagation();
1931 return;
1932 }
1933
1934 var touches = evt.touches;
1935 var x = touches ? touches[0].clientX : evt.clientX;
1936 var y = touches ? touches[0].clientY : evt.clientY;
1937
1938 var velocityX = x - lastX;
1939 lastX = x;
1940
1941 // Allow swipes while pointer is down, but prevent them during text selection
1942 if (Math.abs(velocityX) > thresholdX && getSelection && getSelection() + '' === '') {
1943 triggerEvent('swipe', evt, {
1944 direction: velocityX > 0 ? 'right' : 'left'
1945 });
1946 cancel();
1947 }
1948
1949 // If pointer moves more than 10px flag to cancel tap
1950 if (Math.abs(x - startX) > 10 || Math.abs(y - startY) > 10) {
1951 dirty = true;
1952 }
1953 }
1954
1955 function end(evt) {
1956 if (!active) return;
1957 active = false;
1958
1959 if (useTouch && evt.type === 'mouseup') {
1960 evt.preventDefault();
1961 evt.stopPropagation();
1962 useTouch = false;
1963 return;
1964 }
1965
1966 if (!dirty) triggerEvent('tap', evt);
1967 }
1968
1969 function cancel(evt) {
1970 active = false;
1971 }
1972
1973 function destroy() {
1974 el.removeEventListener('touchstart', start, false);
1975 el.removeEventListener('touchmove', _move, false);
1976 el.removeEventListener('touchend', end, false);
1977 el.removeEventListener('touchcancel', cancel, false);
1978 el.removeEventListener('mousedown', start, false);
1979 el.removeEventListener('mousemove', _move, false);
1980 el.removeEventListener('mouseup', end, false);
1981 el.removeEventListener('mouseout', cancel, false);
1982 el = null;
1983 }
1984
1985 // Public instance methods
1986 this.destroy = destroy;
1987 }
1988
1989 // Wrap native event to supoprt preventdefault + stopPropagation
1990 function triggerEvent(type, evt, data) {
1991 var newEvent = $.Event(type, {
1992 originalEvent: evt
1993 });
1994 $(evt.target).trigger(newEvent, data);
1995 }
1996
1997 // Listen for touch events on all nodes by default.
1998 api.instance = api.init(document);
1999
2000 // Export module
2001 return api;
2002});
2003/**
2004 * ----------------------------------------------------------------------
2005 * Webflow: Forms
2006 */
2007Webflow.define('forms', function($, _) {
2008 'use strict';
2009
2010 var api = {};
2011 var $doc = $(document);
2012 var $forms;
2013 var loc = window.location;
2014 var retro = window.XDomainRequest && !window.atob;
2015 var namespace = '.w-form';
2016 var siteId;
2017 var emailField = /e(\-)?mail/i;
2018 var emailValue = /^\S+@\S+$/;
2019 var alert = window.alert;
2020 var listening;
2021
2022 // MailChimp domains: list-manage.com + mirrors
2023 var chimpRegex = /list-manage[1-9]?.com/i;
2024
2025 api.ready = function() {
2026 // Init forms
2027 init();
2028
2029 // Wire document events once
2030 if (!listening) addListeners();
2031 };
2032
2033 api.preview = api.design = function() {
2034 init();
2035 };
2036
2037 function init() {
2038 siteId = $('html').attr('data-wf-site');
2039
2040 $forms = $(namespace + ' form');
2041 if (!$forms.length) return;
2042 $forms.each(build);
2043 }
2044
2045 function build(i, el) {
2046 // Store form state using namespace
2047 var $el = $(el);
2048 var data = $.data(el, namespace);
2049 if (!data) data = $.data(el, namespace, {
2050 form: $el
2051 }); // data.form
2052
2053 reset(data);
2054 var wrap = $el.closest('div.w-form');
2055 data.done = wrap.find('> .w-form-done');
2056 data.fail = wrap.find('> .w-form-fail');
2057
2058 var action = data.action = $el.attr('action');
2059 data.handler = null;
2060 data.redirect = $el.attr('data-redirect');
2061
2062 // MailChimp form
2063 if (chimpRegex.test(action)) {
2064 data.handler = submitMailChimp;
2065 return;
2066 }
2067
2068 // Custom form action
2069 if (action) return;
2070
2071 // Webflow form
2072 if (siteId) {
2073 data.handler = submitWebflow;
2074 return;
2075 }
2076
2077 // Alert for disconnected Webflow forms
2078 disconnected();
2079 }
2080
2081 function addListeners() {
2082 listening = true;
2083
2084 // Handle form submission for Webflow forms
2085 $doc.on('submit', namespace + ' form', function(evt) {
2086 var data = $.data(this, namespace);
2087 if (data.handler) {
2088 data.evt = evt;
2089 data.handler(data);
2090 }
2091 });
2092 }
2093
2094 // Reset data common to all submit handlers
2095 function reset(data) {
2096 var btn = data.btn = data.form.find(':input[type="submit"]');
2097 data.wait = data.btn.attr('data-wait') || null;
2098 data.success = false;
2099 btn.prop('disabled', false);
2100 data.label && btn.val(data.label);
2101 }
2102
2103 // Disable submit button
2104 function disableBtn(data) {
2105 var btn = data.btn;
2106 var wait = data.wait;
2107 btn.prop('disabled', true);
2108 // Show wait text and store previous label
2109 if (wait) {
2110 data.label = btn.val();
2111 btn.val(wait);
2112 }
2113 }
2114
2115 // Find form fields, validate, and set value pairs
2116 function findFields(form, result) {
2117 var status = null;
2118 result = result || {};
2119
2120 // The ":input" selector is a jQuery shortcut to select all inputs, selects, textareas
2121 form.find(':input:not([type="submit"])').each(function(i, el) {
2122 var field = $(el);
2123 var type = field.attr('type');
2124 var name = field.attr('data-name') || field.attr('name') || ('Field ' + (i + 1));
2125 var value = field.val();
2126
2127 if (type == 'checkbox') {
2128 value = field.is(':checked');
2129 }
2130 if (type == 'radio') {
2131 // Radio group value already processed
2132 if (result[name] === null || typeof result[name] == 'string') {
2133 return;
2134 }
2135
2136 value = form.find('input[name="' + field.attr('name') + '"]:checked').val() || null;
2137 }
2138
2139 if (typeof value == 'string') value = $.trim(value);
2140 result[name] = value;
2141 status = status || getStatus(field, name, value);
2142 });
2143
2144 return status;
2145 }
2146
2147 function getStatus(field, name, value) {
2148 var status = null;
2149 if (!field.attr('required')) return null;
2150 if (!value) status = 'Please fill out the required field: ' + name;
2151 else if (emailField.test(name) || emailField.test(field.attr('type'))) {
2152 if (!emailValue.test(value)) status = 'Please enter a valid email address for: ' + name;
2153 }
2154 return status;
2155 }
2156
2157 // Submit form to Webflow
2158 function submitWebflow(data) {
2159 reset(data);
2160
2161 var form = data.form;
2162 var payload = {
2163 name: form.attr('data-name') || form.attr('name') || 'Untitled Form',
2164 source: loc.href,
2165 test: Webflow.env(),
2166 fields: {}
2167 };
2168
2169 preventDefault(data);
2170
2171 // Find & populate all fields
2172 var status = findFields(form, payload.fields);
2173 if (status) return alert(status);
2174
2175 // Disable submit button
2176 disableBtn(data);
2177
2178 // Read site ID
2179 // NOTE: If this site is exported, the HTML tag must retain the data-wf-site attribute for forms to work
2180 if (!siteId) {
2181 afterSubmit(data);
2182 return;
2183 }
2184 var url = 'https://webflow.com/api/v1/form/' + siteId;
2185
2186 // Work around same-protocol IE XDR limitation
2187 if (retro && url.indexOf('https://webflow.com') >= 0) {
2188 url = url.replace('https://webflow.com/', 'http://data.webflow.com/');
2189 }
2190
2191 $.ajax({
2192 url: url,
2193 type: 'POST',
2194 data: payload,
2195 dataType: 'json',
2196 crossDomain: true
2197 }).done(function() {
2198 data.success = true;
2199 afterSubmit(data);
2200 }).fail(function() {
2201 afterSubmit(data);
2202 });
2203 }
2204
2205 // Submit form to MailChimp
2206 function submitMailChimp(data) {
2207 reset(data);
2208
2209 var form = data.form;
2210 var payload = {};
2211
2212 // Skip Ajax submission if http/s mismatch, fallback to POST instead
2213 if (/^https/.test(loc.href) && !/^https/.test(data.action)) {
2214 form.attr('method', 'post');
2215 return;
2216 }
2217
2218 preventDefault(data);
2219
2220 // Find & populate all fields
2221 var status = findFields(form, payload);
2222 if (status) return alert(status);
2223
2224 // Disable submit button
2225 disableBtn(data);
2226
2227 // Use special format for MailChimp params
2228 var fullName;
2229 _.each(payload, function(value, key) {
2230 if (emailField.test(key)) payload.EMAIL = value;
2231 if (/^((full[ _-]?)?name)$/i.test(key)) fullName = value;
2232 if (/^(first[ _-]?name)$/i.test(key)) payload.FNAME = value;
2233 if (/^(last[ _-]?name)$/i.test(key)) payload.LNAME = value;
2234 });
2235
2236 if (fullName && !payload.FNAME) {
2237 fullName = fullName.split(' ');
2238 payload.FNAME = fullName[0];
2239 payload.LNAME = payload.LNAME || fullName[1];
2240 }
2241
2242 // Use the (undocumented) MailChimp jsonp api
2243 var url = data.action.replace('/post?', '/post-json?') + '&c=?';
2244 // Add special param to prevent bot signups
2245 var userId = url.indexOf('u=') + 2;
2246 userId = url.substring(userId, url.indexOf('&', userId));
2247 var listId = url.indexOf('id=') + 3;
2248 listId = url.substring(listId, url.indexOf('&', listId));
2249 payload['b_' + userId + '_' + listId] = '';
2250
2251 $.ajax({
2252 url: url,
2253 data: payload,
2254 dataType: 'jsonp'
2255 }).done(function(resp) {
2256 data.success = (resp.result == 'success' || /already/.test(resp.msg));
2257 if (!data.success) console.info('MailChimp error: ' + resp.msg);
2258 afterSubmit(data);
2259 }).fail(function() {
2260 afterSubmit(data);
2261 });
2262 }
2263
2264 // Common callback which runs after all Ajax submissions
2265 function afterSubmit(data) {
2266 var form = data.form;
2267 var wrap = form.closest('div.w-form');
2268 var redirect = data.redirect;
2269 var success = data.success;
2270
2271 // Redirect to a success url if defined
2272 if (success && redirect) {
2273 Webflow.location(redirect);
2274 return;
2275 }
2276
2277 // Show or hide status divs
2278 data.done.toggle(success);
2279 data.fail.toggle(!success);
2280
2281 // Hide form on success
2282 form.toggle(!success);
2283
2284 // Reset data and enable submit button
2285 reset(data);
2286 }
2287
2288 function preventDefault(data) {
2289 data.evt && data.evt.preventDefault();
2290 data.evt = null;
2291 }
2292
2293 var disconnected = _.debounce(function() {
2294 alert('Oops! This page has a form that is powered by Webflow, but important code was removed that is required to make the form work. Please contact [email protected] to fix this issue.');
2295 }, 100);
2296
2297 // Export module
2298 return api;
2299});
2300/**
2301 * ----------------------------------------------------------------------
2302 * Webflow: Smooth scroll
2303 */
2304Webflow.define('scroll', function($) {
2305 'use strict';
2306
2307 var $doc = $(document);
2308 var win = window;
2309 var loc = win.location;
2310 var history = win.history;
2311 var validHash = /^[a-zA-Z][\w:.-]*$/;
2312
2313 function ready() {
2314 // If hash is already present on page load, scroll to it right away
2315 if (loc.hash) {
2316 findEl(loc.hash.substring(1));
2317 }
2318
2319 // When clicking on a link, check if it links to another part of the page
2320 $doc.on('click', 'a', function(e) {
2321 if (Webflow.env('design')) {
2322 return;
2323 }
2324
2325 // Ignore links being used by jQuery mobile
2326 if (window.$.mobile && $(e.currentTarget).hasClass('ui-link')) return;
2327
2328 var hash = this.hash ? this.hash.substring(1) : null;
2329 if (hash) {
2330 findEl(hash, e);
2331 }
2332 });
2333 }
2334
2335 function findEl(hash, e) {
2336 if (!validHash.test(hash)) return;
2337
2338 var el = $('#' + hash);
2339 if (!el.length) {
2340 return;
2341 }
2342
2343 if (e) {
2344 e.preventDefault();
2345 e.stopPropagation();
2346 }
2347
2348 // Push new history state
2349 if (loc.hash !== hash && history && history.pushState) {
2350 var oldHash = history.state && history.state.hash;
2351 if (oldHash !== hash) {
2352 history.pushState({
2353 hash: hash
2354 }, '', '#' + hash);
2355 }
2356 }
2357
2358 // If a fixed header exists, offset for the height
2359 var header = $('header, body > .header, body > .w-nav');
2360 var offset = header.css('position') === 'fixed' ? header.outerHeight() : 0;
2361
2362 win.setTimeout(function() {
2363 scroll(el, offset);
2364 }, e ? 0 : 300);
2365 }
2366
2367 function scroll(el, offset) {
2368 var start = $(win).scrollTop();
2369 var end = el.offset().top - offset;
2370
2371 // If specified, scroll so that the element ends up in the middle of the viewport
2372 if (el.data('scroll') == 'mid') {
2373 var available = $(win).height() - offset;
2374 var elHeight = el.outerHeight();
2375 if (elHeight < available) {
2376 end -= Math.round((available - elHeight) / 2);
2377 }
2378 }
2379
2380 var mult = 1;
2381
2382 // Check for custom time multiplier on the body and the element
2383 $('body').add(el).each(function(i) {
2384 var time = parseFloat($(this).attr('data-scroll-time'), 10);
2385 if (!isNaN(time) && (time === 0 || time > 0)) {
2386 mult = time;
2387 }
2388 });
2389
2390 // Shim for IE8 and below
2391 if (!Date.now) {
2392 Date.now = function() {
2393 return new Date().getTime();
2394 };
2395 }
2396
2397 var clock = Date.now();
2398 var animate = win.requestAnimationFrame || win.mozRequestAnimationFrame || win.webkitRequestAnimationFrame || function(fn) {
2399 win.setTimeout(fn, 15);
2400 };
2401 var duration = (472.143 * Math.log(Math.abs(start - end) + 125) - 2000) * mult;
2402
2403 var step = function() {
2404 var elapsed = Date.now() - clock;
2405 win.scroll(0, getY(start, end, elapsed, duration));
2406
2407 if (elapsed <= duration) {
2408 animate(step);
2409 }
2410 };
2411
2412 step();
2413 }
2414
2415 function getY(start, end, elapsed, duration) {
2416 if (elapsed > duration) {
2417 return end;
2418 }
2419
2420 return start + (end - start) * ease(elapsed / duration);
2421 }
2422
2423 function ease(t) {
2424 return t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1;
2425 }
2426
2427 // Export module
2428 return {
2429 ready: ready
2430 };
2431});
2432/**
2433 * ----------------------------------------------------------------------
2434 * Webflow: Auto-select links to current page or section
2435 */
2436Webflow.define('links', function($, _) {
2437 'use strict';
2438
2439 var api = {};
2440 var $win = $(window);
2441 var designer;
2442 var inApp = Webflow.env();
2443 var location = window.location;
2444 var linkCurrent = 'w--current';
2445 var validHash = /^#[a-zA-Z][\w:.-]*$/;
2446 var indexPage = /index\.(html|php)$/;
2447 var dirList = /\/$/;
2448 var anchors;
2449 var slug;
2450
2451 // -----------------------------------
2452 // Module methods
2453
2454 api.ready = api.design = api.preview = init;
2455
2456 // -----------------------------------
2457 // Private methods
2458
2459 function init() {
2460 designer = inApp && Webflow.env('design');
2461 slug = Webflow.env('slug') || location.pathname || '';
2462
2463 // Reset scroll listener, init anchors
2464 Webflow.scroll.off(scroll);
2465 anchors = [];
2466
2467 // Test all links for a selectable href
2468 var links = document.links;
2469 for (var i = 0; i < links.length; ++i) {
2470 select(links[i]);
2471 }
2472
2473 // Listen for scroll if any anchors exist
2474 if (anchors.length) {
2475 Webflow.scroll.on(scroll);
2476 scroll();
2477 }
2478 }
2479
2480 function select(link) {
2481 var href = link.getAttribute('href');
2482
2483 // Ignore any hrefs with a colon to safely avoid all uri schemes
2484 if (href.indexOf(':') >= 0) return;
2485
2486 var $link = $(link);
2487
2488 // Check for valid hash links w/ sections and use scroll anchor
2489 if (href.indexOf('#') === 0 && validHash.test(href)) {
2490 // Ignore #edit anchors
2491 if (href === '#edit') return;
2492 var $section = $(href);
2493 $section.length && anchors.push({
2494 link: $link,
2495 sec: $section,
2496 active: false
2497 });
2498 return;
2499 }
2500
2501 // Determine whether the link should be selected
2502 var match = (link.href === location.href) || (href === slug) || (indexPage.test(href) && dirList.test(slug));
2503 setClass($link, linkCurrent, match);
2504 }
2505
2506 function scroll() {
2507 var viewTop = $win.scrollTop();
2508 var viewHeight = $win.height();
2509
2510 // Check each anchor for a section in view
2511 _.each(anchors, function(anchor) {
2512 var $link = anchor.link;
2513 var $section = anchor.sec;
2514 var top = $section.offset().top;
2515 var height = $section.outerHeight();
2516 var offset = viewHeight * 0.5;
2517 var active = ($section.is(':visible') &&
2518 top + height - offset >= viewTop &&
2519 top + offset <= viewTop + viewHeight);
2520 if (anchor.active === active) return;
2521 anchor.active = active;
2522 setClass($link, linkCurrent, active);
2523 if (designer) $link[0].__wf_current = active;
2524 });
2525 }
2526
2527 function setClass($elem, className, add) {
2528 var exists = $elem.hasClass(className);
2529 if (add && exists) return;
2530 if (!add && !exists) return;
2531 add ? $elem.addClass(className) : $elem.removeClass(className);
2532 }
2533
2534 // Export module
2535 return api;
2536});
2537/**
2538 * ----------------------------------------------------------------------
2539 * Webflow: Slider component
2540 */
2541Webflow.define('slider', function($, _) {
2542 'use strict';
2543
2544 var api = {};
2545 var tram = window.tram;
2546 var $doc = $(document);
2547 var $sliders;
2548 var designer;
2549 var inApp = Webflow.env();
2550 var namespace = '.w-slider';
2551 var dot = '<div class="w-slider-dot" data-wf-ignore />';
2552 var ix = Webflow.ixEvents();
2553 var fallback;
2554 var redraw;
2555
2556 // -----------------------------------
2557 // Module methods
2558
2559 api.ready = function() {
2560 init();
2561 };
2562
2563 api.design = function() {
2564 designer = true;
2565 init();
2566 };
2567
2568 api.preview = function() {
2569 designer = false;
2570 init();
2571 };
2572
2573 api.redraw = function() {
2574 redraw = true;
2575 init();
2576 };
2577
2578 api.destroy = removeListeners;
2579
2580 // -----------------------------------
2581 // Private methods
2582
2583 function init() {
2584 // Find all sliders on the page
2585 $sliders = $doc.find(namespace);
2586 if (!$sliders.length) return;
2587 $sliders.filter(':visible').each(build);
2588 redraw = null;
2589 if (fallback) return;
2590
2591 // Wire events
2592 removeListeners();
2593 addListeners();
2594 }
2595
2596 function removeListeners() {
2597 Webflow.resize.off(renderAll);
2598 Webflow.redraw.off(api.redraw);
2599 }
2600
2601 function addListeners() {
2602 Webflow.resize.on(renderAll);
2603 Webflow.redraw.on(api.redraw);
2604 }
2605
2606 function renderAll() {
2607 $sliders.filter(':visible').each(render);
2608 }
2609
2610 function build(i, el) {
2611 var $el = $(el);
2612
2613 // Store slider state in data
2614 var data = $.data(el, namespace);
2615 if (!data) data = $.data(el, namespace, {
2616 index: 0,
2617 depth: 1,
2618 el: $el,
2619 config: {}
2620 });
2621 data.mask = $el.children('.w-slider-mask');
2622 data.left = $el.children('.w-slider-arrow-left');
2623 data.right = $el.children('.w-slider-arrow-right');
2624 data.nav = $el.children('.w-slider-nav');
2625 data.slides = data.mask.children('.w-slide');
2626 data.slides.each(ix.reset);
2627 if (redraw) data.maskWidth = 0;
2628
2629 // Disable in old browsers
2630 if (!tram.support.transform) {
2631 data.left.hide();
2632 data.right.hide();
2633 data.nav.hide();
2634 fallback = true;
2635 return;
2636 }
2637
2638 // Remove old events
2639 data.el.off(namespace);
2640 data.left.off(namespace);
2641 data.right.off(namespace);
2642 data.nav.off(namespace);
2643
2644 // Set config from data attributes
2645 configure(data);
2646
2647 // Add events based on mode
2648 if (designer) {
2649 data.el.on('setting' + namespace, handler(data));
2650 stopTimer(data);
2651 data.hasTimer = false;
2652 } else {
2653 data.el.on('swipe' + namespace, handler(data));
2654 data.left.on('tap' + namespace, previous(data));
2655 data.right.on('tap' + namespace, next(data));
2656
2657 // Start timer if autoplay is true, only once
2658 if (data.config.autoplay && !data.hasTimer) {
2659 data.hasTimer = true;
2660 data.timerCount = 1;
2661 startTimer(data);
2662 }
2663 }
2664
2665 // Listen to nav events
2666 data.nav.on('tap' + namespace, '> div', handler(data));
2667
2668 // Remove gaps from formatted html (for inline-blocks)
2669 if (!inApp) {
2670 data.mask.contents().filter(function() {
2671 return this.nodeType === 3;
2672 }).remove();
2673 }
2674
2675 // Run first render
2676 render(i, el);
2677 }
2678
2679 function configure(data) {
2680 var config = {};
2681
2682 config.crossOver = 0;
2683
2684 // Set config options from data attributes
2685 config.animation = data.el.attr('data-animation') || 'slide';
2686 if (config.animation == 'outin') {
2687 config.animation = 'cross';
2688 config.crossOver = 0.5;
2689 }
2690 config.easing = data.el.attr('data-easing') || 'ease';
2691
2692 var duration = data.el.attr('data-duration');
2693 config.duration = duration != null ? +duration : 500;
2694
2695 if (+data.el.attr('data-infinite')) config.infinite = true;
2696
2697 if (+data.el.attr('data-hide-arrows')) {
2698 config.hideArrows = true;
2699 } else if (data.config.hideArrows) {
2700 data.left.show();
2701 data.right.show();
2702 }
2703
2704 if (+data.el.attr('data-autoplay')) {
2705 config.autoplay = true;
2706 config.delay = +data.el.attr('data-delay') || 2000;
2707 config.timerMax = +data.el.attr('data-autoplay-limit');
2708 // Disable timer on first touch or mouse down
2709 var touchEvents = 'mousedown' + namespace + ' touchstart' + namespace;
2710 if (!designer) data.el.off(touchEvents).one(touchEvents, function() {
2711 stopTimer(data);
2712 });
2713 }
2714
2715 // Use edge buffer to help calculate page count
2716 var arrowWidth = data.right.width();
2717 config.edge = arrowWidth ? arrowWidth + 40 : 100;
2718
2719 // Store config in data
2720 data.config = config;
2721 }
2722
2723 function previous(data) {
2724 return function(evt) {
2725 change(data, {
2726 index: data.index - 1,
2727 vector: -1
2728 });
2729 };
2730 }
2731
2732 function next(data) {
2733 return function(evt) {
2734 change(data, {
2735 index: data.index + 1,
2736 vector: 1
2737 });
2738 };
2739 }
2740
2741 function select(data, value) {
2742 // Select page based on slide element index
2743 var found = null;
2744 if (value === data.slides.length) {
2745 init();
2746 layout(data); // Rebuild and find new slides
2747 }
2748 _.each(data.anchors, function(anchor, index) {
2749 $(anchor.els).each(function(i, el) {
2750 if ($(el).index() === value) found = index;
2751 });
2752 });
2753 if (found != null) change(data, {
2754 index: found,
2755 immediate: true
2756 });
2757 }
2758
2759 function startTimer(data) {
2760 stopTimer(data);
2761 var config = data.config;
2762 var timerMax = config.timerMax;
2763 if (timerMax && data.timerCount++ > timerMax) return;
2764 data.timerId = window.setTimeout(function() {
2765 if (data.timerId == null || designer) return;
2766 next(data)();
2767 startTimer(data);
2768 }, config.delay);
2769 }
2770
2771 function stopTimer(data) {
2772 window.clearTimeout(data.timerId);
2773 data.timerId = null;
2774 }
2775
2776 function handler(data) {
2777 return function(evt, options) {
2778 options = options || {};
2779
2780 // Designer settings
2781 if (designer && evt.type == 'setting') {
2782 if (options.select == 'prev') return previous(data)();
2783 if (options.select == 'next') return next(data)();
2784 configure(data);
2785 layout(data);
2786 if (options.select == null) return;
2787 select(data, options.select);
2788 return;
2789 }
2790
2791 // Swipe event
2792 if (evt.type == 'swipe') {
2793 if (options.direction == 'left') return next(data)();
2794 if (options.direction == 'right') return previous(data)();
2795 return;
2796 }
2797
2798 // Page buttons
2799 if (data.nav.has(evt.target).length) {
2800 change(data, {
2801 index: $(evt.target).index()
2802 });
2803 }
2804 };
2805 }
2806
2807 function change(data, options) {
2808 options = options || {};
2809 var config = data.config;
2810 var anchors = data.anchors;
2811
2812 // Set new index
2813 data.previous = data.index;
2814 var index = options.index;
2815 var shift = {};
2816 if (index < 0) {
2817 index = anchors.length - 1;
2818 if (config.infinite) {
2819 // Shift first slide to the end
2820 shift.x = -data.endX;
2821 shift.from = 0;
2822 shift.to = anchors[0].width;
2823 }
2824 } else if (index >= anchors.length) {
2825 index = 0;
2826 if (config.infinite) {
2827 // Shift last slide to the start
2828 shift.x = anchors[anchors.length - 1].width;
2829 shift.from = -anchors[anchors.length - 1].x;
2830 shift.to = shift.from - shift.x;
2831 }
2832 }
2833 data.index = index;
2834
2835 // Select page nav
2836 var active = data.nav.children().eq(data.index).addClass('w-active');
2837 data.nav.children().not(active).removeClass('w-active');
2838
2839 // Hide arrows
2840 if (config.hideArrows) {
2841 data.index === anchors.length - 1 ? data.right.hide() : data.right.show();
2842 data.index === 0 ? data.left.hide() : data.left.show();
2843 }
2844
2845 // Get page offset from anchors
2846 var lastOffsetX = data.offsetX || 0;
2847 var offsetX = data.offsetX = -anchors[data.index].x;
2848 var resetConfig = {
2849 x: offsetX,
2850 opacity: 1,
2851 visibility: ''
2852 };
2853
2854 // Transition slides
2855 var targets = $(anchors[data.index].els);
2856 var previous = $(anchors[data.previous] && anchors[data.previous].els);
2857 var others = data.slides.not(targets);
2858 var animation = config.animation;
2859 var easing = config.easing;
2860 var duration = Math.round(config.duration);
2861 var vector = options.vector || (data.index > data.previous ? 1 : -1);
2862 var fadeRule = 'opacity ' + duration + 'ms ' + easing;
2863 var slideRule = 'transform ' + duration + 'ms ' + easing;
2864
2865 // Trigger IX events
2866 if (!designer) {
2867 targets.each(ix.intro);
2868 others.each(ix.outro);
2869 }
2870
2871 // Set immediately after layout changes (but not during redraw)
2872 if (options.immediate && !redraw) {
2873 tram(targets).set(resetConfig);
2874 resetOthers();
2875 return;
2876 }
2877
2878 // Exit early if index is unchanged
2879 if (data.index == data.previous) return;
2880
2881 // Cross Fade / Out-In
2882 if (animation == 'cross') {
2883 var reduced = Math.round(duration - duration * config.crossOver);
2884 var wait = Math.round(duration - reduced);
2885 fadeRule = 'opacity ' + reduced + 'ms ' + easing;
2886 tram(previous)
2887 .set({
2888 visibility: ''
2889 })
2890 .add(fadeRule)
2891 .start({
2892 opacity: 0
2893 });
2894 tram(targets)
2895 .set({
2896 visibility: '',
2897 x: offsetX,
2898 opacity: 0,
2899 zIndex: data.depth++
2900 })
2901 .add(fadeRule)
2902 .wait(wait)
2903 .then({
2904 opacity: 1
2905 })
2906 .then(resetOthers);
2907 return;
2908 }
2909
2910 // Fade Over
2911 if (animation == 'fade') {
2912 tram(previous)
2913 .set({
2914 visibility: ''
2915 })
2916 .stop();
2917 tram(targets)
2918 .set({
2919 visibility: '',
2920 x: offsetX,
2921 opacity: 0,
2922 zIndex: data.depth++
2923 })
2924 .add(fadeRule)
2925 .start({
2926 opacity: 1
2927 })
2928 .then(resetOthers);
2929 return;
2930 }
2931
2932 // Slide Over
2933 if (animation == 'over') {
2934 resetConfig = {
2935 x: data.endX
2936 };
2937 tram(previous)
2938 .set({
2939 visibility: ''
2940 })
2941 .stop();
2942 tram(targets)
2943 .set({
2944 visibility: '',
2945 zIndex: data.depth++,
2946 x: offsetX + anchors[data.index].width * vector
2947 })
2948 .add(slideRule)
2949 .start({
2950 x: offsetX
2951 })
2952 .then(resetOthers);
2953 return;
2954 }
2955
2956 // Slide - infinite scroll
2957 if (config.infinite && shift.x) {
2958 tram(data.slides.not(previous))
2959 .set({
2960 visibility: '',
2961 x: shift.x
2962 })
2963 .add(slideRule)
2964 .start({
2965 x: offsetX
2966 });
2967 tram(previous)
2968 .set({
2969 visibility: '',
2970 x: shift.from
2971 })
2972 .add(slideRule)
2973 .start({
2974 x: shift.to
2975 });
2976 data.shifted = previous;
2977
2978 } else {
2979 if (config.infinite && data.shifted) {
2980 tram(data.shifted).set({
2981 visibility: '',
2982 x: lastOffsetX
2983 });
2984 data.shifted = null;
2985 }
2986
2987 // Slide - basic scroll
2988 tram(data.slides)
2989 .set({
2990 visibility: ''
2991 })
2992 .add(slideRule)
2993 .start({
2994 x: offsetX
2995 });
2996 }
2997
2998 // Helper to move others out of view
2999 function resetOthers() {
3000 var targets = $(anchors[data.index].els);
3001 var others = data.slides.not(targets);
3002 if (animation != 'slide') resetConfig.visibility = 'hidden';
3003 tram(others).set(resetConfig);
3004 }
3005 }
3006
3007 function render(i, el) {
3008 var data = $.data(el, namespace);
3009 if (maskChanged(data)) return layout(data);
3010 if (designer && slidesChanged(data)) layout(data);
3011 }
3012
3013 function layout(data) {
3014 // Determine page count from width of slides
3015 var pages = 1;
3016 var offset = 0;
3017 var anchor = 0;
3018 var width = 0;
3019 data.anchors = [{
3020 els: [],
3021 x: 0,
3022 width: 0
3023 }];
3024 data.slides.each(function(i, el) {
3025 if (anchor - offset > data.maskWidth - data.config.edge) {
3026 pages++;
3027 offset += data.maskWidth;
3028 // Store page anchor for transition
3029 data.anchors[pages - 1] = {
3030 els: [],
3031 x: anchor,
3032 width: 0
3033 };
3034 }
3035 // Set next anchor using current width + margin
3036 width = $(el).outerWidth(true);
3037 anchor += width;
3038 data.anchors[pages - 1].width += width;
3039 data.anchors[pages - 1].els.push(el);
3040 });
3041 data.endX = anchor;
3042
3043 // Build dots if nav exists and needs updating
3044 if (designer) data.pages = null;
3045 if (data.nav.length && data.pages !== pages) {
3046 data.pages = pages;
3047 buildNav(data);
3048 }
3049
3050 // Make sure index is still within range and call change handler
3051 var index = data.index;
3052 if (index >= pages) index = pages - 1;
3053 change(data, {
3054 immediate: true,
3055 index: index
3056 });
3057 }
3058
3059 function buildNav(data) {
3060 var dots = [];
3061 var $dot;
3062 var spacing = data.el.attr('data-nav-spacing');
3063 if (spacing) spacing = parseFloat(spacing) + 'px';
3064 for (var i = 0; i < data.pages; i++) {
3065 $dot = $(dot);
3066 if (data.nav.hasClass('w-num')) $dot.text(i + 1);
3067 if (spacing != null) $dot.css({
3068 'margin-left': spacing,
3069 'margin-right': spacing
3070 });
3071 dots.push($dot);
3072 }
3073 data.nav.empty().append(dots);
3074 }
3075
3076 function maskChanged(data) {
3077 var maskWidth = data.mask.width();
3078 if (data.maskWidth !== maskWidth) {
3079 data.maskWidth = maskWidth;
3080 return true;
3081 }
3082 return false;
3083 }
3084
3085 function slidesChanged(data) {
3086 var slidesWidth = 0;
3087 data.slides.each(function(i, el) {
3088 slidesWidth += $(el).outerWidth(true);
3089 });
3090 if (data.slidesWidth !== slidesWidth) {
3091 data.slidesWidth = slidesWidth;
3092 return true;
3093 }
3094 return false;
3095 }
3096
3097 // Export module
3098 return api;
3099});
3100/**
3101 * ----------------------------------------------------------------------
3102 * Webflow: Lightbox component
3103 */
3104var lightbox = (function(window, document, $, tram, undefined) {
3105 'use strict';
3106
3107 var isArray = Array.isArray;
3108 var namespace = 'w-lightbox';
3109 var prefix = namespace + '-';
3110 var prefixRegex = /(^|\s+)/g;
3111 var matchMedia = window.matchMedia || function(media) {
3112 // IE9 polyfill
3113 return {
3114 matches: window.styleMedia.matchMedium(media)
3115 };
3116 };
3117 var pixelRatio = window.devicePixelRatio || 1;
3118 var breakpoint = '(min-width: 1025px)';
3119
3120 // Array of objects describing items to be displayed.
3121 var items = [];
3122
3123 // Index of the currently displayed item.
3124 var currentIndex;
3125
3126 // Object holding references to jQuery wrapped nodes.
3127 var $refs;
3128
3129 // Instance of Spinner
3130 var spinner;
3131
3132 function lightbox(thing, index) {
3133 items = isArray(thing) ? thing : [thing];
3134
3135 if (!$refs) {
3136 lightbox.build();
3137 }
3138
3139 if (items.length > 1) {
3140 $refs.items = $refs.empty;
3141
3142 items.forEach(function(item) {
3143 var $thumbnail = dom('thumbnail');
3144 var $item = dom('item').append($thumbnail);
3145
3146 $refs.items = $refs.items.add($item);
3147
3148 loadImage(item.url, function($image) {
3149 if ($image.prop('width') > $image.prop('height')) {
3150 addClass($image, 'wide');
3151 } else {
3152 addClass($image, 'tall');
3153 }
3154 $thumbnail.append(addClass($image, 'thumbnail-image'));
3155 });
3156 });
3157
3158 $refs.strip.empty().append($refs.items);
3159 addClass($refs.content, 'group');
3160 }
3161
3162 tram(
3163 // Focus the lightbox to receive keyboard events.
3164 removeClass($refs.lightbox, 'hide').focus()
3165 )
3166 .add('opacity .3s')
3167 .start({
3168 opacity: 1
3169 });
3170
3171 // Prevent document from scrolling while lightbox is active.
3172 addClass($refs.html, 'noscroll');
3173
3174 return lightbox.show(index || 0);
3175 }
3176
3177 /**
3178 * Creates the DOM structure required by the lightbox.
3179 */
3180 lightbox.build = function() {
3181 // In case `build` is called more than once.
3182 lightbox.destroy();
3183
3184 $refs = {
3185 html: $(document.documentElement),
3186 // Empty jQuery object can be used to build new ones using `.add`.
3187 empty: $()
3188 };
3189
3190 $refs.arrowLeft = dom('control left inactive');
3191 $refs.arrowRight = dom('control right inactive');
3192 $refs.close = dom('control close');
3193 $refs.controls = $refs.empty.add($refs.arrowLeft).add($refs.arrowRight).add($refs.close);
3194
3195 $refs.spinner = dom('spinner');
3196 $refs.strip = dom('strip');
3197
3198 spinner = new Spinner($refs.spinner, prefixed('hide'));
3199
3200 $refs.content = dom('content')
3201 .append($refs.spinner, $refs.controls);
3202
3203 $refs.container = dom('container')
3204 .append($refs.content, $refs.strip);
3205
3206 $refs.lightbox = dom('backdrop hide')
3207 .append($refs.container);
3208
3209 // We are delegating events for performance reasons and also
3210 // to not have to reattach handlers when images change.
3211 $refs.strip.on('tap', selector('item'), itemTapHandler);
3212 $refs.content
3213 .on('swipe', swipeHandler)
3214 .on('tap', selector('left'), preventDefaultAnd(lightbox.prev))
3215 .on('tap', selector('right'), preventDefaultAnd(lightbox.next))
3216 .on('tap', selector('close'), preventDefaultAnd(lightbox.hide))
3217 .on('tap', selector('image, caption'), toggleControlsOr(lightbox.next));
3218 $refs.container.on(
3219 'tap', selector('view, strip'), toggleControlsOr(lightbox.hide)
3220 )
3221 // Prevent images from being dragged around.
3222 .on('dragstart', selector('img'), preventDefault);
3223 $refs.lightbox
3224 .on('keydown', keyHandler)
3225 // While visible, prevent lightbox from loosing focus to other nodes.
3226 // IE looses focus without letting us know.
3227 .on('focusin', focusThis)
3228 // Unfortunately setTimeout is needed because of a 14 year old
3229 // Firefox bug (https://bugzilla.mozilla.org/show_bug.cgi?id=53579#c4).
3230 .on('blur', function() {
3231 setTimeout(focusThis.bind(this), 0);
3232 });
3233
3234 // The `tabindex` attribute is needed to enable non-input elements
3235 // to receive keyboard events.
3236 $('body').append($refs.lightbox.prop('tabIndex', 0));
3237
3238 return lightbox;
3239 };
3240
3241 /**
3242 * Dispose of DOM nodes created by the lightbox.
3243 */
3244 lightbox.destroy = function() {
3245 if (!$refs) {
3246 return;
3247 }
3248
3249 // Event handlers are also removed.
3250 $refs.lightbox.remove();
3251 $refs = undefined;
3252 };
3253
3254 /**
3255 * Show a specific item.
3256 */
3257 lightbox.show = function(index) {
3258 // Bail if we are already showing this item.
3259 if (index === currentIndex) {
3260 return;
3261 }
3262
3263 var item = items[index];
3264 var previousIndex = currentIndex;
3265 currentIndex = index;
3266 spinner.show();
3267
3268 // For videos, load an empty SVG with the video dimensions to preserve
3269 // the video’s aspect ratio while being responsive.
3270 var url = item.html && svgDataUri(item.width, item.height) || item.url;
3271 loadImage(url, function($image) {
3272 // Make sure this is the last item requested to be shown since
3273 // images can finish loading in a different order than they were
3274 // requested in.
3275 if (index != currentIndex) {
3276 return;
3277 }
3278
3279 var $figure = dom('figure', 'figure').append(addClass($image, 'image'));
3280 var $frame = dom('frame').append($figure);
3281 var $newView = dom('view').append($frame);
3282
3283 if (item.html) {
3284 $figure.append(addClass($(item.html), 'embed'));
3285 }
3286
3287 if (item.caption) {
3288 $figure.append(dom('caption', 'figcaption').text(item.caption));
3289 }
3290
3291 spinner.hide();
3292
3293 toggleClass($refs.arrowLeft, 'inactive', index <= 0);
3294 toggleClass($refs.arrowRight, 'inactive', index >= items.length - 1);
3295
3296 $refs.spinner.before($newView);
3297
3298 if ($refs.view) {
3299 tram($refs.view)
3300 .add('opacity .3s')
3301 .start({
3302 opacity: 0
3303 })
3304 .then(remover($refs.view));
3305
3306 tram($newView)
3307 .add('opacity .3s')
3308 .add('transform .3s')
3309 .set({
3310 opacity: 0,
3311 x: index > previousIndex ? '80px' : '-80px'
3312 })
3313 .start({
3314 opacity: 1,
3315 x: 0
3316 });
3317 }
3318
3319 $refs.view = $newView;
3320
3321 if ($refs.items) {
3322 // Mark proper thumbnail as active
3323 addClass(removeClass($refs.items, 'active').eq(index), 'active');
3324 }
3325 });
3326
3327 return lightbox;
3328 };
3329
3330 /**
3331 * Hides the lightbox.
3332 */
3333 lightbox.hide = function() {
3334 tram($refs.lightbox)
3335 .add('opacity .3s')
3336 .start({
3337 opacity: 0
3338 })
3339 .then(hideLightbox);
3340
3341 return lightbox;
3342 };
3343
3344 lightbox.prev = function() {
3345 if (currentIndex > 0) {
3346 lightbox.show(currentIndex - 1);
3347 }
3348 };
3349
3350 lightbox.next = function() {
3351 if (currentIndex < items.length - 1) {
3352 lightbox.show(currentIndex + 1);
3353 }
3354 };
3355
3356 function toggleControlsOr(callback) {
3357 return function(event) {
3358 // We only care about events triggered directly on the bound selectors.
3359 if (this != event.target) {
3360 return;
3361 }
3362
3363 event.stopPropagation();
3364 event.preventDefault();
3365
3366 if (matchMedia(breakpoint).matches) {
3367 callback();
3368 } else {
3369 toggleClass($refs.controls, 'visible');
3370 }
3371 };
3372 }
3373
3374 var itemTapHandler = function(event) {
3375 var index = $(this).index();
3376
3377 event.preventDefault();
3378 lightbox.show(index);
3379 };
3380
3381 var swipeHandler = function(event, data) {
3382 // Prevent scrolling.
3383 event.preventDefault();
3384
3385 if (data.direction == 'left') {
3386 lightbox.next();
3387 } else if (data.direction == 'right') {
3388 lightbox.prev();
3389 }
3390 };
3391
3392 function preventDefaultAnd(action) {
3393 return function(event) {
3394 // Prevents click events and zooming.
3395 event.preventDefault();
3396 action();
3397 };
3398 }
3399
3400 var focusThis = function() {
3401 this.focus();
3402 };
3403
3404 function preventDefault(event) {
3405 event.preventDefault();
3406 }
3407
3408 function keyHandler(event) {
3409 var keyCode = event.keyCode;
3410
3411 // [esc]
3412 if (keyCode == 27) {
3413 lightbox.hide();
3414 }
3415
3416 // [◀]
3417 else if (keyCode == 37) {
3418 lightbox.prev();
3419 }
3420
3421 // [▶]
3422 else if (keyCode == 39) {
3423 lightbox.next();
3424 }
3425 }
3426
3427 function hideLightbox() {
3428 removeClass($refs.html, 'noscroll');
3429 addClass($refs.lightbox, 'hide');
3430 $refs.strip.empty();
3431 $refs.view && $refs.view.remove();
3432
3433 // Reset some stuff
3434 removeClass($refs.content, 'group');
3435 removeClass($refs.controls, 'visible');
3436 addClass($refs.arrowLeft, 'inactive');
3437 addClass($refs.arrowRight, 'inactive');
3438
3439 currentIndex = $refs.view = undefined;
3440 }
3441
3442 function loadImage(url, callback) {
3443 var $image = dom('img', 'img');
3444
3445 $image.one('load', function() {
3446 callback($image);
3447 });
3448
3449 // Start loading image.
3450 $image.attr('src', url);
3451
3452 return $image;
3453 }
3454
3455 function remover($element) {
3456 return function() {
3457 $element.remove();
3458 };
3459 }
3460
3461 /**
3462 * Spinner
3463 */
3464 function Spinner($spinner, className, delay) {
3465 this.$element = $spinner;
3466 this.className = className;
3467 this.delay = delay || 200;
3468 this.hide();
3469 }
3470
3471 Spinner.prototype.show = function() {
3472 var spinner = this;
3473
3474 // Bail if we are already showing the spinner.
3475 if (spinner.timeoutId) {
3476 return;
3477 }
3478
3479 spinner.timeoutId = setTimeout(function() {
3480 spinner.$element.removeClass(spinner.className);
3481 delete spinner.timeoutId;
3482 }, spinner.delay);
3483 };
3484
3485 Spinner.prototype.hide = function() {
3486 var spinner = this;
3487 if (spinner.timeoutId) {
3488 clearTimeout(spinner.timeoutId);
3489 delete spinner.timeoutId;
3490 return;
3491 }
3492
3493 spinner.$element.addClass(spinner.className);
3494 };
3495
3496 function prefixed(string, isSelector) {
3497 return string.replace(prefixRegex, (isSelector ? ' .' : ' ') + prefix);
3498 }
3499
3500 function selector(string) {
3501 return prefixed(string, true);
3502 }
3503
3504 /**
3505 * jQuery.addClass with auto-prefixing
3506 * @param {jQuery} Element to add class to
3507 * @param {string} Class name that will be prefixed and added to element
3508 * @return {jQuery}
3509 */
3510 function addClass($element, className) {
3511 return $element.addClass(prefixed(className));
3512 }
3513
3514 /**
3515 * jQuery.removeClass with auto-prefixing
3516 * @param {jQuery} Element to remove class from
3517 * @param {string} Class name that will be prefixed and removed from element
3518 * @return {jQuery}
3519 */
3520 function removeClass($element, className) {
3521 return $element.removeClass(prefixed(className));
3522 }
3523
3524 /**
3525 * jQuery.toggleClass with auto-prefixing
3526 * @param {jQuery} Element where class will be toggled
3527 * @param {string} Class name that will be prefixed and toggled
3528 * @param {boolean} Optional boolean that determines if class will be added or removed
3529 * @return {jQuery}
3530 */
3531 function toggleClass($element, className, shouldAdd) {
3532 return $element.toggleClass(prefixed(className), shouldAdd);
3533 }
3534
3535 /**
3536 * Create a new DOM element wrapped in a jQuery object,
3537 * decorated with our custom methods.
3538 * @param {string} className
3539 * @param {string} [tag]
3540 * @return {jQuery}
3541 */
3542 function dom(className, tag) {
3543 return addClass($(document.createElement(tag || 'div')), className);
3544 }
3545
3546 function isObject(value) {
3547 return typeof value == 'object' && null != value && !isArray(value);
3548 }
3549
3550 function svgDataUri(width, height) {
3551 var svg = '<svg xmlns="http://www.w3.org/2000/svg" width="' + width + '" height="' + height + '"/>';
3552 return 'data:image/svg+xml;charset=utf-8,' + encodeURI(svg);
3553 }
3554
3555 // Compute some dimensions manually for iOS, because of buggy support for VH.
3556 // Also, Android built-in browser does not support viewport units.
3557 (function() {
3558 var ua = window.navigator.userAgent;
3559 var iOS = /(iPhone|iPod|iPad).+AppleWebKit/i.test(ua);
3560 var android = ua.indexOf('Android ') > -1 && ua.indexOf('Chrome') == -1;
3561
3562 if (!iOS && !android) {
3563 return;
3564 }
3565
3566 var styleNode = document.createElement('style');
3567 document.head.appendChild(styleNode);
3568 window.addEventListener('orientationchange', refresh, true);
3569
3570 function refresh() {
3571 var vh = window.innerHeight;
3572 var vw = window.innerWidth;
3573 var content =
3574 '.w-lightbox-content, .w-lightbox-view, .w-lightbox-view:before {' +
3575 'height:' + vh + 'px' +
3576 '}' +
3577 '.w-lightbox-view {' +
3578 'width:' + vw + 'px' +
3579 '}' +
3580 '.w-lightbox-group, .w-lightbox-group .w-lightbox-view, .w-lightbox-group .w-lightbox-view:before {' +
3581 'height:' + (0.86 * vh) + 'px' +
3582 '}' +
3583 '.w-lightbox-image {' +
3584 'max-width:' + vw + 'px;' +
3585 'max-height:' + vh + 'px' +
3586 '}' +
3587 '.w-lightbox-group .w-lightbox-image {' +
3588 'max-height:' + (0.86 * vh) + 'px' +
3589 '}' +
3590 '.w-lightbox-strip {' +
3591 'padding: 0 ' + (0.01 * vh) + 'px' +
3592 '}' +
3593 '.w-lightbox-item {' +
3594 'width:' + (0.1 * vh) + 'px;' +
3595 'padding:' + (0.02 * vh) + 'px ' + (0.01 * vh) + 'px' +
3596 '}' +
3597 '.w-lightbox-thumbnail {' +
3598 'height:' + (0.1 * vh) + 'px' +
3599 '}';
3600
3601 styleNode.textContent = content;
3602 }
3603
3604 refresh();
3605 })();
3606
3607 return lightbox;
3608})(window, document, jQuery, window.tram);
3609
3610Webflow.define('lightbox', function($, _) {
3611 'use strict';
3612
3613 var api = {};
3614 var $doc = $(document);
3615 var $body;
3616 var $lightboxes;
3617 var designer;
3618 var inApp = Webflow.env();
3619 var namespace = '.w-lightbox';
3620 var groups;
3621
3622 // -----------------------------------
3623 // Module methods
3624
3625 api.ready = api.design = api.preview = init;
3626
3627 // -----------------------------------
3628 // Private methods
3629
3630 function init() {
3631 designer = inApp && Webflow.env('design');
3632 $body = $(document.body);
3633
3634 // Reset Lightbox
3635 lightbox.destroy();
3636
3637 // Reset groups
3638 groups = {};
3639
3640 // Find all instances on the page
3641 $lightboxes = $doc.find(namespace);
3642 $lightboxes.each(build);
3643 }
3644
3645 function build(i, el) {
3646 var $el = $(el);
3647
3648 // Store state in data
3649 var data = $.data(el, namespace);
3650 if (!data) data = $.data(el, namespace, {
3651 el: $el,
3652 mode: 'images',
3653 images: [],
3654 embed: ''
3655 });
3656
3657 // Remove old events
3658 data.el.off(namespace);
3659
3660 // Set config from json script tag
3661 configure(data);
3662
3663 // Add events based on mode
3664 if (designer) {
3665 data.el.on('setting' + namespace, configure.bind(null, data));
3666 } else {
3667 data.el
3668 .on('tap' + namespace, tapHandler(data))
3669 // Prevent page scrolling to top when clicking on lightbox triggers.
3670 .on('click' + namespace, function(e) {
3671 e.preventDefault();
3672 });
3673 }
3674 }
3675
3676 function configure(data) {
3677 var json = data.el.children('.w-json').html();
3678 var groupId, group;
3679
3680 if (!json) {
3681 data.images = [];
3682 return;
3683 }
3684
3685 try {
3686 json = JSON.parse(json);
3687 data.mode = json.mode;
3688
3689 if (json.mode == 'video') {
3690 data.embed = json.embed;
3691 } else {
3692 groupId = json.groupId;
3693 if (groupId) {
3694 group = groups[groupId];
3695 if (!group) {
3696 group = groups[groupId] = [];
3697 }
3698
3699 data.images = group;
3700
3701 if (json.images.length) {
3702 data.index = group.length;
3703 group.push.apply(group, json.images);
3704 }
3705 } else {
3706 data.images = json.images;
3707 }
3708 }
3709 } catch (e) {
3710 console.error('Malformed lightbox JSON configuration.', e.message);
3711 }
3712 }
3713
3714 function tapHandler(data) {
3715 return function() {
3716 if (data.mode == 'video') {
3717 data.embed && lightbox(data.embed);
3718 } else {
3719 data.images.length && lightbox(data.images, data.index || 0);
3720 }
3721 };
3722 }
3723
3724 // Export module
3725 return api;
3726});
3727/**
3728 * ----------------------------------------------------------------------
3729 * Webflow: Navbar component
3730 */
3731Webflow.define('navbar', function($, _) {
3732 'use strict';
3733
3734 var api = {};
3735 var tram = window.tram;
3736 var $win = $(window);
3737 var $doc = $(document);
3738 var $body;
3739 var $navbars;
3740 var designer;
3741 var inApp = Webflow.env();
3742 var overlay = '<div class="w-nav-overlay" data-wf-ignore />';
3743 var namespace = '.w-nav';
3744 var buttonOpen = 'w--open';
3745 var menuOpen = 'w--nav-menu-open';
3746 var linkOpen = 'w--nav-link-open';
3747 var ix = Webflow.ixEvents();
3748
3749 // -----------------------------------
3750 // Module methods
3751
3752 api.ready = api.design = api.preview = init;
3753 api.destroy = removeListeners;
3754
3755 // -----------------------------------
3756 // Private methods
3757
3758 function init() {
3759 designer = inApp && Webflow.env('design');
3760 $body = $(document.body);
3761
3762 // Find all instances on the page
3763 $navbars = $doc.find(namespace);
3764 if (!$navbars.length) return;
3765 $navbars.each(build);
3766
3767 // Wire events
3768 removeListeners();
3769 addListeners();
3770 }
3771
3772 function removeListeners() {
3773 Webflow.resize.off(resizeAll);
3774 }
3775
3776 function addListeners() {
3777 Webflow.resize.on(resizeAll);
3778 }
3779
3780 function resizeAll() {
3781 $navbars.each(resize);
3782 }
3783
3784 function build(i, el) {
3785 var $el = $(el);
3786
3787 // Store state in data
3788 var data = $.data(el, namespace);
3789 if (!data) data = $.data(el, namespace, {
3790 open: false,
3791 el: $el,
3792 config: {}
3793 });
3794 data.menu = $el.find('.w-nav-menu');
3795 data.links = data.menu.find('.w-nav-link');
3796 data.dropdowns = data.menu.find('.w-dropdown');
3797 data.button = $el.find('.w-nav-button');
3798 data.container = $el.find('.w-container');
3799 data.outside = outside(data);
3800
3801 // Remove old events
3802 data.el.off(namespace);
3803 data.button.off(namespace);
3804 data.menu.off(namespace);
3805
3806 // Set config from data attributes
3807 configure(data);
3808
3809 // Add events based on mode
3810 if (designer) {
3811 removeOverlay(data);
3812 data.el.on('setting' + namespace, handler(data));
3813 } else {
3814 addOverlay(data);
3815 data.button.on('tap' + namespace, toggle(data));
3816 data.menu.on('tap' + namespace, 'a', navigate(data));
3817 }
3818
3819 // Trigger initial resize
3820 resize(i, el);
3821 }
3822
3823 function removeOverlay(data) {
3824 if (!data.overlay) return;
3825 close(data, true);
3826 data.overlay.remove();
3827 data.overlay = null;
3828 }
3829
3830 function addOverlay(data) {
3831 if (data.overlay) return;
3832 data.overlay = $(overlay).appendTo(data.el);
3833 data.parent = data.menu.parent();
3834 close(data, true);
3835 }
3836
3837 function configure(data) {
3838 var config = {};
3839 var old = data.config || {};
3840
3841 // Set config options from data attributes
3842 var animation = config.animation = data.el.attr('data-animation') || 'default';
3843 config.animOver = /^over/.test(animation);
3844 config.animDirect = /left$/.test(animation) ? -1 : 1;
3845
3846 // Re-open menu if the animation type changed
3847 if (old.animation != animation) {
3848 data.open && _.defer(reopen, data);
3849 }
3850
3851 config.easing = data.el.attr('data-easing') || 'ease';
3852 config.easing2 = data.el.attr('data-easing2') || 'ease';
3853
3854 var duration = data.el.attr('data-duration');
3855 config.duration = duration != null ? +duration : 400;
3856
3857 config.docHeight = data.el.attr('data-doc-height');
3858
3859 // Store config in data
3860 data.config = config;
3861 }
3862
3863 function handler(data) {
3864 return function(evt, options) {
3865 options = options || {};
3866 var winWidth = $win.width();
3867 configure(data);
3868 options.open === true && open(data, true);
3869 options.open === false && close(data, true);
3870 // Reopen if media query changed after setting
3871 data.open && _.defer(function() {
3872 if (winWidth != $win.width()) reopen(data);
3873 });
3874 };
3875 }
3876
3877 function closeEach(i, el) {
3878 var data = $.data(el, namespace);
3879 data.open && close(data);
3880 }
3881
3882 function reopen(data) {
3883 if (!data.open) return;
3884 close(data, true);
3885 open(data, true);
3886 }
3887
3888 function toggle(data) {
3889 return _.debounce(function(evt) {
3890 data.open ? close(data) : open(data);
3891 });
3892 }
3893
3894 function navigate(data) {
3895 return function(evt) {
3896 var link = $(this);
3897 var href = link.attr('href');
3898
3899 // Close when navigating to an in-page anchor
3900 if (href && href.indexOf('#') === 0 && data.open) {
3901 // Avoid empty hash links
3902 if (href.length === 1) evt.preventDefault();
3903 close(data);
3904 }
3905 };
3906 }
3907
3908 function outside(data) {
3909 // Unbind previous tap handler if it exists
3910 if (data.outside) $doc.off('tap' + namespace, data.outside);
3911
3912 // Close menu when tapped outside
3913 return _.debounce(function(evt) {
3914 if (!data.open) return;
3915 var menu = $(evt.target).closest('.w-nav-menu');
3916 if (!data.menu.is(menu)) {
3917 close(data);
3918 }
3919 });
3920 }
3921
3922 function resize(i, el) {
3923 var data = $.data(el, namespace);
3924 // Check for collapsed state based on button display
3925 var collapsed = data.collapsed = data.button.css('display') != 'none';
3926 // Close menu if button is no longer visible (and not in designer)
3927 if (data.open && !collapsed && !designer) close(data, true);
3928 // Set max-width of links + dropdowns to match container
3929 if (data.container.length) {
3930 var updateEachMax = updateMax(data);
3931 data.links.each(updateEachMax);
3932 data.dropdowns.each(updateEachMax);
3933 }
3934 // If currently open, update height to match body
3935 if (data.open) {
3936 setOverlayHeight(data);
3937 }
3938 }
3939
3940 var maxWidth = 'max-width';
3941
3942 function updateMax(data) {
3943 // Set max-width of each element to match container
3944 var containMax = data.container.css(maxWidth);
3945 if (containMax == 'none') containMax = '';
3946 return function(i, link) {
3947 link = $(link);
3948 link.css(maxWidth, '');
3949 // Don't set the max-width if an upstream value exists
3950 if (link.css(maxWidth) == 'none') link.css(maxWidth, containMax);
3951 };
3952 }
3953
3954 function open(data, immediate) {
3955 if (data.open) return;
3956 data.open = true;
3957 data.menu.addClass(menuOpen);
3958 data.links.addClass(linkOpen);
3959 data.button.addClass(buttonOpen);
3960 var config = data.config;
3961 var animation = config.animation;
3962 if (animation == 'none' || !tram.support.transform) immediate = true;
3963 var bodyHeight = setOverlayHeight(data);
3964 var menuHeight = data.menu.outerHeight(true);
3965 var menuWidth = data.menu.outerWidth(true);
3966 var navHeight = data.el.height();
3967 var navbarEl = data.el[0];
3968 resize(0, navbarEl);
3969 ix.intro(0, navbarEl);
3970
3971 // Listen for tap outside events
3972 if (!designer) $doc.on('tap' + namespace, data.outside);
3973
3974 // No transition for immediate
3975 if (immediate) return;
3976
3977 var transConfig = 'transform ' + config.duration + 'ms ' + config.easing;
3978
3979 // Add menu to overlay
3980 if (data.overlay) {
3981 data.overlay.show().append(data.menu);
3982 }
3983
3984 // Over left/right
3985 if (config.animOver) {
3986 tram(data.menu)
3987 .add(transConfig)
3988 .set({
3989 x: config.animDirect * menuWidth,
3990 height: bodyHeight
3991 }).start({
3992 x: 0
3993 });
3994 data.overlay && data.overlay.width(menuWidth);
3995 return;
3996 }
3997
3998 // Drop Down
3999 var offsetY = navHeight + menuHeight;
4000 tram(data.menu)
4001 .add(transConfig)
4002 .set({
4003 y: -offsetY
4004 }).start({
4005 y: 0
4006 });
4007 }
4008
4009 function setOverlayHeight(data) {
4010 var config = data.config;
4011 var bodyHeight = config.docHeight ? $doc.height() : $body.height();
4012 if (config.animOver) {
4013 data.menu.height(bodyHeight);
4014 } else if (data.el.css('position') != 'fixed') {
4015 bodyHeight -= data.el.height();
4016 }
4017 data.overlay && data.overlay.height(bodyHeight);
4018 return bodyHeight;
4019 }
4020
4021 function close(data, immediate) {
4022 if (!data.open) return;
4023 data.open = false;
4024 data.button.removeClass(buttonOpen);
4025 var config = data.config;
4026 if (config.animation == 'none' || !tram.support.transform) immediate = true;
4027 var animation = config.animation;
4028 ix.outro(0, data.el[0]);
4029
4030 // Stop listening for tap outside events
4031 $doc.off('tap' + namespace, data.outside);
4032
4033 if (immediate) {
4034 tram(data.menu).stop();
4035 complete();
4036 return;
4037 }
4038
4039 var transConfig = 'transform ' + config.duration + 'ms ' + config.easing2;
4040 var menuHeight = data.menu.outerHeight(true);
4041 var menuWidth = data.menu.outerWidth(true);
4042 var navHeight = data.el.height();
4043
4044 // Over left/right
4045 if (config.animOver) {
4046 tram(data.menu)
4047 .add(transConfig)
4048 .start({
4049 x: menuWidth * config.animDirect
4050 }).then(complete);
4051 return;
4052 }
4053
4054 // Drop Down
4055 var offsetY = navHeight + menuHeight;
4056 tram(data.menu)
4057 .add(transConfig)
4058 .start({
4059 y: -offsetY
4060 }).then(complete);
4061
4062 function complete() {
4063 data.menu.height('');
4064 tram(data.menu).set({
4065 x: 0,
4066 y: 0
4067 });
4068 data.menu.removeClass(menuOpen);
4069 data.links.removeClass(linkOpen);
4070 if (data.overlay && data.overlay.children().length) {
4071 // Move menu back to parent
4072 data.menu.appendTo(data.parent);
4073 data.overlay.attr('style', '').hide();
4074 }
4075
4076 // Trigger event so other components can hook in (dropdown)
4077 data.el.triggerHandler('w-close');
4078 }
4079 }
4080
4081 // Export module
4082 return api;
4083});
4084/**
4085 * ----------------------------------------------------------------------
4086 * Webflow: Dropdown component
4087 */
4088Webflow.define('dropdown', function($, _) {
4089 'use strict';
4090
4091 var api = {};
4092 var tram = window.tram;
4093 var $doc = $(document);
4094 var $dropdowns;
4095 var designer;
4096 var inApp = Webflow.env();
4097 var namespace = '.w-dropdown';
4098 var stateOpen = 'w--open';
4099 var closeEvent = 'w-close' + namespace;
4100 var ix = Webflow.ixEvents();
4101
4102 // -----------------------------------
4103 // Module methods
4104
4105 api.ready = api.design = api.preview = init;
4106
4107 // -----------------------------------
4108 // Private methods
4109
4110 function init() {
4111 designer = inApp && Webflow.env('design');
4112
4113 // Find all instances on the page
4114 $dropdowns = $doc.find(namespace);
4115 $dropdowns.each(build);
4116 }
4117
4118 function build(i, el) {
4119 var $el = $(el);
4120
4121 // Store state in data
4122 var data = $.data(el, namespace);
4123 if (!data) data = $.data(el, namespace, {
4124 open: false,
4125 el: $el,
4126 config: {}
4127 });
4128 data.list = $el.children('.w-dropdown-list');
4129 data.toggle = $el.children('.w-dropdown-toggle');
4130 data.links = data.list.children('.w-dropdown-link');
4131 data.outside = outside(data);
4132 data.complete = complete(data);
4133
4134 // Remove old events
4135 $el.off(namespace);
4136 data.toggle.off(namespace);
4137
4138 // Set config from data attributes
4139 configure(data);
4140
4141 if (data.nav) data.nav.off(namespace);
4142 data.nav = $el.closest('.w-nav');
4143 data.nav.on(closeEvent, handler(data));
4144
4145 // Add events based on mode
4146 if (designer) {
4147 $el.on('setting' + namespace, handler(data));
4148 } else {
4149 data.toggle.on('tap' + namespace, toggle(data));
4150 $el.on(closeEvent, handler(data));
4151 // Close in preview mode
4152 inApp && close(data);
4153 }
4154 }
4155
4156 function configure(data) {
4157 data.config = {
4158 hover: +data.el.attr('data-hover'),
4159 delay: +data.el.attr('data-delay') || 0
4160 };
4161 }
4162
4163 function handler(data) {
4164 return function(evt, options) {
4165 options = options || {};
4166
4167 if (evt.type == 'w-close') {
4168 return close(data);
4169 }
4170
4171 if (evt.type == 'setting') {
4172 configure(data);
4173 options.open === true && open(data, true);
4174 options.open === false && close(data, true);
4175 return;
4176 }
4177 };
4178 }
4179
4180 function toggle(data) {
4181 return _.debounce(function(evt) {
4182 data.open ? close(data) : open(data);
4183 });
4184 }
4185
4186 function open(data, immediate) {
4187 if (data.open) return;
4188 closeOthers(data);
4189 data.open = true;
4190 data.list.addClass(stateOpen);
4191 data.toggle.addClass(stateOpen);
4192 ix.intro(0, data.el[0]);
4193
4194 // Listen for tap outside events
4195 if (!designer) $doc.on('tap' + namespace, data.outside);
4196
4197 // Clear previous delay
4198 window.clearTimeout(data.delayId);
4199 }
4200
4201 function close(data, immediate) {
4202 if (!data.open) return;
4203 data.open = false;
4204 var config = data.config;
4205 ix.outro(0, data.el[0]);
4206
4207 // Stop listening for tap outside events
4208 $doc.off('tap' + namespace, data.outside);
4209
4210 // Clear previous delay
4211 window.clearTimeout(data.delayId);
4212
4213 // Skip delay during immediate
4214 if (!config.delay || immediate) return data.complete();
4215
4216 // Optionally wait for delay before close
4217 data.delayId = window.setTimeout(data.complete, config.delay);
4218 }
4219
4220 function closeOthers(data) {
4221 var self = data.el[0];
4222 $dropdowns.each(function(i, other) {
4223 var $other = $(other);
4224 if ($other.is(self) || $other.has(self).length) return;
4225 $other.triggerHandler(closeEvent);
4226 });
4227 }
4228
4229 function outside(data) {
4230 // Unbind previous tap handler if it exists
4231 if (data.outside) $doc.off('tap' + namespace, data.outside);
4232
4233 // Close menu when tapped outside
4234 return _.debounce(function(evt) {
4235 if (!data.open) return;
4236 var $target = $(evt.target);
4237 if ($target.closest('.w-dropdown-toggle').length) return;
4238 if (!data.el.is($target.closest(namespace))) {
4239 close(data);
4240 }
4241 });
4242 }
4243
4244 function complete(data) {
4245 return function() {
4246 data.list.removeClass(stateOpen);
4247 data.toggle.removeClass(stateOpen);
4248 };
4249 }
4250
4251 // Export module
4252 return api;
4253});
4254/**
4255 * ----------------------------------------------------------------------
4256 * Webflow: Tabs component
4257 */
4258Webflow.define('tabs', function($, _) {
4259 'use strict';
4260
4261 var api = {};
4262 var tram = window.tram;
4263 var $win = $(window);
4264 var $doc = $(document);
4265 var $tabs;
4266 var design;
4267 var env = Webflow.env;
4268 var safari = env.safari;
4269 var inApp = env();
4270 var tabAttr = 'data-w-tab';
4271 var namespace = '.w-tabs';
4272 var linkCurrent = 'w--current';
4273 var tabActive = 'w--tab-active';
4274 var ix = Webflow.ixEvents();
4275
4276 // -----------------------------------
4277 // Module methods
4278
4279 api.ready = api.design = api.preview = init;
4280
4281 // -----------------------------------
4282 // Private methods
4283
4284 function init() {
4285 design = inApp && Webflow.env('design');
4286
4287 // Find all instances on the page
4288 $tabs = $doc.find(namespace);
4289 if (!$tabs.length) return;
4290 $tabs.each(build);
4291 }
4292
4293 function build(i, el) {
4294 var $el = $(el);
4295
4296 // Store state in data
4297 var data = $.data(el, namespace);
4298 if (!data) data = $.data(el, namespace, {
4299 el: $el,
4300 config: {}
4301 });
4302 data.current = null;
4303 data.menu = $el.children('.w-tab-menu');
4304 data.links = data.menu.children('.w-tab-link');
4305 data.content = $el.children('.w-tab-content');
4306 data.panes = data.content.children('.w-tab-pane');
4307
4308 // Remove old events
4309 data.el.off(namespace);
4310 data.links.off(namespace);
4311
4312 // Set config from data attributes
4313 configure(data);
4314
4315 // Wire up events when not in design mode
4316 if (!design) {
4317 data.links.on('click' + namespace, linkSelect(data));
4318
4319 // Trigger first intro event from current tab
4320 var $link = data.links.filter('.' + linkCurrent);
4321 var tab = $link.attr(tabAttr);
4322 tab && changeTab(data, {
4323 tab: tab,
4324 immediate: true
4325 });
4326 }
4327 }
4328
4329 function configure(data) {
4330 var config = {};
4331 var old = data.config || {};
4332
4333 // Set config options from data attributes
4334 config.easing = data.el.attr('data-easing') || 'ease';
4335
4336 var intro = +data.el.attr('data-duration-in');
4337 intro = config.intro = intro === intro ? intro : 0;
4338
4339 var outro = +data.el.attr('data-duration-out');
4340 outro = config.outro = outro === outro ? outro : 0;
4341
4342 config.immediate = !intro && !outro;
4343
4344 // Store config in data
4345 data.config = config;
4346 }
4347
4348 function linkSelect(data) {
4349 return function(evt) {
4350 var tab = evt.currentTarget.getAttribute(tabAttr);
4351 tab && changeTab(data, {
4352 tab: tab
4353 });
4354 };
4355 }
4356
4357 function changeTab(data, options) {
4358 options = options || {};
4359
4360 var config = data.config;
4361 var easing = config.easing;
4362 var tab = options.tab;
4363
4364 // Don't select the same tab twice
4365 if (tab === data.current) return;
4366 data.current = tab;
4367
4368 // Select the current link
4369 data.links.each(function(i, el) {
4370 var $el = $(el);
4371 if (el.getAttribute(tabAttr) === tab) $el.addClass(linkCurrent).each(ix.intro);
4372 else if ($el.hasClass(linkCurrent)) $el.removeClass(linkCurrent).each(ix.outro);
4373 });
4374
4375 // Find the new tab panes and keep track of previous
4376 var targets = [];
4377 var previous = [];
4378 data.panes.each(function(i, el) {
4379 var $el = $(el);
4380 if (el.getAttribute(tabAttr) === tab) {
4381 targets.push(el);
4382 } else if ($el.hasClass(tabActive)) {
4383 previous.push(el);
4384 }
4385 });
4386
4387 var $targets = $(targets);
4388 var $previous = $(previous);
4389
4390 // Switch tabs immediately and bypass transitions
4391 if (options.immediate || config.immediate) {
4392 $targets.addClass(tabActive).each(ix.intro);
4393 $previous.removeClass(tabActive);
4394 Webflow.redraw.up();
4395 return;
4396 }
4397
4398 // Fade out the currently active tab before intro
4399 if ($previous.length && config.outro) {
4400 $previous.each(ix.outro);
4401 tram($previous)
4402 .add('opacity ' + config.outro + 'ms ' + easing, {
4403 fallback: safari
4404 })
4405 .start({
4406 opacity: 0
4407 })
4408 .then(intro);
4409 } else {
4410 // Skip the outro and play intro
4411 intro();
4412 }
4413
4414 // Fade in the new target
4415 function intro() {
4416 // Clear previous active class + inline style
4417 $previous.removeClass(tabActive).removeAttr('style');
4418
4419 // Add active class to new target
4420 $targets.addClass(tabActive).each(ix.intro);
4421 Webflow.redraw.up();
4422
4423 // Set opacity immediately if intro is zero
4424 if (!config.intro) return tram($targets).set({
4425 opacity: 1
4426 });
4427
4428 // Otherwise fade in opacity
4429 tram($targets)
4430 .set({
4431 opacity: 0
4432 })
4433 .redraw()
4434 .add('opacity ' + config.intro + 'ms ' + easing, {
4435 fallback: safari
4436 })
4437 .start({
4438 opacity: 1
4439 });
4440 }
4441 }
4442
4443 // Export module
4444 return api;
4445}); \ No newline at end of file
diff --git a/Back/ZJW/javascripts/webfont.js b/Back/ZJW/javascripts/webfont.js
new file mode 100644
index 0000000..8518477
--- /dev/null
+++ b/Back/ZJW/javascripts/webfont.js
@@ -0,0 +1,828 @@
1/*
2 * Copyright 2013 Small Batch, Inc.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
5 * use this file except in compliance with the License. You may obtain a copy of
6 * the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13 * License for the specific language governing permissions and limitations under
14 * the License.
15 */
16;
17(function(window, document, undefined) {
18 var j = void 0,
19 k = !0,
20 l = null,
21 p = !1;
22
23 function q(a) {
24 return function() {
25 return this[a]
26 }
27 }
28 var aa = this;
29
30 function ba(a, b) {
31 var c = a.split("."),
32 d = aa;
33 !(c[0] in d) && d.execScript && d.execScript("var " + c[0]);
34 for (var e; c.length && (e = c.shift());)!c.length && b !== j ? d[e] = b : d = d[e] ? d[e] : d[e] = {}
35 }
36 aa.Ba = k;
37
38 function ca(a, b, c) {
39 return a.call.apply(a.bind, arguments)
40 }
41
42 function da(a, b, c) {
43 if (!a) throw Error();
44 if (2 < arguments.length) {
45 var d = Array.prototype.slice.call(arguments, 2);
46 return function() {
47 var c = Array.prototype.slice.call(arguments);
48 Array.prototype.unshift.apply(c, d);
49 return a.apply(b, c)
50 }
51 }
52 return function() {
53 return a.apply(b, arguments)
54 }
55 }
56
57 function s(a, b, c) {
58 s = Function.prototype.bind && -1 != Function.prototype.bind.toString().indexOf("native code") ? ca : da;
59 return s.apply(l, arguments)
60 }
61 var ea = Date.now || function() {
62 return +new Date
63 };
64
65 function fa(a, b) {
66 this.G = a;
67 this.u = b || a;
68 this.z = this.u.document;
69 this.R = j
70 }
71 fa.prototype.createElement = function(a, b, c) {
72 a = this.z.createElement(a);
73 if (b)
74 for (var d in b)
75 if (b.hasOwnProperty(d))
76 if ("style" == d) {
77 var e = a,
78 f = b[d];
79 ga(this) ? e.setAttribute("style", f) : e.style.cssText = f
80 } else a.setAttribute(d, b[d]);
81 c && a.appendChild(this.z.createTextNode(c));
82 return a
83 };
84
85 function t(a, b, c) {
86 a = a.z.getElementsByTagName(b)[0];
87 a || (a = document.documentElement);
88 a && a.lastChild && a.insertBefore(c, a.lastChild)
89 }
90
91 function u(a, b) {
92 return a.createElement("link", {
93 rel: "stylesheet",
94 href: b
95 })
96 }
97
98 function ha(a, b) {
99 return a.createElement("script", {
100 src: b
101 })
102 }
103
104 function v(a, b) {
105 for (var c = a.className.split(/\s+/), d = 0, e = c.length; d < e; d++)
106 if (c[d] == b) return;
107 c.push(b);
108 a.className = c.join(" ").replace(/\s+/g, " ").replace(/^\s+|\s+$/, "")
109 }
110
111 function w(a, b) {
112 for (var c = a.className.split(/\s+/), d = [], e = 0, f = c.length; e < f; e++) c[e] != b && d.push(c[e]);
113 a.className = d.join(" ").replace(/\s+/g, " ").replace(/^\s+|\s+$/, "")
114 }
115
116 function ia(a, b) {
117 for (var c = a.className.split(/\s+/), d = 0, e = c.length; d < e; d++)
118 if (c[d] == b) return k;
119 return p
120 }
121
122 function ga(a) {
123 if (a.R === j) {
124 var b = a.z.createElement("p");
125 b.innerHTML = '<a style="top:1px;">w</a>';
126 a.R = /top/.test(b.getElementsByTagName("a")[0].getAttribute("style"))
127 }
128 return a.R
129 }
130
131 function x(a) {
132 var b = a.u.location.protocol;
133 "about:" == b && (b = a.G.location.protocol);
134 return "https:" == b ? "https:" : "http:"
135 };
136
137 function y(a, b, c) {
138 this.w = a;
139 this.T = b;
140 this.Aa = c
141 }
142 ba("webfont.BrowserInfo", y);
143 y.prototype.qa = q("w");
144 y.prototype.hasWebFontSupport = y.prototype.qa;
145 y.prototype.ra = q("T");
146 y.prototype.hasWebKitFallbackBug = y.prototype.ra;
147 y.prototype.sa = q("Aa");
148 y.prototype.hasWebKitMetricsBug = y.prototype.sa;
149
150 function z(a, b, c, d) {
151 this.e = a != l ? a : l;
152 this.o = b != l ? b : l;
153 this.ba = c != l ? c : l;
154 this.f = d != l ? d : l
155 }
156 var ja = /^([0-9]+)(?:[\._-]([0-9]+))?(?:[\._-]([0-9]+))?(?:[\._+-]?(.*))?$/;
157 z.prototype.toString = function() {
158 return [this.e, this.o || "", this.ba || "", this.f || ""].join("")
159 };
160
161 function A(a) {
162 a = ja.exec(a);
163 var b = l,
164 c = l,
165 d = l,
166 e = l;
167 a && (a[1] !== l && a[1] && (b = parseInt(a[1], 10)), a[2] !== l && a[2] && (c = parseInt(a[2], 10)), a[3] !== l && a[3] && (d = parseInt(a[3], 10)), a[4] !== l && a[4] && (e = /^[0-9]+$/.test(a[4]) ? parseInt(a[4], 10) : a[4]));
168 return new z(b, c, d, e)
169 };
170
171 function B(a, b, c, d, e, f, g, h, n, m, r) {
172 this.J = a;
173 this.Ha = b;
174 this.za = c;
175 this.ga = d;
176 this.Fa = e;
177 this.fa = f;
178 this.xa = g;
179 this.Ga = h;
180 this.wa = n;
181 this.ea = m;
182 this.k = r
183 }
184 ba("webfont.UserAgent", B);
185 B.prototype.getName = q("J");
186 B.prototype.getName = B.prototype.getName;
187 B.prototype.pa = q("za");
188 B.prototype.getVersion = B.prototype.pa;
189 B.prototype.la = q("ga");
190 B.prototype.getEngine = B.prototype.la;
191 B.prototype.ma = q("fa");
192 B.prototype.getEngineVersion = B.prototype.ma;
193 B.prototype.na = q("xa");
194 B.prototype.getPlatform = B.prototype.na;
195 B.prototype.oa = q("wa");
196 B.prototype.getPlatformVersion = B.prototype.oa;
197 B.prototype.ka = q("ea");
198 B.prototype.getDocumentMode = B.prototype.ka;
199 B.prototype.ja = q("k");
200 B.prototype.getBrowserInfo = B.prototype.ja;
201
202 function C(a, b) {
203 this.a = a;
204 this.H = b
205 }
206 var ka = new B("Unknown", new z, "Unknown", "Unknown", new z, "Unknown", "Unknown", new z, "Unknown", j, new y(p, p, p));
207 C.prototype.parse = function() {
208 var a;
209 if (-1 != this.a.indexOf("MSIE")) {
210 a = D(this);
211 var b = E(this),
212 c = A(b),
213 d = F(this.a, /MSIE ([\d\w\.]+)/, 1),
214 e = A(d);
215 a = new B("MSIE", e, d, "MSIE", e, d, a, c, b, G(this.H), new y("Windows" == a && 6 <= e.e || "Windows Phone" == a && 8 <= c.e, p, p))
216 } else if (-1 != this.a.indexOf("Opera")) a: {
217 a = "Unknown";
218 var b = F(this.a, /Presto\/([\d\w\.]+)/, 1),
219 c = A(b),
220 d = E(this),
221 e = A(d),
222 f = G(this.H);
223 c.e !== l ? a = "Presto" : (-1 != this.a.indexOf("Gecko") && (a = "Gecko"), b = F(this.a, /rv:([^\)]+)/, 1), c = A(b));
224 if (-1 != this.a.indexOf("Opera Mini/")) {
225 var g =
226 F(this.a, /Opera Mini\/([\d\.]+)/, 1),
227 h = A(g);
228 a = new B("OperaMini", h, g, a, c, b, D(this), e, d, f, new y(p, p, p))
229 } else {
230 if (-1 != this.a.indexOf("Version/") && (g = F(this.a, /Version\/([\d\.]+)/, 1), h = A(g), h.e !== l)) {
231 a = new B("Opera", h, g, a, c, b, D(this), e, d, f, new y(10 <= h.e, p, p));
232 break a
233 }
234 g = F(this.a, /Opera[\/ ]([\d\.]+)/, 1);
235 h = A(g);
236 a = h.e !== l ? new B("Opera", h, g, a, c, b, D(this), e, d, f, new y(10 <= h.e, p, p)) : new B("Opera", new z, "Unknown", a, c, b, D(this), e, d, f, new y(p, p, p))
237 }
238 } else if (/AppleWeb(K|k)it/.test(this.a)) {
239 a = D(this);
240 var b = E(this),
241 c = A(b),
242 d = F(this.a, /AppleWeb(?:K|k)it\/([\d\.\+]+)/, 1),
243 e = A(d),
244 f = "Unknown",
245 g = new z,
246 h = "Unknown",
247 n = p; - 1 != this.a.indexOf("Chrome") || -1 != this.a.indexOf("CrMo") || -1 != this.a.indexOf("CriOS") ? f = "Chrome" : /Silk\/\d/.test(this.a) ? f = "Silk" : "BlackBerry" == a || "Android" == a ? f = "BuiltinBrowser" : -1 != this.a.indexOf("Safari") ? f = "Safari" : -1 != this.a.indexOf("AdobeAIR") && (f = "AdobeAIR");
248 "BuiltinBrowser" == f ? h = "Unknown" : "Silk" == f ? h = F(this.a, /Silk\/([\d\._]+)/, 1) : "Chrome" == f ? h = F(this.a, /(Chrome|CrMo|CriOS)\/([\d\.]+)/, 2) : -1 !=
249 this.a.indexOf("Version/") ? h = F(this.a, /Version\/([\d\.\w]+)/, 1) : "AdobeAIR" == f && (h = F(this.a, /AdobeAIR\/([\d\.]+)/, 1));
250 g = A(h);
251 n = "AdobeAIR" == f ? 2 < g.e || 2 == g.e && 5 <= g.o : "BlackBerry" == a ? 10 <= c.e : "Android" == a ? 2 < c.e || 2 == c.e && 1 < c.o : 526 <= e.e || 525 <= e.e && 13 <= e.o;
252 a = new B(f, g, h, "AppleWebKit", e, d, a, c, b, G(this.H), new y(n, 536 > e.e || 536 == e.e && 11 > e.o, "iPhone" == a || "iPad" == a || "iPod" == a || "Macintosh" == a))
253 } else -1 != this.a.indexOf("Gecko") ? (a = "Unknown", b = new z, c = "Unknown", d = E(this), e = A(d), f = p, -1 != this.a.indexOf("Firefox") ? (a =
254 "Firefox", c = F(this.a, /Firefox\/([\d\w\.]+)/, 1), b = A(c), f = 3 <= b.e && 5 <= b.o) : -1 != this.a.indexOf("Mozilla") && (a = "Mozilla"), g = F(this.a, /rv:([^\)]+)/, 1), h = A(g), f || (f = 1 < h.e || 1 == h.e && 9 < h.o || 1 == h.e && 9 == h.o && 2 <= h.ba || g.match(/1\.9\.1b[123]/) != l || g.match(/1\.9\.1\.[\d\.]+/) != l), a = new B(a, b, c, "Gecko", h, g, D(this), e, d, G(this.H), new y(f, p, p))) : a = ka;
255 return a
256 };
257
258 function D(a) {
259 var b = F(a.a, /(iPod|iPad|iPhone|Android|Windows Phone|BB\d{2}|BlackBerry)/, 1);
260 if ("" != b) return /BB\d{2}/.test(b) && (b = "BlackBerry"), b;
261 a = F(a.a, /(Linux|Mac_PowerPC|Macintosh|Windows|CrOS)/, 1);
262 return "" != a ? ("Mac_PowerPC" == a && (a = "Macintosh"), a) : "Unknown"
263 }
264
265 function E(a) {
266 var b = F(a.a, /(OS X|Windows NT|Android) ([^;)]+)/, 2);
267 if (b || (b = F(a.a, /Windows Phone( OS)? ([^;)]+)/, 2)) || (b = F(a.a, /(iPhone )?OS ([\d_]+)/, 2))) return b;
268 if (b = F(a.a, /(?:Linux|CrOS) ([^;)]+)/, 1))
269 for (var b = b.split(/\s/), c = 0; c < b.length; c += 1)
270 if (/^[\d\._]+$/.test(b[c])) return b[c];
271 return (a = F(a.a, /(BB\d{2}|BlackBerry).*?Version\/([^\s]*)/, 2)) ? a : "Unknown"
272 }
273
274 function F(a, b, c) {
275 return (a = a.match(b)) && a[c] ? a[c] : ""
276 }
277
278 function G(a) {
279 if (a.documentMode) return a.documentMode
280 };
281
282 function la(a) {
283 this.va = a || "-"
284 }
285 la.prototype.f = function(a) {
286 for (var b = [], c = 0; c < arguments.length; c++) b.push(arguments[c].replace(/[\W_]+/g, "").toLowerCase());
287 return b.join(this.va)
288 };
289
290 function H(a, b) {
291 this.J = a;
292 this.U = 4;
293 this.K = "n";
294 var c = (b || "n4").match(/^([nio])([1-9])$/i);
295 c && (this.K = c[1], this.U = parseInt(c[2], 10))
296 }
297 H.prototype.getName = q("J");
298
299 function I(a) {
300 return a.K + a.U
301 }
302
303 function ma(a) {
304 var b = 4,
305 c = "n",
306 d = l;
307 a && ((d = a.match(/(normal|oblique|italic)/i)) && d[1] && (c = d[1].substr(0, 1).toLowerCase()), (d = a.match(/([1-9]00|normal|bold)/i)) && d[1] && (/bold/i.test(d[1]) ? b = 7 : /[1-9]00/.test(d[1]) && (b = parseInt(d[1].substr(0, 1), 10))));
308 return c + b
309 };
310
311 function na(a, b, c) {
312 this.c = a;
313 this.h = b;
314 this.M = c;
315 this.j = "wf";
316 this.g = new la("-")
317 }
318
319 function pa(a) {
320 v(a.h, a.g.f(a.j, "loading"));
321 J(a, "loading")
322 }
323
324 function K(a) {
325 w(a.h, a.g.f(a.j, "loading"));
326 ia(a.h, a.g.f(a.j, "active")) || v(a.h, a.g.f(a.j, "inactive"));
327 J(a, "inactive")
328 }
329
330 function J(a, b, c) {
331 if (a.M[b])
332 if (c) a.M[b](c.getName(), I(c));
333 else a.M[b]()
334 };
335
336 function L(a, b) {
337 this.c = a;
338 this.C = b;
339 this.s = this.c.createElement("span", {
340 "aria-hidden": "true"
341 }, this.C)
342 }
343
344 function M(a, b) {
345 var c = a.s,
346 d;
347 d = [];
348 for (var e = b.J.split(/,\s*/), f = 0; f < e.length; f++) {
349 var g = e[f].replace(/['"]/g, ""); - 1 == g.indexOf(" ") ? d.push(g) : d.push("'" + g + "'")
350 }
351 d = d.join(",");
352 e = "normal";
353 f = b.U + "00";
354 "o" === b.K ? e = "oblique" : "i" === b.K && (e = "italic");
355 d = "position:absolute;top:-999px;left:-999px;font-size:300px;width:auto;height:auto;line-height:normal;margin:0;padding:0;font-variant:normal;white-space:nowrap;font-family:" + d + ";" + ("font-style:" + e + ";font-weight:" + f + ";");
356 ga(a.c) ? c.setAttribute("style", d) : c.style.cssText =
357 d
358 }
359
360 function N(a) {
361 t(a.c, "body", a.s)
362 }
363 L.prototype.remove = function() {
364 var a = this.s;
365 a.parentNode && a.parentNode.removeChild(a)
366 };
367
368 function qa(a, b, c, d, e, f, g, h) {
369 this.V = a;
370 this.ta = b;
371 this.c = c;
372 this.q = d;
373 this.C = h || "BESbswy";
374 this.k = e;
375 this.F = {};
376 this.S = f || 5E3;
377 this.Z = g || l;
378 this.B = this.A = l;
379 a = new L(this.c, this.C);
380 N(a);
381 for (var n in O) O.hasOwnProperty(n) && (M(a, new H(O[n], I(this.q))), this.F[O[n]] = a.s.offsetWidth);
382 a.remove()
383 }
384 var O = {
385 Ea: "serif",
386 Da: "sans-serif",
387 Ca: "monospace"
388 };
389 qa.prototype.start = function() {
390 this.A = new L(this.c, this.C);
391 N(this.A);
392 this.B = new L(this.c, this.C);
393 N(this.B);
394 this.ya = ea();
395 M(this.A, new H(this.q.getName() + ",serif", I(this.q)));
396 M(this.B, new H(this.q.getName() + ",sans-serif", I(this.q)));
397 ra(this)
398 };
399
400 function sa(a, b, c) {
401 for (var d in O)
402 if (O.hasOwnProperty(d) && b === a.F[O[d]] && c === a.F[O[d]]) return k;
403 return p
404 }
405
406 function ra(a) {
407 var b = a.A.s.offsetWidth,
408 c = a.B.s.offsetWidth;
409 b === a.F.serif && c === a.F["sans-serif"] || a.k.T && sa(a, b, c) ? ea() - a.ya >= a.S ? a.k.T && sa(a, b, c) && (a.Z === l || a.Z.hasOwnProperty(a.q.getName())) ? P(a, a.V) : P(a, a.ta) : setTimeout(s(function() {
410 ra(this)
411 }, a), 25) : P(a, a.V)
412 }
413
414 function P(a, b) {
415 a.A.remove();
416 a.B.remove();
417 b(a.q)
418 };
419
420 function R(a, b, c, d) {
421 this.c = b;
422 this.t = c;
423 this.N = 0;
424 this.ca = this.Y = p;
425 this.S = d;
426 this.k = a.k
427 }
428
429 function ta(a, b, c, d, e) {
430 if (0 === b.length && e) K(a.t);
431 else {
432 a.N += b.length;
433 e && (a.Y = e);
434 for (e = 0; e < b.length; e++) {
435 var f = b[e],
436 g = c[f.getName()],
437 h = a.t,
438 n = f;
439 v(h.h, h.g.f(h.j, n.getName(), I(n).toString(), "loading"));
440 J(h, "fontloading", n);
441 (new qa(s(a.ha, a), s(a.ia, a), a.c, f, a.k, a.S, d, g)).start()
442 }
443 }
444 }
445 R.prototype.ha = function(a) {
446 var b = this.t;
447 w(b.h, b.g.f(b.j, a.getName(), I(a).toString(), "loading"));
448 w(b.h, b.g.f(b.j, a.getName(), I(a).toString(), "inactive"));
449 v(b.h, b.g.f(b.j, a.getName(), I(a).toString(), "active"));
450 J(b, "fontactive", a);
451 this.ca = k;
452 ua(this)
453 };
454 R.prototype.ia = function(a) {
455 var b = this.t;
456 w(b.h, b.g.f(b.j, a.getName(), I(a).toString(), "loading"));
457 ia(b.h, b.g.f(b.j, a.getName(), I(a).toString(), "active")) || v(b.h, b.g.f(b.j, a.getName(), I(a).toString(), "inactive"));
458 J(b, "fontinactive", a);
459 ua(this)
460 };
461
462 function ua(a) {
463 0 == --a.N && a.Y && (a.ca ? (a = a.t, w(a.h, a.g.f(a.j, "loading")), w(a.h, a.g.f(a.j, "inactive")), v(a.h, a.g.f(a.j, "active")), J(a, "active")) : K(a.t))
464 };
465
466 function S(a, b, c) {
467 this.G = a;
468 this.W = b;
469 this.a = c;
470 this.O = this.P = 0
471 }
472
473 function T(a, b) {
474 U.W.$[a] = b
475 }
476 S.prototype.load = function(a) {
477 var b = a.context || this.G;
478 this.c = new fa(this.G, b);
479 b = new na(this.c, b.document.documentElement, a);
480 if (this.a.k.w) {
481 var c = this.W,
482 d = this.c,
483 e = [],
484 f;
485 for (f in a)
486 if (a.hasOwnProperty(f)) {
487 var g = c.$[f];
488 g && e.push(g(a[f], d))
489 }
490 a = a.timeout;
491 this.O = this.P = e.length;
492 a = new R(this.a, this.c, b, a);
493 f = 0;
494 for (c = e.length; f < c; f++) d = e[f], d.v(this.a, s(this.ua, this, d, b, a))
495 } else K(b)
496 };
497 S.prototype.ua = function(a, b, c, d) {
498 var e = this;
499 d ? a.load(function(a, d, h) {
500 var n = 0 == --e.P;
501 n && pa(b);
502 setTimeout(function() {
503 ta(c, a, d || {}, h || l, n)
504 }, 0)
505 }) : (a = 0 == --this.P, this.O--, a && (0 == this.O ? K(b) : pa(b)), ta(c, [], {}, l, a))
506 };
507 var va = window,
508 wa = (new C(navigator.userAgent, document)).parse(),
509 U = va.WebFont = new S(window, new function() {
510 this.$ = {}
511 }, wa);
512 U.load = U.load;
513
514 function V(a, b) {
515 this.c = a;
516 this.d = b
517 }
518 V.prototype.load = function(a) {
519 var b, c, d = this.d.urls || [],
520 e = this.d.families || [];
521 b = 0;
522 for (c = d.length; b < c; b++) t(this.c, "head", u(this.c, d[b]));
523 d = [];
524 b = 0;
525 for (c = e.length; b < c; b++) {
526 var f = e[b].split(":");
527 if (f[1])
528 for (var g = f[1].split(","), h = 0; h < g.length; h += 1) d.push(new H(f[0], g[h]));
529 else d.push(new H(f[0]))
530 }
531 a(d)
532 };
533 V.prototype.v = function(a, b) {
534 return b(a.k.w)
535 };
536 T("custom", function(a, b) {
537 return new V(b, a)
538 });
539
540 function W(a, b) {
541 this.c = a;
542 this.d = b
543 }
544 var xa = {
545 regular: "n4",
546 bold: "n7",
547 italic: "i4",
548 bolditalic: "i7",
549 r: "n4",
550 b: "n7",
551 i: "i4",
552 bi: "i7"
553 };
554 W.prototype.v = function(a, b) {
555 return b(a.k.w)
556 };
557 W.prototype.load = function(a) {
558 t(this.c, "head", u(this.c, x(this.c) + "//webfonts.fontslive.com/css/" + this.d.key + ".css"));
559 for (var b = this.d.families, c = [], d = 0, e = b.length; d < e; d++) c.push.apply(c, ya(b[d]));
560 a(c)
561 };
562
563 function ya(a) {
564 var b = a.split(":");
565 a = b[0];
566 if (b[1]) {
567 for (var c = b[1].split(","), b = [], d = 0, e = c.length; d < e; d++) {
568 var f = c[d];
569 if (f) {
570 var g = xa[f];
571 b.push(g ? g : f)
572 }
573 }
574 c = [];
575 for (d = 0; d < b.length; d += 1) c.push(new H(a, b[d]));
576 return c
577 }
578 return [new H(a)]
579 }
580 T("ascender", function(a, b) {
581 return new W(b, a)
582 });
583
584 function X(a, b, c) {
585 this.a = a;
586 this.c = b;
587 this.d = c;
588 this.m = []
589 }
590 X.prototype.v = function(a, b) {
591 var c = this,
592 d = c.d.projectId,
593 e = c.d.version;
594 if (d) {
595 var f = c.c.u,
596 g = c.c.createElement("script");
597 g.id = "__MonotypeAPIScript__" + d;
598 var h = p;
599 g.onload = g.onreadystatechange = function() {
600 if (!h && (!this.readyState || "loaded" === this.readyState || "complete" === this.readyState)) {
601 h = k;
602 if (f["__mti_fntLst" + d]) {
603 var e = f["__mti_fntLst" + d]();
604 if (e)
605 for (var m = 0; m < e.length; m++) c.m.push(new H(e[m].fontfamily))
606 }
607 b(a.k.w);
608 g.onload = g.onreadystatechange = l
609 }
610 };
611 g.src = c.D(d, e);
612 t(this.c, "head", g)
613 } else b(k)
614 };
615 X.prototype.D = function(a, b) {
616 var c = x(this.c),
617 d = (this.d.api || "fast.fonts.com/jsapi").replace(/^.*http(s?):(\/\/)?/, "");
618 return c + "//" + d + "/" + a + ".js" + (b ? "?v=" + b : "")
619 };
620 X.prototype.load = function(a) {
621 a(this.m)
622 };
623 T("monotype", function(a, b) {
624 var c = (new C(navigator.userAgent, document)).parse();
625 return new X(c, b, a)
626 });
627
628 function Y(a, b) {
629 this.c = a;
630 this.d = b;
631 this.m = []
632 }
633 Y.prototype.D = function(a) {
634 var b = x(this.c);
635 return (this.d.api || b + "//use.typekit.net") + "/" + a + ".js"
636 };
637 Y.prototype.v = function(a, b) {
638 var c = this.d.id,
639 d = this.d,
640 e = this.c.u,
641 f = this;
642 c ? (e.__webfonttypekitmodule__ || (e.__webfonttypekitmodule__ = {}), e.__webfonttypekitmodule__[c] = function(c) {
643 c(a, d, function(a, c, d) {
644 for (var e = 0; e < c.length; e += 1) {
645 var g = d[c[e]];
646 if (g)
647 for (var Q = 0; Q < g.length; Q += 1) f.m.push(new H(c[e], g[Q]));
648 else f.m.push(new H(c[e]))
649 }
650 b(a)
651 })
652 }, c = ha(this.c, this.D(c)), t(this.c, "head", c)) : b(k)
653 };
654 Y.prototype.load = function(a) {
655 a(this.m)
656 };
657 T("typekit", function(a, b) {
658 return new Y(b, a)
659 });
660
661 function za(a, b, c) {
662 this.L = a ? a : b + Aa;
663 this.p = [];
664 this.Q = [];
665 this.da = c || ""
666 }
667 var Aa = "//fonts.googleapis.com/css";
668 za.prototype.f = function() {
669 if (0 == this.p.length) throw Error("No fonts to load !");
670 if (-1 != this.L.indexOf("kit=")) return this.L;
671 for (var a = this.p.length, b = [], c = 0; c < a; c++) b.push(this.p[c].replace(/ /g, "+"));
672 a = this.L + "?family=" + b.join("%7C");
673 0 < this.Q.length && (a += "&subset=" + this.Q.join(","));
674 0 < this.da.length && (a += "&text=" + encodeURIComponent(this.da));
675 return a
676 };
677
678 function Ba(a) {
679 this.p = a;
680 this.aa = [];
681 this.I = {}
682 }
683 var Ca = {
684 latin: "BESbswy",
685 cyrillic: "&#1081;&#1103;&#1046;",
686 greek: "&#945;&#946;&#931;",
687 khmer: "&#x1780;&#x1781;&#x1782;",
688 Hanuman: "&#x1780;&#x1781;&#x1782;"
689 },
690 Da = {
691 thin: "1",
692 extralight: "2",
693 "extra-light": "2",
694 ultralight: "2",
695 "ultra-light": "2",
696 light: "3",
697 regular: "4",
698 book: "4",
699 medium: "5",
700 "semi-bold": "6",
701 semibold: "6",
702 "demi-bold": "6",
703 demibold: "6",
704 bold: "7",
705 "extra-bold": "8",
706 extrabold: "8",
707 "ultra-bold": "8",
708 ultrabold: "8",
709 black: "9",
710 heavy: "9",
711 l: "3",
712 r: "4",
713 b: "7"
714 },
715 Ea = {
716 i: "i",
717 italic: "i",
718 n: "n",
719 normal: "n"
720 },
721 Fa = RegExp("^(thin|(?:(?:extra|ultra)-?)?light|regular|book|medium|(?:(?:semi|demi|extra|ultra)-?)?bold|black|heavy|l|r|b|[1-9]00)?(n|i|normal|italic)?$");
722 Ba.prototype.parse = function() {
723 for (var a = this.p.length, b = 0; b < a; b++) {
724 var c = this.p[b].split(":"),
725 d = c[0].replace(/\+/g, " "),
726 e = ["n4"];
727 if (2 <= c.length) {
728 var f;
729 var g = c[1];
730 f = [];
731 if (g)
732 for (var g = g.split(","), h = g.length, n = 0; n < h; n++) {
733 var m;
734 m = g[n];
735 if (m.match(/^[\w]+$/)) {
736 m = Fa.exec(m.toLowerCase());
737 var r = j;
738 if (m == l) r = "";
739 else {
740 r = j;
741 r = m[1];
742 if (r == l || "" == r) r = "4";
743 else var oa = Da[r],
744 r = oa ? oa : isNaN(r) ? "4" : r.substr(0, 1);
745 r = [m[2] == l || "" == m[2] ? "n" : Ea[m[2]], r].join("")
746 }
747 m = r
748 } else m = "";
749 m && f.push(m)
750 }
751 0 < f.length && (e = f);
752 3 == c.length && (c = c[2],
753 f = [], c = !c ? f : c.split(","), 0 < c.length && (c = Ca[c[0]]) && (this.I[d] = c))
754 }
755 this.I[d] || (c = Ca[d]) && (this.I[d] = c);
756 for (c = 0; c < e.length; c += 1) this.aa.push(new H(d, e[c]))
757 }
758 };
759
760 function Z(a, b, c) {
761 this.a = a;
762 this.c = b;
763 this.d = c
764 }
765 var Ga = {
766 Arimo: k,
767 Cousine: k,
768 Tinos: k
769 };
770 Z.prototype.v = function(a, b) {
771 b(a.k.w)
772 };
773 Z.prototype.load = function(a) {
774 var b = this.c;
775 if ("MSIE" == this.a.getName() && this.d.blocking != k) {
776 var c = s(this.X, this, a),
777 d = function() {
778 b.z.body ? c() : setTimeout(d, 0)
779 };
780 d()
781 } else this.X(a)
782 };
783 Z.prototype.X = function(a) {
784 for (var b = this.c, c = new za(this.d.api, x(b), this.d.text), d = this.d.families, e = d.length, f = 0; f < e; f++) {
785 var g = d[f].split(":");
786 3 == g.length && c.Q.push(g.pop());
787 var h = "";
788 2 == g.length && "" != g[1] && (h = ":");
789 c.p.push(g.join(h))
790 }
791 d = new Ba(d);
792 d.parse();
793 t(b, "head", u(b, c.f()));
794 a(d.aa, d.I, Ga)
795 };
796 T("google", function(a, b) {
797 var c = (new C(navigator.userAgent, document)).parse();
798 return new Z(c, b, a)
799 });
800
801 function $(a, b) {
802 this.c = a;
803 this.d = b;
804 this.m = []
805 }
806 $.prototype.D = function(a) {
807 return x(this.c) + (this.d.api || "//f.fontdeck.com/s/css/js/") + (this.c.u.location.hostname || this.c.G.location.hostname) + "/" + a + ".js"
808 };
809 $.prototype.v = function(a, b) {
810 var c = this.d.id,
811 d = this.c.u,
812 e = this;
813 c ? (d.__webfontfontdeckmodule__ || (d.__webfontfontdeckmodule__ = {}), d.__webfontfontdeckmodule__[c] = function(a, c) {
814 for (var d = 0, n = c.fonts.length; d < n; ++d) {
815 var m = c.fonts[d];
816 e.m.push(new H(m.name, ma("font-weight:" + m.weight + ";font-style:" + m.style)))
817 }
818 b(a)
819 }, c = ha(this.c, this.D(c)), t(this.c, "head", c)) : b(k)
820 };
821 $.prototype.load = function(a) {
822 a(this.m)
823 };
824 T("fontdeck", function(a, b) {
825 return new $(b, a)
826 });
827 window.WebFontConfig && U.load(window.WebFontConfig);
828})(this, document); \ No newline at end of file
diff --git a/Back/ZJW/stylesheets/all.css b/Back/ZJW/stylesheets/all.css
new file mode 100644
index 0000000..7c9f15d
--- /dev/null
+++ b/Back/ZJW/stylesheets/all.css
@@ -0,0 +1,30 @@
1body {
2 background: rgba(21, 32, 46, 1);
3 text-align: center;
4}
5
6.logo {
7 position: absolute;
8 z-index: 2;
9 left: 50%;
10 top: 50%;
11 -webkit-transform: translateY(-50%);
12 -ms-transform: translateY(-50%);
13 transform: translateY(-50%);
14 width: 385px;
15 height: 125px;
16 margin-left: -192.5px;
17 background: url(/images/logo.png);
18 background-size: 100%;
19 opacity: 1;
20}
21
22canvas {
23 position: absolute;
24 top: 0;
25 left: 0;
26 z-index: 1;
27 width: 100%;
28 height: 100%;
29 display: block;
30}
diff --git a/Back/ZJW/stylesheets/default.css b/Back/ZJW/stylesheets/default.css
new file mode 100644
index 0000000..26bf865
--- /dev/null
+++ b/Back/ZJW/stylesheets/default.css
@@ -0,0 +1 @@
body{margin:0;padding:0;background:#ffe;font-size:12px;overflow:auto}#mainDiv{width:100%;height:100%}#loveHeart{float:left;width:670px;height:625px}#garden{width:100%;height:100%}#elapseClock{text-align:right;font-size:18px;margin-top:10px;margin-bottom:10px}#words{font-family:"sans-serif";width:500px;font-size:24px;color:#666}#messages{display:none}#elapseClock .digit{font-family:"digit";font-size:36px}#loveu{padding:5px;font-size:22px;margin-top:80px;margin-right:120px;text-align:right;display:none}#loveu .signature{margin-top:10px;font-size:20px;font-style:italic}#clickSound{display:none}#code{float:left;width:440px;height:400px;color:#333;font-family:"Consolas","Monaco","Bitstream Vera Sans Mono","Courier New","sans-serif";font-size:12px}#code .string{color:#2a36ff}#code .keyword{color:#7f0055;font-weight:bold}#code .placeholder{margin-left:15px}#code .space{margin-left:7px}#code .comments{color:#3f7f5f}#copyright{margin-top:10px;text-align:center;width:100%;color:#666}#errorMsg{width:100%;text-align:center;font-size:24px;position:absolute;top:100px;left:0}#copyright a{color:#666} \ No newline at end of file
diff --git a/Back/ZJW/stylesheets/magnetic1407129817662.webflow.css b/Back/ZJW/stylesheets/magnetic1407129817662.webflow.css
new file mode 100644
index 0000000..b9db5e1
--- /dev/null
+++ b/Back/ZJW/stylesheets/magnetic1407129817662.webflow.css
@@ -0,0 +1,448 @@
1body {
2 padding-top: 126px;
3 background-color: black;
4 background-image: url('../images/fans-black.jpg');
5 background-size: cover;
6 font-family: 'Microsoft YaHei';
7 color: white;
8 font-size: 14px;
9 line-height: 20px;
10 text-align: center;
11}
12h1 {
13 margin: 10px 0px;
14 color: #2d3338;
15 font-family: 'Microsoft YaHei';
16 font-size: 69px;
17 line-height: 54px;
18 font-style: normal;
19 font-weight: 700;
20 text-shadow: none;
21}
22h2 {
23 margin-right: 0px;
24 margin-bottom: 10px;
25 margin-left: 0px;
26 font-family: 'Microsoft YaHei';
27 font-size: 32px;
28 line-height: 36px;
29 font-weight: 400;
30 text-shadow: none;
31}
32h3 {
33 margin: 5px 0px;
34 font-family: 'Microsoft YaHei';
35 font-size: 22px;
36 line-height: 30px;
37 font-weight: 400;
38 text-shadow: none;
39}
40h4 {
41 margin: 10px 0px;
42 font-family: 'Microsoft YaHei';
43 font-size: 18px;
44 line-height: 24px;
45 font-weight: 700;
46}
47h5 {
48 margin: 10px 0px;
49 font-family: 'Microsoft YaHei';
50 font-size: 14px;
51 line-height: 20px;
52 font-weight: 700;
53}
54h6 {
55 margin: 10px 0px;
56 font-family: 'Microsoft YaHei';
57 font-size: 12px;
58 line-height: 18px;
59 font-weight: 700;
60}
61p {
62 margin-bottom: 5px;
63 font-family: 'Microsoft YaHei';
64 font-size: 16px;
65 line-height: 23px;
66 font-weight: 300;
67 letter-spacing: 0px;
68 text-shadow: none;
69}
70.button {
71 display: block;
72 width: 100%;
73 height: 54px;
74 margin-left: -1px;
75 padding: 4px 29px;
76 border: 3px solid white;
77 background-color: transparent;
78 -webkit-transition: background-color 300ms ease, color 300ms ease;
79 -o-transition: background-color 300ms ease, color 300ms ease;
80 transition: background-color 300ms ease, color 300ms ease;
81 color: white;
82 font-family: 'Microsoft YaHei';
83 font-size: 22px;
84 font-weight: 700;
85 text-align: center;
86 text-decoration: none;
87 text-transform: uppercase;
88}
89.button:hover {
90 background-color: white;
91 color: black;
92}
93.subtitle {
94 padding-bottom: 67px;
95 font-family: 'Microsoft YaHei';
96 font-size: 31px;
97 line-height: 35px;
98 font-weight: 400;
99 text-shadow: none;
100}
101.field {
102 height: 54px;
103 margin-bottom: 19px;
104 padding-right: 20px;
105 padding-left: 20px;
106 border: 0px solid black;
107 -webkit-transition: box-shadow 150ms ease;
108 -o-transition: box-shadow 150ms ease;
109 transition: box-shadow 150ms ease;
110 color: #262c46;
111 font-family: 'Microsoft YaHei';
112 font-size: 16px;
113 text-align: center;
114 text-transform: uppercase;
115}
116.field:focus {
117 box-shadow: #00caf2 0px 0px 0px 2px inset;
118}
119.sign-up-form {
120 display: block;
121 width: 415px;
122 margin: 35px auto 66px;
123}
124.social-widget {
125 width: 100px;
126 float: left;
127 -webkit-transition: opacity 300ms ease;
128 -o-transition: opacity 300ms ease;
129 transition: opacity 300ms ease;
130}
131.social-widget.full-opacity {
132 opacity: 1;
133}
134.social-widget-wrapper {
135 display: block;
136 width: 223px;
137 margin-right: auto;
138 margin-left: auto;
139 padding-left: 20px;
140}
141.social-widget-wrapper.thank-you {
142 display: block;
143 width: 216px;
144 margin-top: 13px;
145 margin-right: auto;
146 margin-left: auto;
147 padding-left: 16px;
148}
149.success-message {
150 padding: 20px;
151 border-radius: 2px;
152 background-color: #737373;
153 -webkit-transition: all 300ms ease;
154 -o-transition: all 300ms ease;
155 transition: all 300ms ease;
156}
157.spread-word {
158 margin-top: 12px;
159 font-family: Arial, Helvetica, sans-serif;
160 color: rgba(255, 255, 255, 0.6);
161 font-size: 10px;
162 line-height: 16px;
163 font-weight: 400;
164 letter-spacing: 0px;
165 text-transform: uppercase;
166 text-shadow: none;
167}
168.error-message {
169 padding-bottom: 5px;
170 border-radius: 2px;
171 background-color: #5c3245;
172}
173.content-wrapper {
174 display: inline-block;
175 width: 60%;
176}
177.header-section {
178 height: 100%;
179 padding-top: 104px;
180 background-color: #e0ddd7;
181 text-align: center;
182}
183.footer-section {
184 position: fixed;
185 left: 0px;
186 right: 0px;
187 bottom: 0px;
188 padding-top: 38px;
189 padding-bottom: 34px;
190 background-color: rgba(0, 0, 0, 0.18);
191 color: #7e7c87;
192}
193.copyright {
194 color: rgba(255, 255, 255, 0.52);
195 text-align: left;
196}
197.bars-wrapper {
198 height: 7px;
199 background-color: #1abc9c;
200}
201.bar {
202 width: 14.285%;
203 height: 7px;
204 float: left;
205 background-color: #1abc9c;
206}
207.bar._2 {
208 background-color: #f2ca27;
209}
210.bar._3 {
211 background-color: #e67e22;
212}
213.bar._4 {
214 background-color: #16a085;
215}
216.bar._5 {
217 background-color: #2980b9;
218}
219.bar._6 {
220 background-color: #e74c3c;
221}
222.bar._7 {
223 background-color: #a366bc;
224}
225.container {
226 padding-right: 127px;
227 padding-left: 127px;
228}
229.image-crop {
230 overflow-x: hidden;
231 overflow-y: hidden;
232 height: 260px;
233}
234.social-section {
235 padding-top: 58px;
236 padding-bottom: 58px;
237 text-align: center;
238}
239.share-btn {
240 display: inline-block;
241 width: 61px;
242 margin-right: 14px;
243 margin-left: 14px;
244}
245.share-wrapper {
246 margin-top: 32px;
247}
248.refer {
249 color: rgba(255, 255, 255, 0.59);
250}
251.align-right {
252 text-align: right;
253}
254.social-btn {
255 margin-left: 17px;
256 opacity: 0.44;
257 -webkit-transition: all 200ms ease;
258 -o-transition: all 200ms ease;
259 transition: all 200ms ease;
260}
261.social-btn:hover {
262 opacity: 1;
263}
264.logo {
265 display: inline-block;
266 margin-right: auto;
267 margin-bottom: 19px;
268 margin-left: auto;
269 padding: 21px;
270 border: 8px white;
271 color: white;
272 font-weight: 700;
273 letter-spacing: 8px;
274 text-shadow: none;
275}
276.about {
277 letter-spacing: 2px;
278 text-transform: uppercase;
279}
280.join {
281 display: block;
282 width: 40%;
283 margin-top: -12px;
284 margin-bottom: 15px;
285 float: left;
286 font-family: 'Microsoft YaHei';
287 font-size: 22px;
288 letter-spacing: 4px;
289 text-transform: uppercase;
290 text-shadow: none;
291}
292.beta-line {
293 width: 30%;
294 height: 1px;
295 float: left;
296 background-color: rgba(255, 255, 255, 0.36);
297}
298@media (max-width: 991px) {
299 .subtitle {
300 font-size: 29px;
301 text-shadow: none;
302 }
303 .content-wrapper {
304 width: 81%;
305 }
306 .container {
307 padding-right: 57px;
308 padding-left: 57px;
309 }
310 .social-btn {
311 -webkit-transition: all 200ms ease;
312 -o-transition: all 200ms ease;
313 transition: all 200ms ease;
314 }
315 .social-btn:hover {
316 opacity: 0.8;
317 }
318 .join {
319 width: 50%;
320 font-size: 21px;
321 text-shadow: none;
322 }
323 .beta-line {
324 width: 25%;
325 }
326}
327@media (max-width: 767px) {
328 body {
329 padding-top: 65px;
330 }
331 .subtitle {
332 margin-right: 0px;
333 margin-left: 0px;
334 padding-bottom: 43px;
335 text-shadow: none;
336 }
337 .sign-up-form {
338 margin-bottom: 64px;
339 }
340 .content-wrapper {
341 width: 100%;
342 padding-right: 24px;
343 padding-left: 24px;
344 }
345 .header-section {
346 padding-top: 37px;
347 }
348 .footer-section {
349 position: static;
350 padding-top: 23px;
351 padding-bottom: 23px;
352 background-color: rgba(0, 0, 0, 0.49);
353 }
354 .container {
355 padding-right: 10px;
356 padding-left: 10px;
357 }
358 .social-section {
359 padding-top: 35px;
360 padding-bottom: 35px;
361 }
362 .logo {
363 text-shadow: none;
364 }
365 .join {
366 text-shadow: none;
367 }
368}
369@media (max-width: 479px) {
370 h2 {
371 font-size: 30px;
372 line-height: 31px;
373 text-shadow: none;
374 }
375 p {
376 font-size: 20px;
377 text-shadow: none;
378 }
379 .button {
380 width: 100%;
381 margin-left: 0px;
382 border-top-left-radius: 2px;
383 border-bottom-left-radius: 2px;
384 }
385 .subtitle {
386 padding-bottom: 36px;
387 font-size: 22px;
388 line-height: 26px;
389 text-shadow: none;
390 }
391 .field {
392 width: 100%;
393 border-top-right-radius: 2px;
394 border-bottom-right-radius: 2px;
395 text-align: center;
396 }
397 .sign-up-form {
398 width: 100%;
399 margin-top: 22px;
400 }
401 .social-widget {
402 width: 96px;
403 }
404 .social-widget-wrapper {
405 display: block;
406 width: 221px;
407 margin-right: auto;
408 margin-bottom: 15px;
409 margin-left: auto;
410 }
411 .copyright {
412 margin-bottom: 16px;
413 text-align: center;
414 }
415 .container {
416 padding-right: 10px;
417 padding-left: 10px;
418 }
419 .image-crop {
420 height: auto;
421 margin-bottom: 40px;
422 }
423 .social-section {
424 padding-right: 14px;
425 padding-left: 14px;
426 }
427 .align-right {
428 text-align: center;
429 }
430 .social-btn {
431 margin-right: 17px;
432 }
433 .logo {
434 font-size: 43px;
435 text-shadow: none;
436 }
437 .join {
438 width: 75%;
439 font-size: 19px;
440 line-height: 22px;
441 letter-spacing: 4px;
442 text-shadow: none;
443 }
444 .beta-line {
445 width: 12%;
446 }
447}
448
diff --git a/Back/ZJW/stylesheets/normalize.css b/Back/ZJW/stylesheets/normalize.css
new file mode 100644
index 0000000..a4aad65
--- /dev/null
+++ b/Back/ZJW/stylesheets/normalize.css
@@ -0,0 +1,340 @@
1/*! normalize.css v2.1.3 | MIT License | git.io/normalize */
2/* ==========================================================================
3 HTML5 display definitions
4 ========================================================================== */
5/**
6 * Correct `block` display not defined in IE 8/9.
7 */
8article,
9aside,
10details,
11figcaption,
12figure,
13footer,
14header,
15hgroup,
16main,
17nav,
18section,
19summary {
20 display: block;
21}
22/**
23 * Correct `inline-block` display not defined in IE 8/9.
24 */
25audio,
26canvas,
27video {
28 display: inline-block;
29}
30/**
31 * Prevent modern browsers from displaying `audio` without controls.
32 * Remove excess height in iOS 5 devices.
33 */
34audio:not([controls]) {
35 display: none;
36 height: 0;
37}
38/**
39 * Address `[hidden]` styling not present in IE 8/9.
40 * Hide the `template` element in IE, Safari, and Firefox < 22.
41 */
42[hidden],
43template {
44 display: none;
45}
46/* ==========================================================================
47 Base
48 ========================================================================== */
49/**
50 * 1. Set default font family to sans-serif.
51 * 2. Prevent iOS text size adjust after orientation change, without disabling
52 * user zoom.
53 */
54html {
55 font-family: sans-serif;
56 /* 1 */
57 -ms-text-size-adjust: 100%;
58 /* 2 */
59 -webkit-text-size-adjust: 100%;
60 /* 2 */
61}
62/**
63 * Remove default margin.
64 */
65body {
66 margin: 0;
67}
68/* ==========================================================================
69 Links
70 ========================================================================== */
71/**
72 * Remove the gray background color from active links in IE 10.
73 */
74a {
75 background: transparent;
76}
77/**
78 * Address `outline` inconsistency between Chrome and other browsers.
79 */
80a:focus {
81 outline: thin dotted;
82}
83/**
84 * Improve readability when focused and also mouse hovered in all browsers.
85 */
86a:active,
87a:hover {
88 outline: 0;
89}
90/* ==========================================================================
91 Typography
92 ========================================================================== */
93/**
94 * Address variable `h1` font-size and margin within `section` and `article`
95 * contexts in Firefox 4+, Safari 5, and Chrome.
96 */
97h1 {
98 font-size: 2em;
99 margin: 0.67em 0;
100}
101/**
102 * Address styling not present in IE 8/9, Safari 5, and Chrome.
103 */
104abbr[title] {
105 border-bottom: 1px dotted;
106}
107/**
108 * Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome.
109 */
110b,
111strong {
112 font-weight: bold;
113}
114/**
115 * Address styling not present in Safari 5 and Chrome.
116 */
117dfn {
118 font-style: italic;
119}
120/**
121 * Address differences between Firefox and other browsers.
122 */
123hr {
124 -moz-box-sizing: content-box;
125 box-sizing: content-box;
126 height: 0;
127}
128/**
129 * Address styling not present in IE 8/9.
130 */
131mark {
132 background: #ff0;
133 color: #000;
134}
135/**
136 * Correct font family set oddly in Safari 5 and Chrome.
137 */
138code,
139kbd,
140pre,
141samp {
142 font-family: monospace, serif;
143 font-size: 1em;
144}
145/**
146 * Improve readability of pre-formatted text in all browsers.
147 */
148pre {
149 white-space: pre-wrap;
150}
151/**
152 * Set consistent quote types.
153 */
154q {
155 quotes: "\201C" "\201D" "\2018" "\2019";
156}
157/**
158 * Address inconsistent and variable font size in all browsers.
159 */
160small {
161 font-size: 80%;
162}
163/**
164 * Prevent `sub` and `sup` affecting `line-height` in all browsers.
165 */
166sub,
167sup {
168 font-size: 75%;
169 line-height: 0;
170 position: relative;
171 vertical-align: baseline;
172}
173sup {
174 top: -0.5em;
175}
176sub {
177 bottom: -0.25em;
178}
179/* ==========================================================================
180 Embedded content
181 ========================================================================== */
182/**
183 * Remove border when inside `a` element in IE 8/9.
184 */
185img {
186 border: 0;
187}
188/**
189 * Correct overflow displayed oddly in IE 9.
190 */
191svg:not(:root) {
192 overflow: hidden;
193}
194/* ==========================================================================
195 Figures
196 ========================================================================== */
197/**
198 * Address margin not present in IE 8/9 and Safari 5.
199 */
200figure {
201 margin: 0;
202}
203/* ==========================================================================
204 Forms
205 ========================================================================== */
206/**
207 * Define consistent border, margin, and padding.
208 */
209fieldset {
210 border: 1px solid #c0c0c0;
211 margin: 0 2px;
212 padding: 0.35em 0.625em 0.75em;
213}
214/**
215 * 1. Correct `color` not being inherited in IE 8/9.
216 * 2. Remove padding so people aren't caught out if they zero out fieldsets.
217 */
218legend {
219 border: 0;
220 /* 1 */
221 padding: 0;
222 /* 2 */
223}
224/**
225 * 1. Correct font family not being inherited in all browsers.
226 * 2. Correct font size not being inherited in all browsers.
227 * 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome.
228 */
229button,
230input,
231select,
232textarea {
233 font-family: inherit;
234 /* 1 */
235 font-size: 100%;
236 /* 2 */
237 margin: 0;
238 /* 3 */
239}
240/**
241 * Address Firefox 4+ setting `line-height` on `input` using `!important` in
242 * the UA stylesheet.
243 */
244button,
245input {
246 line-height: normal;
247}
248/**
249 * Address inconsistent `text-transform` inheritance for `button` and `select`.
250 * All other form control elements do not inherit `text-transform` values.
251 * Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+.
252 * Correct `select` style inheritance in Firefox 4+ and Opera.
253 */
254button,
255select {
256 text-transform: none;
257}
258/**
259 * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
260 * and `video` controls.
261 * 2. Correct inability to style clickable `input` types in iOS.
262 * 3. Improve usability and consistency of cursor style between image-type
263 * `input` and others.
264 */
265button,
266html input[type="button"],
267input[type="reset"],
268input[type="submit"] {
269 -webkit-appearance: button;
270 /* 2 */
271 cursor: pointer;
272 /* 3 */
273}
274/**
275 * Re-set default cursor for disabled elements.
276 */
277button[disabled],
278html input[disabled] {
279 cursor: default;
280}
281/**
282 * 1. Address box sizing set to `content-box` in IE 8/9/10.
283 * 2. Remove excess padding in IE 8/9/10.
284 */
285input[type="checkbox"],
286input[type="radio"] {
287 box-sizing: border-box;
288 /* 1 */
289 padding: 0;
290 /* 2 */
291}
292/**
293 * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
294 * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
295 * (include `-moz` to future-proof).
296 */
297input[type="search"] {
298 -webkit-appearance: textfield;
299 /* 1 */
300 -moz-box-sizing: content-box;
301 -webkit-box-sizing: content-box;
302 /* 2 */
303 box-sizing: content-box;
304}
305/**
306 * Remove inner padding and search cancel button in Safari 5 and Chrome
307 * on OS X.
308 */
309input[type="search"]::-webkit-search-cancel-button,
310input[type="search"]::-webkit-search-decoration {
311 -webkit-appearance: none;
312}
313/**
314 * Remove inner padding and border in Firefox 4+.
315 */
316button::-moz-focus-inner,
317input::-moz-focus-inner {
318 border: 0;
319 padding: 0;
320}
321/**
322 * 1. Remove default vertical scrollbar in IE 8/9.
323 * 2. Improve readability and alignment in all browsers.
324 */
325textarea {
326 overflow: auto;
327 /* 1 */
328 vertical-align: top;
329 /* 2 */
330}
331/* ==========================================================================
332 Tables
333 ========================================================================== */
334/**
335 * Remove most spacing between table cells.
336 */
337table {
338 border-collapse: collapse;
339 border-spacing: 0;
340}
diff --git a/Back/ZJW/stylesheets/webflow.css b/Back/ZJW/stylesheets/webflow.css
new file mode 100644
index 0000000..f1ff73f
--- /dev/null
+++ b/Back/ZJW/stylesheets/webflow.css
@@ -0,0 +1,1633 @@
1@font-face {
2 font-family: 'webflow-icons';
3 src: url(data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg6SAy0AAAC8AAAAYGNtYXAaVcxaAAABHAAAAExnYXNwAAAAEAAAAWgAAAAIZ2x5ZgscV1gAAAFwAAABhGhlYWQCkFKvAAAC9AAAADZoaGVhB0MDyQAAAywAAAAkaG10eBIAA10AAANQAAAAIGxvY2EBMADyAAADcAAAABJtYXhwAAwATQAAA4QAAAAgbmFtZWTuiIAAAAOkAAABe3Bvc3QAAwAAAAAFIAAAACAAAwQAAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADmAwPA/8D/wAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAACAAAAAwAAABQAAwABAAAAFAAEADgAAAAKAAgAAgACAAEAIOYD//3//wAAAAAAIOYA//3//wAB/+MaBAADAAEAAAAAAAAAAAAAAAEAAf//AA8AAQAAAAAAAAAAAAIAADc5AQAAAAABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQEgAAADIAOAAAUAAAkBBwkBFwMg/kBAAYD+gEABwAHAQP6A/oBAAAEA4AAAAuADgAAFAAATARcJAQfgAcBA/oABgEABwAHAQP6A/oBAAAADAMAA4ANAAsAAGAAxAEoAAAEhIg4CHQEUHgIzITI+Aj0BNC4CIxUhIg4CHQEUHgIzITI+Aj0BNC4CIxUhIg4CHQEUHgIzITI+Aj0BNC4CIwMg/cAHCwkFBQkLBwJABwsJBQUJCwf9wAcLCQUFCQsHAkAHCwkFBQkLB/3ABwsJBQUJCwcCQAcLCQUFCQsHAsAFCQsHIAcLCQUFCQsHIAcLCQXABQkLByAHCwkFBQkLByAHCwkFwAUJCwcgBwsJBQUJCwcgBwsJBQAAAAABAJ0AtAOBApUABQAACQIHCQEDJP7r/upcAXEBcgKU/usBFFv+egGGAAAAAAEAAAABAADSLAJOXw889QALBAAAAAAAz/iHGQAAAADP+IcZAAAAAAOBA4AAAAAIAAIAAAAAAAAAAQAAA8D/wAAABAAAAAAAA4EAAQAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAACAAAABAABIAQAAOAEAADABAAAnQAAAAAACgAUAB4AMgBGAKwAwgAAAAEAAAAIAEsAAwAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAOAK4AAQAAAAAAAQAaAAAAAQAAAAAAAgAOAHEAAQAAAAAAAwAaADAAAQAAAAAABAAaAH8AAQAAAAAABQAWABoAAQAAAAAABgANAEoAAQAAAAAACgA0AJkAAwABBAkAAQAaAAAAAwABBAkAAgAOAHEAAwABBAkAAwAaADAAAwABBAkABAAaAH8AAwABBAkABQAWABoAAwABBAkABgAaAFcAAwABBAkACgA0AJkAdwBlAGIAZgBsAG8AdwAtAGkAYwBvAG4AcwBWAGUAcgBzAGkAbwBuACAAMQAuADAAdwBlAGIAZgBsAG8AdwAtAGkAYwBvAG4Ac3dlYmZsb3ctaWNvbnMAdwBlAGIAZgBsAG8AdwAtAGkAYwBvAG4AcwBSAGUAZwB1AGwAYQByAHcAZQBiAGYAbABvAHcALQBpAGMAbwBuAHMARgBvAG4AdAAgAGcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAASQBjAG8ATQBvAG8AbgAuAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA) format('truetype'), url(data:application/font-woff;charset=utf-8;base64,d09GRk9UVE8AAAVcAAoAAAAABRQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABDRkYgAAAA9AAAAZMAAAGTuzUomU9TLzIAAAKIAAAAYAAAAGAOkgMtY21hcAAAAugAAABMAAAATBpVzFpnYXNwAAADNAAAAAgAAAAIAAAAEGhlYWQAAAM8AAAANgAAADYCkFKvaGhlYQAAA3QAAAAkAAAAJAdDA8lobXR4AAADmAAAACAAAAAgEgADXW1heHAAAAO4AAAABgAAAAYACFAAbmFtZQAAA8AAAAF7AAABe2TuiIBwb3N0AAAFPAAAACAAAAAgAAMAAAEABAQAAQEBDndlYmZsb3ctaWNvbnMAAQIAAQA6+BwC+BsD+BgEHgoACXf/i4seCgAJd/+LiwwHi0v6lPpUBR0AAACaDx0AAACfER0AAAAJHQAAAYoSAAkBAQ4bHR8iJywxNndlYmZsb3ctaWNvbnN3ZWJmbG93LWljb25zdTB1MXUyMHVFNjAwdUU2MDF1RTYwMnVFNjAzAAACAYkABgAIAQEEBwoNJDvH4P6UDv6UDv6UDvyUDvm0+FQV/FT4VEtL+BT8FPwU/BTLSwUO93T4VBX4VPhUy0v8FPwU+BT8FEtLBQ75tPlUFfzUiwV5i319i3kIi2sFi3mZfZ2LCPjUiwWdi5mZi50Ii6sFi519mXmLCIv7VBX81IsFeYt9fYt5CItrBYt5mX2diwj41IsFnYuZmYudCIurBYudfZl5iwiL+1QV/NSLBXmLfX2LeQiLawWLeZl9nYsI+NSLBZ2LmZmLnQiLqwWLnX2ZeYsIDvm4+SkV+6n7qvuq96ovLvgG/Bj4BvgYBQ76lBT6lBWLDAoAAAMEAAGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAA5gMDwP/A/8ADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAgAAAAMAAAAUAAMAAQAAABQABAA4AAAACgAIAAIAAgABACDmA//9//8AAAAAACDmAP/9//8AAf/jGgQAAwABAAAAAAAAAAAAAAABAAH//wAPAAEAAAABAAC1pQTjXw889QALBAAAAAAAz/iHGQAAAADP+IcZAAAAAAOBA4AAAAAIAAIAAAAAAAAAAQAAA8D/wAAABAAAAAAAA4EAAQAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAACAAAABAABIAQAAOAEAADABAAAnQAAUAAACAAAAAAADgCuAAEAAAAAAAEAGgAAAAEAAAAAAAIADgBxAAEAAAAAAAMAGgAwAAEAAAAAAAQAGgB/AAEAAAAAAAUAFgAaAAEAAAAAAAYADQBKAAEAAAAAAAoANACZAAMAAQQJAAEAGgAAAAMAAQQJAAIADgBxAAMAAQQJAAMAGgAwAAMAAQQJAAQAGgB/AAMAAQQJAAUAFgAaAAMAAQQJAAYAGgBXAAMAAQQJAAoANACZAHcAZQBiAGYAbABvAHcALQBpAGMAbwBuAHMAVgBlAHIAcwBpAG8AbgAgADEALgAwAHcAZQBiAGYAbABvAHcALQBpAGMAbwBuAHN3ZWJmbG93LWljb25zAHcAZQBiAGYAbABvAHcALQBpAGMAbwBuAHMAUgBlAGcAdQBsAGEAcgB3AGUAYgBmAGwAbwB3AC0AaQBjAG8AbgBzAEYAbwBuAHQAIABnAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAEkAYwBvAE0AbwBvAG4ALgAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==) format('woff');
4 font-weight: normal;
5 font-style: normal;
6}
7[class^="w-icon-"],
8[class*=" w-icon-"] {
9 font-family: 'webflow-icons';
10 speak: none;
11 font-style: normal;
12 font-weight: normal;
13 font-variant: normal;
14 text-transform: none;
15 line-height: 1;
16 -webkit-font-smoothing: antialiased;
17 -moz-osx-font-smoothing: grayscale;
18}
19.w-icon-slider-right:before {
20 content: "\e600";
21}
22.w-icon-slider-left:before {
23 content: "\e601";
24}
25.w-icon-nav-menu:before {
26 content: "\e602";
27}
28.w-icon-arrow-down:before,
29.w-icon-dropdown-toggle:before {
30 content: "\e603";
31}
32* {
33 -webkit-box-sizing: border-box;
34 -moz-box-sizing: border-box;
35 box-sizing: border-box;
36}
37html {
38 height: 100%;
39}
40body {
41 margin: 0;
42 min-height: 100%;
43 background-color: #fff;
44 color: #333;
45}
46img {
47 max-width: 100%;
48 vertical-align: middle;
49 display: inline-block;
50}
51html.w-mod-touch * {
52 background-attachment: scroll !important;
53}
54a:focus {
55 outline: 0;
56}
57.w-block {
58 display: block;
59}
60.w-inline-block {
61 max-width: 100%;
62 display: inline-block;
63}
64.w-clearfix:before,
65.w-clearfix:after {
66 content: " ";
67 display: table;
68}
69.w-clearfix:after {
70 clear: both;
71}
72.w-hidden {
73 display: none;
74}
75h1,
76h2,
77h3,
78h4,
79h5,
80h6 {
81 margin: 0;
82}
83p {
84 margin: 0;
85}
86blockquote {
87 margin: 0;
88}
89ul,
90ol {
91 margin-top: 0;
92 margin-bottom: 0;
93}
94.w-list-unstyled {
95 padding-left: 0;
96 list-style: none;
97}
98.w-embed:before,
99.w-embed:after {
100 content: " ";
101 display: table;
102}
103.w-embed:after {
104 clear: both;
105}
106.w-video {
107 width: 100%;
108 position: relative;
109 padding: 0;
110}
111.w-video iframe,
112.w-video object,
113.w-video embed {
114 position: absolute;
115 top: 0;
116 left: 0;
117 width: 100%;
118 height: 100%;
119}
120fieldset {
121 padding: 0;
122 margin: 0;
123 border: 0;
124}
125button,
126html input[type="button"],
127input[type="reset"],
128input[type="submit"] {
129 cursor: pointer;
130 -webkit-appearance: button;
131}
132.w-form {
133 margin: 0 0 15px;
134}
135.w-form-done {
136 display: none;
137 padding: 10px;
138 background-color: #dddddd;
139}
140.w-form-fail {
141 display: none;
142 margin-top: 10px;
143 padding: 10px;
144 background-color: #ffdede;
145}
146label {
147 display: block;
148 margin-bottom: 5px;
149 font-weight: bold;
150}
151.w-input,
152.w-select {
153 display: block;
154 width: 100%;
155 height: 38px;
156 padding: 8px 12px;
157 margin-bottom: 10px;
158 font-size: 14px;
159 line-height: 1.428571429;
160 color: #555555;
161 vertical-align: middle;
162 background-color: #ffffff;
163 border: 1px solid #cccccc;
164}
165.w-input:-moz-placeholder,
166.w-select:-moz-placeholder {
167 color: #999999;
168}
169.w-input::-moz-placeholder,
170.w-select::-moz-placeholder {
171 color: #999999;
172 opacity: 1;
173}
174.w-input:-ms-input-placeholder,
175.w-select:-ms-input-placeholder {
176 color: #999999;
177}
178.w-input::-webkit-input-placeholder,
179.w-select::-webkit-input-placeholder {
180 color: #999999;
181}
182.w-input:focus,
183.w-select:focus {
184 border-color: rgba(82, 168, 236, 0.8);
185 outline: 0;
186}
187.w-input[disabled],
188.w-select[disabled],
189.w-input[readonly],
190.w-select[readonly],
191fieldset[disabled] .w-input,
192fieldset[disabled] .w-select {
193 cursor: not-allowed;
194 background-color: #eeeeee;
195}
196textarea.w-input,
197textarea.w-select {
198 height: auto;
199}
200.w-select[multiple] {
201 height: auto;
202}
203.w-button {
204 display: inline-block;
205 padding: 12px;
206 background-color: black;
207 color: white;
208 border: 0;
209 line-height: inherit;
210}
211.w-form-label {
212 display: inline-block;
213 cursor: pointer;
214 font-weight: normal;
215 margin-bottom: 0px;
216}
217.w-checkbox,
218.w-radio {
219 display: block;
220 margin-bottom: 5px;
221 padding-left: 20px;
222}
223.w-checkbox:before,
224.w-radio:before,
225.w-checkbox:after,
226.w-radio:after {
227 content: " ";
228 display: table;
229}
230.w-checkbox:after,
231.w-radio:after {
232 clear: both;
233}
234.w-checkbox-input,
235.w-radio-input {
236 margin: 4px 0 0;
237 margin-top: 1px \9;
238 line-height: normal;
239 float: left;
240 margin-left: -20px;
241}
242.w-radio-input {
243 margin-top: 3px;
244}
245.w-container {
246 margin-left: auto;
247 margin-right: auto;
248 max-width: 940px;
249}
250.w-container:before,
251.w-container:after {
252 content: " ";
253 display: table;
254}
255.w-container:after {
256 clear: both;
257}
258.w-container .w-row {
259 margin-left: -10px;
260 margin-right: -10px;
261}
262.w-row:before,
263.w-row:after {
264 content: " ";
265 display: table;
266}
267.w-row:after {
268 clear: both;
269}
270.w-row .w-row {
271 margin-left: 0;
272 margin-right: 0;
273}
274.w-col {
275 position: relative;
276 float: left;
277 width: 100%;
278 min-height: 1px;
279 padding-left: 10px;
280 padding-right: 10px;
281}
282.w-col .w-col {
283 padding-left: 0;
284 padding-right: 0;
285}
286.w-col-1 {
287 width: 8.33333333%;
288}
289.w-col-2 {
290 width: 16.66666667%;
291}
292.w-col-3 {
293 width: 25%;
294}
295.w-col-4 {
296 width: 33.33333333%;
297}
298.w-col-5 {
299 width: 41.66666667%;
300}
301.w-col-6 {
302 width: 50%;
303}
304.w-col-7 {
305 width: 58.33333333%;
306}
307.w-col-8 {
308 width: 66.66666667%;
309}
310.w-col-9 {
311 width: 75%;
312}
313.w-col-10 {
314 width: 83.33333333%;
315}
316.w-col-11 {
317 width: 91.66666667%;
318}
319.w-col-12 {
320 width: 100%;
321}
322.w-col-push-1 {
323 left: 8.33333333%;
324}
325.w-col-push-2 {
326 left: 16.66666667%;
327}
328.w-col-push-3 {
329 left: 25%;
330}
331.w-col-push-4 {
332 left: 33.33333333%;
333}
334.w-col-push-5 {
335 left: 41.66666667%;
336}
337.w-col-push-6 {
338 left: 50%;
339}
340.w-col-push-7 {
341 left: 58.33333333%;
342}
343.w-col-push-8 {
344 left: 66.66666667%;
345}
346.w-col-push-9 {
347 left: 75%;
348}
349.w-col-push-10 {
350 left: 83.33333333%;
351}
352.w-col-push-11 {
353 left: 91.66666667%;
354}
355.w-col-pull-1 {
356 right: 8.33333333%;
357}
358.w-col-pull-2 {
359 right: 16.66666667%;
360}
361.w-col-pull-3 {
362 right: 25%;
363}
364.w-col-pull-4 {
365 right: 33.33333333%;
366}
367.w-col-pull-5 {
368 right: 41.66666667%;
369}
370.w-col-pull-6 {
371 right: 50%;
372}
373.w-col-pull-7 {
374 right: 58.33333333%;
375}
376.w-col-pull-8 {
377 right: 66.66666667%;
378}
379.w-col-pull-9 {
380 right: 75%;
381}
382.w-col-pull-10 {
383 right: 83.33333333%;
384}
385.w-col-pull-11 {
386 right: 91.66666667%;
387}
388.w-col-offset-1 {
389 margin-left: 8.33333333%;
390}
391.w-col-offset-2 {
392 margin-left: 16.66666667%;
393}
394.w-col-offset-3 {
395 margin-left: 25%;
396}
397.w-col-offset-4 {
398 margin-left: 33.33333333%;
399}
400.w-col-offset-5 {
401 margin-left: 41.66666667%;
402}
403.w-col-offset-6 {
404 margin-left: 50%;
405}
406.w-col-offset-7 {
407 margin-left: 58.33333333%;
408}
409.w-col-offset-8 {
410 margin-left: 66.66666667%;
411}
412.w-col-offset-9 {
413 margin-left: 75%;
414}
415.w-col-offset-10 {
416 margin-left: 83.33333333%;
417}
418.w-col-offset-11 {
419 margin-left: 91.66666667%;
420}
421.w-hidden-main {
422 display: none !important;
423}
424@media screen and (max-width: 991px) {
425 .w-container {
426 max-width: 728px;
427 }
428 .w-hidden-main {
429 display: inherit !important;
430 }
431 .w-hidden-medium {
432 display: none !important;
433 }
434 .w-col-medium-1 {
435 width: 8.33333333%;
436 }
437 .w-col-medium-2 {
438 width: 16.66666667%;
439 }
440 .w-col-medium-3 {
441 width: 25%;
442 }
443 .w-col-medium-4 {
444 width: 33.33333333%;
445 }
446 .w-col-medium-5 {
447 width: 41.66666667%;
448 }
449 .w-col-medium-6 {
450 width: 50%;
451 }
452 .w-col-medium-7 {
453 width: 58.33333333%;
454 }
455 .w-col-medium-8 {
456 width: 66.66666667%;
457 }
458 .w-col-medium-9 {
459 width: 75%;
460 }
461 .w-col-medium-10 {
462 width: 83.33333333%;
463 }
464 .w-col-medium-11 {
465 width: 91.66666667%;
466 }
467 .w-col-medium-12 {
468 width: 100%;
469 }
470 .w-col-medium-push-1 {
471 left: 8.33333333%;
472 }
473 .w-col-medium-push-2 {
474 left: 16.66666667%;
475 }
476 .w-col-medium-push-3 {
477 left: 25%;
478 }
479 .w-col-medium-push-4 {
480 left: 33.33333333%;
481 }
482 .w-col-medium-push-5 {
483 left: 41.66666667%;
484 }
485 .w-col-medium-push-6 {
486 left: 50%;
487 }
488 .w-col-medium-push-7 {
489 left: 58.33333333%;
490 }
491 .w-col-medium-push-8 {
492 left: 66.66666667%;
493 }
494 .w-col-medium-push-9 {
495 left: 75%;
496 }
497 .w-col-medium-push-10 {
498 left: 83.33333333%;
499 }
500 .w-col-medium-push-11 {
501 left: 91.66666667%;
502 }
503 .w-col-medium-pull-1 {
504 right: 8.33333333%;
505 }
506 .w-col-medium-pull-2 {
507 right: 16.66666667%;
508 }
509 .w-col-medium-pull-3 {
510 right: 25%;
511 }
512 .w-col-medium-pull-4 {
513 right: 33.33333333%;
514 }
515 .w-col-medium-pull-5 {
516 right: 41.66666667%;
517 }
518 .w-col-medium-pull-6 {
519 right: 50%;
520 }
521 .w-col-medium-pull-7 {
522 right: 58.33333333%;
523 }
524 .w-col-medium-pull-8 {
525 right: 66.66666667%;
526 }
527 .w-col-medium-pull-9 {
528 right: 75%;
529 }
530 .w-col-medium-pull-10 {
531 right: 83.33333333%;
532 }
533 .w-col-medium-pull-11 {
534 right: 91.66666667%;
535 }
536 .w-col-medium-offset-1 {
537 margin-left: 8.33333333%;
538 }
539 .w-col-medium-offset-2 {
540 margin-left: 16.66666667%;
541 }
542 .w-col-medium-offset-3 {
543 margin-left: 25%;
544 }
545 .w-col-medium-offset-4 {
546 margin-left: 33.33333333%;
547 }
548 .w-col-medium-offset-5 {
549 margin-left: 41.66666667%;
550 }
551 .w-col-medium-offset-6 {
552 margin-left: 50%;
553 }
554 .w-col-medium-offset-7 {
555 margin-left: 58.33333333%;
556 }
557 .w-col-medium-offset-8 {
558 margin-left: 66.66666667%;
559 }
560 .w-col-medium-offset-9 {
561 margin-left: 75%;
562 }
563 .w-col-medium-offset-10 {
564 margin-left: 83.33333333%;
565 }
566 .w-col-medium-offset-11 {
567 margin-left: 91.66666667%;
568 }
569 .w-col-stack {
570 width: 100%;
571 left: auto;
572 right: auto;
573 }
574}
575@media screen and (max-width: 767px) {
576 .w-hidden-main {
577 display: inherit !important;
578 }
579 .w-hidden-medium {
580 display: inherit !important;
581 }
582 .w-hidden-small {
583 display: none !important;
584 }
585 .w-row,
586 .w-container .w-row {
587 margin-left: 0;
588 margin-right: 0;
589 }
590 .w-col {
591 width: 100%;
592 left: auto;
593 right: auto;
594 }
595 .w-col-small-1 {
596 width: 8.33333333%;
597 }
598 .w-col-small-2 {
599 width: 16.66666667%;
600 }
601 .w-col-small-3 {
602 width: 25%;
603 }
604 .w-col-small-4 {
605 width: 33.33333333%;
606 }
607 .w-col-small-5 {
608 width: 41.66666667%;
609 }
610 .w-col-small-6 {
611 width: 50%;
612 }
613 .w-col-small-7 {
614 width: 58.33333333%;
615 }
616 .w-col-small-8 {
617 width: 66.66666667%;
618 }
619 .w-col-small-9 {
620 width: 75%;
621 }
622 .w-col-small-10 {
623 width: 83.33333333%;
624 }
625 .w-col-small-11 {
626 width: 91.66666667%;
627 }
628 .w-col-small-12 {
629 width: 100%;
630 }
631 .w-col-small-push-1 {
632 left: 8.33333333%;
633 }
634 .w-col-small-push-2 {
635 left: 16.66666667%;
636 }
637 .w-col-small-push-3 {
638 left: 25%;
639 }
640 .w-col-small-push-4 {
641 left: 33.33333333%;
642 }
643 .w-col-small-push-5 {
644 left: 41.66666667%;
645 }
646 .w-col-small-push-6 {
647 left: 50%;
648 }
649 .w-col-small-push-7 {
650 left: 58.33333333%;
651 }
652 .w-col-small-push-8 {
653 left: 66.66666667%;
654 }
655 .w-col-small-push-9 {
656 left: 75%;
657 }
658 .w-col-small-push-10 {
659 left: 83.33333333%;
660 }
661 .w-col-small-push-11 {
662 left: 91.66666667%;
663 }
664 .w-col-small-pull-1 {
665 right: 8.33333333%;
666 }
667 .w-col-small-pull-2 {
668 right: 16.66666667%;
669 }
670 .w-col-small-pull-3 {
671 right: 25%;
672 }
673 .w-col-small-pull-4 {
674 right: 33.33333333%;
675 }
676 .w-col-small-pull-5 {
677 right: 41.66666667%;
678 }
679 .w-col-small-pull-6 {
680 right: 50%;
681 }
682 .w-col-small-pull-7 {
683 right: 58.33333333%;
684 }
685 .w-col-small-pull-8 {
686 right: 66.66666667%;
687 }
688 .w-col-small-pull-9 {
689 right: 75%;
690 }
691 .w-col-small-pull-10 {
692 right: 83.33333333%;
693 }
694 .w-col-small-pull-11 {
695 right: 91.66666667%;
696 }
697 .w-col-small-offset-1 {
698 margin-left: 8.33333333%;
699 }
700 .w-col-small-offset-2 {
701 margin-left: 16.66666667%;
702 }
703 .w-col-small-offset-3 {
704 margin-left: 25%;
705 }
706 .w-col-small-offset-4 {
707 margin-left: 33.33333333%;
708 }
709 .w-col-small-offset-5 {
710 margin-left: 41.66666667%;
711 }
712 .w-col-small-offset-6 {
713 margin-left: 50%;
714 }
715 .w-col-small-offset-7 {
716 margin-left: 58.33333333%;
717 }
718 .w-col-small-offset-8 {
719 margin-left: 66.66666667%;
720 }
721 .w-col-small-offset-9 {
722 margin-left: 75%;
723 }
724 .w-col-small-offset-10 {
725 margin-left: 83.33333333%;
726 }
727 .w-col-small-offset-11 {
728 margin-left: 91.66666667%;
729 }
730}
731@media screen and (max-width: 479px) {
732 .w-container {
733 max-width: none;
734 }
735 .w-hidden-main {
736 display: inherit !important;
737 }
738 .w-hidden-medium {
739 display: inherit !important;
740 }
741 .w-hidden-small {
742 display: inherit !important;
743 }
744 .w-hidden-tiny {
745 display: none !important;
746 }
747 .w-col {
748 width: 100%;
749 }
750 .w-col-tiny-1 {
751 width: 8.33333333%;
752 }
753 .w-col-tiny-2 {
754 width: 16.66666667%;
755 }
756 .w-col-tiny-3 {
757 width: 25%;
758 }
759 .w-col-tiny-4 {
760 width: 33.33333333%;
761 }
762 .w-col-tiny-5 {
763 width: 41.66666667%;
764 }
765 .w-col-tiny-6 {
766 width: 50%;
767 }
768 .w-col-tiny-7 {
769 width: 58.33333333%;
770 }
771 .w-col-tiny-8 {
772 width: 66.66666667%;
773 }
774 .w-col-tiny-9 {
775 width: 75%;
776 }
777 .w-col-tiny-10 {
778 width: 83.33333333%;
779 }
780 .w-col-tiny-11 {
781 width: 91.66666667%;
782 }
783 .w-col-tiny-12 {
784 width: 100%;
785 }
786 .w-col-tiny-push-1 {
787 left: 8.33333333%;
788 }
789 .w-col-tiny-push-2 {
790 left: 16.66666667%;
791 }
792 .w-col-tiny-push-3 {
793 left: 25%;
794 }
795 .w-col-tiny-push-4 {
796 left: 33.33333333%;
797 }
798 .w-col-tiny-push-5 {
799 left: 41.66666667%;
800 }
801 .w-col-tiny-push-6 {
802 left: 50%;
803 }
804 .w-col-tiny-push-7 {
805 left: 58.33333333%;
806 }
807 .w-col-tiny-push-8 {
808 left: 66.66666667%;
809 }
810 .w-col-tiny-push-9 {
811 left: 75%;
812 }
813 .w-col-tiny-push-10 {
814 left: 83.33333333%;
815 }
816 .w-col-tiny-push-11 {
817 left: 91.66666667%;
818 }
819 .w-col-tiny-pull-1 {
820 right: 8.33333333%;
821 }
822 .w-col-tiny-pull-2 {
823 right: 16.66666667%;
824 }
825 .w-col-tiny-pull-3 {
826 right: 25%;
827 }
828 .w-col-tiny-pull-4 {
829 right: 33.33333333%;
830 }
831 .w-col-tiny-pull-5 {
832 right: 41.66666667%;
833 }
834 .w-col-tiny-pull-6 {
835 right: 50%;
836 }
837 .w-col-tiny-pull-7 {
838 right: 58.33333333%;
839 }
840 .w-col-tiny-pull-8 {
841 right: 66.66666667%;
842 }
843 .w-col-tiny-pull-9 {
844 right: 75%;
845 }
846 .w-col-tiny-pull-10 {
847 right: 83.33333333%;
848 }
849 .w-col-tiny-pull-11 {
850 right: 91.66666667%;
851 }
852 .w-col-tiny-offset-1 {
853 margin-left: 8.33333333%;
854 }
855 .w-col-tiny-offset-2 {
856 margin-left: 16.66666667%;
857 }
858 .w-col-tiny-offset-3 {
859 margin-left: 25%;
860 }
861 .w-col-tiny-offset-4 {
862 margin-left: 33.33333333%;
863 }
864 .w-col-tiny-offset-5 {
865 margin-left: 41.66666667%;
866 }
867 .w-col-tiny-offset-6 {
868 margin-left: 50%;
869 }
870 .w-col-tiny-offset-7 {
871 margin-left: 58.33333333%;
872 }
873 .w-col-tiny-offset-8 {
874 margin-left: 66.66666667%;
875 }
876 .w-col-tiny-offset-9 {
877 margin-left: 75%;
878 }
879 .w-col-tiny-offset-10 {
880 margin-left: 83.33333333%;
881 }
882 .w-col-tiny-offset-11 {
883 margin-left: 91.66666667%;
884 }
885}
886.w-widget {
887 position: relative;
888}
889.w-widget-map {
890 width: 100%;
891 height: 400px;
892}
893.w-widget-map label {
894 width: auto;
895 display: inline;
896}
897.w-widget-map img {
898 max-width: inherit;
899}
900.w-widget-map .gm-style-iw {
901 width: 90% !important;
902 height: auto !important;
903 top: 7px !important;
904 left: 6% !important;
905 display: inline;
906 text-align: center;
907 overflow: hidden;
908}
909.w-widget-map .gm-style-iw + div {
910 display: none;
911}
912.w-widget-twitter {
913 overflow: hidden;
914}
915.w-widget-gplus {
916 overflow: hidden;
917}
918.w-slider {
919 position: relative;
920 height: 300px;
921 text-align: center;
922 background: rgba(153, 153, 153, 0.5);
923 clear: both;
924 -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
925 tap-highlight-color: rgba(0, 0, 0, 0);
926}
927.w-slider-mask {
928 position: relative;
929 display: block;
930 overflow: hidden;
931 z-index: 1;
932 left: 0;
933 right: 0;
934 height: 100%;
935 white-space: nowrap;
936}
937.w-slide {
938 position: relative;
939 display: inline-block;
940 vertical-align: top;
941 width: 100%;
942 height: 100%;
943 white-space: normal;
944 text-align: left;
945}
946.w-slider-nav {
947 position: absolute;
948 z-index: 2;
949 top: auto;
950 right: 0;
951 bottom: 0;
952 left: 0;
953 margin: auto;
954 padding-top: 10px;
955 height: 40px;
956 text-align: center;
957 -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
958 tap-highlight-color: rgba(0, 0, 0, 0);
959}
960.w-slider-nav.w-round > div {
961 -webkit-border-radius: 100%;
962 -webkit-background-clip: padding-box;
963 -moz-border-radius: 100%;
964 -moz-background-clip: padding;
965 border-radius: 100%;
966 background-clip: padding-box;
967}
968.w-slider-nav.w-num > div {
969 width: auto;
970 height: auto;
971 padding: 0.2em 0.5em;
972 font-size: inherit;
973 line-height: inherit;
974}
975.w-slider-nav.w-shadow > div {
976 -webkit-box-shadow: 0 0 3px rgba(51, 51, 51, 0.4);
977 -moz-box-shadow: 0 0 3px rgba(51, 51, 51, 0.4);
978 box-shadow: 0 0 3px rgba(51, 51, 51, 0.4);
979}
980.w-slider-nav-invert {
981 color: #fff;
982}
983.w-slider-nav-invert > div {
984 background-color: rgba(34, 34, 34, 0.4);
985}
986.w-slider-nav-invert > div.w-active {
987 background-color: #222;
988}
989.w-slider-dot {
990 position: relative;
991 display: inline-block;
992 width: 1em;
993 height: 1em;
994 background-color: rgba(255, 255, 255, 0.4);
995 cursor: pointer;
996 margin: 0 3px 0.5em;
997 -webkit-transition: background-color 100ms, color 100ms;
998 -moz-transition: background-color 100ms, color 100ms;
999 -o-transition: background-color 100ms, color 100ms;
1000 transition: background-color 100ms, color 100ms;
1001}
1002.w-slider-dot.w-active {
1003 background-color: #fff;
1004}
1005.w-slider-arrow-left,
1006.w-slider-arrow-right {
1007 position: absolute;
1008 width: 80px;
1009 top: 0;
1010 right: 0;
1011 bottom: 0;
1012 left: 0;
1013 margin: auto;
1014 cursor: pointer;
1015 overflow: hidden;
1016 color: white;
1017 font-size: 40px;
1018 -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
1019 tap-highlight-color: rgba(0, 0, 0, 0);
1020 -webkit-user-select: none;
1021 -moz-user-select: none;
1022 -ms-user-select: none;
1023 user-select: none;
1024}
1025.w-slider-arrow-left [class^="w-icon-"],
1026.w-slider-arrow-right [class^="w-icon-"],
1027.w-slider-arrow-left [class*=" w-icon-"],
1028.w-slider-arrow-right [class*=" w-icon-"] {
1029 position: absolute;
1030}
1031.w-slider-arrow-left {
1032 z-index: 3;
1033 right: auto;
1034}
1035.w-slider-arrow-right {
1036 z-index: 4;
1037 left: auto;
1038}
1039.w-icon-slider-left,
1040.w-icon-slider-right {
1041 top: 0;
1042 right: 0;
1043 bottom: 0;
1044 left: 0;
1045 margin: auto;
1046 width: 1em;
1047 height: 1em;
1048}
1049.w-dropdown {
1050 display: inline-block;
1051 position: relative;
1052 text-align: left;
1053 margin-left: auto;
1054 margin-right: auto;
1055 z-index: 900;
1056}
1057.w-dropdown-btn,
1058.w-dropdown-toggle,
1059.w-dropdown-link {
1060 position: relative;
1061 vertical-align: top;
1062 text-decoration: none;
1063 color: #222;
1064 padding: 20px;
1065 text-align: left;
1066 margin-left: auto;
1067 margin-right: auto;
1068 white-space: nowrap;
1069}
1070.w-dropdown-toggle {
1071 -webkit-user-select: none;
1072 -moz-user-select: none;
1073 -ms-user-select: none;
1074 user-select: none;
1075 display: inline-block;
1076 cursor: pointer;
1077 padding-right: 40px;
1078}
1079.w-dropdown-toggle:focus {
1080 outline: 0;
1081}
1082.w-icon-dropdown-toggle {
1083 position: absolute;
1084 top: 0;
1085 right: 0;
1086 bottom: 0;
1087 margin: auto;
1088 margin-right: 20px;
1089 width: 1em;
1090 height: 1em;
1091}
1092.w-dropdown-list {
1093 position: absolute;
1094 background: #f2f2f2;
1095 display: none;
1096 min-width: 100%;
1097}
1098.w-dropdown-list.w--open {
1099 display: block;
1100}
1101.w-dropdown-link {
1102 padding: 10px 20px;
1103 display: block;
1104}
1105.w-dropdown-link.w--current {
1106 color: #339ce1;
1107}
1108.w-nav[data-collapse="all"] .w-dropdown,
1109.w-nav[data-collapse="all"] .w-dropdown-toggle {
1110 display: block;
1111}
1112.w-nav[data-collapse="all"] .w-dropdown-list {
1113 position: static;
1114}
1115@media screen and (max-width: 991px) {
1116 .w-nav[data-collapse="medium"] .w-dropdown,
1117 .w-nav[data-collapse="medium"] .w-dropdown-toggle {
1118 display: block;
1119 }
1120 .w-nav[data-collapse="medium"] .w-dropdown-list {
1121 position: static;
1122 }
1123}
1124@media screen and (max-width: 767px) {
1125 .w-nav[data-collapse="small"] .w-dropdown,
1126 .w-nav[data-collapse="small"] .w-dropdown-toggle {
1127 display: block;
1128 }
1129 .w-nav[data-collapse="small"] .w-dropdown-list {
1130 position: static;
1131 }
1132 .w-nav-brand {
1133 padding-left: 10px;
1134 }
1135}
1136@media screen and (max-width: 479px) {
1137 .w-nav[data-collapse="tiny"] .w-dropdown,
1138 .w-nav[data-collapse="tiny"] .w-dropdown-toggle {
1139 display: block;
1140 }
1141 .w-nav[data-collapse="tiny"] .w-dropdown-list {
1142 position: static;
1143 }
1144}
1145/**
1146 * ## Note
1147 * Safari (on both iOS and OS X) does not handle viewport units (vh, vw) well.
1148 * For example percentage units do not work on descendants of elements that
1149 * have any dimensions expressed in viewport units. It also doesn’t handle them at
1150 * all in `calc()`.
1151 */
1152/**
1153 * Wrapper around all lightbox elements
1154 *
1155 * 1. Since the lightbox can receive focus, IE also gives it an outline.
1156 * 2. Fixes flickering on Chrome when a transition is in progress
1157 * underneath the lightbox.
1158 */
1159.w-lightbox-backdrop {
1160 position: fixed;
1161 top: 0;
1162 right: 0;
1163 bottom: 0;
1164 left: 0;
1165 color: #fff;
1166 font-family: "Helvetica Neue", Helvetica, Ubuntu, "Segoe UI", Verdana, sans-serif;
1167 font-size: 17px;
1168 font-weight: 300;
1169 text-align: center;
1170 background: rgba(0, 0, 0, 0.9);
1171 z-index: 2000;
1172 outline: 0;
1173 /* 1 */
1174 opacity: 0;
1175 -webkit-user-select: none;
1176 -moz-user-select: none;
1177 -ms-user-select: none;
1178 -webkit-tap-highlight-color: transparent;
1179 -webkit-transform: translate(0, 0);
1180 /* 2 */
1181}
1182/**
1183 * Neat trick to bind the rubberband effect to our canvas instead of the whole
1184 * document on iOS. It also prevents a bug that causes the document underneath to scroll.
1185 */
1186.w-lightbox-backdrop,
1187.w-lightbox-container {
1188 height: 100%;
1189 overflow: auto;
1190 -webkit-overflow-scrolling: touch;
1191}
1192.w-lightbox-content {
1193 position: relative;
1194 height: 100vh;
1195 overflow: hidden;
1196}
1197.w-lightbox-view {
1198 position: absolute;
1199 width: 100vw;
1200 height: 100vh;
1201}
1202.w-lightbox-view:before {
1203 content: "";
1204 height: 100vh;
1205}
1206/* .w-lightbox-content */
1207.w-lightbox-group,
1208.w-lightbox-group .w-lightbox-view,
1209.w-lightbox-group .w-lightbox-view:before {
1210 height: 86vh;
1211}
1212.w-lightbox-frame,
1213.w-lightbox-view:before {
1214 display: inline-block;
1215 vertical-align: middle;
1216}
1217/*
1218 * 1. Remove default margin set by user-agent on the <figure> element.
1219 */
1220.w-lightbox-figure {
1221 position: relative;
1222 margin: 0;
1223 /* 1 */
1224}
1225.w-lightbox-group .w-lightbox-figure {
1226 cursor: pointer;
1227}
1228/**
1229 * IE adds image dimensions as width and height attributes on the IMG tag,
1230 * but we need both width and height to be set to auto to enable scaling.
1231 */
1232.w-lightbox-img {
1233 width: auto;
1234 height: auto;
1235 max-width: none;
1236}
1237.w-lightbox-image {
1238 display: block;
1239 max-width: 100vw;
1240 max-height: 100vh;
1241}
1242.w-lightbox-group .w-lightbox-image {
1243 max-height: 86vh;
1244}
1245.w-lightbox-caption {
1246 position: absolute;
1247 right: 0;
1248 bottom: 0;
1249 left: 0;
1250 padding: .5em 1em;
1251 background: rgba(0, 0, 0, 0.4);
1252 text-align: left;
1253 text-overflow: ellipsis;
1254 white-space: nowrap;
1255 overflow: hidden;
1256}
1257.w-lightbox-embed {
1258 position: absolute;
1259 top: 0;
1260 right: 0;
1261 bottom: 0;
1262 left: 0;
1263 width: 100%;
1264 height: 100%;
1265}
1266.w-lightbox-control {
1267 position: absolute;
1268 top: 0;
1269 width: 4em;
1270 background-size: 24px;
1271 background-repeat: no-repeat;
1272 background-position: center;
1273 cursor: pointer;
1274 opacity: 0;
1275 -webkit-transition: all .3s;
1276 transition: all .3s;
1277}
1278.w-lightbox-left {
1279 bottom: 0;
1280 left: 0;
1281 /* <svg xmlns="http://www.w3.org/2000/svg" viewBox="-20 0 24 40" width="24" height="40"><g transform="rotate(45)"><path d="m0 0h5v23h23v5h-28z" opacity=".4"/><path d="m1 1h3v23h23v3h-26z" fill="#fff"/></g></svg> */
1282 background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9Ii0yMCAwIDI0IDQwIiB3aWR0aD0iMjQiIGhlaWdodD0iNDAiPjxnIHRyYW5zZm9ybT0icm90YXRlKDQ1KSI+PHBhdGggZD0ibTAgMGg1djIzaDIzdjVoLTI4eiIgb3BhY2l0eT0iLjQiLz48cGF0aCBkPSJtMSAxaDN2MjNoMjN2M2gtMjZ6IiBmaWxsPSIjZmZmIi8+PC9nPjwvc3ZnPg==");
1283}
1284.w-lightbox-right {
1285 right: 0;
1286 bottom: 0;
1287 /* <svg xmlns="http://www.w3.org/2000/svg" viewBox="-4 0 24 40" width="24" height="40"><g transform="rotate(45)"><path d="m0-0h28v28h-5v-23h-23z" opacity=".4"/><path d="m1 1h26v26h-3v-23h-23z" fill="#fff"/></g></svg> */
1288 background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9Ii00IDAgMjQgNDAiIHdpZHRoPSIyNCIgaGVpZ2h0PSI0MCI+PGcgdHJhbnNmb3JtPSJyb3RhdGUoNDUpIj48cGF0aCBkPSJtMC0waDI4djI4aC01di0yM2gtMjN6IiBvcGFjaXR5PSIuNCIvPjxwYXRoIGQ9Im0xIDFoMjZ2MjZoLTN2LTIzaC0yM3oiIGZpbGw9IiNmZmYiLz48L2c+PC9zdmc+");
1289}
1290/*
1291 * Without specifying the with and height inside the SVG, all versions of IE render the icon too small.
1292 * The bug does not seem to manifest itself if the elements are tall enough such as the above arrows.
1293 * (http://stackoverflow.com/questions/16092114/background-size-differs-in-internet-explorer)
1294 */
1295.w-lightbox-close {
1296 right: 0;
1297 height: 2.6em;
1298 /* <svg xmlns="http://www.w3.org/2000/svg" viewBox="-4 0 18 17" width="18" height="17"><g transform="rotate(45)"><path d="m0 0h7v-7h5v7h7v5h-7v7h-5v-7h-7z" opacity=".4"/><path d="m1 1h7v-7h3v7h7v3h-7v7h-3v-7h-7z" fill="#fff"/></g></svg> */
1299 background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9Ii00IDAgMTggMTciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxNyI+PGcgdHJhbnNmb3JtPSJyb3RhdGUoNDUpIj48cGF0aCBkPSJtMCAwaDd2LTdoNXY3aDd2NWgtN3Y3aC01di03aC03eiIgb3BhY2l0eT0iLjQiLz48cGF0aCBkPSJtMSAxaDd2LTdoM3Y3aDd2M2gtN3Y3aC0zdi03aC03eiIgZmlsbD0iI2ZmZiIvPjwvZz48L3N2Zz4=");
1300 background-size: 18px;
1301}
1302/**
1303 * 1. All IE versions add extra space at the bottom without this.
1304 */
1305.w-lightbox-strip {
1306 padding: 0 1vh;
1307 line-height: 0;
1308 /* 1 */
1309 white-space: nowrap;
1310 overflow-x: auto;
1311 overflow-y: hidden;
1312}
1313/*
1314 * 1. We use content-box to avoid having to do `width: calc(10vh + 2vw)`
1315 * which doesn’t work in Safari anyway.
1316 * 2. Chrome renders images pixelated when switching to GPU. Making sure
1317 * the parent is also rendered on the GPU (by setting translate3d for
1318 * example) fixes this behavior.
1319 */
1320.w-lightbox-item {
1321 display: inline-block;
1322 width: 10vh;
1323 padding: 2vh 1vh;
1324 box-sizing: content-box;
1325 /* 1 */
1326 cursor: pointer;
1327 -webkit-transform: translate3d(0, 0, 0);
1328 /* 2 */
1329}
1330.w-lightbox-active {
1331 opacity: .3;
1332}
1333.w-lightbox-thumbnail {
1334 position: relative;
1335 height: 10vh;
1336 background: #222;
1337 overflow: hidden;
1338}
1339.w-lightbox-thumbnail-image {
1340 position: absolute;
1341 top: 0;
1342 left: 0;
1343}
1344.w-lightbox-thumbnail .w-lightbox-tall {
1345 top: 50%;
1346 width: 100%;
1347 -webkit-transform: translate(0, -50%);
1348 -ms-transform: translate(0, -50%);
1349 transform: translate(0, -50%);
1350}
1351.w-lightbox-thumbnail .w-lightbox-wide {
1352 left: 50%;
1353 height: 100%;
1354 -webkit-transform: translate(-50%, 0);
1355 -ms-transform: translate(-50%, 0);
1356 transform: translate(-50%, 0);
1357}
1358/*
1359 * Spinner
1360 *
1361 * Absolute pixel values are used to avoid rounding errors that would cause
1362 * the white spinning element to be misaligned with the track.
1363 */
1364.w-lightbox-spinner {
1365 position: absolute;
1366 top: 50%;
1367 left: 50%;
1368 box-sizing: border-box;
1369 width: 40px;
1370 height: 40px;
1371 margin-top: -20px;
1372 margin-left: -20px;
1373 border: 5px solid rgba(0, 0, 0, 0.4);
1374 border-radius: 50%;
1375 -webkit-animation: spin .8s infinite linear;
1376 animation: spin .8s infinite linear;
1377}
1378.w-lightbox-spinner:after {
1379 content: "";
1380 position: absolute;
1381 top: -4px;
1382 right: -4px;
1383 bottom: -4px;
1384 left: -4px;
1385 border: 3px solid transparent;
1386 border-bottom-color: #fff;
1387 border-radius: 50%;
1388}
1389/*
1390 * Utility classes
1391 */
1392.w-lightbox-hide {
1393 display: none;
1394}
1395.w-lightbox-visible {
1396 opacity: 1;
1397}
1398.w-lightbox-noscroll {
1399 overflow: hidden;
1400}
1401@media (min-width: 1025px) {
1402 .w-lightbox-content {
1403 height: 96vh;
1404 margin-top: 2vh;
1405 }
1406 .w-lightbox-view,
1407 .w-lightbox-view:before {
1408 height: 96vh;
1409 }
1410 /* .w-lightbox-content */
1411 .w-lightbox-group,
1412 .w-lightbox-group .w-lightbox-view,
1413 .w-lightbox-group .w-lightbox-view:before {
1414 height: 84vh;
1415 }
1416 .w-lightbox-image {
1417 max-width: 96vw;
1418 max-height: 96vh;
1419 }
1420 .w-lightbox-group .w-lightbox-image {
1421 max-height: 84vh;
1422 }
1423 .w-lightbox-left,
1424 .w-lightbox-right {
1425 opacity: .5;
1426 }
1427 .w-lightbox-close {
1428 opacity: .8;
1429 }
1430 .w-lightbox-control:hover {
1431 opacity: 1;
1432 }
1433}
1434.w-lightbox-inactive,
1435.w-lightbox-inactive:hover {
1436 opacity: 0;
1437}
1438.w-nav {
1439 position: relative;
1440 background: #BBB;
1441 z-index: 1000;
1442}
1443.w-nav:before,
1444.w-nav:after {
1445 content: " ";
1446 display: table;
1447}
1448.w-nav:after {
1449 clear: both;
1450}
1451.w-nav-brand {
1452 position: relative;
1453 float: left;
1454 text-decoration: none;
1455 color: #222;
1456}
1457.w-nav-link {
1458 position: relative;
1459 display: inline-block;
1460 vertical-align: top;
1461 text-decoration: none;
1462 color: #222;
1463 padding: 20px;
1464 text-align: left;
1465 margin-left: auto;
1466 margin-right: auto;
1467}
1468.w-nav-link.w--current {
1469 color: #339ce1;
1470}
1471.w-nav-menu {
1472 position: relative;
1473 float: right;
1474}
1475.w--nav-menu-open {
1476 display: block !important;
1477 position: absolute;
1478 top: 100%;
1479 left: 0;
1480 right: 0;
1481 background: #999;
1482 text-align: center;
1483 overflow: visible;
1484 min-width: 200px;
1485}
1486.w--nav-link-open {
1487 display: block;
1488 position: relative;
1489}
1490.w-nav-overlay {
1491 position: absolute;
1492 overflow: hidden;
1493 display: none;
1494 top: 100%;
1495 left: 0;
1496 right: 0;
1497 width: 100%;
1498}
1499.w-nav-overlay .w--nav-menu-open {
1500 top: 0;
1501}
1502.w-nav[data-animation="over-left"] .w-nav-overlay {
1503 width: auto;
1504}
1505.w-nav[data-animation="over-left"] .w-nav-overlay,
1506.w-nav[data-animation="over-left"] .w--nav-menu-open {
1507 right: auto;
1508 z-index: 1;
1509 top: 0;
1510}
1511.w-nav[data-animation="over-right"] .w-nav-overlay {
1512 width: auto;
1513}
1514.w-nav[data-animation="over-right"] .w-nav-overlay,
1515.w-nav[data-animation="over-right"] .w--nav-menu-open {
1516 left: auto;
1517 z-index: 1;
1518 top: 0;
1519}
1520.w-nav-button {
1521 position: relative;
1522 float: right;
1523 padding: 18px;
1524 font-size: 24px;
1525 display: none;
1526 cursor: pointer;
1527 -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
1528 tap-highlight-color: rgba(0, 0, 0, 0);
1529 -webkit-user-select: none;
1530 -moz-user-select: none;
1531 -ms-user-select: none;
1532 user-select: none;
1533}
1534.w-nav-button.w--open {
1535 background-color: #999;
1536 color: white;
1537}
1538.w-nav[data-collapse="all"] .w-nav-menu {
1539 display: none;
1540}
1541.w-nav[data-collapse="all"] .w-nav-button {
1542 display: block;
1543}
1544@media screen and (max-width: 991px) {
1545 .w-nav[data-collapse="medium"] .w-nav-menu {
1546 display: none;
1547 }
1548 .w-nav[data-collapse="medium"] .w-nav-button {
1549 display: block;
1550 }
1551}
1552@media screen and (max-width: 767px) {
1553 .w-nav[data-collapse="small"] .w-nav-menu {
1554 display: none;
1555 }
1556 .w-nav[data-collapse="small"] .w-nav-button {
1557 display: block;
1558 }
1559 .w-nav-brand {
1560 padding-left: 10px;
1561 }
1562}
1563@media screen and (max-width: 479px) {
1564 .w-nav[data-collapse="tiny"] .w-nav-menu {
1565 display: none;
1566 }
1567 .w-nav[data-collapse="tiny"] .w-nav-button {
1568 display: block;
1569 }
1570}
1571.w-tabs {
1572 position: relative;
1573}
1574.w-tabs:before,
1575.w-tabs:after {
1576 content: " ";
1577 display: table;
1578}
1579.w-tabs:after {
1580 clear: both;
1581}
1582.w-tab-menu {
1583 position: relative;
1584}
1585.w-tab-link {
1586 position: relative;
1587 display: inline-block;
1588 vertical-align: top;
1589 text-decoration: none;
1590 padding: 8px 30px;
1591 text-align: left;
1592 cursor: pointer;
1593 background-color: #E8E8E8;
1594}
1595.w-tab-link.w--current {
1596 background-color: #BCD3F3;
1597}
1598.w-tab-content {
1599 position: relative;
1600 display: block;
1601 overflow: hidden;
1602}
1603.w-tab-pane {
1604 position: relative;
1605 display: none;
1606}
1607.w--tab-active {
1608 display: block;
1609}
1610@media screen and (max-width: 479px) {
1611 .w-tab-link {
1612 display: block;
1613 }
1614}
1615.w-ix-emptyfix:after {
1616 content: "";
1617}
1618@-webkit-keyframes spin {
1619 0% {
1620 -webkit-transform: rotate(0deg);
1621 }
1622 100% {
1623 -webkit-transform: rotate(360deg);
1624 }
1625}
1626@keyframes spin {
1627 0% {
1628 transform: rotate(0deg);
1629 }
1630 100% {
1631 transform: rotate(360deg);
1632 }
1633}
diff --git a/Back/jinwei.me/css/css.css b/Back/jinwei.me/css/css.css
new file mode 100644
index 0000000..072272c
--- /dev/null
+++ b/Back/jinwei.me/css/css.css
@@ -0,0 +1,18 @@
1@font-face {
2 font-family: 'Open Sans Condensed';
3 font-style: normal;
4 font-weight: 300;
5 src: local('Open Sans Cond Light'), local('OpenSans-CondensedLight'), url(./font/gk5FxslNkTTHtojXrkp-xF1YPouZEKgzpqZW9wN-3Ek.woff) format('woff');
6}
7@font-face {
8 font-family: 'Open Sans Condensed';
9 font-style: normal;
10 font-weight: 700;
11 src: local('Open Sans Condensed Bold'), local('OpenSans-CondensedBold'), url(./font/gk5FxslNkTTHtojXrkp-xONSK5BxN3NFS4EJkViHIqo.woff) format('woff');
12}
13@font-face {
14 font-family: 'Open Sans Condensed';
15 font-style: italic;
16 font-weight: 300;
17 src: local('Open Sans Cond Light Italic'), local('OpenSans-CondensedLightItalic'), url(./font/jIXlqT1WKafUSwj6s9AzV6XnXbwdDC8wAz6IIzmCDUP3rGVtsTkPsbDajuO5ueQw.woff) format('woff');
18}
diff --git a/Back/jinwei.me/css/demo.css b/Back/jinwei.me/css/demo.css
new file mode 100644
index 0000000..8eaa932
--- /dev/null
+++ b/Back/jinwei.me/css/demo.css
@@ -0,0 +1,176 @@
1@font-face {
2 font-family: 'icons';
3 src: url("font/icons.eot");
4 src: url(".font/icons.eot?#iefix") format('embedded-opentype'), url("font/icons.woff") format('woff'), url("font/icons.ttf") format('truetype'), url("font/icons.svg#icons") format('svg');
5 font-weight: normal;
6 font-style: normal;
7}
8
9*,
10*:after,
11*:before {
12 -webkit-box-sizing: border-box;
13 -moz-box-sizing: border-box;
14 box-sizing: border-box;
15 padding: 0;
16 margin: 0;
17}
18
19/* Clearfix hack by Nicolas Gallagher: http://nicolasgallagher.com/micro-clearfix-hack/ */
20.clearfix:before,
21.clearfix:after {
22 content: " "; /* 1 */
23 display: table; /* 2 */
24}
25
26.clearfix:after {
27 clear: both;
28}
29
30.clearfix {
31 *zoom: 1;
32}
33
34body{
35 font-family: 'Open Sans Condensed','Arial Narrow', serif;
36 background: #ddd url(../images/egg_shell.jpg) repeat top left;
37 font-weight: 400;
38 font-size: 15px;
39 color: #333;
40 overflow: scroll;
41 overflow-x: hidden;
42}
43a{
44 color: #555;
45 text-decoration: none;
46}
47.container{
48 width: 100%;
49 position: relative;
50}
51.clr{
52 clear: both;
53 padding: 0;
54 height: 0;
55 margin: 0;
56}
57.main{
58 width: 1000px;
59 height: 700px;
60 overflow: hidden;
61 margin: 0 auto;
62 position: relative;
63}
64.container > header{
65 margin: 10px;
66 padding: 20px 10px 10px 10px;
67 position: relative;
68 display: block;
69 text-shadow: 1px 1px 1px rgba(0,0,0,0.2);
70 text-align: center;
71}
72.container > header h1{
73 font-size: 36px;
74 line-height: 36px;
75 margin: 0;
76 position: relative;
77 font-weight: 300;
78 color: #524f4e;
79 text-shadow: 1px 1px 1px rgba(255,255,255,0.7);
80}
81.container > header h1 span{
82 font-weight: 700;
83}
84.container > header h2{
85 font-size: 14px;
86 font-weight: 300;
87 margin: 0;
88 padding: 15px 0 5px 0;
89 color: #888;
90 font-family: Cambria, Georgia, serif;
91 font-style: italic;
92 text-shadow: 1px 1px 1px rgba(255,255,255,0.9);
93}
94/* Header Style */
95.codrops-top{
96 line-height: 24px;
97 font-size: 11px;
98 background: #fff;
99 background: rgba(255, 255, 255, 0.6);
100 text-transform: uppercase;
101 z-index: 9999;
102 position: relative;
103 font-family: Cambria, Georgia, serif;
104 box-shadow: 1px 0px 2px rgba(0,0,0,0.2);
105}
106.codrops-top a{
107 padding: 0px 10px;
108 letter-spacing: 1px;
109 color: #333;
110 display: inline-block;
111}
112.codrops-top a:hover{
113 background: rgba(255,255,255,0.3);
114}
115.codrops-top span.right{
116 float: right;
117}
118.codrops-top span.right a{
119 float: left;
120 display: block;
121}
122/* Demo Buttons Style */
123.codrops-demos{
124 text-align:center;
125 display: block;
126 line-height: 30px;
127 padding: 5px 0px;
128}
129.codrops-demos a{
130 display: inline-block;
131 margin: 0px 4px;
132 padding: 0px 6px;
133 color: #aaa;
134 line-height: 20px;
135 font-size: 13px;
136 text-shadow: 1px 1px 1px #fff;
137 border: 1px solid #fff;
138 background: #ffffff; /* Old browsers */
139 background: -moz-linear-gradient(top, #ffffff 0%, #f6f6f6 47%, #ededed 100%); /* FF3.6+ */
140 background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(47%,#f6f6f6), color-stop(100%,#ededed)); /* Chrome,Safari4+ */
141 background: -webkit-linear-gradient(top, #ffffff 0%,#f6f6f6 47%,#ededed 100%); /* Chrome10+,Safari5.1+ */
142 background: -o-linear-gradient(top, #ffffff 0%,#f6f6f6 47%,#ededed 100%); /* Opera 11.10+ */
143 background: -ms-linear-gradient(top, #ffffff 0%,#f6f6f6 47%,#ededed 100%); /* IE10+ */
144 background: linear-gradient(top, #ffffff 0%,#f6f6f6 47%,#ededed 100%); /* W3C */
145 filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#ededed',GradientType=0 ); /* IE6-9 */
146 box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
147}
148.codrops-demos a:hover{
149 color: #333;
150 background: #fff;
151}
152.codrops-demos a:active{
153 background: #fff;
154}
155.codrops-demos a.current-demo,
156.codrops-demos a.current-demo:hover{
157 background: #f0f0f0;
158 border-color: #d9d9d9;
159 color: #aaa;
160 box-shadow: 0 1px 1px rgba(255,255,255,0.7);
161 filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f6f6f6', endColorstr='#f6f6f6',GradientType=0 ); /* IE6-9 */
162}
163.support-note span{
164 color: #ac375d;
165 font-size: 16px;
166 display: none;
167 font-weight: bold;
168 text-align: center;
169 padding: 5px 0;
170}
171.no-cssanimations .support-note span.no-cssanimations,
172.no-csstransforms .support-note span.no-csstransforms,
173.no-csstransforms3d .support-note span.no-csstransforms3d,
174.no-csstransitions .support-note span.no-csstransitions{
175 display: block;
176}
diff --git a/Back/jinwei.me/css/font/gk5FxslNkTTHtojXrkp-xF1YPouZEKgzpqZW9wN-3Ek.woff b/Back/jinwei.me/css/font/gk5FxslNkTTHtojXrkp-xF1YPouZEKgzpqZW9wN-3Ek.woff
new file mode 100644
index 0000000..66adc47
--- /dev/null
+++ b/Back/jinwei.me/css/font/gk5FxslNkTTHtojXrkp-xF1YPouZEKgzpqZW9wN-3Ek.woff
Binary files differ
diff --git a/Back/jinwei.me/css/font/gk5FxslNkTTHtojXrkp-xONSK5BxN3NFS4EJkViHIqo.woff b/Back/jinwei.me/css/font/gk5FxslNkTTHtojXrkp-xONSK5BxN3NFS4EJkViHIqo.woff
new file mode 100644
index 0000000..fa873b2
--- /dev/null
+++ b/Back/jinwei.me/css/font/gk5FxslNkTTHtojXrkp-xONSK5BxN3NFS4EJkViHIqo.woff
Binary files differ
diff --git a/Back/jinwei.me/css/font/icons.eot b/Back/jinwei.me/css/font/icons.eot
new file mode 100644
index 0000000..2a33508
--- /dev/null
+++ b/Back/jinwei.me/css/font/icons.eot
Binary files differ
diff --git a/Back/jinwei.me/css/font/icons.svg b/Back/jinwei.me/css/font/icons.svg
new file mode 100644
index 0000000..4c51f0f
--- /dev/null
+++ b/Back/jinwei.me/css/font/icons.svg
@@ -0,0 +1,68 @@
1<?xml version="1.0" standalone="no"?>
2<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
3<svg xmlns="http://www.w3.org/2000/svg">
4 <metadata>
5 Created by FontForge 20100429 at Mon Jul 2 09:32:12 2012
6 By root
7Copyright (C) 2012 by original authors @ fontello.com
8</metadata>
9<defs> <font id="icons" horiz-adv-x="1030" ><font-face
10 font-family="fontello"
11 font-weight="500"
12 font-stretch="normal"
13 units-per-em="1000"
14 panose-1="2 0 6 3 0 0 0 0 0 0"
15 ascent="800"
16 descent="-200"
17 cap-height="725"
18 bbox="13.9355 -190 1015 790"
19 underline-thickness="50"
20 underline-position="-100"
21 unicode-range="U+0030-0042"
22 />
23 <missing-glyph horiz-adv-x="364"
24d="M33 0v666h265v-666h-265zM66 33h199v600h-199v-600z" />
25 <glyph glyph-name=".notdef" horiz-adv-x="364"
26d="M33 0v666h265v-666h-265zM66 33h199v600h-199v-600z" />
27 <glyph glyph-name=".null" horiz-adv-x="0"
28 />
29 <glyph glyph-name="nonmarkingreturn" horiz-adv-x="333"
30 />
31 <glyph glyph-name="zero" unicode="0" horiz-adv-x="1010"
32d="M995 550h-100v-100h100v-100h-100v-100h100v-100h-100v-100h100v-60q0 -16 -11.5 -28t-28.5 -12h-900q-17 0 -28.5 12t-11.5 28v60h100v100h-100v100h100v100h-100v100h100v100h-100v60q0 16 11.5 28t28.5 12h900q17 0 28.5 -12t11.5 -28v-60zM395 150l250 150l-250 150
33v-300z" />
34 <glyph glyph-name="two" unicode="2"
35d="M871 466h-100l-124 151l-214 -151h-180q-53 0 -90.5 -38t-37.5 -92v-159l-107 297q-6 16 0.5 31t21.5 20l680 248q15 5 29 -2t20 -23zM977 376q16 0 27 -11.5t11 -28.5v-471q0 -17 -11 -28.5t-27 -11.5h-724q-16 0 -27 11.5t-11 28.5v471q0 17 11 28.5t27 11.5h724z
36M922 -75v161l-73 161l-167 -60l-129 -133l-139 172l-92 -215v-86h600z" />
37 <glyph glyph-name="three" unicode="3"
38d="M515 400q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM915 550q41 0 70.5 -29.5t29.5 -70.5v-450q0 -41 -29.5 -70.5t-70.5 -29.5h-800q-41 0 -70.5 29.5t-29.5 70.5v450q0 41 29.5 70.5t70.5 29.5h120q12 0 23.5 8t15.5 20l32 93
39q4 12 15 20.5t24 8.5h340q12 0 23.5 -8.5t15.5 -20.5l32 -93q4 -12 15 -20t24 -8h120zM515 0q103 0 176.5 73t73.5 177t-73.5 177t-176.5 73t-176.5 -73t-73.5 -177t73.5 -177t176.5 -73zM880 380q14 0 24.5 10.5t10.5 24.5t-10.5 24.5t-24.5 10.5t-24.5 -10.5t-10.5 -24.5
40t10.5 -24.5t24.5 -10.5z" />
41 <glyph glyph-name="four" unicode="4"
42d="M515 580q92 0 177 -25.5t141.5 -62t99 -77.5t62.5 -71.5t20 -43.5t-20 -43.5t-62.5 -71.5t-99 -77.5t-141.5 -62t-177 -25.5t-177 25.5t-141.5 62t-99 77.5t-62.5 71.5t-20 43.5t20 43.5t62.5 71.5t99 77.5t141.5 62t177 25.5zM515 85q92 0 157 63t65 152t-65 152
43t-157 63t-157 -63t-65 -152t65 -152t157 -63zM515 300q6 -6 18 -5t28 4.5t30.5 7t24.5 2t10 -8.5q0 -44 -32.5 -76t-78.5 -32t-78.5 32t-32.5 76t32.5 76t78.5 32q14 0 10 -23t-12 -47t2 -38z" />
44 <glyph glyph-name="five" unicode="5" horiz-adv-x="870"
45d="M774 300q0 -76 81 -122q-14 -45 -35 -84q-72 19 -135 -44q-55 -55 -34 -135q-39 -21 -84 -35q-21 37 -57 59t-75 22t-75 -22t-57 -59q-45 14 -84 35q21 80 -34 135t-135 34q-21 39 -35 84q37 21 59 57t22 75q0 76 -81 122q14 45 35 84q72 -19 135 44q55 55 34 135
46q39 21 84 35q21 -37 57 -59t75 -22t75 22t57 59q45 -14 84 -35q-21 -80 34 -135q63 -63 135 -44q21 -39 35 -84q-81 -46 -81 -122zM435 117q76 0 129.5 53.5t53.5 129.5t-53.5 129.5t-129.5 53.5t-129.5 -53.5t-53.5 -129.5t53.5 -129.5t129.5 -53.5z" />
47 <glyph glyph-name="six" unicode="6"
48d="M470 276v-100h-455q7 226 10 292q2 53 24.5 80.5t75.5 27.5h160l37 70q22 41 23 42q14 25 23 31.5t36 6.5h222q27 0 36 -6.5t23 -31.5q1 -1 23 -42l37 -70h160q53 0 75.5 -27.5t24.5 -80.5l10 -292h-455v100h-90zM398 630q-3 -6 -29 -54h292q-26 48 -29 54
49q-8 17 -15 21.5t-25 4.5h-154q-18 0 -25 -4.5t-15 -21.5zM560 26v100h430q-6 -89 -10 -167q-1 -15 -4 -27t-11.5 -26t-27.5 -22t-47 -8h-750q-28 0 -47 8t-27.5 22t-11.5 26t-4 27l-10 167h430v-100h90z" />
50 <glyph glyph-name="seven" unicode="7"
51d="M282 -170l125 400h-179l-113 -100h-100l80 170l-80 170h100l113 -100h179l-125 400h100l225 -400h258q6 0 16 -0.5t36 -4t46 -10.5t36 -21t16 -34q0 -31 -37.5 -48.5t-75.5 -19.5l-37 -2h-258l-225 -400h-100z" />
52 <glyph glyph-name="eight" unicode="8" horiz-adv-x="990"
53d="M495 780q130 0 240.5 -64.5t175 -175t64.5 -240.5t-64.5 -240.5t-175 -175t-240.5 -64.5t-240.5 64.5t-175 175t-64.5 240.5t64.5 240.5t175 175t240.5 64.5zM904 300q0 133 -78 240t-201 148q-18 -22 -17 -32q4 -38 18.5 -50.5t29.5 -6.5l32 13q16 6 20 1q14 -16 10 -31
54t-18.5 -27.5t-28 -30.5t-18.5 -39t10 -53q18 -36 40 -49.5t56 -14.5q19 0 33 -20.5t19.5 -41t7.5 -40.5q3 -27 -1 -72t-14 -67q-9 -27 -3 -46t19 -30q84 109 84 249zM439 705q-111 -16 -198.5 -85.5t-127.5 -172.5q1 0 21 -1.5t29.5 -3t25 -5t24 -8.5t11.5 -12
55q4 -12 -13.5 -44.5t-17.5 -60.5q0 -20 11.5 -35t26 -22.5t26 -19.5t11.5 -27q0 -26 8.5 -66.5t8.5 -44.5q0 -13 35 -55t52 -42q10 0 11.5 22.5t-2 55t-3.5 38.5q2 31 14 75q7 26 24 44t34 25.5t33.5 19t22.5 26.5q9 32 10.5 54.5t-10.5 40t-25.5 28t-33.5 18t-34.5 11
56t-29.5 6.5t-18 4q-17 6 -42 7t-36 -3t-28 11.5t-17 30.5q0 9 15 25.5t35.5 36.5t27.5 32q8 13 17 20t23 15.5t27 20.5q4 3 25 16.5t27 24.5zM366 -89q63 -20 129 -20q123 0 226 68q-12 22 -48.5 29.5t-70.5 4.5q-23 -2 -64 -18t-47 -17q-5 -1 -32.5 -8t-42.5 -8
57q-12 -1 -26.5 -13.5t-23.5 -17.5z" />
58 <glyph glyph-name="nine" unicode="9" horiz-adv-x="930"
59d="M899 255q23 -49 15 -96l-34 -184q-4 -21 -21.5 -35.5t-38.5 -14.5h-710q-21 0 -38.5 14.5t-21.5 35.5l-34 184q-8 47 15 96l157 375q9 19 31 32t43 13h103l-20 -203h-135l255 -212l255 212h-135l-20 203h103q21 0 43 -13t31 -32zM831 118q3 21 -10 36t-34 15h-644
60q-21 0 -34 -15t-10 -36l13 -72q3 -21 20 -35.5t38 -14.5h590q21 0 38 14.5t20 35.5z" />
61 <glyph glyph-name="A" unicode="A"
62d="M785 479l-270 -254l-270 254h150v246h240v-246h150zM982 148q18 -10 27 -31.5t4 -41.5l-28 -153q-4 -19 -22.5 -33t-39.5 -14h-816q-21 0 -39.5 14t-22.5 33l-28 153q-5 20 4 41.5t27 31.5l159 107h98l-170 -131h178q9 0 12 -6l40 -112h300l40 112q3 6 12 6h178l-170 131
63h98z" />
64 <glyph glyph-name="B" unicode="B" horiz-adv-x="610"
65d="M495 790q41 0 70.5 -29.5t29.5 -70.5v-780q0 -41 -29.5 -70.5t-70.5 -29.5h-380q-41 0 -70.5 29.5t-29.5 70.5v780q0 41 29.5 70.5t70.5 29.5h380zM305 -150q29 0 49.5 14.5t20.5 35.5t-20.5 35.5t-49.5 14.5t-49.5 -14.5t-20.5 -35.5t20.5 -35.5t49.5 -14.5zM515 0v660
66h-420v-660h420z" /></font>
67</defs>
68</svg> \ No newline at end of file
diff --git a/Back/jinwei.me/css/font/icons.ttf b/Back/jinwei.me/css/font/icons.ttf
new file mode 100644
index 0000000..a08b86d
--- /dev/null
+++ b/Back/jinwei.me/css/font/icons.ttf
Binary files differ
diff --git a/Back/jinwei.me/css/font/icons.woff b/Back/jinwei.me/css/font/icons.woff
new file mode 100644
index 0000000..9168d2d
--- /dev/null
+++ b/Back/jinwei.me/css/font/icons.woff
Binary files differ
diff --git a/Back/jinwei.me/css/font/jIXlqT1WKafUSwj6s9AzV6XnXbwdDC8wAz6IIzmCDUP3rGVtsTkPsbDajuO5ueQw.woff b/Back/jinwei.me/css/font/jIXlqT1WKafUSwj6s9AzV6XnXbwdDC8wAz6IIzmCDUP3rGVtsTkPsbDajuO5ueQw.woff
new file mode 100644
index 0000000..ffd3d2f
--- /dev/null
+++ b/Back/jinwei.me/css/font/jIXlqT1WKafUSwj6s9AzV6XnXbwdDC8wAz6IIzmCDUP3rGVtsTkPsbDajuO5ueQw.woff
Binary files differ
diff --git a/Back/jinwei.me/css/style.css b/Back/jinwei.me/css/style.css
new file mode 100644
index 0000000..921a326
--- /dev/null
+++ b/Back/jinwei.me/css/style.css
@@ -0,0 +1,213 @@
1.sb-container {
2 position: relative;
3 width: 150px;
4 height: 400px;
5 margin: 30px auto 0 auto;
6}
7
8.sb-container div {
9 position: absolute;
10 top: 0;
11 left: 0;
12 width: 130px;
13 background: #fff;
14 height: 400px;
15 border-radius: 5px;
16 cursor: pointer;
17 text-align: center;
18 background-image: url(../images/fabric.png);
19
20 -webkit-transform-origin: 25% 90%;
21 -moz-transform-origin: 25% 90%;
22 -o-transform-origin: 25% 90%;
23 -ms-transform-origin: 25% 90%;
24 transform-origin: 25% 90%;
25
26 -webkit-backface-visibility: hidden;
27 -moz-backface-visibility: hidden;
28 -ms-backface-visibility: hidden;
29 -o-backface-visibility: hidden;
30 backface-visibility: hidden;
31
32 -webkit-tap-highlight-color: rgba(0,0,0,0);
33}
34
35.sb-container div:nth-child(1){
36 background-color: #ea2a29;
37 box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 1px 1px 1px rgba(0,0,0,0.1);
38}
39
40.sb-container div:nth-child(2){
41 background-color: #f16729;
42 box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 2px 2px 1px rgba(0,0,0,0.1);
43}
44
45.sb-container div:nth-child(3){
46 background-color: #f89322;
47 box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 3px 3px 2px rgba(0,0,0,0.2);
48}
49
50.sb-container div:nth-child(4){
51 background-color: #ffcf14;
52 box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 4px 4px 4px rgba(0,0,0,0.2);
53}
54
55.sb-container div:nth-child(5){
56 background-color: #ffea0d;
57 box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 5px 5px 6px rgba(0,0,0,0.3);
58}
59
60.sb-container div:nth-child(6){
61 background-color: #87b11d;
62 box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 6px 6px 8px rgba(0,0,0,0.3);
63}
64
65.sb-container div:nth-child(7){
66 background-color: #008253;
67 box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 7px 7px 10px rgba(0,0,0,0.4);
68}
69
70.sb-container div:nth-child(8){
71 background-color: #3277b5;
72 box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 8px 8px 12px rgba(0,0,0,0.4);
73}
74
75.sb-container div:nth-child(9){
76 background-color: #4c549f;
77 box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 9px 9px 14px rgba(0,0,0,0.4);
78}
79
80.sb-container div:nth-child(10){
81 background-color: #764394;
82 box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 10px 10px 16px rgba(0,0,0,0.4);
83}
84
85.sb-container div:nth-child(11){
86 background-color: #ca0d86;
87 box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 11px 11px 18px rgba(0,0,0,0.4);
88}
89
90.sb-container div:last-child{
91 background: #645b5c url(../images/cover.jpg) repeat center center;
92 box-shadow:
93 -1px -1px 3px rgba(0,0,0,0.2),
94 12px 12px 20px rgba(0,0,0,0.6),
95 inset 2px 2px 0 rgba(255, 255, 255, 0.1);
96}
97
98.sb-container div:last-child:after{
99 content: '';
100 position: absolute;
101 bottom: 15px;
102 left: 15px;
103 width: 20px;
104 height: 20px;
105 border-radius: 50%;
106 background: #dddddd;
107 background: -moz-linear-gradient(-45deg, #dddddd 0%, #58535e 48%, #889396 100%);
108 background: -webkit-gradient(linear, left top, right bottom, color-stop(0%,#dddddd), color-stop(48%,#58535e), color-stop(100%,#889396));
109 background: -webkit-linear-gradient(-45deg, #dddddd 0%,#58535e 48%,#889396 100%);
110 background: -o-linear-gradient(-45deg, #dddddd 0%,#58535e 48%,#889396 100%);
111 background: -ms-linear-gradient(-45deg, #dddddd 0%,#58535e 48%,#889396 100%);
112 background: linear-gradient(135deg, #dddddd 0%,#58535e 48%,#889396 100%);
113 filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#dddddd', endColorstr='#889396',GradientType=1 );
114 box-shadow: -1px -1px 1px rgba(0,0,0,0.5), 1px 1px 1px rgba(255,255,255,0.1);
115}
116
117.sb-container div h4{
118 color: rgba(255,255,255,0.9);
119 text-shadow: 1px 1px 1px rgba(0,0,0,0.2);
120 font-weight: 700;
121 font-size: 16px;
122 text-transform: uppercase;
123 border-top: 1px dashed rgba(0,0,0,0.1);
124 border-bottom: 1px dashed rgba(0,0,0,0.1);
125 margin: 5px;
126 padding: 5px;
127 -webkit-touch-callout: none;
128 -webkit-user-select: none;
129 -khtml-user-select: none;
130 -moz-user-select: none;
131 -ms-user-select: none;
132 user-select: none;
133}
134
135.sb-container div:last-child h4{
136 background: rgba(0,0,0,0.2);
137 box-shadow: 0 1px 1px rgba(255,255,255,0.1);
138}
139
140.sb-container div:last-child h5{
141 font-size: 50px;
142 white-space: nowrap;
143 text-align: left;
144 margin: 0;
145 padding: 0;
146 position: absolute;
147 line-height: 50px;
148 top: 0px;
149 left: 0px;
150 color: #111;
151 text-shadow: -1px -1px 1px rgba(255,255,255,0.1);
152 text-transform: uppercase;
153
154 -webkit-transform: rotate(-90deg) translateX(-157%) translateY(73px);
155 -moz-transform: rotate(-90deg) translateX(-157%) translateY(73px);
156 -o-transform: rotate(-90deg) translateX(-157%) translateY(73px);
157 -ms-transform: rotate(-90deg) translateX(-157%) translateY(73px);
158 transform: rotate(-90deg) translateX(-157%) translateY(73px);
159
160 -webkit-transform-origin: 0 0;
161 -moz-transform-origin: 0 0;
162 -o-transform-origin: 0 0;
163 -ms-transform-origin: 0 0;
164 transform-origin: 0 0;
165
166 -webkit-touch-callout: none;
167 -webkit-user-select: none;
168 -khtml-user-select: none;
169 -moz-user-select: none;
170 -ms-user-select: none;
171 user-select: none;
172}
173
174span.sb-icon{
175 display: block;
176 height: 70px;
177 width: 70px;
178 margin: 20px auto;
179 -webkit-touch-callout: none;
180 -webkit-user-select: none;
181 -khtml-user-select: none;
182 -moz-user-select: none;
183 -ms-user-select: none;
184 user-select: none;
185}
186
187span.sb-icon:before {
188 font-family: 'icons';
189 font-style: normal;
190 font-weight: normal;
191 speak: none;
192 display: block;
193 text-decoration: inherit;
194 text-align: center;
195 text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3);
196 line-height: 64px;
197 width: 100%;
198 font-size: 60px;
199 color: #000;
200 text-shadow: 0 0 1px #000;
201}
202
203.icon-cog:before { content: '\35'; } /* '5' */
204.icon-flight:before { content: '\37'; } /* '7' */
205.icon-eye:before { content: '\34'; } /* '4' */
206.icon-install:before { content: '\39'; } /* '9' */
207.icon-bag:before { content: '\36'; } /* '6' */
208.icon-globe:before { content: '\38'; } /* '8' */
209.icon-picture:before { content: '\32'; } /* '2' */
210.icon-video:before { content: '\30'; } /* '0' */
211.icon-download:before { content: '\41'; } /* 'A' */
212.icon-mobile:before { content: '\42'; } /* 'B' */
213.icon-camera:before { content: '\33'; } /* '3' */ \ No newline at end of file
diff --git a/Back/jinwei.me/css/style2.css b/Back/jinwei.me/css/style2.css
new file mode 100644
index 0000000..b2c7b4b
--- /dev/null
+++ b/Back/jinwei.me/css/style2.css
@@ -0,0 +1,225 @@
1.sb-container {
2 position: relative;
3 width: 130px;
4 height: 400px;
5 margin: 30px auto 0 auto;
6}
7
8.sb-container div {
9 position: absolute;
10 top: 0;
11 left: 0;
12 width: 150px;
13 background: #fff;
14 height: 400px;
15 border-radius: 5px;
16 box-shadow: 1px 1px 3px rgba(0,0,0,0.1);
17 cursor: pointer;
18 text-align: center;
19 background-image: url(../images/fabric.png);
20 -webkit-transform-origin: 25% 90%;
21 -moz-transform-origin: 25% 90%;
22 -o-transform-origin: 25% 90%;
23 -ms-transform-origin: 25% 90%;
24 transform-origin: 25% 90%;
25
26 -webkit-backface-visibility: hidden;
27 -moz-backface-visibility: hidden;
28 -ms-backface-visibility: hidden;
29 -o-backface-visibility: hidden;
30 backface-visibility: hidden;
31
32 -webkit-tap-highlight-color: rgba(0,0,0,0);
33}
34
35.sb-container div:nth-child(1){
36 background-color: #ea2a29;
37 box-shadow: 1px 1px 3px rgba(0,0,0,0.1), -1px 1px 1px rgba(0,0,0,0.1);
38}
39
40.sb-container div:nth-child(2){
41 background-color: #f16729;
42 box-shadow: 1px 1px 3px rgba(0,0,0,0.1), -2px 2px 1px rgba(0,0,0,0.1);
43}
44
45.sb-container div:nth-child(3){
46 background-color: #f89322;
47 box-shadow: 1px 1px 3px rgba(0,0,0,0.1), -3px 3px 2px rgba(0,0,0,0.2);
48}
49
50.sb-container div:nth-child(4){
51 background-color: #ffcf14;
52 box-shadow: 1px 1px 3px rgba(0,0,0,0.1), -4px 4px 4px rgba(0,0,0,0.2);
53}
54
55.sb-container div:nth-child(5){
56 background-color: #ffea0d;
57 box-shadow: 1px 1px 3px rgba(0,0,0,0.1), -5px 5px 6px rgba(0,0,0,0.3);
58}
59
60.sb-container div:nth-child(6){
61 background-color: #87b11d;
62 box-shadow: 1px 1px 3px rgba(0,0,0,0.1), -6px 6px 8px rgba(0,0,0,0.3);
63}
64
65.sb-container div:nth-child(7){
66 background-color: #008253;
67 box-shadow: 1px 1px 3px rgba(0,0,0,0.1), -7px 7px 10px rgba(0,0,0,0.4);
68}
69
70.sb-container div:nth-child(8){
71 background-color: #3277b5;
72 box-shadow: 1px 1px 3px rgba(0,0,0,0.1), -8px 8px 12px rgba(0,0,0,0.4);
73}
74
75.sb-container div:nth-child(9){
76 background-color: #4c549f;
77 box-shadow: 1px 1px 3px rgba(0,0,0,0.1), -9px 9px 14px rgba(0,0,0,0.4);
78}
79
80.sb-container div:nth-child(10){
81 background-color: #764394;
82 box-shadow: 1px 1px 3px rgba(0,0,0,0.1), -10px 10px 16px rgba(0,0,0,0.4);
83}
84
85.sb-container div:nth-child(11){
86 background-color: #ca0d86;
87 box-shadow: 1px 1px 3px rgba(0,0,0,0.1), -11px 11px 18px rgba(0,0,0,0.4);
88}
89
90.sb-container div:last-child{
91 background: #645b5c url(../images/cover.jpg) repeat center center;
92 box-shadow:
93 1px 1px 3px rgba(0,0,0,0.2),
94 -12px 12px 20px rgba(0,0,0,0.6),
95 inset 2px 2px 0 rgba(255, 255, 255, 0.1);
96}
97
98.sb-container div:last-child:after{
99 content: '';
100 position: absolute;
101 bottom: 15px;
102 left: 15px;
103 width: 20px;
104 height: 20px;
105 border-radius: 50%;
106 background: #dddddd;
107 background: -moz-linear-gradient(-45deg, #dddddd 0%, #58535e 48%, #889396 100%);
108 background: -webkit-gradient(linear, left top, right bottom, color-stop(0%,#dddddd), color-stop(48%,#58535e), color-stop(100%,#889396));
109 background: -webkit-linear-gradient(-45deg, #dddddd 0%,#58535e 48%,#889396 100%);
110 background: -o-linear-gradient(-45deg, #dddddd 0%,#58535e 48%,#889396 100%);
111 background: -ms-linear-gradient(-45deg, #dddddd 0%,#58535e 48%,#889396 100%);
112 background: linear-gradient(135deg, #dddddd 0%,#58535e 48%,#889396 100%);
113 filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#dddddd', endColorstr='#889396',GradientType=1 );
114 box-shadow: -1px -1px 1px rgba(255,255,255,0.1), 1px 1px 1px rgba(0,0,0,0.5);
115}
116
117.sb-container div h4{
118 color: rgba(255,255,255,0.9);
119 text-shadow: 1px 1px 1px rgba(0,0,0,0.2);
120 font-weight: 700;
121 font-size: 16px;
122 text-transform: uppercase;
123 border-top: 1px dashed rgba(0,0,0,0.1);
124 border-bottom: 1px dashed rgba(0,0,0,0.1);
125 margin: 5px;
126 padding: 5px;
127 -webkit-touch-callout: none;
128 -webkit-user-select: none;
129 -khtml-user-select: none;
130 -moz-user-select: none;
131 -ms-user-select: none;
132 user-select: none;
133}
134
135.sb-container div:last-child h4{
136 background: rgba(0,0,0,0.2);
137 box-shadow: 0 1px 1px rgba(255,255,255,0.1);
138}
139
140.sb-container div:last-child h5{
141 font-size: 50px;
142 white-space: nowrap;
143 text-align: left;
144 margin: 0;
145 padding: 0;
146 position: absolute;
147 line-height: 50px;
148 top: 0px;
149 left: 0px;
150 color: #111;
151 text-shadow: -1px -1px 1px rgba(255,255,255,0.1);
152 text-transform: uppercase;
153
154 -webkit-transform: rotate(90deg) translateX(40%) translateY(-60px);
155 -moz-transform: rotate(90deg) translateX(40%) translateY(-60px);
156 -o-transform: rotate(90deg) translateX(40%) translateY(-60px);
157 -ms-transform: rotate(90deg) translateX(40%) translateY(-60px);
158 transform: rotate(90deg) translateX(40%) translateY(-60px);
159
160 -webkit-transform-origin: 0 0;
161 -moz-transform-origin: 0 0;
162 -o-transform-origin: 0 0;
163 -ms-transform-origin: 0 0;
164 transform-origin: 0 0;
165
166 -webkit-touch-callout: none;
167 -webkit-user-select: none;
168 -khtml-user-select: none;
169 -moz-user-select: none;
170 -ms-user-select: none;
171 user-select: none;
172}
173
174span.sb-toggle{
175 padding: 5px;
176 margin: 10px;
177 display: block;
178 color: #292524;
179 font-size: 14px;
180 font-weight: 700;
181 text-transform: uppercase;
182 line-height: 14px;
183 text-shadow: 1px 1px 1px rgba(255,255,255,0.1);
184 text-align: center;
185}
186
187span.sb-icon{
188 display: block;
189 height: 70px;
190 width: 70px;
191 margin: 20px auto;
192 -webkit-touch-callout: none;
193 -webkit-user-select: none;
194 -khtml-user-select: none;
195 -moz-user-select: none;
196 -ms-user-select: none;
197 user-select: none;
198}
199span.sb-icon:before {
200 font-family: 'icons';
201 font-style: normal;
202 font-weight: normal;
203 speak: none;
204 display: block;
205 text-decoration: inherit;
206 text-align: center;
207 text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3);
208 line-height: 64px;
209 width: 100%;
210 font-size: 60px;
211 color: #000;
212 text-shadow: 0 0 1px #000;
213}
214
215.icon-cog:before { content: '\35'; } /* '5' */
216.icon-flight:before { content: '\37'; } /* '7' */
217.icon-eye:before { content: '\34'; } /* '4' */
218.icon-install:before { content: '\39'; } /* '9' */
219.icon-bag:before { content: '\36'; } /* '6' */
220.icon-globe:before { content: '\38'; } /* '8' */
221.icon-picture:before { content: '\32'; } /* '2' */
222.icon-video:before { content: '\30'; } /* '0' */
223.icon-download:before { content: '\41'; } /* 'A' */
224.icon-mobile:before { content: '\42'; } /* 'B' */
225.icon-camera:before { content: '\33'; } /* '3' */
diff --git a/Back/jinwei.me/css/style3.css b/Back/jinwei.me/css/style3.css
new file mode 100644
index 0000000..1ef270e
--- /dev/null
+++ b/Back/jinwei.me/css/style3.css
@@ -0,0 +1,227 @@
1.sb-container {
2 position: relative;
3 width: 150px;
4 height: 400px;
5 margin: 30px auto 0 auto;
6}
7
8.sb-container div {
9 position: absolute;
10 top: 0;
11 left: 0;
12 width: 130px;
13 background: #fff;
14 height: 400px;
15 border-radius: 5px;
16 box-shadow: -1px -1px 3px rgba(0,0,0,0.1);
17 cursor: pointer;
18 text-align: center;
19
20 -webkit-transform-origin: 25% 90%;
21 -moz-transform-origin: 25% 90%;
22 -o-transform-origin: 25% 90%;
23 -ms-transform-origin: 25% 90%;
24 transform-origin: 25% 90%;
25
26 -webkit-backface-visibility: hidden;
27 -moz-backface-visibility: hidden;
28 -ms-backface-visibility: hidden;
29 -o-backface-visibility: hidden;
30 backface-visibility: hidden;
31
32 -webkit-tap-highlight-color: rgba(0,0,0,0);
33}
34
35.sb-container div:nth-child(1){
36 background-color: #ea2a29;
37 box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 1px 1px 1px rgba(0,0,0,0.1), inset 0 3px 0 rgba(255, 255, 255, 0.2);
38}
39
40.sb-container div:nth-child(2){
41 background-color: #f16729;
42 box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 2px 2px 1px rgba(0,0,0,0.1), inset 0 3px 0 rgba(255, 255, 255, 0.2);
43}
44
45.sb-container div:nth-child(3){
46 background-color: #f89322;
47 box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 3px 3px 2px rgba(0,0,0,0.2), inset 0 3px 0 rgba(255, 255, 255, 0.2);
48}
49
50.sb-container div:nth-child(4){
51 background-color: #ffcf14;
52 box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 4px 4px 4px rgba(0,0,0,0.2), inset 0 3px 0 rgba(255, 255, 255, 0.2);
53}
54
55.sb-container div:nth-child(5){
56 background-color: #ffea0d;
57 box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 5px 5px 6px rgba(0,0,0,0.3), inset 0 3px 0 rgba(255, 255, 255, 0.2);
58}
59
60.sb-container div:nth-child(6){
61 background-color: #87b11d;
62 box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 6px 6px 8px rgba(0,0,0,0.3), inset 0 3px 0 rgba(255, 255, 255, 0.2);
63}
64
65.sb-container div:nth-child(7){
66 background-color: #008253;
67 box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 7px 7px 10px rgba(0,0,0,0.4), inset 0 3px 0 rgba(255, 255, 255, 0.2);
68}
69
70.sb-container div:nth-child(8){
71 background-color: #3277b5;
72 box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 8px 8px 12px rgba(0,0,0,0.4), inset 0 3px 0 rgba(255, 255, 255, 0.2);
73}
74
75.sb-container div:nth-child(9){
76 background-color: #4c549f;
77 box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 9px 9px 14px rgba(0,0,0,0.4), inset 0 3px 0 rgba(255, 255, 255, 0.2);
78}
79
80.sb-container div:nth-child(10){
81 background-color: #764394;
82 box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 10px 10px 16px rgba(0,0,0,0.4), inset 0 3px 0 rgba(255, 255, 255, 0.2);
83}
84
85.sb-container div:nth-child(11){
86 background-color: #ca0d86;
87 box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 11px 11px 18px rgba(0,0,0,0.4), inset 0 3px 0 rgba(255, 255, 255, 0.2);
88}
89
90.sb-container div:last-child{
91 background: #111 url(../images/dark_leather.jpg) repeat center center;
92 box-shadow:
93 -1px -1px 3px rgba(0,0,0,0.2),
94 12px 12px 20px rgba(0,0,0,0.6),
95 inset 2px 2px 0 rgba(255, 255, 255, 0.1);
96}
97
98.sb-container div:last-child:after{
99 content: '';
100 position: absolute;
101 bottom: 15px;
102 left: 15px;
103 width: 20px;
104 height: 20px;
105 border-radius: 50%;
106 background: #dddddd;
107 background: -moz-linear-gradient(-45deg, #dddddd 0%, #58535e 48%, #889396 100%);
108 background: -webkit-gradient(linear, left top, right bottom, color-stop(0%,#dddddd), color-stop(48%,#58535e), color-stop(100%,#889396));
109 background: -webkit-linear-gradient(-45deg, #dddddd 0%,#58535e 48%,#889396 100%);
110 background: -o-linear-gradient(-45deg, #dddddd 0%,#58535e 48%,#889396 100%);
111 background: -ms-linear-gradient(-45deg, #dddddd 0%,#58535e 48%,#889396 100%);
112 background: linear-gradient(135deg, #dddddd 0%,#58535e 48%,#889396 100%);
113 filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#dddddd', endColorstr='#889396',GradientType=1 );
114 box-shadow: -1px -1px 1px rgba(0,0,0,0.7), 1px 1px 1px rgba(255,255,255,0.1);
115}
116
117.sb-container div h4{
118 color: rgba(255,255,255,0.9);
119 text-shadow: 1px 1px 1px rgba(0,0,0,0.2);
120 font-weight: 700;
121 font-size: 16px;
122 text-transform: uppercase;
123 border-top: 1px dashed rgba(0,0,0,0.1);
124 border-bottom: 1px dashed rgba(0,0,0,0.1);
125 margin: 5px;
126 padding: 5px;
127 -webkit-touch-callout: none;
128 -webkit-user-select: none;
129 -khtml-user-select: none;
130 -moz-user-select: none;
131 -ms-user-select: none;
132 user-select: none;
133}
134
135.sb-container div:last-child h4{
136 background: rgba(0,0,0,0.2);
137 box-shadow: 0 1px 1px rgba(255,255,255,0.1);
138}
139
140.sb-container div:last-child h5{
141 font-size: 50px;
142 white-space: nowrap;
143 text-align: left;
144 margin: 0;
145 padding: 0;
146 position: absolute;
147 line-height: 50px;
148 top: 0px;
149 left: 0px;
150 color: #000;
151 text-shadow: -1px -1px 1px rgba(255,255,255,0.1);
152 text-transform: uppercase;
153
154 -webkit-transform: rotate(-90deg) translateX(-157%) translateY(73px);
155 -moz-transform: rotate(-90deg) translateX(-157%) translateY(73px);
156 -o-transform: rotate(-90deg) translateX(-157%) translateY(73px);
157 -ms-transform: rotate(-90deg) translateX(-157%) translateY(73px);
158 transform: rotate(-90deg) translateX(-157%) translateY(73px);
159
160 -webkit-transform-origin: 0 0;
161 -moz-transform-origin: 0 0;
162 -o-transform-origin: 0 0;
163 -ms-transform-origin: 0 0;
164 transform-origin: 0 0;
165
166 -webkit-touch-callout: none;
167 -webkit-user-select: none;
168 -khtml-user-select: none;
169 -moz-user-select: none;
170 -ms-user-select: none;
171 user-select: none;
172}
173
174span.sb-toggle{
175 padding: 5px;
176 margin: 10px;
177 display: block;
178 color: #000;
179 font-size: 14px;
180 font-weight: 700;
181 text-transform: uppercase;
182 line-height: 14px;
183 text-shadow: 1px 1px 1px rgba(255,255,255,0.1);
184 text-align: center;
185}
186
187span.sb-icon{
188 display: block;
189 height: 70px;
190 width: 70px;
191 margin: 20px auto;
192 -webkit-touch-callout: none;
193 -webkit-user-select: none;
194 -khtml-user-select: none;
195 -moz-user-select: none;
196 -ms-user-select: none;
197 user-select: none;
198}
199
200span.sb-icon:before {
201 font-family: 'icons';
202 font-style: normal;
203 font-weight: normal;
204 speak: none;
205 display: block;
206 text-decoration: inherit;
207 text-align: center;
208 text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3);
209 line-height: 64px;
210 width: 100%;
211 font-size: 60px;
212 color: #000;
213 text-shadow: 0 0 1px #000;
214
215}
216
217.icon-cog:before { content: '\35'; } /* '5' */
218.icon-flight:before { content: '\37'; } /* '7' */
219.icon-eye:before { content: '\34'; } /* '4' */
220.icon-install:before { content: '\39'; } /* '9' */
221.icon-bag:before { content: '\36'; } /* '6' */
222.icon-globe:before { content: '\38'; } /* '8' */
223.icon-picture:before { content: '\32'; } /* '2' */
224.icon-video:before { content: '\30'; } /* '0' */
225.icon-download:before { content: '\41'; } /* 'A' */
226.icon-mobile:before { content: '\42'; } /* 'B' */
227.icon-camera:before { content: '\33'; } /* '3' */ \ No newline at end of file
diff --git a/Back/jinwei.me/css/style4.css b/Back/jinwei.me/css/style4.css
new file mode 100644
index 0000000..04d74aa
--- /dev/null
+++ b/Back/jinwei.me/css/style4.css
@@ -0,0 +1,207 @@
1.sb-container {
2 position: relative;
3 width: 150px;
4 height: 400px;
5 margin: 30px auto 0 auto;
6}
7
8.sb-container div {
9 position: absolute;
10 top: 0;
11 left: 0;
12 width: 130px;
13 background: #fff;
14 height: 400px;
15 box-shadow:
16 -1px -1px 3px rgba(0,0,0,0.2);
17 cursor: pointer;
18 text-align: center;
19 background: #b98357 url(../images/cartboard.jpg) repeat center center;
20
21 -webkit-transform-origin: 25% 90%;
22 -moz-transform-origin: 25% 90%;
23 -o-transform-origin: 25% 90%;
24 -ms-transform-origin: 25% 90%;
25 transform-origin: 25% 90%;
26
27 -webkit-backface-visibility: hidden;
28 -moz-backface-visibility: hidden;
29 -ms-backface-visibility: hidden;
30 -o-backface-visibility: hidden;
31 backface-visibility: hidden;
32
33 -webkit-tap-highlight-color: rgba(0,0,0,0);
34}
35.sb-container div:nth-child(even){
36 background-position: top left;
37}
38
39.sb-container div:nth-child(1){
40 box-shadow: -1px -1px 3px rgba(0,0,0,0.2), 1px 1px 1px rgba(0,0,0,0.1);
41}
42
43.sb-container div:nth-child(2){
44 box-shadow: -1px -1px 3px rgba(0,0,0,0.2), 2px 2px 1px rgba(0,0,0,0.1);
45}
46
47.sb-container div:nth-child(3){
48 box-shadow: -1px -1px 3px rgba(0,0,0,0.2), 3px 3px 2px rgba(0,0,0,0.2);
49}
50
51.sb-container div:nth-child(4){
52 box-shadow: -1px -1px 3px rgba(0,0,0,0.2), 4px 4px 4px rgba(0,0,0,0.2);
53}
54
55.sb-container div:nth-child(5){
56 box-shadow: -1px -1px 3px rgba(0,0,0,0.2), 5px 5px 6px rgba(0,0,0,0.3);
57}
58
59.sb-container div:nth-child(6){
60 box-shadow: -1px -1px 3px rgba(0,0,0,0.2), 6px 6px 8px rgba(0,0,0,0.3);
61}
62
63.sb-container div:nth-child(7){
64 box-shadow: -1px -1px 3px rgba(0,0,0,0.2), 7px 7px 10px rgba(0,0,0,0.4);
65}
66
67.sb-container div:nth-child(8){
68 box-shadow: -1px -1px 3px rgba(0,0,0,0.2), 8px 8px 12px rgba(0,0,0,0.4);
69}
70
71.sb-container div:nth-child(9){
72 box-shadow: -1px -1px 3px rgba(0,0,0,0.2), 9px 9px 14px rgba(0,0,0,0.4);
73}
74
75.sb-container div:nth-child(10){
76 box-shadow: -1px -1px 3px rgba(0,0,0,0.2), 10px 10px 16px rgba(0,0,0,0.4);
77}
78
79.sb-container div:nth-child(11){
80 box-shadow: -1px -1px 3px rgba(0,0,0,0.2), 11px 11px 18px rgba(0,0,0,0.4);
81}
82
83.sb-container div:last-child{
84 background: #645b5c url(../images/cover2.jpg) repeat center center;
85 box-shadow:
86 -1px -1px 3px rgba(0,0,0,0.2),
87 12px 12px 20px rgba(0,0,0,0.6),
88 inset 2px 2px 0 rgba(255, 255, 255, 0.1);
89}
90
91.sb-container div:last-child:after{
92 content: '';
93 position: absolute;
94 bottom: 15px;
95 left: 15px;
96 width: 20px;
97 height: 20px;
98 border-radius: 50%;
99 background: #dddddd;
100 background: -moz-linear-gradient(-45deg, #dddddd 0%, #58535e 48%, #889396 100%);
101 background: -webkit-gradient(linear, left top, right bottom, color-stop(0%,#dddddd), color-stop(48%,#58535e), color-stop(100%,#889396));
102 background: -webkit-linear-gradient(-45deg, #dddddd 0%,#58535e 48%,#889396 100%);
103 background: -o-linear-gradient(-45deg, #dddddd 0%,#58535e 48%,#889396 100%);
104 background: -ms-linear-gradient(-45deg, #dddddd 0%,#58535e 48%,#889396 100%);
105 background: linear-gradient(135deg, #dddddd 0%,#58535e 48%,#889396 100%);
106 filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#dddddd', endColorstr='#889396',GradientType=1 );
107 box-shadow: -1px -1px 1px rgba(0,0,0,0.7), 1px 1px 1px rgba(255,255,255,0.1);
108}
109
110.sb-container div h4{
111 color: rgba(255,255,255,0.9);
112 text-shadow: 1px 1px 1px rgba(0,0,0,0.2);
113 font-weight: 700;
114 font-size: 16px;
115 text-transform: uppercase;
116 border-top: 1px dashed rgba(0,0,0,0.1);
117 border-bottom: 1px dashed rgba(0,0,0,0.1);
118 margin: 5px;
119 padding: 5px;
120
121 -webkit-touch-callout: none;
122 -webkit-user-select: none;
123 -khtml-user-select: none;
124 -moz-user-select: none;
125 -ms-user-select: none;
126 user-select: none;
127}
128
129.sb-container div:last-child h4{
130 background: rgba(0,0,0,0.2);
131 box-shadow: 0 1px 1px rgba(255,255,255,0.1);
132}
133
134.sb-container div:last-child h5{
135 font-size: 50px;
136 white-space: nowrap;
137 text-align: left;
138 margin: 0;
139 padding: 0;
140 position: absolute;
141 line-height: 50px;
142 top: 0px;
143 left: 0px;
144 color: #111;
145 text-shadow: -1px -1px 1px rgba(255,255,255,0.1);
146 text-transform: uppercase;
147
148 -webkit-transform: rotate(-90deg) translateX(-157%) translateY(73px);
149 -moz-transform: rotate(-90deg) translateX(-157%) translateY(73px);
150 -o-transform: rotate(-90deg) translateX(-157%) translateY(73px);
151 -ms-transform: rotate(-90deg) translateX(-157%) translateY(73px);
152 transform: rotate(-90deg) translateX(-157%) translateY(73px);
153
154 -webkit-transform-origin: 0 0;
155 -moz-transform-origin: 0 0;
156 -o-transform-origin: 0 0;
157 -ms-transform-origin: 0 0;
158 transform-origin: 0 0;
159
160 -webkit-touch-callout: none;
161 -webkit-user-select: none;
162 -khtml-user-select: none;
163 -moz-user-select: none;
164 -ms-user-select: none;
165 user-select: none;
166}
167
168span.sb-icon{
169 display: block;
170 height: 70px;
171 width: 70px;
172 margin: 20px auto;
173 -webkit-touch-callout: none;
174 -webkit-user-select: none;
175 -khtml-user-select: none;
176 -moz-user-select: none;
177 -ms-user-select: none;
178 user-select: none;
179}
180
181span.sb-icon:before {
182 font-family: 'icons';
183 font-style: normal;
184 font-weight: normal;
185 speak: none;
186 display: block;
187 text-decoration: inherit;
188 text-align: center;
189 text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3);
190 line-height: 64px;
191 width: 100%;
192 font-size: 60px;
193 color: rgba(113,72,39,0.8);
194 text-shadow: 1px 1px 1px rgba(255,255,255,0.3);
195}
196
197.icon-cog:before { content: '\35'; } /* '5' */
198.icon-flight:before { content: '\37'; } /* '7' */
199.icon-eye:before { content: '\34'; } /* '4' */
200.icon-install:before { content: '\39'; } /* '9' */
201.icon-bag:before { content: '\36'; } /* '6' */
202.icon-globe:before { content: '\38'; } /* '8' */
203.icon-picture:before { content: '\32'; } /* '2' */
204.icon-video:before { content: '\30'; } /* '0' */
205.icon-download:before { content: '\41'; } /* 'A' */
206.icon-mobile:before { content: '\42'; } /* 'B' */
207.icon-camera:before { content: '\33'; } /* '3' */ \ No newline at end of file
diff --git a/Back/jinwei.me/css/style5.css b/Back/jinwei.me/css/style5.css
new file mode 100644
index 0000000..1388559
--- /dev/null
+++ b/Back/jinwei.me/css/style5.css
@@ -0,0 +1,223 @@
1.sb-container {
2 position: relative;
3 width: 150px;
4 height: 400px;
5 margin: 30px auto 0 auto;
6}
7
8.sb-container div {
9 position: absolute;
10 top: 0;
11 left: 0;
12 width: 130px;
13 background: #fff;
14 height: 400px;
15 border-radius: 5px;
16 cursor: pointer;
17 text-align: center;
18 background-image: url(../images/fabric.png);
19
20 -webkit-transform-origin: 25% 90%;
21 -moz-transform-origin: 25% 90%;
22 -o-transform-origin: 25% 90%;
23 -ms-transform-origin: 25% 90%;
24 transform-origin: 25% 90%;
25
26 -webkit-backface-visibility: hidden;
27 -moz-backface-visibility: hidden;
28 -ms-backface-visibility: hidden;
29 -o-backface-visibility: hidden;
30 backface-visibility: hidden;
31
32 -webkit-tap-highlight-color: rgba(0,0,0,0);
33}
34
35.sb-container div:nth-child(1){
36 background-color: #ea2a29;
37 box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 1px 1px 1px rgba(0,0,0,0.1);
38}
39
40.sb-container div:nth-child(2){
41 background-color: #f16729;
42 box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 2px 2px 1px rgba(0,0,0,0.1);
43}
44
45.sb-container div:nth-child(3){
46 background-color: #f89322;
47 box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 3px 3px 2px rgba(0,0,0,0.2);
48}
49
50.sb-container div:nth-child(4){
51 background-color: #ffcf14;
52 box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 4px 4px 4px rgba(0,0,0,0.2);
53}
54
55.sb-container div:nth-child(5){
56 background-color: #ffea0d;
57 box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 5px 5px 6px rgba(0,0,0,0.3);
58}
59
60.sb-container div:nth-child(6){
61 background-color: #87b11d;
62 box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 6px 6px 8px rgba(0,0,0,0.3);
63}
64
65.sb-container div:nth-child(7){
66 background-color: #008253;
67 box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 7px 7px 10px rgba(0,0,0,0.4);
68}
69
70.sb-container div:nth-child(8){
71 background-color: #3277b5;
72 box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 8px 8px 12px rgba(0,0,0,0.4);
73}
74
75.sb-container div:nth-child(9){
76 background-color: #4c549f;
77 box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 9px 9px 14px rgba(0,0,0,0.4);
78}
79
80.sb-container div:nth-child(10){
81 background-color: #764394;
82 box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 10px 10px 16px rgba(0,0,0,0.4);
83}
84
85.sb-container div:nth-child(11){
86 background-color: #ca0d86;
87 box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 11px 11px 18px rgba(0,0,0,0.4);
88}
89
90.sb-container div:last-child{
91 background: #645b5c url(../images/cover.jpg) repeat center center;
92 box-shadow:
93 -1px -1px 3px rgba(0,0,0,0.2),
94 12px 12px 20px rgba(0,0,0,0.6),
95 inset 2px 2px 0 rgba(255, 255, 255, 0.1);
96}
97
98.sb-container div:last-child:after{
99 content: '';
100 position: absolute;
101 bottom: 15px;
102 left: 15px;
103 width: 20px;
104 height: 20px;
105 border-radius: 50%;
106 background: #dddddd;
107 background: -moz-linear-gradient(-45deg, #dddddd 0%, #58535e 48%, #889396 100%);
108 background: -webkit-gradient(linear, left top, right bottom, color-stop(0%,#dddddd), color-stop(48%,#58535e), color-stop(100%,#889396));
109 background: -webkit-linear-gradient(-45deg, #dddddd 0%,#58535e 48%,#889396 100%);
110 background: -o-linear-gradient(-45deg, #dddddd 0%,#58535e 48%,#889396 100%);
111 background: -ms-linear-gradient(-45deg, #dddddd 0%,#58535e 48%,#889396 100%);
112 background: linear-gradient(135deg, #dddddd 0%,#58535e 48%,#889396 100%);
113 filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#dddddd', endColorstr='#889396',GradientType=1 );
114 box-shadow: -1px -1px 1px rgba(0,0,0,0.5), 1px 1px 1px rgba(255,255,255,0.1);
115}
116
117.sb-container div h4{
118 color: rgba(255,255,255,0.9);
119 text-shadow: 1px 1px 1px rgba(0,0,0,0.2);
120 font-weight: 700;
121 font-size: 16px;
122 text-transform: uppercase;
123 border-top: 1px dashed rgba(0,0,0,0.1);
124 border-bottom: 1px dashed rgba(0,0,0,0.1);
125 margin: 5px;
126 padding: 5px;
127 -webkit-touch-callout: none;
128 -webkit-user-select: none;
129 -khtml-user-select: none;
130 -moz-user-select: none;
131 -ms-user-select: none;
132 user-select: none;
133}
134
135.sb-container div:last-child h4{
136 background: rgba(0,0,0,0.2);
137 box-shadow: 0 1px 1px rgba(255,255,255,0.1);
138}
139
140.sb-container div h4 a{
141 color: rgba(0,0,0,0.9);
142 text-shadow: 0 1px 1px rgba(255,255,255,0.4);
143}
144
145.sb-container div h4 a:hover{
146 color: rgba(255,255,255,0.9);
147 text-shadow: 1px 1px 1px rgba(0,0,0,0.2);
148}
149
150.sb-container div:last-child h5{
151 font-size: 50px;
152 white-space: nowrap;
153 text-align: left;
154 margin: 0;
155 padding: 0;
156 position: absolute;
157 line-height: 50px;
158 top: 0px;
159 left: 0px;
160 color: #111;
161 text-shadow: -1px -1px 1px rgba(255,255,255,0.1);
162 text-transform: uppercase;
163
164 -webkit-transform: rotate(-90deg) translateX(-157%) translateY(73px);
165 -moz-transform: rotate(-90deg) translateX(-157%) translateY(73px);
166 -o-transform: rotate(-90deg) translateX(-157%) translateY(73px);
167 -ms-transform: rotate(-90deg) translateX(-157%) translateY(73px);
168 transform: rotate(-90deg) translateX(-157%) translateY(73px);
169
170 -webkit-transform-origin: 0 0;
171 -moz-transform-origin: 0 0;
172 -o-transform-origin: 0 0;
173 -ms-transform-origin: 0 0;
174 transform-origin: 0 0;
175
176 -webkit-touch-callout: none;
177 -webkit-user-select: none;
178 -khtml-user-select: none;
179 -moz-user-select: none;
180 -ms-user-select: none;
181 user-select: none;
182}
183
184span.sb-icon{
185 display: block;
186 height: 70px;
187 width: 70px;
188 margin: 20px auto;
189 -webkit-touch-callout: none;
190 -webkit-user-select: none;
191 -khtml-user-select: none;
192 -moz-user-select: none;
193 -ms-user-select: none;
194 user-select: none;
195}
196
197span.sb-icon:before {
198 font-family: 'icons';
199 font-style: normal;
200 font-weight: normal;
201 speak: none;
202 display: block;
203 text-decoration: inherit;
204 text-align: center;
205 text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3);
206 line-height: 64px;
207 width: 100%;
208 font-size: 60px;
209 color: #000;
210 text-shadow: 0 0 1px #000;
211}
212
213.icon-cog:before { content: '\35'; } /* '5' */
214.icon-flight:before { content: '\37'; } /* '7' */
215.icon-eye:before { content: '\34'; } /* '4' */
216.icon-install:before { content: '\39'; } /* '9' */
217.icon-bag:before { content: '\36'; } /* '6' */
218.icon-globe:before { content: '\38'; } /* '8' */
219.icon-picture:before { content: '\32'; } /* '2' */
220.icon-video:before { content: '\30'; } /* '0' */
221.icon-download:before { content: '\41'; } /* 'A' */
222.icon-mobile:before { content: '\42'; } /* 'B' */
223.icon-camera:before { content: '\33'; } /* '3' */ \ No newline at end of file
diff --git a/Back/jinwei.me/images/ImageAttribution.txt b/Back/jinwei.me/images/ImageAttribution.txt
new file mode 100644
index 0000000..e86284d
--- /dev/null
+++ b/Back/jinwei.me/images/ImageAttribution.txt
@@ -0,0 +1,7 @@
1Background Pattern from http://subtlepatterns.com/
2
3Icons generated with http://fontello.com/ (Iconset by http://www.entypo.com)
4
5Seamless cover textures by http://www.fuzzimo.com/
6
7Cartboard from http://www.texturise.com/ \ No newline at end of file
diff --git a/Back/jinwei.me/images/cartboard.jpg b/Back/jinwei.me/images/cartboard.jpg
new file mode 100644
index 0000000..b0b3def
--- /dev/null
+++ b/Back/jinwei.me/images/cartboard.jpg
Binary files differ
diff --git a/uucky.me/Uucky的小站_files/cover.jpg b/Back/jinwei.me/images/cover.jpg
index 458945c..458945c 100644
--- a/uucky.me/Uucky的小站_files/cover.jpg
+++ b/Back/jinwei.me/images/cover.jpg
Binary files differ
diff --git a/Back/jinwei.me/images/cover2.jpg b/Back/jinwei.me/images/cover2.jpg
new file mode 100644
index 0000000..4cd268d
--- /dev/null
+++ b/Back/jinwei.me/images/cover2.jpg
Binary files differ
diff --git a/Back/jinwei.me/images/dark_leather.jpg b/Back/jinwei.me/images/dark_leather.jpg
new file mode 100644
index 0000000..e09299d
--- /dev/null
+++ b/Back/jinwei.me/images/dark_leather.jpg
Binary files differ
diff --git a/uucky.me/Uucky的小站_files/egg_shell.jpg b/Back/jinwei.me/images/egg_shell.jpg
index a08c04e..a08c04e 100644
--- a/uucky.me/Uucky的小站_files/egg_shell.jpg
+++ b/Back/jinwei.me/images/egg_shell.jpg
Binary files differ
diff --git a/uucky.me/Uucky的小站_files/fabric.png b/Back/jinwei.me/images/fabric.png
index 07178c2..07178c2 100644
--- a/uucky.me/Uucky的小站_files/fabric.png
+++ b/Back/jinwei.me/images/fabric.png
Binary files differ
diff --git a/Back/jinwei.me/index.html b/Back/jinwei.me/index.html
new file mode 100644
index 0000000..c6becf8
--- /dev/null
+++ b/Back/jinwei.me/index.html
@@ -0,0 +1,154 @@
1<!DOCTYPE html >
2<html lang="en">
3<head>
4 <meta charset="UTF-8" />
5 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
6 <meta name="viewport" content="width=device-width, initial-scale=1" />
7 <title>Jinwei的小站</title>
8 <link href="favicon.ico" type="image/x-icon" rel=icon>
9 <link rel="stylesheet" type="text/css" href="css/demo.css" />
10 <link rel="stylesheet" type="text/css" href="css/style2.css" />
11 <link href='css/css.css' rel='stylesheet' type='text/css'>
12 <script type="text/javascript" src="js/modernizr.custom.79639.js"></script>
13</head>
14<body>
15 <div class="container">
16 <header>
17 <h1>
18 <span>Jinwei的小站</span>
19 </h1>
20 <h2>一生放荡不羁只敲自己喜欢的代码</h2>
21 <h2>95后,大二了,宅,伪文青,爱折腾,爱技术,爱有技术会设计的妹子</h2>
22 <div class="support-note">
23 <!-- let's check browser support with modernizr -->
24 <!--span class="no-cssanimations">CSS animations are not supported in your browser</span-->
25 <span class="no-csstransforms">都什么年代了还用这么渣的浏览器!不让看!</span>
26 <!--span class="no-csstransforms3d">CSS 3D transforms are not supported in your browser</span-->
27 <span class="no-csstransitions">都什么年代了还用这么渣的浏览器!不让看!</span>
28 <span class="note-ie">我和所有用IE的都绝交了你造吗?</span>
29 </div>
30</header>
31<section class="main">
32 <div id="sb-container" class="sb-container">
33 <div>
34 <span class="sb-icon icon-cog"></span>
35 <h4>
36 <span>City</span>
37 </h4>
38 </div>
39 <div>
40 <span class="sb-icon icon-flight"></span>
41 <h4>
42 <span>This</span>
43 </h4>
44 </div>
45 <div>
46 <span class="sb-icon icon-eye"></span>
47 <h4>
48 <span>With</span>
49 </h4>
50 </div>
51 <div>
52 <span class="sb-icon icon-install"></span>
53 <h4>
54 <span>Love</span>
55 </h4>
56 </div>
57 <div>
58 <span class="sb-icon icon-bag"></span>
59 <h4>
60 <span>In</span>
61 </h4>
62 </div>
63 <div>
64 <span class="sb-icon icon-globe"></span>
65 <h4>
66 <span>Fell</span>
67 </h4>
68 </div>
69 <div>
70 <span class="sb-icon icon-picture"></span>
71 <h4>
72 <span>I</span>
73 </h4>
74 </div>
75 <div>
76 <span class="sb-icon icon-video"></span>
77 <h4>
78 <span>Why</span>
79 </h4>
80 </div>
81 <div>
82 <span class="sb-icon icon-download"></span>
83 <h4>
84 <span>Reason</span>
85 </h4>
86 </div>
87 <div>
88 <span class="sb-icon icon-mobile"></span>
89 <h4>
90 <span>The</span>
91 </h4>
92 </div>
93 <div>
94 <span class="sb-icon icon-camera"></span>
95 <h4>
96 <span>Are</span>
97 </h4>
98 </div>
99 <div>
100 <h4>
101 <span>You</span>
102 </h4>
103 <span class="sb-toggle">Click to open/close</span>
104 <h5>
105 <span>
106 <a href="http://www.cnblogs.com/jinweiclarkchao/" target="_blank">My &hearts; blog</a>
107 </span>
108 </h5>
109 </div>
110 </div>
111 <!-- sb-container -->
112 <h5>
113 © 2014. All rights reserved. View on
114 <a href="https://github.com/JinweiClarkChao/jinweiclarkchao.github.com" target="_blank">Github</a>
115 </h5>
116</section>
117
118</div>
119
120<script type="text/javascript" src="js/jquery.min.js"></script>
121<script type="text/javascript" src="js/jquery.swatchbook.js"></script>
122<script type="text/javascript">
123 $(function() {
124 $( '#sb-container' ).swatchbook( {
125 // number of degrees that is between each item
126 angleInc : -10,
127 // amount in degrees for the opened item's next sibling
128 proximity : -45,
129 neighbor : -4,
130 // index of the element that when clicked, triggers the open/close function
131 // by default there is no such element
132 closeIdx : 11
133 } );
134 });
135 </script>
136<script>
137 (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
138 (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
139 m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
140 })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
141 ga('create', 'UA-46099659-1', 'jinwei.me');
142 ga('send', 'pageview');
143 </script>
144<script type="text/javascript">
145 var x=12;
146 window.addEventListener("mousewheel",function(event){
147 event.preventDefault();
148 if (event.wheelDelta >= 120&&x>0)
149 $("#sb-container div")[x-1].click();
150 else if (event.wheelDelta <= -120&&x<12)
151 $("#sb-container div")[x+1].click();
152 },false);
153 </script></body>
154</html>
diff --git a/Back/jinwei.me/js/jquery.min.js b/Back/jinwei.me/js/jquery.min.js
new file mode 100644
index 0000000..7e523f9
--- /dev/null
+++ b/Back/jinwei.me/js/jquery.min.js
@@ -0,0 +1,3576 @@
1/*! jQuery v1.8.3 jquery.com | jquery.org/license */
2(function(e, t) {
3 function _(e) {
4 var t = M[e] = {};
5 return v.each(e.split(y), function(e, n) {
6 t[n] = !0
7 }), t
8 }
9
10 function H(e, n, r) {
11 if (r === t && e.nodeType === 1) {
12 var i = "data-" + n.replace(P, "-$1").toLowerCase();
13 r = e.getAttribute(i);
14 if (typeof r == "string") {
15 try {
16 r = r === "true" ? !0 : r === "false" ? !1 : r === "null" ? null : +r + "" === r ? +r : D.test(r) ? v.parseJSON(r) : r
17 } catch (s) {}
18 v.data(e, n, r)
19 } else r = t
20 }
21 return r
22 }
23
24 function B(e) {
25 var t;
26 for (t in e) {
27 if (t === "data" && v.isEmptyObject(e[t])) continue;
28 if (t !== "toJSON") return !1
29 }
30 return !0
31 }
32
33 function et() {
34 return !1
35 }
36
37 function tt() {
38 return !0
39 }
40
41 function ut(e) {
42 return !e || !e.parentNode || e.parentNode.nodeType === 11
43 }
44
45 function at(e, t) {
46 do e = e[t]; while (e && e.nodeType !== 1);
47 return e
48 }
49
50 function ft(e, t, n) {
51 t = t || 0;
52 if (v.isFunction(t)) return v.grep(e, function(e, r) {
53 var i = !!t.call(e, r, e);
54 return i === n
55 });
56 if (t.nodeType) return v.grep(e, function(e, r) {
57 return e === t === n
58 });
59 if (typeof t == "string") {
60 var r = v.grep(e, function(e) {
61 return e.nodeType === 1
62 });
63 if (it.test(t)) return v.filter(t, r, !n);
64 t = v.filter(t, r)
65 }
66 return v.grep(e, function(e, r) {
67 return v.inArray(e, t) >= 0 === n
68 })
69 }
70
71 function lt(e) {
72 var t = ct.split("|"),
73 n = e.createDocumentFragment();
74 if (n.createElement)
75 while (t.length) n.createElement(t.pop());
76 return n
77 }
78
79 function Lt(e, t) {
80 return e.getElementsByTagName(t)[0] || e.appendChild(e.ownerDocument.createElement(t))
81 }
82
83 function At(e, t) {
84 if (t.nodeType !== 1 || !v.hasData(e)) return;
85 var n, r, i, s = v._data(e),
86 o = v._data(t, s),
87 u = s.events;
88 if (u) {
89 delete o.handle, o.events = {};
90 for (n in u)
91 for (r = 0, i = u[n].length; r < i; r++) v.event.add(t, n, u[n][r])
92 }
93 o.data && (o.data = v.extend({}, o.data))
94 }
95
96 function Ot(e, t) {
97 var n;
98 if (t.nodeType !== 1) return;
99 t.clearAttributes && t.clearAttributes(), t.mergeAttributes && t.mergeAttributes(e), n = t.nodeName.toLowerCase(), n === "object" ? (t.parentNode && (t.outerHTML = e.outerHTML), v.support.html5Clone && e.innerHTML && !v.trim(t.innerHTML) && (t.innerHTML = e.innerHTML)) : n === "input" && Et.test(e.type) ? (t.defaultChecked = t.checked = e.checked, t.value !== e.value && (t.value = e.value)) : n === "option" ? t.selected = e.defaultSelected : n === "input" || n === "textarea" ? t.defaultValue = e.defaultValue : n === "script" && t.text !== e.text && (t.text = e.text), t.removeAttribute(v.expando)
100 }
101
102 function Mt(e) {
103 return typeof e.getElementsByTagName != "undefined" ? e.getElementsByTagName("*") : typeof e.querySelectorAll != "undefined" ? e.querySelectorAll("*") : []
104 }
105
106 function _t(e) {
107 Et.test(e.type) && (e.defaultChecked = e.checked)
108 }
109
110 function Qt(e, t) {
111 if (t in e) return t;
112 var n = t.charAt(0).toUpperCase() + t.slice(1),
113 r = t,
114 i = Jt.length;
115 while (i--) {
116 t = Jt[i] + n;
117 if (t in e) return t
118 }
119 return r
120 }
121
122 function Gt(e, t) {
123 return e = t || e, v.css(e, "display") === "none" || !v.contains(e.ownerDocument, e)
124 }
125
126 function Yt(e, t) {
127 var n, r, i = [],
128 s = 0,
129 o = e.length;
130 for (; s < o; s++) {
131 n = e[s];
132 if (!n.style) continue;
133 i[s] = v._data(n, "olddisplay"), t ? (!i[s] && n.style.display === "none" && (n.style.display = ""), n.style.display === "" && Gt(n) && (i[s] = v._data(n, "olddisplay", nn(n.nodeName)))) : (r = Dt(n, "display"), !i[s] && r !== "none" && v._data(n, "olddisplay", r))
134 }
135 for (s = 0; s < o; s++) {
136 n = e[s];
137 if (!n.style) continue;
138 if (!t || n.style.display === "none" || n.style.display === "") n.style.display = t ? i[s] || "" : "none"
139 }
140 return e
141 }
142
143 function Zt(e, t, n) {
144 var r = Rt.exec(t);
145 return r ? Math.max(0, r[1] - (n || 0)) + (r[2] || "px") : t
146 }
147
148 function en(e, t, n, r) {
149 var i = n === (r ? "border" : "content") ? 4 : t === "width" ? 1 : 0,
150 s = 0;
151 for (; i < 4; i += 2) n === "margin" && (s += v.css(e, n + $t[i], !0)), r ? (n === "content" && (s -= parseFloat(Dt(e, "padding" + $t[i])) || 0), n !== "margin" && (s -= parseFloat(Dt(e, "border" + $t[i] + "Width")) || 0)) : (s += parseFloat(Dt(e, "padding" + $t[i])) || 0, n !== "padding" && (s += parseFloat(Dt(e, "border" + $t[i] + "Width")) || 0));
152 return s
153 }
154
155 function tn(e, t, n) {
156 var r = t === "width" ? e.offsetWidth : e.offsetHeight,
157 i = !0,
158 s = v.support.boxSizing && v.css(e, "boxSizing") === "border-box";
159 if (r <= 0 || r == null) {
160 r = Dt(e, t);
161 if (r < 0 || r == null) r = e.style[t];
162 if (Ut.test(r)) return r;
163 i = s && (v.support.boxSizingReliable || r === e.style[t]), r = parseFloat(r) || 0
164 }
165 return r + en(e, t, n || (s ? "border" : "content"), i) + "px"
166 }
167
168 function nn(e) {
169 if (Wt[e]) return Wt[e];
170 var t = v("<" + e + ">").appendTo(i.body),
171 n = t.css("display");
172 t.remove();
173 if (n === "none" || n === "") {
174 Pt = i.body.appendChild(Pt || v.extend(i.createElement("iframe"), {
175 frameBorder: 0,
176 width: 0,
177 height: 0
178 }));
179 if (!Ht || !Pt.createElement) Ht = (Pt.contentWindow || Pt.contentDocument).document, Ht.write("<!doctype html><html><body>"), Ht.close();
180 t = Ht.body.appendChild(Ht.createElement(e)), n = Dt(t, "display"), i.body.removeChild(Pt)
181 }
182 return Wt[e] = n, n
183 }
184
185 function fn(e, t, n, r) {
186 var i;
187 if (v.isArray(t)) v.each(t, function(t, i) {
188 n || sn.test(e) ? r(e, i) : fn(e + "[" + (typeof i == "object" ? t : "") + "]", i, n, r)
189 });
190 else if (!n && v.type(t) === "object")
191 for (i in t) fn(e + "[" + i + "]", t[i], n, r);
192 else r(e, t)
193 }
194
195 function Cn(e) {
196 return function(t, n) {
197 typeof t != "string" && (n = t, t = "*");
198 var r, i, s, o = t.toLowerCase().split(y),
199 u = 0,
200 a = o.length;
201 if (v.isFunction(n))
202 for (; u < a; u++) r = o[u], s = /^\+/.test(r), s && (r = r.substr(1) || "*"), i = e[r] = e[r] || [], i[s ? "unshift" : "push"](n)
203 }
204 }
205
206 function kn(e, n, r, i, s, o) {
207 s = s || n.dataTypes[0], o = o || {}, o[s] = !0;
208 var u, a = e[s],
209 f = 0,
210 l = a ? a.length : 0,
211 c = e === Sn;
212 for (; f < l && (c || !u); f++) u = a[f](n, r, i), typeof u == "string" && (!c || o[u] ? u = t : (n.dataTypes.unshift(u), u = kn(e, n, r, i, u, o)));
213 return (c || !u) && !o["*"] && (u = kn(e, n, r, i, "*", o)), u
214 }
215
216 function Ln(e, n) {
217 var r, i, s = v.ajaxSettings.flatOptions || {};
218 for (r in n) n[r] !== t && ((s[r] ? e : i || (i = {}))[r] = n[r]);
219 i && v.extend(!0, e, i)
220 }
221
222 function An(e, n, r) {
223 var i, s, o, u, a = e.contents,
224 f = e.dataTypes,
225 l = e.responseFields;
226 for (s in l) s in r && (n[l[s]] = r[s]);
227 while (f[0] === "*") f.shift(), i === t && (i = e.mimeType || n.getResponseHeader("content-type"));
228 if (i)
229 for (s in a)
230 if (a[s] && a[s].test(i)) {
231 f.unshift(s);
232 break
233 }
234 if (f[0] in r) o = f[0];
235 else {
236 for (s in r) {
237 if (!f[0] || e.converters[s + " " + f[0]]) {
238 o = s;
239 break
240 }
241 u || (u = s)
242 }
243 o = o || u
244 } if (o) return o !== f[0] && f.unshift(o), r[o]
245 }
246
247 function On(e, t) {
248 var n, r, i, s, o = e.dataTypes.slice(),
249 u = o[0],
250 a = {},
251 f = 0;
252 e.dataFilter && (t = e.dataFilter(t, e.dataType));
253 if (o[1])
254 for (n in e.converters) a[n.toLowerCase()] = e.converters[n];
255 for (; i = o[++f];)
256 if (i !== "*") {
257 if (u !== "*" && u !== i) {
258 n = a[u + " " + i] || a["* " + i];
259 if (!n)
260 for (r in a) {
261 s = r.split(" ");
262 if (s[1] === i) {
263 n = a[u + " " + s[0]] || a["* " + s[0]];
264 if (n) {
265 n === !0 ? n = a[r] : a[r] !== !0 && (i = s[0], o.splice(f--, 0, i));
266 break
267 }
268 }
269 }
270 if (n !== !0)
271 if (n && e["throws"]) t = n(t);
272 else try {
273 t = n(t)
274 } catch (l) {
275 return {
276 state: "parsererror",
277 error: n ? l : "No conversion from " + u + " to " + i
278 }
279 }
280 }
281 u = i
282 }
283 return {
284 state: "success",
285 data: t
286 }
287 }
288
289 function Fn() {
290 try {
291 return new e.XMLHttpRequest
292 } catch (t) {}
293 }
294
295 function In() {
296 try {
297 return new e.ActiveXObject("Microsoft.XMLHTTP")
298 } catch (t) {}
299 }
300
301 function $n() {
302 return setTimeout(function() {
303 qn = t
304 }, 0), qn = v.now()
305 }
306
307 function Jn(e, t) {
308 v.each(t, function(t, n) {
309 var r = (Vn[t] || []).concat(Vn["*"]),
310 i = 0,
311 s = r.length;
312 for (; i < s; i++)
313 if (r[i].call(e, t, n)) return
314 })
315 }
316
317 function Kn(e, t, n) {
318 var r, i = 0,
319 s = 0,
320 o = Xn.length,
321 u = v.Deferred().always(function() {
322 delete a.elem
323 }),
324 a = function() {
325 var t = qn || $n(),
326 n = Math.max(0, f.startTime + f.duration - t),
327 r = n / f.duration || 0,
328 i = 1 - r,
329 s = 0,
330 o = f.tweens.length;
331 for (; s < o; s++) f.tweens[s].run(i);
332 return u.notifyWith(e, [f, i, n]), i < 1 && o ? n : (u.resolveWith(e, [f]), !1)
333 },
334 f = u.promise({
335 elem: e,
336 props: v.extend({}, t),
337 opts: v.extend(!0, {
338 specialEasing: {}
339 }, n),
340 originalProperties: t,
341 originalOptions: n,
342 startTime: qn || $n(),
343 duration: n.duration,
344 tweens: [],
345 createTween: function(t, n, r) {
346 var i = v.Tween(e, f.opts, t, n, f.opts.specialEasing[t] || f.opts.easing);
347 return f.tweens.push(i), i
348 },
349 stop: function(t) {
350 var n = 0,
351 r = t ? f.tweens.length : 0;
352 for (; n < r; n++) f.tweens[n].run(1);
353 return t ? u.resolveWith(e, [f, t]) : u.rejectWith(e, [f, t]), this
354 }
355 }),
356 l = f.props;
357 Qn(l, f.opts.specialEasing);
358 for (; i < o; i++) {
359 r = Xn[i].call(f, e, l, f.opts);
360 if (r) return r
361 }
362 return Jn(f, l), v.isFunction(f.opts.start) && f.opts.start.call(e, f), v.fx.timer(v.extend(a, {
363 anim: f,
364 queue: f.opts.queue,
365 elem: e
366 })), f.progress(f.opts.progress).done(f.opts.done, f.opts.complete).fail(f.opts.fail).always(f.opts.always)
367 }
368
369 function Qn(e, t) {
370 var n, r, i, s, o;
371 for (n in e) {
372 r = v.camelCase(n), i = t[r], s = e[n], v.isArray(s) && (i = s[1], s = e[n] = s[0]), n !== r && (e[r] = s, delete e[n]), o = v.cssHooks[r];
373 if (o && "expand" in o) {
374 s = o.expand(s), delete e[r];
375 for (n in s) n in e || (e[n] = s[n], t[n] = i)
376 } else t[r] = i
377 }
378 }
379
380 function Gn(e, t, n) {
381 var r, i, s, o, u, a, f, l, c, h = this,
382 p = e.style,
383 d = {},
384 m = [],
385 g = e.nodeType && Gt(e);
386 n.queue || (l = v._queueHooks(e, "fx"), l.unqueued == null && (l.unqueued = 0, c = l.empty.fire, l.empty.fire = function() {
387 l.unqueued || c()
388 }), l.unqueued++, h.always(function() {
389 h.always(function() {
390 l.unqueued--, v.queue(e, "fx").length || l.empty.fire()
391 })
392 })), e.nodeType === 1 && ("height" in t || "width" in t) && (n.overflow = [p.overflow, p.overflowX, p.overflowY], v.css(e, "display") === "inline" && v.css(e, "float") === "none" && (!v.support.inlineBlockNeedsLayout || nn(e.nodeName) === "inline" ? p.display = "inline-block" : p.zoom = 1)), n.overflow && (p.overflow = "hidden", v.support.shrinkWrapBlocks || h.done(function() {
393 p.overflow = n.overflow[0], p.overflowX = n.overflow[1], p.overflowY = n.overflow[2]
394 }));
395 for (r in t) {
396 s = t[r];
397 if (Un.exec(s)) {
398 delete t[r], a = a || s === "toggle";
399 if (s === (g ? "hide" : "show")) continue;
400 m.push(r)
401 }
402 }
403 o = m.length;
404 if (o) {
405 u = v._data(e, "fxshow") || v._data(e, "fxshow", {}), "hidden" in u && (g = u.hidden), a && (u.hidden = !g), g ? v(e).show() : h.done(function() {
406 v(e).hide()
407 }), h.done(function() {
408 var t;
409 v.removeData(e, "fxshow", !0);
410 for (t in d) v.style(e, t, d[t])
411 });
412 for (r = 0; r < o; r++) i = m[r], f = h.createTween(i, g ? u[i] : 0), d[i] = u[i] || v.style(e, i), i in u || (u[i] = f.start, g && (f.end = f.start, f.start = i === "width" || i === "height" ? 1 : 0))
413 }
414 }
415
416 function Yn(e, t, n, r, i) {
417 return new Yn.prototype.init(e, t, n, r, i)
418 }
419
420 function Zn(e, t) {
421 var n, r = {
422 height: e
423 },
424 i = 0;
425 t = t ? 1 : 0;
426 for (; i < 4; i += 2 - t) n = $t[i], r["margin" + n] = r["padding" + n] = e;
427 return t && (r.opacity = r.width = e), r
428 }
429
430 function tr(e) {
431 return v.isWindow(e) ? e : e.nodeType === 9 ? e.defaultView || e.parentWindow : !1
432 }
433 var n, r, i = e.document,
434 s = e.location,
435 o = e.navigator,
436 u = e.jQuery,
437 a = e.$,
438 f = Array.prototype.push,
439 l = Array.prototype.slice,
440 c = Array.prototype.indexOf,
441 h = Object.prototype.toString,
442 p = Object.prototype.hasOwnProperty,
443 d = String.prototype.trim,
444 v = function(e, t) {
445 return new v.fn.init(e, t, n)
446 },
447 m = /[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,
448 g = /\S/,
449 y = /\s+/,
450 b = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
451 w = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
452 E = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
453 S = /^[\],:{}\s]*$/,
454 x = /(?:^|:|,)(?:\s*\[)+/g,
455 T = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,
456 N = /"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,
457 C = /^-ms-/,
458 k = /-([\da-z])/gi,
459 L = function(e, t) {
460 return (t + "").toUpperCase()
461 },
462 A = function() {
463 i.addEventListener ? (i.removeEventListener("DOMContentLoaded", A, !1), v.ready()) : i.readyState === "complete" && (i.detachEvent("onreadystatechange", A), v.ready())
464 },
465 O = {};
466 v.fn = v.prototype = {
467 constructor: v,
468 init: function(e, n, r) {
469 var s, o, u, a;
470 if (!e) return this;
471 if (e.nodeType) return this.context = this[0] = e, this.length = 1, this;
472 if (typeof e == "string") {
473 e.charAt(0) === "<" && e.charAt(e.length - 1) === ">" && e.length >= 3 ? s = [null, e, null] : s = w.exec(e);
474 if (s && (s[1] || !n)) {
475 if (s[1]) return n = n instanceof v ? n[0] : n, a = n && n.nodeType ? n.ownerDocument || n : i, e = v.parseHTML(s[1], a, !0), E.test(s[1]) && v.isPlainObject(n) && this.attr.call(e, n, !0), v.merge(this, e);
476 o = i.getElementById(s[2]);
477 if (o && o.parentNode) {
478 if (o.id !== s[2]) return r.find(e);
479 this.length = 1, this[0] = o
480 }
481 return this.context = i, this.selector = e, this
482 }
483 return !n || n.jquery ? (n || r).find(e) : this.constructor(n).find(e)
484 }
485 return v.isFunction(e) ? r.ready(e) : (e.selector !== t && (this.selector = e.selector, this.context = e.context), v.makeArray(e, this))
486 },
487 selector: "",
488 jquery: "1.8.3",
489 length: 0,
490 size: function() {
491 return this.length
492 },
493 toArray: function() {
494 return l.call(this)
495 },
496 get: function(e) {
497 return e == null ? this.toArray() : e < 0 ? this[this.length + e] : this[e]
498 },
499 pushStack: function(e, t, n) {
500 var r = v.merge(this.constructor(), e);
501 return r.prevObject = this, r.context = this.context, t === "find" ? r.selector = this.selector + (this.selector ? " " : "") + n : t && (r.selector = this.selector + "." + t + "(" + n + ")"), r
502 },
503 each: function(e, t) {
504 return v.each(this, e, t)
505 },
506 ready: function(e) {
507 return v.ready.promise().done(e), this
508 },
509 eq: function(e) {
510 return e = +e, e === -1 ? this.slice(e) : this.slice(e, e + 1)
511 },
512 first: function() {
513 return this.eq(0)
514 },
515 last: function() {
516 return this.eq(-1)
517 },
518 slice: function() {
519 return this.pushStack(l.apply(this, arguments), "slice", l.call(arguments).join(","))
520 },
521 map: function(e) {
522 return this.pushStack(v.map(this, function(t, n) {
523 return e.call(t, n, t)
524 }))
525 },
526 end: function() {
527 return this.prevObject || this.constructor(null)
528 },
529 push: f,
530 sort: [].sort,
531 splice: [].splice
532 }, v.fn.init.prototype = v.fn, v.extend = v.fn.extend = function() {
533 var e, n, r, i, s, o, u = arguments[0] || {},
534 a = 1,
535 f = arguments.length,
536 l = !1;
537 typeof u == "boolean" && (l = u, u = arguments[1] || {}, a = 2), typeof u != "object" && !v.isFunction(u) && (u = {}), f === a && (u = this, --a);
538 for (; a < f; a++)
539 if ((e = arguments[a]) != null)
540 for (n in e) {
541 r = u[n], i = e[n];
542 if (u === i) continue;
543 l && i && (v.isPlainObject(i) || (s = v.isArray(i))) ? (s ? (s = !1, o = r && v.isArray(r) ? r : []) : o = r && v.isPlainObject(r) ? r : {}, u[n] = v.extend(l, o, i)) : i !== t && (u[n] = i)
544 }
545 return u
546 }, v.extend({
547 noConflict: function(t) {
548 return e.$ === v && (e.$ = a), t && e.jQuery === v && (e.jQuery = u), v
549 },
550 isReady: !1,
551 readyWait: 1,
552 holdReady: function(e) {
553 e ? v.readyWait++ : v.ready(!0)
554 },
555 ready: function(e) {
556 if (e === !0 ? --v.readyWait : v.isReady) return;
557 if (!i.body) return setTimeout(v.ready, 1);
558 v.isReady = !0;
559 if (e !== !0 && --v.readyWait > 0) return;
560 r.resolveWith(i, [v]), v.fn.trigger && v(i).trigger("ready").off("ready")
561 },
562 isFunction: function(e) {
563 return v.type(e) === "function"
564 },
565 isArray: Array.isArray || function(e) {
566 return v.type(e) === "array"
567 },
568 isWindow: function(e) {
569 return e != null && e == e.window
570 },
571 isNumeric: function(e) {
572 return !isNaN(parseFloat(e)) && isFinite(e)
573 },
574 type: function(e) {
575 return e == null ? String(e) : O[h.call(e)] || "object"
576 },
577 isPlainObject: function(e) {
578 if (!e || v.type(e) !== "object" || e.nodeType || v.isWindow(e)) return !1;
579 try {
580 if (e.constructor && !p.call(e, "constructor") && !p.call(e.constructor.prototype, "isPrototypeOf")) return !1
581 } catch (n) {
582 return !1
583 }
584 var r;
585 for (r in e);
586 return r === t || p.call(e, r)
587 },
588 isEmptyObject: function(e) {
589 var t;
590 for (t in e) return !1;
591 return !0
592 },
593 error: function(e) {
594 throw new Error(e)
595 },
596 parseHTML: function(e, t, n) {
597 var r;
598 return !e || typeof e != "string" ? null : (typeof t == "boolean" && (n = t, t = 0), t = t || i, (r = E.exec(e)) ? [t.createElement(r[1])] : (r = v.buildFragment([e], t, n ? null : []), v.merge([], (r.cacheable ? v.clone(r.fragment) : r.fragment).childNodes)))
599 },
600 parseJSON: function(t) {
601 if (!t || typeof t != "string") return null;
602 t = v.trim(t);
603 if (e.JSON && e.JSON.parse) return e.JSON.parse(t);
604 if (S.test(t.replace(T, "@").replace(N, "]").replace(x, ""))) return (new Function("return " + t))();
605 v.error("Invalid JSON: " + t)
606 },
607 parseXML: function(n) {
608 var r, i;
609 if (!n || typeof n != "string") return null;
610 try {
611 e.DOMParser ? (i = new DOMParser, r = i.parseFromString(n, "text/xml")) : (r = new ActiveXObject("Microsoft.XMLDOM"), r.async = "false", r.loadXML(n))
612 } catch (s) {
613 r = t
614 }
615 return (!r || !r.documentElement || r.getElementsByTagName("parsererror").length) && v.error("Invalid XML: " + n), r
616 },
617 noop: function() {},
618 globalEval: function(t) {
619 t && g.test(t) && (e.execScript || function(t) {
620 e.eval.call(e, t)
621 })(t)
622 },
623 camelCase: function(e) {
624 return e.replace(C, "ms-").replace(k, L)
625 },
626 nodeName: function(e, t) {
627 return e.nodeName && e.nodeName.toLowerCase() === t.toLowerCase()
628 },
629 each: function(e, n, r) {
630 var i, s = 0,
631 o = e.length,
632 u = o === t || v.isFunction(e);
633 if (r) {
634 if (u) {
635 for (i in e)
636 if (n.apply(e[i], r) === !1) break
637 } else
638 for (; s < o;)
639 if (n.apply(e[s++], r) === !1) break
640 } else if (u) {
641 for (i in e)
642 if (n.call(e[i], i, e[i]) === !1) break
643 } else
644 for (; s < o;)
645 if (n.call(e[s], s, e[s++]) === !1) break; return e
646 },
647 trim: d && !d.call("\ufeff\u00a0") ? function(e) {
648 return e == null ? "" : d.call(e)
649 } : function(e) {
650 return e == null ? "" : (e + "").replace(b, "")
651 },
652 makeArray: function(e, t) {
653 var n, r = t || [];
654 return e != null && (n = v.type(e), e.length == null || n === "string" || n === "function" || n === "regexp" || v.isWindow(e) ? f.call(r, e) : v.merge(r, e)), r
655 },
656 inArray: function(e, t, n) {
657 var r;
658 if (t) {
659 if (c) return c.call(t, e, n);
660 r = t.length, n = n ? n < 0 ? Math.max(0, r + n) : n : 0;
661 for (; n < r; n++)
662 if (n in t && t[n] === e) return n
663 }
664 return -1
665 },
666 merge: function(e, n) {
667 var r = n.length,
668 i = e.length,
669 s = 0;
670 if (typeof r == "number")
671 for (; s < r; s++) e[i++] = n[s];
672 else
673 while (n[s] !== t) e[i++] = n[s++];
674 return e.length = i, e
675 },
676 grep: function(e, t, n) {
677 var r, i = [],
678 s = 0,
679 o = e.length;
680 n = !!n;
681 for (; s < o; s++) r = !!t(e[s], s), n !== r && i.push(e[s]);
682 return i
683 },
684 map: function(e, n, r) {
685 var i, s, o = [],
686 u = 0,
687 a = e.length,
688 f = e instanceof v || a !== t && typeof a == "number" && (a > 0 && e[0] && e[a - 1] || a === 0 || v.isArray(e));
689 if (f)
690 for (; u < a; u++) i = n(e[u], u, r), i != null && (o[o.length] = i);
691 else
692 for (s in e) i = n(e[s], s, r), i != null && (o[o.length] = i);
693 return o.concat.apply([], o)
694 },
695 guid: 1,
696 proxy: function(e, n) {
697 var r, i, s;
698 return typeof n == "string" && (r = e[n], n = e, e = r), v.isFunction(e) ? (i = l.call(arguments, 2), s = function() {
699 return e.apply(n, i.concat(l.call(arguments)))
700 }, s.guid = e.guid = e.guid || v.guid++, s) : t
701 },
702 access: function(e, n, r, i, s, o, u) {
703 var a, f = r == null,
704 l = 0,
705 c = e.length;
706 if (r && typeof r == "object") {
707 for (l in r) v.access(e, n, l, r[l], 1, o, i);
708 s = 1
709 } else if (i !== t) {
710 a = u === t && v.isFunction(i), f && (a ? (a = n, n = function(e, t, n) {
711 return a.call(v(e), n)
712 }) : (n.call(e, i), n = null));
713 if (n)
714 for (; l < c; l++) n(e[l], r, a ? i.call(e[l], l, n(e[l], r)) : i, u);
715 s = 1
716 }
717 return s ? e : f ? n.call(e) : c ? n(e[0], r) : o
718 },
719 now: function() {
720 return (new Date).getTime()
721 }
722 }), v.ready.promise = function(t) {
723 if (!r) {
724 r = v.Deferred();
725 if (i.readyState === "complete") setTimeout(v.ready, 1);
726 else if (i.addEventListener) i.addEventListener("DOMContentLoaded", A, !1), e.addEventListener("load", v.ready, !1);
727 else {
728 i.attachEvent("onreadystatechange", A), e.attachEvent("onload", v.ready);
729 var n = !1;
730 try {
731 n = e.frameElement == null && i.documentElement
732 } catch (s) {}
733 n && n.doScroll && function o() {
734 if (!v.isReady) {
735 try {
736 n.doScroll("left")
737 } catch (e) {
738 return setTimeout(o, 50)
739 }
740 v.ready()
741 }
742 }()
743 }
744 }
745 return r.promise(t)
746 }, v.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(e, t) {
747 O["[object " + t + "]"] = t.toLowerCase()
748 }), n = v(i);
749 var M = {};
750 v.Callbacks = function(e) {
751 e = typeof e == "string" ? M[e] || _(e) : v.extend({}, e);
752 var n, r, i, s, o, u, a = [],
753 f = !e.once && [],
754 l = function(t) {
755 n = e.memory && t, r = !0, u = s || 0, s = 0, o = a.length, i = !0;
756 for (; a && u < o; u++)
757 if (a[u].apply(t[0], t[1]) === !1 && e.stopOnFalse) {
758 n = !1;
759 break
760 }
761 i = !1, a && (f ? f.length && l(f.shift()) : n ? a = [] : c.disable())
762 },
763 c = {
764 add: function() {
765 if (a) {
766 var t = a.length;
767 (function r(t) {
768 v.each(t, function(t, n) {
769 var i = v.type(n);
770 i === "function" ? (!e.unique || !c.has(n)) && a.push(n) : n && n.length && i !== "string" && r(n)
771 })
772 })(arguments), i ? o = a.length : n && (s = t, l(n))
773 }
774 return this
775 },
776 remove: function() {
777 return a && v.each(arguments, function(e, t) {
778 var n;
779 while ((n = v.inArray(t, a, n)) > -1) a.splice(n, 1), i && (n <= o && o--, n <= u && u--)
780 }), this
781 },
782 has: function(e) {
783 return v.inArray(e, a) > -1
784 },
785 empty: function() {
786 return a = [], this
787 },
788 disable: function() {
789 return a = f = n = t, this
790 },
791 disabled: function() {
792 return !a
793 },
794 lock: function() {
795 return f = t, n || c.disable(), this
796 },
797 locked: function() {
798 return !f
799 },
800 fireWith: function(e, t) {
801 return t = t || [], t = [e, t.slice ? t.slice() : t], a && (!r || f) && (i ? f.push(t) : l(t)), this
802 },
803 fire: function() {
804 return c.fireWith(this, arguments), this
805 },
806 fired: function() {
807 return !!r
808 }
809 };
810 return c
811 }, v.extend({
812 Deferred: function(e) {
813 var t = [
814 ["resolve", "done", v.Callbacks("once memory"), "resolved"],
815 ["reject", "fail", v.Callbacks("once memory"), "rejected"],
816 ["notify", "progress", v.Callbacks("memory")]
817 ],
818 n = "pending",
819 r = {
820 state: function() {
821 return n
822 },
823 always: function() {
824 return i.done(arguments).fail(arguments), this
825 },
826 then: function() {
827 var e = arguments;
828 return v.Deferred(function(n) {
829 v.each(t, function(t, r) {
830 var s = r[0],
831 o = e[t];
832 i[r[1]](v.isFunction(o) ? function() {
833 var e = o.apply(this, arguments);
834 e && v.isFunction(e.promise) ? e.promise().done(n.resolve).fail(n.reject).progress(n.notify) : n[s + "With"](this === i ? n : this, [e])
835 } : n[s])
836 }), e = null
837 }).promise()
838 },
839 promise: function(e) {
840 return e != null ? v.extend(e, r) : r
841 }
842 },
843 i = {};
844 return r.pipe = r.then, v.each(t, function(e, s) {
845 var o = s[2],
846 u = s[3];
847 r[s[1]] = o.add, u && o.add(function() {
848 n = u
849 }, t[e ^ 1][2].disable, t[2][2].lock), i[s[0]] = o.fire, i[s[0] + "With"] = o.fireWith
850 }), r.promise(i), e && e.call(i, i), i
851 },
852 when: function(e) {
853 var t = 0,
854 n = l.call(arguments),
855 r = n.length,
856 i = r !== 1 || e && v.isFunction(e.promise) ? r : 0,
857 s = i === 1 ? e : v.Deferred(),
858 o = function(e, t, n) {
859 return function(r) {
860 t[e] = this, n[e] = arguments.length > 1 ? l.call(arguments) : r, n === u ? s.notifyWith(t, n) : --i || s.resolveWith(t, n)
861 }
862 },
863 u, a, f;
864 if (r > 1) {
865 u = new Array(r), a = new Array(r), f = new Array(r);
866 for (; t < r; t++) n[t] && v.isFunction(n[t].promise) ? n[t].promise().done(o(t, f, n)).fail(s.reject).progress(o(t, a, u)) : --i
867 }
868 return i || s.resolveWith(f, n), s.promise()
869 }
870 }), v.support = function() {
871 var t, n, r, s, o, u, a, f, l, c, h, p = i.createElement("div");
872 p.setAttribute("className", "t"), p.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>", n = p.getElementsByTagName("*"), r = p.getElementsByTagName("a")[0];
873 if (!n || !r || !n.length) return {};
874 s = i.createElement("select"), o = s.appendChild(i.createElement("option")), u = p.getElementsByTagName("input")[0], r.style.cssText = "top:1px;float:left;opacity:.5", t = {
875 leadingWhitespace: p.firstChild.nodeType === 3,
876 tbody: !p.getElementsByTagName("tbody").length,
877 htmlSerialize: !!p.getElementsByTagName("link").length,
878 style: /top/.test(r.getAttribute("style")),
879 hrefNormalized: r.getAttribute("href") === "/a",
880 opacity: /^0.5/.test(r.style.opacity),
881 cssFloat: !!r.style.cssFloat,
882 checkOn: u.value === "on",
883 optSelected: o.selected,
884 getSetAttribute: p.className !== "t",
885 enctype: !!i.createElement("form").enctype,
886 html5Clone: i.createElement("nav").cloneNode(!0).outerHTML !== "<:nav></:nav>",
887 boxModel: i.compatMode === "CSS1Compat",
888 submitBubbles: !0,
889 changeBubbles: !0,
890 focusinBubbles: !1,
891 deleteExpando: !0,
892 noCloneEvent: !0,
893 inlineBlockNeedsLayout: !1,
894 shrinkWrapBlocks: !1,
895 reliableMarginRight: !0,
896 boxSizingReliable: !0,
897 pixelPosition: !1
898 }, u.checked = !0, t.noCloneChecked = u.cloneNode(!0).checked, s.disabled = !0, t.optDisabled = !o.disabled;
899 try {
900 delete p.test
901 } catch (d) {
902 t.deleteExpando = !1
903 }!p.addEventListener && p.attachEvent && p.fireEvent && (p.attachEvent("onclick", h = function() {
904 t.noCloneEvent = !1
905 }), p.cloneNode(!0).fireEvent("onclick"), p.detachEvent("onclick", h)), u = i.createElement("input"), u.value = "t", u.setAttribute("type", "radio"), t.radioValue = u.value === "t", u.setAttribute("checked", "checked"), u.setAttribute("name", "t"), p.appendChild(u), a = i.createDocumentFragment(), a.appendChild(p.lastChild), t.checkClone = a.cloneNode(!0).cloneNode(!0).lastChild.checked, t.appendChecked = u.checked, a.removeChild(u), a.appendChild(p);
906 if (p.attachEvent)
907 for (l in {
908 submit: !0,
909 change: !0,
910 focusin: !0
911 }) f = "on" + l, c = f in p, c || (p.setAttribute(f, "return;"), c = typeof p[f] == "function"), t[l + "Bubbles"] = c;
912 return v(function() {
913 var n, r, s, o, u = "padding:0;margin:0;border:0;display:block;overflow:hidden;",
914 a = i.getElementsByTagName("body")[0];
915 if (!a) return;
916 n = i.createElement("div"), n.style.cssText = "visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px", a.insertBefore(n, a.firstChild), r = i.createElement("div"), n.appendChild(r), r.innerHTML = "<table><tr><td></td><td>t</td></tr></table>", s = r.getElementsByTagName("td"), s[0].style.cssText = "padding:0;margin:0;border:0;display:none", c = s[0].offsetHeight === 0, s[0].style.display = "", s[1].style.display = "none", t.reliableHiddenOffsets = c && s[0].offsetHeight === 0, r.innerHTML = "", r.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;", t.boxSizing = r.offsetWidth === 4, t.doesNotIncludeMarginInBodyOffset = a.offsetTop !== 1, e.getComputedStyle && (t.pixelPosition = (e.getComputedStyle(r, null) || {}).top !== "1%", t.boxSizingReliable = (e.getComputedStyle(r, null) || {
917 width: "4px"
918 }).width === "4px", o = i.createElement("div"), o.style.cssText = r.style.cssText = u, o.style.marginRight = o.style.width = "0", r.style.width = "1px", r.appendChild(o), t.reliableMarginRight = !parseFloat((e.getComputedStyle(o, null) || {}).marginRight)), typeof r.style.zoom != "undefined" && (r.innerHTML = "", r.style.cssText = u + "width:1px;padding:1px;display:inline;zoom:1", t.inlineBlockNeedsLayout = r.offsetWidth === 3, r.style.display = "block", r.style.overflow = "visible", r.innerHTML = "<div></div>", r.firstChild.style.width = "5px", t.shrinkWrapBlocks = r.offsetWidth !== 3, n.style.zoom = 1), a.removeChild(n), n = r = s = o = null
919 }), a.removeChild(p), n = r = s = o = u = a = p = null, t
920 }();
921 var D = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/,
922 P = /([A-Z])/g;
923 v.extend({
924 cache: {},
925 deletedIds: [],
926 uuid: 0,
927 expando: "jQuery" + (v.fn.jquery + Math.random()).replace(/\D/g, ""),
928 noData: {
929 embed: !0,
930 object: "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
931 applet: !0
932 },
933 hasData: function(e) {
934 return e = e.nodeType ? v.cache[e[v.expando]] : e[v.expando], !!e && !B(e)
935 },
936 data: function(e, n, r, i) {
937 if (!v.acceptData(e)) return;
938 var s, o, u = v.expando,
939 a = typeof n == "string",
940 f = e.nodeType,
941 l = f ? v.cache : e,
942 c = f ? e[u] : e[u] && u;
943 if ((!c || !l[c] || !i && !l[c].data) && a && r === t) return;
944 c || (f ? e[u] = c = v.deletedIds.pop() || v.guid++ : c = u), l[c] || (l[c] = {}, f || (l[c].toJSON = v.noop));
945 if (typeof n == "object" || typeof n == "function") i ? l[c] = v.extend(l[c], n) : l[c].data = v.extend(l[c].data, n);
946 return s = l[c], i || (s.data || (s.data = {}), s = s.data), r !== t && (s[v.camelCase(n)] = r), a ? (o = s[n], o == null && (o = s[v.camelCase(n)])) : o = s, o
947 },
948 removeData: function(e, t, n) {
949 if (!v.acceptData(e)) return;
950 var r, i, s, o = e.nodeType,
951 u = o ? v.cache : e,
952 a = o ? e[v.expando] : v.expando;
953 if (!u[a]) return;
954 if (t) {
955 r = n ? u[a] : u[a].data;
956 if (r) {
957 v.isArray(t) || (t in r ? t = [t] : (t = v.camelCase(t), t in r ? t = [t] : t = t.split(" ")));
958 for (i = 0, s = t.length; i < s; i++) delete r[t[i]];
959 if (!(n ? B : v.isEmptyObject)(r)) return
960 }
961 }
962 if (!n) {
963 delete u[a].data;
964 if (!B(u[a])) return
965 }
966 o ? v.cleanData([e], !0) : v.support.deleteExpando || u != u.window ? delete u[a] : u[a] = null
967 },
968 _data: function(e, t, n) {
969 return v.data(e, t, n, !0)
970 },
971 acceptData: function(e) {
972 var t = e.nodeName && v.noData[e.nodeName.toLowerCase()];
973 return !t || t !== !0 && e.getAttribute("classid") === t
974 }
975 }), v.fn.extend({
976 data: function(e, n) {
977 var r, i, s, o, u, a = this[0],
978 f = 0,
979 l = null;
980 if (e === t) {
981 if (this.length) {
982 l = v.data(a);
983 if (a.nodeType === 1 && !v._data(a, "parsedAttrs")) {
984 s = a.attributes;
985 for (u = s.length; f < u; f++) o = s[f].name, o.indexOf("data-") || (o = v.camelCase(o.substring(5)), H(a, o, l[o]));
986 v._data(a, "parsedAttrs", !0)
987 }
988 }
989 return l
990 }
991 return typeof e == "object" ? this.each(function() {
992 v.data(this, e)
993 }) : (r = e.split(".", 2), r[1] = r[1] ? "." + r[1] : "", i = r[1] + "!", v.access(this, function(n) {
994 if (n === t) return l = this.triggerHandler("getData" + i, [r[0]]), l === t && a && (l = v.data(a, e), l = H(a, e, l)), l === t && r[1] ? this.data(r[0]) : l;
995 r[1] = n, this.each(function() {
996 var t = v(this);
997 t.triggerHandler("setData" + i, r), v.data(this, e, n), t.triggerHandler("changeData" + i, r)
998 })
999 }, null, n, arguments.length > 1, null, !1))
1000 },
1001 removeData: function(e) {
1002 return this.each(function() {
1003 v.removeData(this, e)
1004 })
1005 }
1006 }), v.extend({
1007 queue: function(e, t, n) {
1008 var r;
1009 if (e) return t = (t || "fx") + "queue", r = v._data(e, t), n && (!r || v.isArray(n) ? r = v._data(e, t, v.makeArray(n)) : r.push(n)), r || []
1010 },
1011 dequeue: function(e, t) {
1012 t = t || "fx";
1013 var n = v.queue(e, t),
1014 r = n.length,
1015 i = n.shift(),
1016 s = v._queueHooks(e, t),
1017 o = function() {
1018 v.dequeue(e, t)
1019 };
1020 i === "inprogress" && (i = n.shift(), r--), i && (t === "fx" && n.unshift("inprogress"), delete s.stop, i.call(e, o, s)), !r && s && s.empty.fire()
1021 },
1022 _queueHooks: function(e, t) {
1023 var n = t + "queueHooks";
1024 return v._data(e, n) || v._data(e, n, {
1025 empty: v.Callbacks("once memory").add(function() {
1026 v.removeData(e, t + "queue", !0), v.removeData(e, n, !0)
1027 })
1028 })
1029 }
1030 }), v.fn.extend({
1031 queue: function(e, n) {
1032 var r = 2;
1033 return typeof e != "string" && (n = e, e = "fx", r--), arguments.length < r ? v.queue(this[0], e) : n === t ? this : this.each(function() {
1034 var t = v.queue(this, e, n);
1035 v._queueHooks(this, e), e === "fx" && t[0] !== "inprogress" && v.dequeue(this, e)
1036 })
1037 },
1038 dequeue: function(e) {
1039 return this.each(function() {
1040 v.dequeue(this, e)
1041 })
1042 },
1043 delay: function(e, t) {
1044 return e = v.fx ? v.fx.speeds[e] || e : e, t = t || "fx", this.queue(t, function(t, n) {
1045 var r = setTimeout(t, e);
1046 n.stop = function() {
1047 clearTimeout(r)
1048 }
1049 })
1050 },
1051 clearQueue: function(e) {
1052 return this.queue(e || "fx", [])
1053 },
1054 promise: function(e, n) {
1055 var r, i = 1,
1056 s = v.Deferred(),
1057 o = this,
1058 u = this.length,
1059 a = function() {
1060 --i || s.resolveWith(o, [o])
1061 };
1062 typeof e != "string" && (n = e, e = t), e = e || "fx";
1063 while (u--) r = v._data(o[u], e + "queueHooks"), r && r.empty && (i++, r.empty.add(a));
1064 return a(), s.promise(n)
1065 }
1066 });
1067 var j, F, I, q = /[\t\r\n]/g,
1068 R = /\r/g,
1069 U = /^(?:button|input)$/i,
1070 z = /^(?:button|input|object|select|textarea)$/i,
1071 W = /^a(?:rea|)$/i,
1072 X = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
1073 V = v.support.getSetAttribute;
1074 v.fn.extend({
1075 attr: function(e, t) {
1076 return v.access(this, v.attr, e, t, arguments.length > 1)
1077 },
1078 removeAttr: function(e) {
1079 return this.each(function() {
1080 v.removeAttr(this, e)
1081 })
1082 },
1083 prop: function(e, t) {
1084 return v.access(this, v.prop, e, t, arguments.length > 1)
1085 },
1086 removeProp: function(e) {
1087 return e = v.propFix[e] || e, this.each(function() {
1088 try {
1089 this[e] = t, delete this[e]
1090 } catch (n) {}
1091 })
1092 },
1093 addClass: function(e) {
1094 var t, n, r, i, s, o, u;
1095 if (v.isFunction(e)) return this.each(function(t) {
1096 v(this).addClass(e.call(this, t, this.className))
1097 });
1098 if (e && typeof e == "string") {
1099 t = e.split(y);
1100 for (n = 0, r = this.length; n < r; n++) {
1101 i = this[n];
1102 if (i.nodeType === 1)
1103 if (!i.className && t.length === 1) i.className = e;
1104 else {
1105 s = " " + i.className + " ";
1106 for (o = 0, u = t.length; o < u; o++) s.indexOf(" " + t[o] + " ") < 0 && (s += t[o] + " ");
1107 i.className = v.trim(s)
1108 }
1109 }
1110 }
1111 return this
1112 },
1113 removeClass: function(e) {
1114 var n, r, i, s, o, u, a;
1115 if (v.isFunction(e)) return this.each(function(t) {
1116 v(this).removeClass(e.call(this, t, this.className))
1117 });
1118 if (e && typeof e == "string" || e === t) {
1119 n = (e || "").split(y);
1120 for (u = 0, a = this.length; u < a; u++) {
1121 i = this[u];
1122 if (i.nodeType === 1 && i.className) {
1123 r = (" " + i.className + " ").replace(q, " ");
1124 for (s = 0, o = n.length; s < o; s++)
1125 while (r.indexOf(" " + n[s] + " ") >= 0) r = r.replace(" " + n[s] + " ", " ");
1126 i.className = e ? v.trim(r) : ""
1127 }
1128 }
1129 }
1130 return this
1131 },
1132 toggleClass: function(e, t) {
1133 var n = typeof e,
1134 r = typeof t == "boolean";
1135 return v.isFunction(e) ? this.each(function(n) {
1136 v(this).toggleClass(e.call(this, n, this.className, t), t)
1137 }) : this.each(function() {
1138 if (n === "string") {
1139 var i, s = 0,
1140 o = v(this),
1141 u = t,
1142 a = e.split(y);
1143 while (i = a[s++]) u = r ? u : !o.hasClass(i), o[u ? "addClass" : "removeClass"](i)
1144 } else if (n === "undefined" || n === "boolean") this.className && v._data(this, "__className__", this.className), this.className = this.className || e === !1 ? "" : v._data(this, "__className__") || ""
1145 })
1146 },
1147 hasClass: function(e) {
1148 var t = " " + e + " ",
1149 n = 0,
1150 r = this.length;
1151 for (; n < r; n++)
1152 if (this[n].nodeType === 1 && (" " + this[n].className + " ").replace(q, " ").indexOf(t) >= 0) return !0;
1153 return !1
1154 },
1155 val: function(e) {
1156 var n, r, i, s = this[0];
1157 if (!arguments.length) {
1158 if (s) return n = v.valHooks[s.type] || v.valHooks[s.nodeName.toLowerCase()], n && "get" in n && (r = n.get(s, "value")) !== t ? r : (r = s.value, typeof r == "string" ? r.replace(R, "") : r == null ? "" : r);
1159 return
1160 }
1161 return i = v.isFunction(e), this.each(function(r) {
1162 var s, o = v(this);
1163 if (this.nodeType !== 1) return;
1164 i ? s = e.call(this, r, o.val()) : s = e, s == null ? s = "" : typeof s == "number" ? s += "" : v.isArray(s) && (s = v.map(s, function(e) {
1165 return e == null ? "" : e + ""
1166 })), n = v.valHooks[this.type] || v.valHooks[this.nodeName.toLowerCase()];
1167 if (!n || !("set" in n) || n.set(this, s, "value") === t) this.value = s
1168 })
1169 }
1170 }), v.extend({
1171 valHooks: {
1172 option: {
1173 get: function(e) {
1174 var t = e.attributes.value;
1175 return !t || t.specified ? e.value : e.text
1176 }
1177 },
1178 select: {
1179 get: function(e) {
1180 var t, n, r = e.options,
1181 i = e.selectedIndex,
1182 s = e.type === "select-one" || i < 0,
1183 o = s ? null : [],
1184 u = s ? i + 1 : r.length,
1185 a = i < 0 ? u : s ? i : 0;
1186 for (; a < u; a++) {
1187 n = r[a];
1188 if ((n.selected || a === i) && (v.support.optDisabled ? !n.disabled : n.getAttribute("disabled") === null) && (!n.parentNode.disabled || !v.nodeName(n.parentNode, "optgroup"))) {
1189 t = v(n).val();
1190 if (s) return t;
1191 o.push(t)
1192 }
1193 }
1194 return o
1195 },
1196 set: function(e, t) {
1197 var n = v.makeArray(t);
1198 return v(e).find("option").each(function() {
1199 this.selected = v.inArray(v(this).val(), n) >= 0
1200 }), n.length || (e.selectedIndex = -1), n
1201 }
1202 }
1203 },
1204 attrFn: {},
1205 attr: function(e, n, r, i) {
1206 var s, o, u, a = e.nodeType;
1207 if (!e || a === 3 || a === 8 || a === 2) return;
1208 if (i && v.isFunction(v.fn[n])) return v(e)[n](r);
1209 if (typeof e.getAttribute == "undefined") return v.prop(e, n, r);
1210 u = a !== 1 || !v.isXMLDoc(e), u && (n = n.toLowerCase(), o = v.attrHooks[n] || (X.test(n) ? F : j));
1211 if (r !== t) {
1212 if (r === null) {
1213 v.removeAttr(e, n);
1214 return
1215 }
1216 return o && "set" in o && u && (s = o.set(e, r, n)) !== t ? s : (e.setAttribute(n, r + ""), r)
1217 }
1218 return o && "get" in o && u && (s = o.get(e, n)) !== null ? s : (s = e.getAttribute(n), s === null ? t : s)
1219 },
1220 removeAttr: function(e, t) {
1221 var n, r, i, s, o = 0;
1222 if (t && e.nodeType === 1) {
1223 r = t.split(y);
1224 for (; o < r.length; o++) i = r[o], i && (n = v.propFix[i] || i, s = X.test(i), s || v.attr(e, i, ""), e.removeAttribute(V ? i : n), s && n in e && (e[n] = !1))
1225 }
1226 },
1227 attrHooks: {
1228 type: {
1229 set: function(e, t) {
1230 if (U.test(e.nodeName) && e.parentNode) v.error("type property can't be changed");
1231 else if (!v.support.radioValue && t === "radio" && v.nodeName(e, "input")) {
1232 var n = e.value;
1233 return e.setAttribute("type", t), n && (e.value = n), t
1234 }
1235 }
1236 },
1237 value: {
1238 get: function(e, t) {
1239 return j && v.nodeName(e, "button") ? j.get(e, t) : t in e ? e.value : null
1240 },
1241 set: function(e, t, n) {
1242 if (j && v.nodeName(e, "button")) return j.set(e, t, n);
1243 e.value = t
1244 }
1245 }
1246 },
1247 propFix: {
1248 tabindex: "tabIndex",
1249 readonly: "readOnly",
1250 "for": "htmlFor",
1251 "class": "className",
1252 maxlength: "maxLength",
1253 cellspacing: "cellSpacing",
1254 cellpadding: "cellPadding",
1255 rowspan: "rowSpan",
1256 colspan: "colSpan",
1257 usemap: "useMap",
1258 frameborder: "frameBorder",
1259 contenteditable: "contentEditable"
1260 },
1261 prop: function(e, n, r) {
1262 var i, s, o, u = e.nodeType;
1263 if (!e || u === 3 || u === 8 || u === 2) return;
1264 return o = u !== 1 || !v.isXMLDoc(e), o && (n = v.propFix[n] || n, s = v.propHooks[n]), r !== t ? s && "set" in s && (i = s.set(e, r, n)) !== t ? i : e[n] = r : s && "get" in s && (i = s.get(e, n)) !== null ? i : e[n]
1265 },
1266 propHooks: {
1267 tabIndex: {
1268 get: function(e) {
1269 var n = e.getAttributeNode("tabindex");
1270 return n && n.specified ? parseInt(n.value, 10) : z.test(e.nodeName) || W.test(e.nodeName) && e.href ? 0 : t
1271 }
1272 }
1273 }
1274 }), F = {
1275 get: function(e, n) {
1276 var r, i = v.prop(e, n);
1277 return i === !0 || typeof i != "boolean" && (r = e.getAttributeNode(n)) && r.nodeValue !== !1 ? n.toLowerCase() : t
1278 },
1279 set: function(e, t, n) {
1280 var r;
1281 return t === !1 ? v.removeAttr(e, n) : (r = v.propFix[n] || n, r in e && (e[r] = !0), e.setAttribute(n, n.toLowerCase())), n
1282 }
1283 }, V || (I = {
1284 name: !0,
1285 id: !0,
1286 coords: !0
1287 }, j = v.valHooks.button = {
1288 get: function(e, n) {
1289 var r;
1290 return r = e.getAttributeNode(n), r && (I[n] ? r.value !== "" : r.specified) ? r.value : t
1291 },
1292 set: function(e, t, n) {
1293 var r = e.getAttributeNode(n);
1294 return r || (r = i.createAttribute(n), e.setAttributeNode(r)), r.value = t + ""
1295 }
1296 }, v.each(["width", "height"], function(e, t) {
1297 v.attrHooks[t] = v.extend(v.attrHooks[t], {
1298 set: function(e, n) {
1299 if (n === "") return e.setAttribute(t, "auto"), n
1300 }
1301 })
1302 }), v.attrHooks.contenteditable = {
1303 get: j.get,
1304 set: function(e, t, n) {
1305 t === "" && (t = "false"), j.set(e, t, n)
1306 }
1307 }), v.support.hrefNormalized || v.each(["href", "src", "width", "height"], function(e, n) {
1308 v.attrHooks[n] = v.extend(v.attrHooks[n], {
1309 get: function(e) {
1310 var r = e.getAttribute(n, 2);
1311 return r === null ? t : r
1312 }
1313 })
1314 }), v.support.style || (v.attrHooks.style = {
1315 get: function(e) {
1316 return e.style.cssText.toLowerCase() || t
1317 },
1318 set: function(e, t) {
1319 return e.style.cssText = t + ""
1320 }
1321 }), v.support.optSelected || (v.propHooks.selected = v.extend(v.propHooks.selected, {
1322 get: function(e) {
1323 var t = e.parentNode;
1324 return t && (t.selectedIndex, t.parentNode && t.parentNode.selectedIndex), null
1325 }
1326 })), v.support.enctype || (v.propFix.enctype = "encoding"), v.support.checkOn || v.each(["radio", "checkbox"], function() {
1327 v.valHooks[this] = {
1328 get: function(e) {
1329 return e.getAttribute("value") === null ? "on" : e.value
1330 }
1331 }
1332 }), v.each(["radio", "checkbox"], function() {
1333 v.valHooks[this] = v.extend(v.valHooks[this], {
1334 set: function(e, t) {
1335 if (v.isArray(t)) return e.checked = v.inArray(v(e).val(), t) >= 0
1336 }
1337 })
1338 });
1339 var $ = /^(?:textarea|input|select)$/i,
1340 J = /^([^\.]*|)(?:\.(.+)|)$/,
1341 K = /(?:^|\s)hover(\.\S+|)\b/,
1342 Q = /^key/,
1343 G = /^(?:mouse|contextmenu)|click/,
1344 Y = /^(?:focusinfocus|focusoutblur)$/,
1345 Z = function(e) {
1346 return v.event.special.hover ? e : e.replace(K, "mouseenter$1 mouseleave$1")
1347 };
1348 v.event = {
1349 add: function(e, n, r, i, s) {
1350 var o, u, a, f, l, c, h, p, d, m, g;
1351 if (e.nodeType === 3 || e.nodeType === 8 || !n || !r || !(o = v._data(e))) return;
1352 r.handler && (d = r, r = d.handler, s = d.selector), r.guid || (r.guid = v.guid++), a = o.events, a || (o.events = a = {}), u = o.handle, u || (o.handle = u = function(e) {
1353 return typeof v == "undefined" || !!e && v.event.triggered === e.type ? t : v.event.dispatch.apply(u.elem, arguments)
1354 }, u.elem = e), n = v.trim(Z(n)).split(" ");
1355 for (f = 0; f < n.length; f++) {
1356 l = J.exec(n[f]) || [], c = l[1], h = (l[2] || "").split(".").sort(), g = v.event.special[c] || {}, c = (s ? g.delegateType : g.bindType) || c, g = v.event.special[c] || {}, p = v.extend({
1357 type: c,
1358 origType: l[1],
1359 data: i,
1360 handler: r,
1361 guid: r.guid,
1362 selector: s,
1363 needsContext: s && v.expr.match.needsContext.test(s),
1364 namespace: h.join(".")
1365 }, d), m = a[c];
1366 if (!m) {
1367 m = a[c] = [], m.delegateCount = 0;
1368 if (!g.setup || g.setup.call(e, i, h, u) === !1) e.addEventListener ? e.addEventListener(c, u, !1) : e.attachEvent && e.attachEvent("on" + c, u)
1369 }
1370 g.add && (g.add.call(e, p), p.handler.guid || (p.handler.guid = r.guid)), s ? m.splice(m.delegateCount++, 0, p) : m.push(p), v.event.global[c] = !0
1371 }
1372 e = null
1373 },
1374 global: {},
1375 remove: function(e, t, n, r, i) {
1376 var s, o, u, a, f, l, c, h, p, d, m, g = v.hasData(e) && v._data(e);
1377 if (!g || !(h = g.events)) return;
1378 t = v.trim(Z(t || "")).split(" ");
1379 for (s = 0; s < t.length; s++) {
1380 o = J.exec(t[s]) || [], u = a = o[1], f = o[2];
1381 if (!u) {
1382 for (u in h) v.event.remove(e, u + t[s], n, r, !0);
1383 continue
1384 }
1385 p = v.event.special[u] || {}, u = (r ? p.delegateType : p.bindType) || u, d = h[u] || [], l = d.length, f = f ? new RegExp("(^|\\.)" + f.split(".").sort().join("\\.(?:.*\\.|)") + "(\\.|$)") : null;
1386 for (c = 0; c < d.length; c++) m = d[c], (i || a === m.origType) && (!n || n.guid === m.guid) && (!f || f.test(m.namespace)) && (!r || r === m.selector || r === "**" && m.selector) && (d.splice(c--, 1), m.selector && d.delegateCount--, p.remove && p.remove.call(e, m));
1387 d.length === 0 && l !== d.length && ((!p.teardown || p.teardown.call(e, f, g.handle) === !1) && v.removeEvent(e, u, g.handle), delete h[u])
1388 }
1389 v.isEmptyObject(h) && (delete g.handle, v.removeData(e, "events", !0))
1390 },
1391 customEvent: {
1392 getData: !0,
1393 setData: !0,
1394 changeData: !0
1395 },
1396 trigger: function(n, r, s, o) {
1397 if (!s || s.nodeType !== 3 && s.nodeType !== 8) {
1398 var u, a, f, l, c, h, p, d, m, g, y = n.type || n,
1399 b = [];
1400 if (Y.test(y + v.event.triggered)) return;
1401 y.indexOf("!") >= 0 && (y = y.slice(0, -1), a = !0), y.indexOf(".") >= 0 && (b = y.split("."), y = b.shift(), b.sort());
1402 if ((!s || v.event.customEvent[y]) && !v.event.global[y]) return;
1403 n = typeof n == "object" ? n[v.expando] ? n : new v.Event(y, n) : new v.Event(y), n.type = y, n.isTrigger = !0, n.exclusive = a, n.namespace = b.join("."), n.namespace_re = n.namespace ? new RegExp("(^|\\.)" + b.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, h = y.indexOf(":") < 0 ? "on" + y : "";
1404 if (!s) {
1405 u = v.cache;
1406 for (f in u) u[f].events && u[f].events[y] && v.event.trigger(n, r, u[f].handle.elem, !0);
1407 return
1408 }
1409 n.result = t, n.target || (n.target = s), r = r != null ? v.makeArray(r) : [], r.unshift(n), p = v.event.special[y] || {};
1410 if (p.trigger && p.trigger.apply(s, r) === !1) return;
1411 m = [
1412 [s, p.bindType || y]
1413 ];
1414 if (!o && !p.noBubble && !v.isWindow(s)) {
1415 g = p.delegateType || y, l = Y.test(g + y) ? s : s.parentNode;
1416 for (c = s; l; l = l.parentNode) m.push([l, g]), c = l;
1417 c === (s.ownerDocument || i) && m.push([c.defaultView || c.parentWindow || e, g])
1418 }
1419 for (f = 0; f < m.length && !n.isPropagationStopped(); f++) l = m[f][0], n.type = m[f][1], d = (v._data(l, "events") || {})[n.type] && v._data(l, "handle"), d && d.apply(l, r), d = h && l[h], d && v.acceptData(l) && d.apply && d.apply(l, r) === !1 && n.preventDefault();
1420 return n.type = y, !o && !n.isDefaultPrevented() && (!p._default || p._default.apply(s.ownerDocument, r) === !1) && (y !== "click" || !v.nodeName(s, "a")) && v.acceptData(s) && h && s[y] && (y !== "focus" && y !== "blur" || n.target.offsetWidth !== 0) && !v.isWindow(s) && (c = s[h], c && (s[h] = null), v.event.triggered = y, s[y](), v.event.triggered = t, c && (s[h] = c)), n.result
1421 }
1422 return
1423 },
1424 dispatch: function(n) {
1425 n = v.event.fix(n || e.event);
1426 var r, i, s, o, u, a, f, c, h, p, d = (v._data(this, "events") || {})[n.type] || [],
1427 m = d.delegateCount,
1428 g = l.call(arguments),
1429 y = !n.exclusive && !n.namespace,
1430 b = v.event.special[n.type] || {},
1431 w = [];
1432 g[0] = n, n.delegateTarget = this;
1433 if (b.preDispatch && b.preDispatch.call(this, n) === !1) return;
1434 if (m && (!n.button || n.type !== "click"))
1435 for (s = n.target; s != this; s = s.parentNode || this)
1436 if (s.disabled !== !0 || n.type !== "click") {
1437 u = {}, f = [];
1438 for (r = 0; r < m; r++) c = d[r], h = c.selector, u[h] === t && (u[h] = c.needsContext ? v(h, this).index(s) >= 0 : v.find(h, this, null, [s]).length), u[h] && f.push(c);
1439 f.length && w.push({
1440 elem: s,
1441 matches: f
1442 })
1443 }
1444 d.length > m && w.push({
1445 elem: this,
1446 matches: d.slice(m)
1447 });
1448 for (r = 0; r < w.length && !n.isPropagationStopped(); r++) {
1449 a = w[r], n.currentTarget = a.elem;
1450 for (i = 0; i < a.matches.length && !n.isImmediatePropagationStopped(); i++) {
1451 c = a.matches[i];
1452 if (y || !n.namespace && !c.namespace || n.namespace_re && n.namespace_re.test(c.namespace)) n.data = c.data, n.handleObj = c, o = ((v.event.special[c.origType] || {}).handle || c.handler).apply(a.elem, g), o !== t && (n.result = o, o === !1 && (n.preventDefault(), n.stopPropagation()))
1453 }
1454 }
1455 return b.postDispatch && b.postDispatch.call(this, n), n.result
1456 },
1457 props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
1458 fixHooks: {},
1459 keyHooks: {
1460 props: "char charCode key keyCode".split(" "),
1461 filter: function(e, t) {
1462 return e.which == null && (e.which = t.charCode != null ? t.charCode : t.keyCode), e
1463 }
1464 },
1465 mouseHooks: {
1466 props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
1467 filter: function(e, n) {
1468 var r, s, o, u = n.button,
1469 a = n.fromElement;
1470 return e.pageX == null && n.clientX != null && (r = e.target.ownerDocument || i, s = r.documentElement, o = r.body, e.pageX = n.clientX + (s && s.scrollLeft || o && o.scrollLeft || 0) - (s && s.clientLeft || o && o.clientLeft || 0), e.pageY = n.clientY + (s && s.scrollTop || o && o.scrollTop || 0) - (s && s.clientTop || o && o.clientTop || 0)), !e.relatedTarget && a && (e.relatedTarget = a === e.target ? n.toElement : a), !e.which && u !== t && (e.which = u & 1 ? 1 : u & 2 ? 3 : u & 4 ? 2 : 0), e
1471 }
1472 },
1473 fix: function(e) {
1474 if (e[v.expando]) return e;
1475 var t, n, r = e,
1476 s = v.event.fixHooks[e.type] || {},
1477 o = s.props ? this.props.concat(s.props) : this.props;
1478 e = v.Event(r);
1479 for (t = o.length; t;) n = o[--t], e[n] = r[n];
1480 return e.target || (e.target = r.srcElement || i), e.target.nodeType === 3 && (e.target = e.target.parentNode), e.metaKey = !!e.metaKey, s.filter ? s.filter(e, r) : e
1481 },
1482 special: {
1483 load: {
1484 noBubble: !0
1485 },
1486 focus: {
1487 delegateType: "focusin"
1488 },
1489 blur: {
1490 delegateType: "focusout"
1491 },
1492 beforeunload: {
1493 setup: function(e, t, n) {
1494 v.isWindow(this) && (this.onbeforeunload = n)
1495 },
1496 teardown: function(e, t) {
1497 this.onbeforeunload === t && (this.onbeforeunload = null)
1498 }
1499 }
1500 },
1501 simulate: function(e, t, n, r) {
1502 var i = v.extend(new v.Event, n, {
1503 type: e,
1504 isSimulated: !0,
1505 originalEvent: {}
1506 });
1507 r ? v.event.trigger(i, null, t) : v.event.dispatch.call(t, i), i.isDefaultPrevented() && n.preventDefault()
1508 }
1509 }, v.event.handle = v.event.dispatch, v.removeEvent = i.removeEventListener ? function(e, t, n) {
1510 e.removeEventListener && e.removeEventListener(t, n, !1)
1511 } : function(e, t, n) {
1512 var r = "on" + t;
1513 e.detachEvent && (typeof e[r] == "undefined" && (e[r] = null), e.detachEvent(r, n))
1514 }, v.Event = function(e, t) {
1515 if (!(this instanceof v.Event)) return new v.Event(e, t);
1516 e && e.type ? (this.originalEvent = e, this.type = e.type, this.isDefaultPrevented = e.defaultPrevented || e.returnValue === !1 || e.getPreventDefault && e.getPreventDefault() ? tt : et) : this.type = e, t && v.extend(this, t), this.timeStamp = e && e.timeStamp || v.now(), this[v.expando] = !0
1517 }, v.Event.prototype = {
1518 preventDefault: function() {
1519 this.isDefaultPrevented = tt;
1520 var e = this.originalEvent;
1521 if (!e) return;
1522 e.preventDefault ? e.preventDefault() : e.returnValue = !1
1523 },
1524 stopPropagation: function() {
1525 this.isPropagationStopped = tt;
1526 var e = this.originalEvent;
1527 if (!e) return;
1528 e.stopPropagation && e.stopPropagation(), e.cancelBubble = !0
1529 },
1530 stopImmediatePropagation: function() {
1531 this.isImmediatePropagationStopped = tt, this.stopPropagation()
1532 },
1533 isDefaultPrevented: et,
1534 isPropagationStopped: et,
1535 isImmediatePropagationStopped: et
1536 }, v.each({
1537 mouseenter: "mouseover",
1538 mouseleave: "mouseout"
1539 }, function(e, t) {
1540 v.event.special[e] = {
1541 delegateType: t,
1542 bindType: t,
1543 handle: function(e) {
1544 var n, r = this,
1545 i = e.relatedTarget,
1546 s = e.handleObj,
1547 o = s.selector;
1548 if (!i || i !== r && !v.contains(r, i)) e.type = s.origType, n = s.handler.apply(this, arguments), e.type = t;
1549 return n
1550 }
1551 }
1552 }), v.support.submitBubbles || (v.event.special.submit = {
1553 setup: function() {
1554 if (v.nodeName(this, "form")) return !1;
1555 v.event.add(this, "click._submit keypress._submit", function(e) {
1556 var n = e.target,
1557 r = v.nodeName(n, "input") || v.nodeName(n, "button") ? n.form : t;
1558 r && !v._data(r, "_submit_attached") && (v.event.add(r, "submit._submit", function(e) {
1559 e._submit_bubble = !0
1560 }), v._data(r, "_submit_attached", !0))
1561 })
1562 },
1563 postDispatch: function(e) {
1564 e._submit_bubble && (delete e._submit_bubble, this.parentNode && !e.isTrigger && v.event.simulate("submit", this.parentNode, e, !0))
1565 },
1566 teardown: function() {
1567 if (v.nodeName(this, "form")) return !1;
1568 v.event.remove(this, "._submit")
1569 }
1570 }), v.support.changeBubbles || (v.event.special.change = {
1571 setup: function() {
1572 if ($.test(this.nodeName)) {
1573 if (this.type === "checkbox" || this.type === "radio") v.event.add(this, "propertychange._change", function(e) {
1574 e.originalEvent.propertyName === "checked" && (this._just_changed = !0)
1575 }), v.event.add(this, "click._change", function(e) {
1576 this._just_changed && !e.isTrigger && (this._just_changed = !1), v.event.simulate("change", this, e, !0)
1577 });
1578 return !1
1579 }
1580 v.event.add(this, "beforeactivate._change", function(e) {
1581 var t = e.target;
1582 $.test(t.nodeName) && !v._data(t, "_change_attached") && (v.event.add(t, "change._change", function(e) {
1583 this.parentNode && !e.isSimulated && !e.isTrigger && v.event.simulate("change", this.parentNode, e, !0)
1584 }), v._data(t, "_change_attached", !0))
1585 })
1586 },
1587 handle: function(e) {
1588 var t = e.target;
1589 if (this !== t || e.isSimulated || e.isTrigger || t.type !== "radio" && t.type !== "checkbox") return e.handleObj.handler.apply(this, arguments)
1590 },
1591 teardown: function() {
1592 return v.event.remove(this, "._change"), !$.test(this.nodeName)
1593 }
1594 }), v.support.focusinBubbles || v.each({
1595 focus: "focusin",
1596 blur: "focusout"
1597 }, function(e, t) {
1598 var n = 0,
1599 r = function(e) {
1600 v.event.simulate(t, e.target, v.event.fix(e), !0)
1601 };
1602 v.event.special[t] = {
1603 setup: function() {
1604 n++ === 0 && i.addEventListener(e, r, !0)
1605 },
1606 teardown: function() {
1607 --n === 0 && i.removeEventListener(e, r, !0)
1608 }
1609 }
1610 }), v.fn.extend({
1611 on: function(e, n, r, i, s) {
1612 var o, u;
1613 if (typeof e == "object") {
1614 typeof n != "string" && (r = r || n, n = t);
1615 for (u in e) this.on(u, n, r, e[u], s);
1616 return this
1617 }
1618 r == null && i == null ? (i = n, r = n = t) : i == null && (typeof n == "string" ? (i = r, r = t) : (i = r, r = n, n = t));
1619 if (i === !1) i = et;
1620 else if (!i) return this;
1621 return s === 1 && (o = i, i = function(e) {
1622 return v().off(e), o.apply(this, arguments)
1623 }, i.guid = o.guid || (o.guid = v.guid++)), this.each(function() {
1624 v.event.add(this, e, i, r, n)
1625 })
1626 },
1627 one: function(e, t, n, r) {
1628 return this.on(e, t, n, r, 1)
1629 },
1630 off: function(e, n, r) {
1631 var i, s;
1632 if (e && e.preventDefault && e.handleObj) return i = e.handleObj, v(e.delegateTarget).off(i.namespace ? i.origType + "." + i.namespace : i.origType, i.selector, i.handler), this;
1633 if (typeof e == "object") {
1634 for (s in e) this.off(s, n, e[s]);
1635 return this
1636 }
1637 if (n === !1 || typeof n == "function") r = n, n = t;
1638 return r === !1 && (r = et), this.each(function() {
1639 v.event.remove(this, e, r, n)
1640 })
1641 },
1642 bind: function(e, t, n) {
1643 return this.on(e, null, t, n)
1644 },
1645 unbind: function(e, t) {
1646 return this.off(e, null, t)
1647 },
1648 live: function(e, t, n) {
1649 return v(this.context).on(e, this.selector, t, n), this
1650 },
1651 die: function(e, t) {
1652 return v(this.context).off(e, this.selector || "**", t), this
1653 },
1654 delegate: function(e, t, n, r) {
1655 return this.on(t, e, n, r)
1656 },
1657 undelegate: function(e, t, n) {
1658 return arguments.length === 1 ? this.off(e, "**") : this.off(t, e || "**", n)
1659 },
1660 trigger: function(e, t) {
1661 return this.each(function() {
1662 v.event.trigger(e, t, this)
1663 })
1664 },
1665 triggerHandler: function(e, t) {
1666 if (this[0]) return v.event.trigger(e, t, this[0], !0)
1667 },
1668 toggle: function(e) {
1669 var t = arguments,
1670 n = e.guid || v.guid++,
1671 r = 0,
1672 i = function(n) {
1673 var i = (v._data(this, "lastToggle" + e.guid) || 0) % r;
1674 return v._data(this, "lastToggle" + e.guid, i + 1), n.preventDefault(), t[i].apply(this, arguments) || !1
1675 };
1676 i.guid = n;
1677 while (r < t.length) t[r++].guid = n;
1678 return this.click(i)
1679 },
1680 hover: function(e, t) {
1681 return this.mouseenter(e).mouseleave(t || e)
1682 }
1683 }), v.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "), function(e, t) {
1684 v.fn[t] = function(e, n) {
1685 return n == null && (n = e, e = null), arguments.length > 0 ? this.on(t, null, e, n) : this.trigger(t)
1686 }, Q.test(t) && (v.event.fixHooks[t] = v.event.keyHooks), G.test(t) && (v.event.fixHooks[t] = v.event.mouseHooks)
1687 }),
1688 function(e, t) {
1689 function nt(e, t, n, r) {
1690 n = n || [], t = t || g;
1691 var i, s, a, f, l = t.nodeType;
1692 if (!e || typeof e != "string") return n;
1693 if (l !== 1 && l !== 9) return [];
1694 a = o(t);
1695 if (!a && !r)
1696 if (i = R.exec(e))
1697 if (f = i[1]) {
1698 if (l === 9) {
1699 s = t.getElementById(f);
1700 if (!s || !s.parentNode) return n;
1701 if (s.id === f) return n.push(s), n
1702 } else if (t.ownerDocument && (s = t.ownerDocument.getElementById(f)) && u(t, s) && s.id === f) return n.push(s), n
1703 } else {
1704 if (i[2]) return S.apply(n, x.call(t.getElementsByTagName(e), 0)), n;
1705 if ((f = i[3]) && Z && t.getElementsByClassName) return S.apply(n, x.call(t.getElementsByClassName(f), 0)), n
1706 }
1707 return vt(e.replace(j, "$1"), t, n, r, a)
1708 }
1709
1710 function rt(e) {
1711 return function(t) {
1712 var n = t.nodeName.toLowerCase();
1713 return n === "input" && t.type === e
1714 }
1715 }
1716
1717 function it(e) {
1718 return function(t) {
1719 var n = t.nodeName.toLowerCase();
1720 return (n === "input" || n === "button") && t.type === e
1721 }
1722 }
1723
1724 function st(e) {
1725 return N(function(t) {
1726 return t = +t, N(function(n, r) {
1727 var i, s = e([], n.length, t),
1728 o = s.length;
1729 while (o--) n[i = s[o]] && (n[i] = !(r[i] = n[i]))
1730 })
1731 })
1732 }
1733
1734 function ot(e, t, n) {
1735 if (e === t) return n;
1736 var r = e.nextSibling;
1737 while (r) {
1738 if (r === t) return -1;
1739 r = r.nextSibling
1740 }
1741 return 1
1742 }
1743
1744 function ut(e, t) {
1745 var n, r, s, o, u, a, f, l = L[d][e + " "];
1746 if (l) return t ? 0 : l.slice(0);
1747 u = e, a = [], f = i.preFilter;
1748 while (u) {
1749 if (!n || (r = F.exec(u))) r && (u = u.slice(r[0].length) || u), a.push(s = []);
1750 n = !1;
1751 if (r = I.exec(u)) s.push(n = new m(r.shift())), u = u.slice(n.length), n.type = r[0].replace(j, " ");
1752 for (o in i.filter)(r = J[o].exec(u)) && (!f[o] || (r = f[o](r))) && (s.push(n = new m(r.shift())), u = u.slice(n.length), n.type = o, n.matches = r);
1753 if (!n) break
1754 }
1755 return t ? u.length : u ? nt.error(e) : L(e, a).slice(0)
1756 }
1757
1758 function at(e, t, r) {
1759 var i = t.dir,
1760 s = r && t.dir === "parentNode",
1761 o = w++;
1762 return t.first ? function(t, n, r) {
1763 while (t = t[i])
1764 if (s || t.nodeType === 1) return e(t, n, r)
1765 } : function(t, r, u) {
1766 if (!u) {
1767 var a, f = b + " " + o + " ",
1768 l = f + n;
1769 while (t = t[i])
1770 if (s || t.nodeType === 1) {
1771 if ((a = t[d]) === l) return t.sizset;
1772 if (typeof a == "string" && a.indexOf(f) === 0) {
1773 if (t.sizset) return t
1774 } else {
1775 t[d] = l;
1776 if (e(t, r, u)) return t.sizset = !0, t;
1777 t.sizset = !1
1778 }
1779 }
1780 } else
1781 while (t = t[i])
1782 if (s || t.nodeType === 1)
1783 if (e(t, r, u)) return t
1784 }
1785 }
1786
1787 function ft(e) {
1788 return e.length > 1 ? function(t, n, r) {
1789 var i = e.length;
1790 while (i--)
1791 if (!e[i](t, n, r)) return !1;
1792 return !0
1793 } : e[0]
1794 }
1795
1796 function lt(e, t, n, r, i) {
1797 var s, o = [],
1798 u = 0,
1799 a = e.length,
1800 f = t != null;
1801 for (; u < a; u++)
1802 if (s = e[u])
1803 if (!n || n(s, r, i)) o.push(s), f && t.push(u);
1804 return o
1805 }
1806
1807 function ct(e, t, n, r, i, s) {
1808 return r && !r[d] && (r = ct(r)), i && !i[d] && (i = ct(i, s)), N(function(s, o, u, a) {
1809 var f, l, c, h = [],
1810 p = [],
1811 d = o.length,
1812 v = s || dt(t || "*", u.nodeType ? [u] : u, []),
1813 m = e && (s || !t) ? lt(v, h, e, u, a) : v,
1814 g = n ? i || (s ? e : d || r) ? [] : o : m;
1815 n && n(m, g, u, a);
1816 if (r) {
1817 f = lt(g, p), r(f, [], u, a), l = f.length;
1818 while (l--)
1819 if (c = f[l]) g[p[l]] = !(m[p[l]] = c)
1820 }
1821 if (s) {
1822 if (i || e) {
1823 if (i) {
1824 f = [], l = g.length;
1825 while (l--)(c = g[l]) && f.push(m[l] = c);
1826 i(null, g = [], f, a)
1827 }
1828 l = g.length;
1829 while (l--)(c = g[l]) && (f = i ? T.call(s, c) : h[l]) > -1 && (s[f] = !(o[f] = c))
1830 }
1831 } else g = lt(g === o ? g.splice(d, g.length) : g), i ? i(null, o, g, a) : S.apply(o, g)
1832 })
1833 }
1834
1835 function ht(e) {
1836 var t, n, r, s = e.length,
1837 o = i.relative[e[0].type],
1838 u = o || i.relative[" "],
1839 a = o ? 1 : 0,
1840 f = at(function(e) {
1841 return e === t
1842 }, u, !0),
1843 l = at(function(e) {
1844 return T.call(t, e) > -1
1845 }, u, !0),
1846 h = [
1847 function(e, n, r) {
1848 return !o && (r || n !== c) || ((t = n).nodeType ? f(e, n, r) : l(e, n, r))
1849 }
1850 ];
1851 for (; a < s; a++)
1852 if (n = i.relative[e[a].type]) h = [at(ft(h), n)];
1853 else {
1854 n = i.filter[e[a].type].apply(null, e[a].matches);
1855 if (n[d]) {
1856 r = ++a;
1857 for (; r < s; r++)
1858 if (i.relative[e[r].type]) break;
1859 return ct(a > 1 && ft(h), a > 1 && e.slice(0, a - 1).join("").replace(j, "$1"), n, a < r && ht(e.slice(a, r)), r < s && ht(e = e.slice(r)), r < s && e.join(""))
1860 }
1861 h.push(n)
1862 }
1863 return ft(h)
1864 }
1865
1866 function pt(e, t) {
1867 var r = t.length > 0,
1868 s = e.length > 0,
1869 o = function(u, a, f, l, h) {
1870 var p, d, v, m = [],
1871 y = 0,
1872 w = "0",
1873 x = u && [],
1874 T = h != null,
1875 N = c,
1876 C = u || s && i.find.TAG("*", h && a.parentNode || a),
1877 k = b += N == null ? 1 : Math.E;
1878 T && (c = a !== g && a, n = o.el);
1879 for (;
1880 (p = C[w]) != null; w++) {
1881 if (s && p) {
1882 for (d = 0; v = e[d]; d++)
1883 if (v(p, a, f)) {
1884 l.push(p);
1885 break
1886 }
1887 T && (b = k, n = ++o.el)
1888 }
1889 r && ((p = !v && p) && y--, u && x.push(p))
1890 }
1891 y += w;
1892 if (r && w !== y) {
1893 for (d = 0; v = t[d]; d++) v(x, m, a, f);
1894 if (u) {
1895 if (y > 0)
1896 while (w--)!x[w] && !m[w] && (m[w] = E.call(l));
1897 m = lt(m)
1898 }
1899 S.apply(l, m), T && !u && m.length > 0 && y + t.length > 1 && nt.uniqueSort(l)
1900 }
1901 return T && (b = k, c = N), x
1902 };
1903 return o.el = 0, r ? N(o) : o
1904 }
1905
1906 function dt(e, t, n) {
1907 var r = 0,
1908 i = t.length;
1909 for (; r < i; r++) nt(e, t[r], n);
1910 return n
1911 }
1912
1913 function vt(e, t, n, r, s) {
1914 var o, u, f, l, c, h = ut(e),
1915 p = h.length;
1916 if (!r && h.length === 1) {
1917 u = h[0] = h[0].slice(0);
1918 if (u.length > 2 && (f = u[0]).type === "ID" && t.nodeType === 9 && !s && i.relative[u[1].type]) {
1919 t = i.find.ID(f.matches[0].replace($, ""), t, s)[0];
1920 if (!t) return n;
1921 e = e.slice(u.shift().length)
1922 }
1923 for (o = J.POS.test(e) ? -1 : u.length - 1; o >= 0; o--) {
1924 f = u[o];
1925 if (i.relative[l = f.type]) break;
1926 if (c = i.find[l])
1927 if (r = c(f.matches[0].replace($, ""), z.test(u[0].type) && t.parentNode || t, s)) {
1928 u.splice(o, 1), e = r.length && u.join("");
1929 if (!e) return S.apply(n, x.call(r, 0)), n;
1930 break
1931 }
1932 }
1933 }
1934 return a(e, h)(r, t, s, n, z.test(e)), n
1935 }
1936
1937 function mt() {}
1938 var n, r, i, s, o, u, a, f, l, c, h = !0,
1939 p = "undefined",
1940 d = ("sizcache" + Math.random()).replace(".", ""),
1941 m = String,
1942 g = e.document,
1943 y = g.documentElement,
1944 b = 0,
1945 w = 0,
1946 E = [].pop,
1947 S = [].push,
1948 x = [].slice,
1949 T = [].indexOf || function(e) {
1950 var t = 0,
1951 n = this.length;
1952 for (; t < n; t++)
1953 if (this[t] === e) return t;
1954 return -1
1955 },
1956 N = function(e, t) {
1957 return e[d] = t == null || t, e
1958 },
1959 C = function() {
1960 var e = {},
1961 t = [];
1962 return N(function(n, r) {
1963 return t.push(n) > i.cacheLength && delete e[t.shift()], e[n + " "] = r
1964 }, e)
1965 },
1966 k = C(),
1967 L = C(),
1968 A = C(),
1969 O = "[\\x20\\t\\r\\n\\f]",
1970 M = "(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",
1971 _ = M.replace("w", "w#"),
1972 D = "([*^$|!~]?=)",
1973 P = "\\[" + O + "*(" + M + ")" + O + "*(?:" + D + O + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + _ + ")|)|)" + O + "*\\]",
1974 H = ":(" + M + ")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:" + P + ")|[^:]|\\\\.)*|.*))\\)|)",
1975 B = ":(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + O + "*((?:-\\d)?\\d*)" + O + "*\\)|)(?=[^-]|$)",
1976 j = new RegExp("^" + O + "+|((?:^|[^\\\\])(?:\\\\.)*)" + O + "+$", "g"),
1977 F = new RegExp("^" + O + "*," + O + "*"),
1978 I = new RegExp("^" + O + "*([\\x20\\t\\r\\n\\f>+~])" + O + "*"),
1979 q = new RegExp(H),
1980 R = /^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,
1981 U = /^:not/,
1982 z = /[\x20\t\r\n\f]*[+~]/,
1983 W = /:not\($/,
1984 X = /h\d/i,
1985 V = /input|select|textarea|button/i,
1986 $ = /\\(?!\\)/g,
1987 J = {
1988 ID: new RegExp("^#(" + M + ")"),
1989 CLASS: new RegExp("^\\.(" + M + ")"),
1990 NAME: new RegExp("^\\[name=['\"]?(" + M + ")['\"]?\\]"),
1991 TAG: new RegExp("^(" + M.replace("w", "w*") + ")"),
1992 ATTR: new RegExp("^" + P),
1993 PSEUDO: new RegExp("^" + H),
1994 POS: new RegExp(B, "i"),
1995 CHILD: new RegExp("^:(only|nth|first|last)-child(?:\\(" + O + "*(even|odd|(([+-]|)(\\d*)n|)" + O + "*(?:([+-]|)" + O + "*(\\d+)|))" + O + "*\\)|)", "i"),
1996 needsContext: new RegExp("^" + O + "*[>+~]|" + B, "i")
1997 },
1998 K = function(e) {
1999 var t = g.createElement("div");
2000 try {
2001 return e(t)
2002 } catch (n) {
2003 return !1
2004 } finally {
2005 t = null
2006 }
2007 },
2008 Q = K(function(e) {
2009 return e.appendChild(g.createComment("")), !e.getElementsByTagName("*").length
2010 }),
2011 G = K(function(e) {
2012 return e.innerHTML = "<a href='#'></a>", e.firstChild && typeof e.firstChild.getAttribute !== p && e.firstChild.getAttribute("href") === "#"
2013 }),
2014 Y = K(function(e) {
2015 e.innerHTML = "<select></select>";
2016 var t = typeof e.lastChild.getAttribute("multiple");
2017 return t !== "boolean" && t !== "string"
2018 }),
2019 Z = K(function(e) {
2020 return e.innerHTML = "<div class='hidden e'></div><div class='hidden'></div>", !e.getElementsByClassName || !e.getElementsByClassName("e").length ? !1 : (e.lastChild.className = "e", e.getElementsByClassName("e").length === 2)
2021 }),
2022 et = K(function(e) {
2023 e.id = d + 0, e.innerHTML = "<a name='" + d + "'></a><div name='" + d + "'></div>", y.insertBefore(e, y.firstChild);
2024 var t = g.getElementsByName && g.getElementsByName(d).length === 2 + g.getElementsByName(d + 0).length;
2025 return r = !g.getElementById(d), y.removeChild(e), t
2026 });
2027 try {
2028 x.call(y.childNodes, 0)[0].nodeType
2029 } catch (tt) {
2030 x = function(e) {
2031 var t, n = [];
2032 for (; t = this[e]; e++) n.push(t);
2033 return n
2034 }
2035 }
2036 nt.matches = function(e, t) {
2037 return nt(e, null, null, t)
2038 }, nt.matchesSelector = function(e, t) {
2039 return nt(t, null, null, [e]).length > 0
2040 }, s = nt.getText = function(e) {
2041 var t, n = "",
2042 r = 0,
2043 i = e.nodeType;
2044 if (i) {
2045 if (i === 1 || i === 9 || i === 11) {
2046 if (typeof e.textContent == "string") return e.textContent;
2047 for (e = e.firstChild; e; e = e.nextSibling) n += s(e)
2048 } else if (i === 3 || i === 4) return e.nodeValue
2049 } else
2050 for (; t = e[r]; r++) n += s(t);
2051 return n
2052 }, o = nt.isXML = function(e) {
2053 var t = e && (e.ownerDocument || e).documentElement;
2054 return t ? t.nodeName !== "HTML" : !1
2055 }, u = nt.contains = y.contains ? function(e, t) {
2056 var n = e.nodeType === 9 ? e.documentElement : e,
2057 r = t && t.parentNode;
2058 return e === r || !!(r && r.nodeType === 1 && n.contains && n.contains(r))
2059 } : y.compareDocumentPosition ? function(e, t) {
2060 return t && !!(e.compareDocumentPosition(t) & 16)
2061 } : function(e, t) {
2062 while (t = t.parentNode)
2063 if (t === e) return !0;
2064 return !1
2065 }, nt.attr = function(e, t) {
2066 var n, r = o(e);
2067 return r || (t = t.toLowerCase()), (n = i.attrHandle[t]) ? n(e) : r || Y ? e.getAttribute(t) : (n = e.getAttributeNode(t), n ? typeof e[t] == "boolean" ? e[t] ? t : null : n.specified ? n.value : null : null)
2068 }, i = nt.selectors = {
2069 cacheLength: 50,
2070 createPseudo: N,
2071 match: J,
2072 attrHandle: G ? {} : {
2073 href: function(e) {
2074 return e.getAttribute("href", 2)
2075 },
2076 type: function(e) {
2077 return e.getAttribute("type")
2078 }
2079 },
2080 find: {
2081 ID: r ? function(e, t, n) {
2082 if (typeof t.getElementById !== p && !n) {
2083 var r = t.getElementById(e);
2084 return r && r.parentNode ? [r] : []
2085 }
2086 } : function(e, n, r) {
2087 if (typeof n.getElementById !== p && !r) {
2088 var i = n.getElementById(e);
2089 return i ? i.id === e || typeof i.getAttributeNode !== p && i.getAttributeNode("id").value === e ? [i] : t : []
2090 }
2091 },
2092 TAG: Q ? function(e, t) {
2093 if (typeof t.getElementsByTagName !== p) return t.getElementsByTagName(e)
2094 } : function(e, t) {
2095 var n = t.getElementsByTagName(e);
2096 if (e === "*") {
2097 var r, i = [],
2098 s = 0;
2099 for (; r = n[s]; s++) r.nodeType === 1 && i.push(r);
2100 return i
2101 }
2102 return n
2103 },
2104 NAME: et && function(e, t) {
2105 if (typeof t.getElementsByName !== p) return t.getElementsByName(name)
2106 },
2107 CLASS: Z && function(e, t, n) {
2108 if (typeof t.getElementsByClassName !== p && !n) return t.getElementsByClassName(e)
2109 }
2110 },
2111 relative: {
2112 ">": {
2113 dir: "parentNode",
2114 first: !0
2115 },
2116 " ": {
2117 dir: "parentNode"
2118 },
2119 "+": {
2120 dir: "previousSibling",
2121 first: !0
2122 },
2123 "~": {
2124 dir: "previousSibling"
2125 }
2126 },
2127 preFilter: {
2128 ATTR: function(e) {
2129 return e[1] = e[1].replace($, ""), e[3] = (e[4] || e[5] || "").replace($, ""), e[2] === "~=" && (e[3] = " " + e[3] + " "), e.slice(0, 4)
2130 },
2131 CHILD: function(e) {
2132 return e[1] = e[1].toLowerCase(), e[1] === "nth" ? (e[2] || nt.error(e[0]), e[3] = +(e[3] ? e[4] + (e[5] || 1) : 2 * (e[2] === "even" || e[2] === "odd")), e[4] = +(e[6] + e[7] || e[2] === "odd")) : e[2] && nt.error(e[0]), e
2133 },
2134 PSEUDO: function(e) {
2135 var t, n;
2136 if (J.CHILD.test(e[0])) return null;
2137 if (e[3]) e[2] = e[3];
2138 else if (t = e[4]) q.test(t) && (n = ut(t, !0)) && (n = t.indexOf(")", t.length - n) - t.length) && (t = t.slice(0, n), e[0] = e[0].slice(0, n)), e[2] = t;
2139 return e.slice(0, 3)
2140 }
2141 },
2142 filter: {
2143 ID: r ? function(e) {
2144 return e = e.replace($, ""),
2145 function(t) {
2146 return t.getAttribute("id") === e
2147 }
2148 } : function(e) {
2149 return e = e.replace($, ""),
2150 function(t) {
2151 var n = typeof t.getAttributeNode !== p && t.getAttributeNode("id");
2152 return n && n.value === e
2153 }
2154 },
2155 TAG: function(e) {
2156 return e === "*" ? function() {
2157 return !0
2158 } : (e = e.replace($, "").toLowerCase(), function(t) {
2159 return t.nodeName && t.nodeName.toLowerCase() === e
2160 })
2161 },
2162 CLASS: function(e) {
2163 var t = k[d][e + " "];
2164 return t || (t = new RegExp("(^|" + O + ")" + e + "(" + O + "|$)")) && k(e, function(e) {
2165 return t.test(e.className || typeof e.getAttribute !== p && e.getAttribute("class") || "")
2166 })
2167 },
2168 ATTR: function(e, t, n) {
2169 return function(r, i) {
2170 var s = nt.attr(r, e);
2171 return s == null ? t === "!=" : t ? (s += "", t === "=" ? s === n : t === "!=" ? s !== n : t === "^=" ? n && s.indexOf(n) === 0 : t === "*=" ? n && s.indexOf(n) > -1 : t === "$=" ? n && s.substr(s.length - n.length) === n : t === "~=" ? (" " + s + " ").indexOf(n) > -1 : t === "|=" ? s === n || s.substr(0, n.length + 1) === n + "-" : !1) : !0
2172 }
2173 },
2174 CHILD: function(e, t, n, r) {
2175 return e === "nth" ? function(e) {
2176 var t, i, s = e.parentNode;
2177 if (n === 1 && r === 0) return !0;
2178 if (s) {
2179 i = 0;
2180 for (t = s.firstChild; t; t = t.nextSibling)
2181 if (t.nodeType === 1) {
2182 i++;
2183 if (e === t) break
2184 }
2185 }
2186 return i -= r, i === n || i % n === 0 && i / n >= 0
2187 } : function(t) {
2188 var n = t;
2189 switch (e) {
2190 case "only":
2191 case "first":
2192 while (n = n.previousSibling)
2193 if (n.nodeType === 1) return !1;
2194 if (e === "first") return !0;
2195 n = t;
2196 case "last":
2197 while (n = n.nextSibling)
2198 if (n.nodeType === 1) return !1;
2199 return !0
2200 }
2201 }
2202 },
2203 PSEUDO: function(e, t) {
2204 var n, r = i.pseudos[e] || i.setFilters[e.toLowerCase()] || nt.error("unsupported pseudo: " + e);
2205 return r[d] ? r(t) : r.length > 1 ? (n = [e, e, "", t], i.setFilters.hasOwnProperty(e.toLowerCase()) ? N(function(e, n) {
2206 var i, s = r(e, t),
2207 o = s.length;
2208 while (o--) i = T.call(e, s[o]), e[i] = !(n[i] = s[o])
2209 }) : function(e) {
2210 return r(e, 0, n)
2211 }) : r
2212 }
2213 },
2214 pseudos: {
2215 not: N(function(e) {
2216 var t = [],
2217 n = [],
2218 r = a(e.replace(j, "$1"));
2219 return r[d] ? N(function(e, t, n, i) {
2220 var s, o = r(e, null, i, []),
2221 u = e.length;
2222 while (u--)
2223 if (s = o[u]) e[u] = !(t[u] = s)
2224 }) : function(e, i, s) {
2225 return t[0] = e, r(t, null, s, n), !n.pop()
2226 }
2227 }),
2228 has: N(function(e) {
2229 return function(t) {
2230 return nt(e, t).length > 0
2231 }
2232 }),
2233 contains: N(function(e) {
2234 return function(t) {
2235 return (t.textContent || t.innerText || s(t)).indexOf(e) > -1
2236 }
2237 }),
2238 enabled: function(e) {
2239 return e.disabled === !1
2240 },
2241 disabled: function(e) {
2242 return e.disabled === !0
2243 },
2244 checked: function(e) {
2245 var t = e.nodeName.toLowerCase();
2246 return t === "input" && !!e.checked || t === "option" && !!e.selected
2247 },
2248 selected: function(e) {
2249 return e.parentNode && e.parentNode.selectedIndex, e.selected === !0
2250 },
2251 parent: function(e) {
2252 return !i.pseudos.empty(e)
2253 },
2254 empty: function(e) {
2255 var t;
2256 e = e.firstChild;
2257 while (e) {
2258 if (e.nodeName > "@" || (t = e.nodeType) === 3 || t === 4) return !1;
2259 e = e.nextSibling
2260 }
2261 return !0
2262 },
2263 header: function(e) {
2264 return X.test(e.nodeName)
2265 },
2266 text: function(e) {
2267 var t, n;
2268 return e.nodeName.toLowerCase() === "input" && (t = e.type) === "text" && ((n = e.getAttribute("type")) == null || n.toLowerCase() === t)
2269 },
2270 radio: rt("radio"),
2271 checkbox: rt("checkbox"),
2272 file: rt("file"),
2273 password: rt("password"),
2274 image: rt("image"),
2275 submit: it("submit"),
2276 reset: it("reset"),
2277 button: function(e) {
2278 var t = e.nodeName.toLowerCase();
2279 return t === "input" && e.type === "button" || t === "button"
2280 },
2281 input: function(e) {
2282 return V.test(e.nodeName)
2283 },
2284 focus: function(e) {
2285 var t = e.ownerDocument;
2286 return e === t.activeElement && (!t.hasFocus || t.hasFocus()) && !!(e.type || e.href || ~e.tabIndex)
2287 },
2288 active: function(e) {
2289 return e === e.ownerDocument.activeElement
2290 },
2291 first: st(function() {
2292 return [0]
2293 }),
2294 last: st(function(e, t) {
2295 return [t - 1]
2296 }),
2297 eq: st(function(e, t, n) {
2298 return [n < 0 ? n + t : n]
2299 }),
2300 even: st(function(e, t) {
2301 for (var n = 0; n < t; n += 2) e.push(n);
2302 return e
2303 }),
2304 odd: st(function(e, t) {
2305 for (var n = 1; n < t; n += 2) e.push(n);
2306 return e
2307 }),
2308 lt: st(function(e, t, n) {
2309 for (var r = n < 0 ? n + t : n; --r >= 0;) e.push(r);
2310 return e
2311 }),
2312 gt: st(function(e, t, n) {
2313 for (var r = n < 0 ? n + t : n; ++r < t;) e.push(r);
2314 return e
2315 })
2316 }
2317 }, f = y.compareDocumentPosition ? function(e, t) {
2318 return e === t ? (l = !0, 0) : (!e.compareDocumentPosition || !t.compareDocumentPosition ? e.compareDocumentPosition : e.compareDocumentPosition(t) & 4) ? -1 : 1
2319 } : function(e, t) {
2320 if (e === t) return l = !0, 0;
2321 if (e.sourceIndex && t.sourceIndex) return e.sourceIndex - t.sourceIndex;
2322 var n, r, i = [],
2323 s = [],
2324 o = e.parentNode,
2325 u = t.parentNode,
2326 a = o;
2327 if (o === u) return ot(e, t);
2328 if (!o) return -1;
2329 if (!u) return 1;
2330 while (a) i.unshift(a), a = a.parentNode;
2331 a = u;
2332 while (a) s.unshift(a), a = a.parentNode;
2333 n = i.length, r = s.length;
2334 for (var f = 0; f < n && f < r; f++)
2335 if (i[f] !== s[f]) return ot(i[f], s[f]);
2336 return f === n ? ot(e, s[f], -1) : ot(i[f], t, 1)
2337 }, [0, 0].sort(f), h = !l, nt.uniqueSort = function(e) {
2338 var t, n = [],
2339 r = 1,
2340 i = 0;
2341 l = h, e.sort(f);
2342 if (l) {
2343 for (; t = e[r]; r++) t === e[r - 1] && (i = n.push(r));
2344 while (i--) e.splice(n[i], 1)
2345 }
2346 return e
2347 }, nt.error = function(e) {
2348 throw new Error("Syntax error, unrecognized expression: " + e)
2349 }, a = nt.compile = function(e, t) {
2350 var n, r = [],
2351 i = [],
2352 s = A[d][e + " "];
2353 if (!s) {
2354 t || (t = ut(e)), n = t.length;
2355 while (n--) s = ht(t[n]), s[d] ? r.push(s) : i.push(s);
2356 s = A(e, pt(i, r))
2357 }
2358 return s
2359 }, g.querySelectorAll && function() {
2360 var e, t = vt,
2361 n = /'|\\/g,
2362 r = /\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,
2363 i = [":focus"],
2364 s = [":active"],
2365 u = y.matchesSelector || y.mozMatchesSelector || y.webkitMatchesSelector || y.oMatchesSelector || y.msMatchesSelector;
2366 K(function(e) {
2367 e.innerHTML = "<select><option selected=''></option></select>", e.querySelectorAll("[selected]").length || i.push("\\[" + O + "*(?:checked|disabled|ismap|multiple|readonly|selected|value)"), e.querySelectorAll(":checked").length || i.push(":checked")
2368 }), K(function(e) {
2369 e.innerHTML = "<p test=''></p>", e.querySelectorAll("[test^='']").length && i.push("[*^$]=" + O + "*(?:\"\"|'')"), e.innerHTML = "<input type='hidden'/>", e.querySelectorAll(":enabled").length || i.push(":enabled", ":disabled")
2370 }), i = new RegExp(i.join("|")), vt = function(e, r, s, o, u) {
2371 if (!o && !u && !i.test(e)) {
2372 var a, f, l = !0,
2373 c = d,
2374 h = r,
2375 p = r.nodeType === 9 && e;
2376 if (r.nodeType === 1 && r.nodeName.toLowerCase() !== "object") {
2377 a = ut(e), (l = r.getAttribute("id")) ? c = l.replace(n, "\\$&") : r.setAttribute("id", c), c = "[id='" + c + "'] ", f = a.length;
2378 while (f--) a[f] = c + a[f].join("");
2379 h = z.test(e) && r.parentNode || r, p = a.join(",")
2380 }
2381 if (p) try {
2382 return S.apply(s, x.call(h.querySelectorAll(p), 0)), s
2383 } catch (v) {} finally {
2384 l || r.removeAttribute("id")
2385 }
2386 }
2387 return t(e, r, s, o, u)
2388 }, u && (K(function(t) {
2389 e = u.call(t, "div");
2390 try {
2391 u.call(t, "[test!='']:sizzle"), s.push("!=", H)
2392 } catch (n) {}
2393 }), s = new RegExp(s.join("|")), nt.matchesSelector = function(t, n) {
2394 n = n.replace(r, "='$1']");
2395 if (!o(t) && !s.test(n) && !i.test(n)) try {
2396 var a = u.call(t, n);
2397 if (a || e || t.document && t.document.nodeType !== 11) return a
2398 } catch (f) {}
2399 return nt(n, null, null, [t]).length > 0
2400 })
2401 }(), i.pseudos.nth = i.pseudos.eq, i.filters = mt.prototype = i.pseudos, i.setFilters = new mt, nt.attr = v.attr, v.find = nt, v.expr = nt.selectors, v.expr[":"] = v.expr.pseudos, v.unique = nt.uniqueSort, v.text = nt.getText, v.isXMLDoc = nt.isXML, v.contains = nt.contains
2402 }(e);
2403 var nt = /Until$/,
2404 rt = /^(?:parents|prev(?:Until|All))/,
2405 it = /^.[^:#\[\.,]*$/,
2406 st = v.expr.match.needsContext,
2407 ot = {
2408 children: !0,
2409 contents: !0,
2410 next: !0,
2411 prev: !0
2412 };
2413 v.fn.extend({
2414 find: function(e) {
2415 var t, n, r, i, s, o, u = this;
2416 if (typeof e != "string") return v(e).filter(function() {
2417 for (t = 0, n = u.length; t < n; t++)
2418 if (v.contains(u[t], this)) return !0
2419 });
2420 o = this.pushStack("", "find", e);
2421 for (t = 0, n = this.length; t < n; t++) {
2422 r = o.length, v.find(e, this[t], o);
2423 if (t > 0)
2424 for (i = r; i < o.length; i++)
2425 for (s = 0; s < r; s++)
2426 if (o[s] === o[i]) {
2427 o.splice(i--, 1);
2428 break
2429 }
2430 }
2431 return o
2432 },
2433 has: function(e) {
2434 var t, n = v(e, this),
2435 r = n.length;
2436 return this.filter(function() {
2437 for (t = 0; t < r; t++)
2438 if (v.contains(this, n[t])) return !0
2439 })
2440 },
2441 not: function(e) {
2442 return this.pushStack(ft(this, e, !1), "not", e)
2443 },
2444 filter: function(e) {
2445 return this.pushStack(ft(this, e, !0), "filter", e)
2446 },
2447 is: function(e) {
2448 return !!e && (typeof e == "string" ? st.test(e) ? v(e, this.context).index(this[0]) >= 0 : v.filter(e, this).length > 0 : this.filter(e).length > 0)
2449 },
2450 closest: function(e, t) {
2451 var n, r = 0,
2452 i = this.length,
2453 s = [],
2454 o = st.test(e) || typeof e != "string" ? v(e, t || this.context) : 0;
2455 for (; r < i; r++) {
2456 n = this[r];
2457 while (n && n.ownerDocument && n !== t && n.nodeType !== 11) {
2458 if (o ? o.index(n) > -1 : v.find.matchesSelector(n, e)) {
2459 s.push(n);
2460 break
2461 }
2462 n = n.parentNode
2463 }
2464 }
2465 return s = s.length > 1 ? v.unique(s) : s, this.pushStack(s, "closest", e)
2466 },
2467 index: function(e) {
2468 return e ? typeof e == "string" ? v.inArray(this[0], v(e)) : v.inArray(e.jquery ? e[0] : e, this) : this[0] && this[0].parentNode ? this.prevAll().length : -1
2469 },
2470 add: function(e, t) {
2471 var n = typeof e == "string" ? v(e, t) : v.makeArray(e && e.nodeType ? [e] : e),
2472 r = v.merge(this.get(), n);
2473 return this.pushStack(ut(n[0]) || ut(r[0]) ? r : v.unique(r))
2474 },
2475 addBack: function(e) {
2476 return this.add(e == null ? this.prevObject : this.prevObject.filter(e))
2477 }
2478 }), v.fn.andSelf = v.fn.addBack, v.each({
2479 parent: function(e) {
2480 var t = e.parentNode;
2481 return t && t.nodeType !== 11 ? t : null
2482 },
2483 parents: function(e) {
2484 return v.dir(e, "parentNode")
2485 },
2486 parentsUntil: function(e, t, n) {
2487 return v.dir(e, "parentNode", n)
2488 },
2489 next: function(e) {
2490 return at(e, "nextSibling")
2491 },
2492 prev: function(e) {
2493 return at(e, "previousSibling")
2494 },
2495 nextAll: function(e) {
2496 return v.dir(e, "nextSibling")
2497 },
2498 prevAll: function(e) {
2499 return v.dir(e, "previousSibling")
2500 },
2501 nextUntil: function(e, t, n) {
2502 return v.dir(e, "nextSibling", n)
2503 },
2504 prevUntil: function(e, t, n) {
2505 return v.dir(e, "previousSibling", n)
2506 },
2507 siblings: function(e) {
2508 return v.sibling((e.parentNode || {}).firstChild, e)
2509 },
2510 children: function(e) {
2511 return v.sibling(e.firstChild)
2512 },
2513 contents: function(e) {
2514 return v.nodeName(e, "iframe") ? e.contentDocument || e.contentWindow.document : v.merge([], e.childNodes)
2515 }
2516 }, function(e, t) {
2517 v.fn[e] = function(n, r) {
2518 var i = v.map(this, t, n);
2519 return nt.test(e) || (r = n), r && typeof r == "string" && (i = v.filter(r, i)), i = this.length > 1 && !ot[e] ? v.unique(i) : i, this.length > 1 && rt.test(e) && (i = i.reverse()), this.pushStack(i, e, l.call(arguments).join(","))
2520 }
2521 }), v.extend({
2522 filter: function(e, t, n) {
2523 return n && (e = ":not(" + e + ")"), t.length === 1 ? v.find.matchesSelector(t[0], e) ? [t[0]] : [] : v.find.matches(e, t)
2524 },
2525 dir: function(e, n, r) {
2526 var i = [],
2527 s = e[n];
2528 while (s && s.nodeType !== 9 && (r === t || s.nodeType !== 1 || !v(s).is(r))) s.nodeType === 1 && i.push(s), s = s[n];
2529 return i
2530 },
2531 sibling: function(e, t) {
2532 var n = [];
2533 for (; e; e = e.nextSibling) e.nodeType === 1 && e !== t && n.push(e);
2534 return n
2535 }
2536 });
2537 var ct = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
2538 ht = / jQuery\d+="(?:null|\d+)"/g,
2539 pt = /^\s+/,
2540 dt = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
2541 vt = /<([\w:]+)/,
2542 mt = /<tbody/i,
2543 gt = /<|&#?\w+;/,
2544 yt = /<(?:script|style|link)/i,
2545 bt = /<(?:script|object|embed|option|style)/i,
2546 wt = new RegExp("<(?:" + ct + ")[\\s/>]", "i"),
2547 Et = /^(?:checkbox|radio)$/,
2548 St = /checked\s*(?:[^=]|=\s*.checked.)/i,
2549 xt = /\/(java|ecma)script/i,
2550 Tt = /^\s*<!(?:\[CDATA\[|\-\-)|[\]\-]{2}>\s*$/g,
2551 Nt = {
2552 option: [1, "<select multiple='multiple'>", "</select>"],
2553 legend: [1, "<fieldset>", "</fieldset>"],
2554 thead: [1, "<table>", "</table>"],
2555 tr: [2, "<table><tbody>", "</tbody></table>"],
2556 td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
2557 col: [2, "<table><tbody></tbody><colgroup>", "</colgroup></table>"],
2558 area: [1, "<map>", "</map>"],
2559 _default: [0, "", ""]
2560 },
2561 Ct = lt(i),
2562 kt = Ct.appendChild(i.createElement("div"));
2563 Nt.optgroup = Nt.option, Nt.tbody = Nt.tfoot = Nt.colgroup = Nt.caption = Nt.thead, Nt.th = Nt.td, v.support.htmlSerialize || (Nt._default = [1, "X<div>", "</div>"]), v.fn.extend({
2564 text: function(e) {
2565 return v.access(this, function(e) {
2566 return e === t ? v.text(this) : this.empty().append((this[0] && this[0].ownerDocument || i).createTextNode(e))
2567 }, null, e, arguments.length)
2568 },
2569 wrapAll: function(e) {
2570 if (v.isFunction(e)) return this.each(function(t) {
2571 v(this).wrapAll(e.call(this, t))
2572 });
2573 if (this[0]) {
2574 var t = v(e, this[0].ownerDocument).eq(0).clone(!0);
2575 this[0].parentNode && t.insertBefore(this[0]), t.map(function() {
2576 var e = this;
2577 while (e.firstChild && e.firstChild.nodeType === 1) e = e.firstChild;
2578 return e
2579 }).append(this)
2580 }
2581 return this
2582 },
2583 wrapInner: function(e) {
2584 return v.isFunction(e) ? this.each(function(t) {
2585 v(this).wrapInner(e.call(this, t))
2586 }) : this.each(function() {
2587 var t = v(this),
2588 n = t.contents();
2589 n.length ? n.wrapAll(e) : t.append(e)
2590 })
2591 },
2592 wrap: function(e) {
2593 var t = v.isFunction(e);
2594 return this.each(function(n) {
2595 v(this).wrapAll(t ? e.call(this, n) : e)
2596 })
2597 },
2598 unwrap: function() {
2599 return this.parent().each(function() {
2600 v.nodeName(this, "body") || v(this).replaceWith(this.childNodes)
2601 }).end()
2602 },
2603 append: function() {
2604 return this.domManip(arguments, !0, function(e) {
2605 (this.nodeType === 1 || this.nodeType === 11) && this.appendChild(e)
2606 })
2607 },
2608 prepend: function() {
2609 return this.domManip(arguments, !0, function(e) {
2610 (this.nodeType === 1 || this.nodeType === 11) && this.insertBefore(e, this.firstChild)
2611 })
2612 },
2613 before: function() {
2614 if (!ut(this[0])) return this.domManip(arguments, !1, function(e) {
2615 this.parentNode.insertBefore(e, this)
2616 });
2617 if (arguments.length) {
2618 var e = v.clean(arguments);
2619 return this.pushStack(v.merge(e, this), "before", this.selector)
2620 }
2621 },
2622 after: function() {
2623 if (!ut(this[0])) return this.domManip(arguments, !1, function(e) {
2624 this.parentNode.insertBefore(e, this.nextSibling)
2625 });
2626 if (arguments.length) {
2627 var e = v.clean(arguments);
2628 return this.pushStack(v.merge(this, e), "after", this.selector)
2629 }
2630 },
2631 remove: function(e, t) {
2632 var n, r = 0;
2633 for (;
2634 (n = this[r]) != null; r++)
2635 if (!e || v.filter(e, [n]).length)!t && n.nodeType === 1 && (v.cleanData(n.getElementsByTagName("*")), v.cleanData([n])), n.parentNode && n.parentNode.removeChild(n);
2636 return this
2637 },
2638 empty: function() {
2639 var e, t = 0;
2640 for (;
2641 (e = this[t]) != null; t++) {
2642 e.nodeType === 1 && v.cleanData(e.getElementsByTagName("*"));
2643 while (e.firstChild) e.removeChild(e.firstChild)
2644 }
2645 return this
2646 },
2647 clone: function(e, t) {
2648 return e = e == null ? !1 : e, t = t == null ? e : t, this.map(function() {
2649 return v.clone(this, e, t)
2650 })
2651 },
2652 html: function(e) {
2653 return v.access(this, function(e) {
2654 var n = this[0] || {},
2655 r = 0,
2656 i = this.length;
2657 if (e === t) return n.nodeType === 1 ? n.innerHTML.replace(ht, "") : t;
2658 if (typeof e == "string" && !yt.test(e) && (v.support.htmlSerialize || !wt.test(e)) && (v.support.leadingWhitespace || !pt.test(e)) && !Nt[(vt.exec(e) || ["", ""])[1].toLowerCase()]) {
2659 e = e.replace(dt, "<$1></$2>");
2660 try {
2661 for (; r < i; r++) n = this[r] || {}, n.nodeType === 1 && (v.cleanData(n.getElementsByTagName("*")), n.innerHTML = e);
2662 n = 0
2663 } catch (s) {}
2664 }
2665 n && this.empty().append(e)
2666 }, null, e, arguments.length)
2667 },
2668 replaceWith: function(e) {
2669 return ut(this[0]) ? this.length ? this.pushStack(v(v.isFunction(e) ? e() : e), "replaceWith", e) : this : v.isFunction(e) ? this.each(function(t) {
2670 var n = v(this),
2671 r = n.html();
2672 n.replaceWith(e.call(this, t, r))
2673 }) : (typeof e != "string" && (e = v(e).detach()), this.each(function() {
2674 var t = this.nextSibling,
2675 n = this.parentNode;
2676 v(this).remove(), t ? v(t).before(e) : v(n).append(e)
2677 }))
2678 },
2679 detach: function(e) {
2680 return this.remove(e, !0)
2681 },
2682 domManip: function(e, n, r) {
2683 e = [].concat.apply([], e);
2684 var i, s, o, u, a = 0,
2685 f = e[0],
2686 l = [],
2687 c = this.length;
2688 if (!v.support.checkClone && c > 1 && typeof f == "string" && St.test(f)) return this.each(function() {
2689 v(this).domManip(e, n, r)
2690 });
2691 if (v.isFunction(f)) return this.each(function(i) {
2692 var s = v(this);
2693 e[0] = f.call(this, i, n ? s.html() : t), s.domManip(e, n, r)
2694 });
2695 if (this[0]) {
2696 i = v.buildFragment(e, this, l), o = i.fragment, s = o.firstChild, o.childNodes.length === 1 && (o = s);
2697 if (s) {
2698 n = n && v.nodeName(s, "tr");
2699 for (u = i.cacheable || c - 1; a < c; a++) r.call(n && v.nodeName(this[a], "table") ? Lt(this[a], "tbody") : this[a], a === u ? o : v.clone(o, !0, !0))
2700 }
2701 o = s = null, l.length && v.each(l, function(e, t) {
2702 t.src ? v.ajax ? v.ajax({
2703 url: t.src,
2704 type: "GET",
2705 dataType: "script",
2706 async: !1,
2707 global: !1,
2708 "throws": !0
2709 }) : v.error("no ajax") : v.globalEval((t.text || t.textContent || t.innerHTML || "").replace(Tt, "")), t.parentNode && t.parentNode.removeChild(t)
2710 })
2711 }
2712 return this
2713 }
2714 }), v.buildFragment = function(e, n, r) {
2715 var s, o, u, a = e[0];
2716 return n = n || i, n = !n.nodeType && n[0] || n, n = n.ownerDocument || n, e.length === 1 && typeof a == "string" && a.length < 512 && n === i && a.charAt(0) === "<" && !bt.test(a) && (v.support.checkClone || !St.test(a)) && (v.support.html5Clone || !wt.test(a)) && (o = !0, s = v.fragments[a], u = s !== t), s || (s = n.createDocumentFragment(), v.clean(e, n, s, r), o && (v.fragments[a] = u && s)), {
2717 fragment: s,
2718 cacheable: o
2719 }
2720 }, v.fragments = {}, v.each({
2721 appendTo: "append",
2722 prependTo: "prepend",
2723 insertBefore: "before",
2724 insertAfter: "after",
2725 replaceAll: "replaceWith"
2726 }, function(e, t) {
2727 v.fn[e] = function(n) {
2728 var r, i = 0,
2729 s = [],
2730 o = v(n),
2731 u = o.length,
2732 a = this.length === 1 && this[0].parentNode;
2733 if ((a == null || a && a.nodeType === 11 && a.childNodes.length === 1) && u === 1) return o[t](this[0]), this;
2734 for (; i < u; i++) r = (i > 0 ? this.clone(!0) : this).get(), v(o[i])[t](r), s = s.concat(r);
2735 return this.pushStack(s, e, o.selector)
2736 }
2737 }), v.extend({
2738 clone: function(e, t, n) {
2739 var r, i, s, o;
2740 v.support.html5Clone || v.isXMLDoc(e) || !wt.test("<" + e.nodeName + ">") ? o = e.cloneNode(!0) : (kt.innerHTML = e.outerHTML, kt.removeChild(o = kt.firstChild));
2741 if ((!v.support.noCloneEvent || !v.support.noCloneChecked) && (e.nodeType === 1 || e.nodeType === 11) && !v.isXMLDoc(e)) {
2742 Ot(e, o), r = Mt(e), i = Mt(o);
2743 for (s = 0; r[s]; ++s) i[s] && Ot(r[s], i[s])
2744 }
2745 if (t) {
2746 At(e, o);
2747 if (n) {
2748 r = Mt(e), i = Mt(o);
2749 for (s = 0; r[s]; ++s) At(r[s], i[s])
2750 }
2751 }
2752 return r = i = null, o
2753 },
2754 clean: function(e, t, n, r) {
2755 var s, o, u, a, f, l, c, h, p, d, m, g, y = t === i && Ct,
2756 b = [];
2757 if (!t || typeof t.createDocumentFragment == "undefined") t = i;
2758 for (s = 0;
2759 (u = e[s]) != null; s++) {
2760 typeof u == "number" && (u += "");
2761 if (!u) continue;
2762 if (typeof u == "string")
2763 if (!gt.test(u)) u = t.createTextNode(u);
2764 else {
2765 y = y || lt(t), c = t.createElement("div"), y.appendChild(c), u = u.replace(dt, "<$1></$2>"), a = (vt.exec(u) || ["", ""])[1].toLowerCase(), f = Nt[a] || Nt._default, l = f[0], c.innerHTML = f[1] + u + f[2];
2766 while (l--) c = c.lastChild;
2767 if (!v.support.tbody) {
2768 h = mt.test(u), p = a === "table" && !h ? c.firstChild && c.firstChild.childNodes : f[1] === "<table>" && !h ? c.childNodes : [];
2769 for (o = p.length - 1; o >= 0; --o) v.nodeName(p[o], "tbody") && !p[o].childNodes.length && p[o].parentNode.removeChild(p[o])
2770 }!v.support.leadingWhitespace && pt.test(u) && c.insertBefore(t.createTextNode(pt.exec(u)[0]), c.firstChild), u = c.childNodes, c.parentNode.removeChild(c)
2771 }
2772 u.nodeType ? b.push(u) : v.merge(b, u)
2773 }
2774 c && (u = c = y = null);
2775 if (!v.support.appendChecked)
2776 for (s = 0;
2777 (u = b[s]) != null; s++) v.nodeName(u, "input") ? _t(u) : typeof u.getElementsByTagName != "undefined" && v.grep(u.getElementsByTagName("input"), _t);
2778 if (n) {
2779 m = function(e) {
2780 if (!e.type || xt.test(e.type)) return r ? r.push(e.parentNode ? e.parentNode.removeChild(e) : e) : n.appendChild(e)
2781 };
2782 for (s = 0;
2783 (u = b[s]) != null; s++)
2784 if (!v.nodeName(u, "script") || !m(u)) n.appendChild(u), typeof u.getElementsByTagName != "undefined" && (g = v.grep(v.merge([], u.getElementsByTagName("script")), m), b.splice.apply(b, [s + 1, 0].concat(g)), s += g.length)
2785 }
2786 return b
2787 },
2788 cleanData: function(e, t) {
2789 var n, r, i, s, o = 0,
2790 u = v.expando,
2791 a = v.cache,
2792 f = v.support.deleteExpando,
2793 l = v.event.special;
2794 for (;
2795 (i = e[o]) != null; o++)
2796 if (t || v.acceptData(i)) {
2797 r = i[u], n = r && a[r];
2798 if (n) {
2799 if (n.events)
2800 for (s in n.events) l[s] ? v.event.remove(i, s) : v.removeEvent(i, s, n.handle);
2801 a[r] && (delete a[r], f ? delete i[u] : i.removeAttribute ? i.removeAttribute(u) : i[u] = null, v.deletedIds.push(r))
2802 }
2803 }
2804 }
2805 }),
2806 function() {
2807 var e, t;
2808 v.uaMatch = function(e) {
2809 e = e.toLowerCase();
2810 var t = /(chrome)[ \/]([\w.]+)/.exec(e) || /(webkit)[ \/]([\w.]+)/.exec(e) || /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e) || /(msie) ([\w.]+)/.exec(e) || e.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e) || [];
2811 return {
2812 browser: t[1] || "",
2813 version: t[2] || "0"
2814 }
2815 }, e = v.uaMatch(o.userAgent), t = {}, e.browser && (t[e.browser] = !0, t.version = e.version), t.chrome ? t.webkit = !0 : t.webkit && (t.safari = !0), v.browser = t, v.sub = function() {
2816 function e(t, n) {
2817 return new e.fn.init(t, n)
2818 }
2819 v.extend(!0, e, this), e.superclass = this, e.fn = e.prototype = this(), e.fn.constructor = e, e.sub = this.sub, e.fn.init = function(r, i) {
2820 return i && i instanceof v && !(i instanceof e) && (i = e(i)), v.fn.init.call(this, r, i, t)
2821 }, e.fn.init.prototype = e.fn;
2822 var t = e(i);
2823 return e
2824 }
2825 }();
2826 var Dt, Pt, Ht, Bt = /alpha\([^)]*\)/i,
2827 jt = /opacity=([^)]*)/,
2828 Ft = /^(top|right|bottom|left)$/,
2829 It = /^(none|table(?!-c[ea]).+)/,
2830 qt = /^margin/,
2831 Rt = new RegExp("^(" + m + ")(.*)$", "i"),
2832 Ut = new RegExp("^(" + m + ")(?!px)[a-z%]+$", "i"),
2833 zt = new RegExp("^([-+])=(" + m + ")", "i"),
2834 Wt = {
2835 BODY: "block"
2836 },
2837 Xt = {
2838 position: "absolute",
2839 visibility: "hidden",
2840 display: "block"
2841 },
2842 Vt = {
2843 letterSpacing: 0,
2844 fontWeight: 400
2845 },
2846 $t = ["Top", "Right", "Bottom", "Left"],
2847 Jt = ["Webkit", "O", "Moz", "ms"],
2848 Kt = v.fn.toggle;
2849 v.fn.extend({
2850 css: function(e, n) {
2851 return v.access(this, function(e, n, r) {
2852 return r !== t ? v.style(e, n, r) : v.css(e, n)
2853 }, e, n, arguments.length > 1)
2854 },
2855 show: function() {
2856 return Yt(this, !0)
2857 },
2858 hide: function() {
2859 return Yt(this)
2860 },
2861 toggle: function(e, t) {
2862 var n = typeof e == "boolean";
2863 return v.isFunction(e) && v.isFunction(t) ? Kt.apply(this, arguments) : this.each(function() {
2864 (n ? e : Gt(this)) ? v(this).show() : v(this).hide()
2865 })
2866 }
2867 }), v.extend({
2868 cssHooks: {
2869 opacity: {
2870 get: function(e, t) {
2871 if (t) {
2872 var n = Dt(e, "opacity");
2873 return n === "" ? "1" : n
2874 }
2875 }
2876 }
2877 },
2878 cssNumber: {
2879 fillOpacity: !0,
2880 fontWeight: !0,
2881 lineHeight: !0,
2882 opacity: !0,
2883 orphans: !0,
2884 widows: !0,
2885 zIndex: !0,
2886 zoom: !0
2887 },
2888 cssProps: {
2889 "float": v.support.cssFloat ? "cssFloat" : "styleFloat"
2890 },
2891 style: function(e, n, r, i) {
2892 if (!e || e.nodeType === 3 || e.nodeType === 8 || !e.style) return;
2893 var s, o, u, a = v.camelCase(n),
2894 f = e.style;
2895 n = v.cssProps[a] || (v.cssProps[a] = Qt(f, a)), u = v.cssHooks[n] || v.cssHooks[a];
2896 if (r === t) return u && "get" in u && (s = u.get(e, !1, i)) !== t ? s : f[n];
2897 o = typeof r, o === "string" && (s = zt.exec(r)) && (r = (s[1] + 1) * s[2] + parseFloat(v.css(e, n)), o = "number");
2898 if (r == null || o === "number" && isNaN(r)) return;
2899 o === "number" && !v.cssNumber[a] && (r += "px");
2900 if (!u || !("set" in u) || (r = u.set(e, r, i)) !== t) try {
2901 f[n] = r
2902 } catch (l) {}
2903 },
2904 css: function(e, n, r, i) {
2905 var s, o, u, a = v.camelCase(n);
2906 return n = v.cssProps[a] || (v.cssProps[a] = Qt(e.style, a)), u = v.cssHooks[n] || v.cssHooks[a], u && "get" in u && (s = u.get(e, !0, i)), s === t && (s = Dt(e, n)), s === "normal" && n in Vt && (s = Vt[n]), r || i !== t ? (o = parseFloat(s), r || v.isNumeric(o) ? o || 0 : s) : s
2907 },
2908 swap: function(e, t, n) {
2909 var r, i, s = {};
2910 for (i in t) s[i] = e.style[i], e.style[i] = t[i];
2911 r = n.call(e);
2912 for (i in t) e.style[i] = s[i];
2913 return r
2914 }
2915 }), e.getComputedStyle ? Dt = function(t, n) {
2916 var r, i, s, o, u = e.getComputedStyle(t, null),
2917 a = t.style;
2918 return u && (r = u.getPropertyValue(n) || u[n], r === "" && !v.contains(t.ownerDocument, t) && (r = v.style(t, n)), Ut.test(r) && qt.test(n) && (i = a.width, s = a.minWidth, o = a.maxWidth, a.minWidth = a.maxWidth = a.width = r, r = u.width, a.width = i, a.minWidth = s, a.maxWidth = o)), r
2919 } : i.documentElement.currentStyle && (Dt = function(e, t) {
2920 var n, r, i = e.currentStyle && e.currentStyle[t],
2921 s = e.style;
2922 return i == null && s && s[t] && (i = s[t]), Ut.test(i) && !Ft.test(t) && (n = s.left, r = e.runtimeStyle && e.runtimeStyle.left, r && (e.runtimeStyle.left = e.currentStyle.left), s.left = t === "fontSize" ? "1em" : i, i = s.pixelLeft + "px", s.left = n, r && (e.runtimeStyle.left = r)), i === "" ? "auto" : i
2923 }), v.each(["height", "width"], function(e, t) {
2924 v.cssHooks[t] = {
2925 get: function(e, n, r) {
2926 if (n) return e.offsetWidth === 0 && It.test(Dt(e, "display")) ? v.swap(e, Xt, function() {
2927 return tn(e, t, r)
2928 }) : tn(e, t, r)
2929 },
2930 set: function(e, n, r) {
2931 return Zt(e, n, r ? en(e, t, r, v.support.boxSizing && v.css(e, "boxSizing") === "border-box") : 0)
2932 }
2933 }
2934 }), v.support.opacity || (v.cssHooks.opacity = {
2935 get: function(e, t) {
2936 return jt.test((t && e.currentStyle ? e.currentStyle.filter : e.style.filter) || "") ? .01 * parseFloat(RegExp.$1) + "" : t ? "1" : ""
2937 },
2938 set: function(e, t) {
2939 var n = e.style,
2940 r = e.currentStyle,
2941 i = v.isNumeric(t) ? "alpha(opacity=" + t * 100 + ")" : "",
2942 s = r && r.filter || n.filter || "";
2943 n.zoom = 1;
2944 if (t >= 1 && v.trim(s.replace(Bt, "")) === "" && n.removeAttribute) {
2945 n.removeAttribute("filter");
2946 if (r && !r.filter) return
2947 }
2948 n.filter = Bt.test(s) ? s.replace(Bt, i) : s + " " + i
2949 }
2950 }), v(function() {
2951 v.support.reliableMarginRight || (v.cssHooks.marginRight = {
2952 get: function(e, t) {
2953 return v.swap(e, {
2954 display: "inline-block"
2955 }, function() {
2956 if (t) return Dt(e, "marginRight")
2957 })
2958 }
2959 }), !v.support.pixelPosition && v.fn.position && v.each(["top", "left"], function(e, t) {
2960 v.cssHooks[t] = {
2961 get: function(e, n) {
2962 if (n) {
2963 var r = Dt(e, t);
2964 return Ut.test(r) ? v(e).position()[t] + "px" : r
2965 }
2966 }
2967 }
2968 })
2969 }), v.expr && v.expr.filters && (v.expr.filters.hidden = function(e) {
2970 return e.offsetWidth === 0 && e.offsetHeight === 0 || !v.support.reliableHiddenOffsets && (e.style && e.style.display || Dt(e, "display")) === "none"
2971 }, v.expr.filters.visible = function(e) {
2972 return !v.expr.filters.hidden(e)
2973 }), v.each({
2974 margin: "",
2975 padding: "",
2976 border: "Width"
2977 }, function(e, t) {
2978 v.cssHooks[e + t] = {
2979 expand: function(n) {
2980 var r, i = typeof n == "string" ? n.split(" ") : [n],
2981 s = {};
2982 for (r = 0; r < 4; r++) s[e + $t[r] + t] = i[r] || i[r - 2] || i[0];
2983 return s
2984 }
2985 }, qt.test(e) || (v.cssHooks[e + t].set = Zt)
2986 });
2987 var rn = /%20/g,
2988 sn = /\[\]$/,
2989 on = /\r?\n/g,
2990 un = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
2991 an = /^(?:select|textarea)/i;
2992 v.fn.extend({
2993 serialize: function() {
2994 return v.param(this.serializeArray())
2995 },
2996 serializeArray: function() {
2997 return this.map(function() {
2998 return this.elements ? v.makeArray(this.elements) : this
2999 }).filter(function() {
3000 return this.name && !this.disabled && (this.checked || an.test(this.nodeName) || un.test(this.type))
3001 }).map(function(e, t) {
3002 var n = v(this).val();
3003 return n == null ? null : v.isArray(n) ? v.map(n, function(e, n) {
3004 return {
3005 name: t.name,
3006 value: e.replace(on, "\r\n")
3007 }
3008 }) : {
3009 name: t.name,
3010 value: n.replace(on, "\r\n")
3011 }
3012 }).get()
3013 }
3014 }), v.param = function(e, n) {
3015 var r, i = [],
3016 s = function(e, t) {
3017 t = v.isFunction(t) ? t() : t == null ? "" : t, i[i.length] = encodeURIComponent(e) + "=" + encodeURIComponent(t)
3018 };
3019 n === t && (n = v.ajaxSettings && v.ajaxSettings.traditional);
3020 if (v.isArray(e) || e.jquery && !v.isPlainObject(e)) v.each(e, function() {
3021 s(this.name, this.value)
3022 });
3023 else
3024 for (r in e) fn(r, e[r], n, s);
3025 return i.join("&").replace(rn, "+")
3026 };
3027 var ln, cn, hn = /#.*$/,
3028 pn = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg,
3029 dn = /^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,
3030 vn = /^(?:GET|HEAD)$/,
3031 mn = /^\/\//,
3032 gn = /\?/,
3033 yn = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
3034 bn = /([?&])_=[^&]*/,
3035 wn = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,
3036 En = v.fn.load,
3037 Sn = {},
3038 xn = {},
3039 Tn = ["*/"] + ["*"];
3040 try {
3041 cn = s.href
3042 } catch (Nn) {
3043 cn = i.createElement("a"), cn.href = "", cn = cn.href
3044 }
3045 ln = wn.exec(cn.toLowerCase()) || [], v.fn.load = function(e, n, r) {
3046 if (typeof e != "string" && En) return En.apply(this, arguments);
3047 if (!this.length) return this;
3048 var i, s, o, u = this,
3049 a = e.indexOf(" ");
3050 return a >= 0 && (i = e.slice(a, e.length), e = e.slice(0, a)), v.isFunction(n) ? (r = n, n = t) : n && typeof n == "object" && (s = "POST"), v.ajax({
3051 url: e,
3052 type: s,
3053 dataType: "html",
3054 data: n,
3055 complete: function(e, t) {
3056 r && u.each(r, o || [e.responseText, t, e])
3057 }
3058 }).done(function(e) {
3059 o = arguments, u.html(i ? v("<div>").append(e.replace(yn, "")).find(i) : e)
3060 }), this
3061 }, v.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), function(e, t) {
3062 v.fn[t] = function(e) {
3063 return this.on(t, e)
3064 }
3065 }), v.each(["get", "post"], function(e, n) {
3066 v[n] = function(e, r, i, s) {
3067 return v.isFunction(r) && (s = s || i, i = r, r = t), v.ajax({
3068 type: n,
3069 url: e,
3070 data: r,
3071 success: i,
3072 dataType: s
3073 })
3074 }
3075 }), v.extend({
3076 getScript: function(e, n) {
3077 return v.get(e, t, n, "script")
3078 },
3079 getJSON: function(e, t, n) {
3080 return v.get(e, t, n, "json")
3081 },
3082 ajaxSetup: function(e, t) {
3083 return t ? Ln(e, v.ajaxSettings) : (t = e, e = v.ajaxSettings), Ln(e, t), e
3084 },
3085 ajaxSettings: {
3086 url: cn,
3087 isLocal: dn.test(ln[1]),
3088 global: !0,
3089 type: "GET",
3090 contentType: "application/x-www-form-urlencoded; charset=UTF-8",
3091 processData: !0,
3092 async: !0,
3093 accepts: {
3094 xml: "application/xml, text/xml",
3095 html: "text/html",
3096 text: "text/plain",
3097 json: "application/json, text/javascript",
3098 "*": Tn
3099 },
3100 contents: {
3101 xml: /xml/,
3102 html: /html/,
3103 json: /json/
3104 },
3105 responseFields: {
3106 xml: "responseXML",
3107 text: "responseText"
3108 },
3109 converters: {
3110 "* text": e.String,
3111 "text html": !0,
3112 "text json": v.parseJSON,
3113 "text xml": v.parseXML
3114 },
3115 flatOptions: {
3116 context: !0,
3117 url: !0
3118 }
3119 },
3120 ajaxPrefilter: Cn(Sn),
3121 ajaxTransport: Cn(xn),
3122 ajax: function(e, n) {
3123 function T(e, n, s, a) {
3124 var l, y, b, w, S, T = n;
3125 if (E === 2) return;
3126 E = 2, u && clearTimeout(u), o = t, i = a || "", x.readyState = e > 0 ? 4 : 0, s && (w = An(c, x, s));
3127 if (e >= 200 && e < 300 || e === 304) c.ifModified && (S = x.getResponseHeader("Last-Modified"), S && (v.lastModified[r] = S), S = x.getResponseHeader("Etag"), S && (v.etag[r] = S)), e === 304 ? (T = "notmodified", l = !0) : (l = On(c, w), T = l.state, y = l.data, b = l.error, l = !b);
3128 else {
3129 b = T;
3130 if (!T || e) T = "error", e < 0 && (e = 0)
3131 }
3132 x.status = e, x.statusText = (n || T) + "", l ? d.resolveWith(h, [y, T, x]) : d.rejectWith(h, [x, T, b]), x.statusCode(g), g = t, f && p.trigger("ajax" + (l ? "Success" : "Error"), [x, c, l ? y : b]), m.fireWith(h, [x, T]), f && (p.trigger("ajaxComplete", [x, c]), --v.active || v.event.trigger("ajaxStop"))
3133 }
3134 typeof e == "object" && (n = e, e = t), n = n || {};
3135 var r, i, s, o, u, a, f, l, c = v.ajaxSetup({}, n),
3136 h = c.context || c,
3137 p = h !== c && (h.nodeType || h instanceof v) ? v(h) : v.event,
3138 d = v.Deferred(),
3139 m = v.Callbacks("once memory"),
3140 g = c.statusCode || {},
3141 b = {},
3142 w = {},
3143 E = 0,
3144 S = "canceled",
3145 x = {
3146 readyState: 0,
3147 setRequestHeader: function(e, t) {
3148 if (!E) {
3149 var n = e.toLowerCase();
3150 e = w[n] = w[n] || e, b[e] = t
3151 }
3152 return this
3153 },
3154 getAllResponseHeaders: function() {
3155 return E === 2 ? i : null
3156 },
3157 getResponseHeader: function(e) {
3158 var n;
3159 if (E === 2) {
3160 if (!s) {
3161 s = {};
3162 while (n = pn.exec(i)) s[n[1].toLowerCase()] = n[2]
3163 }
3164 n = s[e.toLowerCase()]
3165 }
3166 return n === t ? null : n
3167 },
3168 overrideMimeType: function(e) {
3169 return E || (c.mimeType = e), this
3170 },
3171 abort: function(e) {
3172 return e = e || S, o && o.abort(e), T(0, e), this
3173 }
3174 };
3175 d.promise(x), x.success = x.done, x.error = x.fail, x.complete = m.add, x.statusCode = function(e) {
3176 if (e) {
3177 var t;
3178 if (E < 2)
3179 for (t in e) g[t] = [g[t], e[t]];
3180 else t = e[x.status], x.always(t)
3181 }
3182 return this
3183 }, c.url = ((e || c.url) + "").replace(hn, "").replace(mn, ln[1] + "//"), c.dataTypes = v.trim(c.dataType || "*").toLowerCase().split(y), c.crossDomain == null && (a = wn.exec(c.url.toLowerCase()), c.crossDomain = !(!a || a[1] === ln[1] && a[2] === ln[2] && (a[3] || (a[1] === "http:" ? 80 : 443)) == (ln[3] || (ln[1] === "http:" ? 80 : 443)))), c.data && c.processData && typeof c.data != "string" && (c.data = v.param(c.data, c.traditional)), kn(Sn, c, n, x);
3184 if (E === 2) return x;
3185 f = c.global, c.type = c.type.toUpperCase(), c.hasContent = !vn.test(c.type), f && v.active++ === 0 && v.event.trigger("ajaxStart");
3186 if (!c.hasContent) {
3187 c.data && (c.url += (gn.test(c.url) ? "&" : "?") + c.data, delete c.data), r = c.url;
3188 if (c.cache === !1) {
3189 var N = v.now(),
3190 C = c.url.replace(bn, "$1_=" + N);
3191 c.url = C + (C === c.url ? (gn.test(c.url) ? "&" : "?") + "_=" + N : "")
3192 }
3193 }(c.data && c.hasContent && c.contentType !== !1 || n.contentType) && x.setRequestHeader("Content-Type", c.contentType), c.ifModified && (r = r || c.url, v.lastModified[r] && x.setRequestHeader("If-Modified-Since", v.lastModified[r]), v.etag[r] && x.setRequestHeader("If-None-Match", v.etag[r])), x.setRequestHeader("Accept", c.dataTypes[0] && c.accepts[c.dataTypes[0]] ? c.accepts[c.dataTypes[0]] + (c.dataTypes[0] !== "*" ? ", " + Tn + "; q=0.01" : "") : c.accepts["*"]);
3194 for (l in c.headers) x.setRequestHeader(l, c.headers[l]);
3195 if (!c.beforeSend || c.beforeSend.call(h, x, c) !== !1 && E !== 2) {
3196 S = "abort";
3197 for (l in {
3198 success: 1,
3199 error: 1,
3200 complete: 1
3201 }) x[l](c[l]);
3202 o = kn(xn, c, n, x);
3203 if (!o) T(-1, "No Transport");
3204 else {
3205 x.readyState = 1, f && p.trigger("ajaxSend", [x, c]), c.async && c.timeout > 0 && (u = setTimeout(function() {
3206 x.abort("timeout")
3207 }, c.timeout));
3208 try {
3209 E = 1, o.send(b, T)
3210 } catch (k) {
3211 if (!(E < 2)) throw k;
3212 T(-1, k)
3213 }
3214 }
3215 return x
3216 }
3217 return x.abort()
3218 },
3219 active: 0,
3220 lastModified: {},
3221 etag: {}
3222 });
3223 var Mn = [],
3224 _n = /\?/,
3225 Dn = /(=)\?(?=&|$)|\?\?/,
3226 Pn = v.now();
3227 v.ajaxSetup({
3228 jsonp: "callback",
3229 jsonpCallback: function() {
3230 var e = Mn.pop() || v.expando + "_" + Pn++;
3231 return this[e] = !0, e
3232 }
3233 }), v.ajaxPrefilter("json jsonp", function(n, r, i) {
3234 var s, o, u, a = n.data,
3235 f = n.url,
3236 l = n.jsonp !== !1,
3237 c = l && Dn.test(f),
3238 h = l && !c && typeof a == "string" && !(n.contentType || "").indexOf("application/x-www-form-urlencoded") && Dn.test(a);
3239 if (n.dataTypes[0] === "jsonp" || c || h) return s = n.jsonpCallback = v.isFunction(n.jsonpCallback) ? n.jsonpCallback() : n.jsonpCallback, o = e[s], c ? n.url = f.replace(Dn, "$1" + s) : h ? n.data = a.replace(Dn, "$1" + s) : l && (n.url += (_n.test(f) ? "&" : "?") + n.jsonp + "=" + s), n.converters["script json"] = function() {
3240 return u || v.error(s + " was not called"), u[0]
3241 }, n.dataTypes[0] = "json", e[s] = function() {
3242 u = arguments
3243 }, i.always(function() {
3244 e[s] = o, n[s] && (n.jsonpCallback = r.jsonpCallback, Mn.push(s)), u && v.isFunction(o) && o(u[0]), u = o = t
3245 }), "script"
3246 }), v.ajaxSetup({
3247 accepts: {
3248 script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
3249 },
3250 contents: {
3251 script: /javascript|ecmascript/
3252 },
3253 converters: {
3254 "text script": function(e) {
3255 return v.globalEval(e), e
3256 }
3257 }
3258 }), v.ajaxPrefilter("script", function(e) {
3259 e.cache === t && (e.cache = !1), e.crossDomain && (e.type = "GET", e.global = !1)
3260 }), v.ajaxTransport("script", function(e) {
3261 if (e.crossDomain) {
3262 var n, r = i.head || i.getElementsByTagName("head")[0] || i.documentElement;
3263 return {
3264 send: function(s, o) {
3265 n = i.createElement("script"), n.async = "async", e.scriptCharset && (n.charset = e.scriptCharset), n.src = e.url, n.onload = n.onreadystatechange = function(e, i) {
3266 if (i || !n.readyState || /loaded|complete/.test(n.readyState)) n.onload = n.onreadystatechange = null, r && n.parentNode && r.removeChild(n), n = t, i || o(200, "success")
3267 }, r.insertBefore(n, r.firstChild)
3268 },
3269 abort: function() {
3270 n && n.onload(0, 1)
3271 }
3272 }
3273 }
3274 });
3275 var Hn, Bn = e.ActiveXObject ? function() {
3276 for (var e in Hn) Hn[e](0, 1)
3277 } : !1,
3278 jn = 0;
3279 v.ajaxSettings.xhr = e.ActiveXObject ? function() {
3280 return !this.isLocal && Fn() || In()
3281 } : Fn,
3282 function(e) {
3283 v.extend(v.support, {
3284 ajax: !!e,
3285 cors: !!e && "withCredentials" in e
3286 })
3287 }(v.ajaxSettings.xhr()), v.support.ajax && v.ajaxTransport(function(n) {
3288 if (!n.crossDomain || v.support.cors) {
3289 var r;
3290 return {
3291 send: function(i, s) {
3292 var o, u, a = n.xhr();
3293 n.username ? a.open(n.type, n.url, n.async, n.username, n.password) : a.open(n.type, n.url, n.async);
3294 if (n.xhrFields)
3295 for (u in n.xhrFields) a[u] = n.xhrFields[u];
3296 n.mimeType && a.overrideMimeType && a.overrideMimeType(n.mimeType), !n.crossDomain && !i["X-Requested-With"] && (i["X-Requested-With"] = "XMLHttpRequest");
3297 try {
3298 for (u in i) a.setRequestHeader(u, i[u])
3299 } catch (f) {}
3300 a.send(n.hasContent && n.data || null), r = function(e, i) {
3301 var u, f, l, c, h;
3302 try {
3303 if (r && (i || a.readyState === 4)) {
3304 r = t, o && (a.onreadystatechange = v.noop, Bn && delete Hn[o]);
3305 if (i) a.readyState !== 4 && a.abort();
3306 else {
3307 u = a.status, l = a.getAllResponseHeaders(), c = {}, h = a.responseXML, h && h.documentElement && (c.xml = h);
3308 try {
3309 c.text = a.responseText
3310 } catch (p) {}
3311 try {
3312 f = a.statusText
3313 } catch (p) {
3314 f = ""
3315 }!u && n.isLocal && !n.crossDomain ? u = c.text ? 200 : 404 : u === 1223 && (u = 204)
3316 }
3317 }
3318 } catch (d) {
3319 i || s(-1, d)
3320 }
3321 c && s(u, f, c, l)
3322 }, n.async ? a.readyState === 4 ? setTimeout(r, 0) : (o = ++jn, Bn && (Hn || (Hn = {}, v(e).unload(Bn)), Hn[o] = r), a.onreadystatechange = r) : r()
3323 },
3324 abort: function() {
3325 r && r(0, 1)
3326 }
3327 }
3328 }
3329 });
3330 var qn, Rn, Un = /^(?:toggle|show|hide)$/,
3331 zn = new RegExp("^(?:([-+])=|)(" + m + ")([a-z%]*)$", "i"),
3332 Wn = /queueHooks$/,
3333 Xn = [Gn],
3334 Vn = {
3335 "*": [
3336 function(e, t) {
3337 var n, r, i = this.createTween(e, t),
3338 s = zn.exec(t),
3339 o = i.cur(),
3340 u = +o || 0,
3341 a = 1,
3342 f = 20;
3343 if (s) {
3344 n = +s[2], r = s[3] || (v.cssNumber[e] ? "" : "px");
3345 if (r !== "px" && u) {
3346 u = v.css(i.elem, e, !0) || n || 1;
3347 do a = a || ".5", u /= a, v.style(i.elem, e, u + r); while (a !== (a = i.cur() / o) && a !== 1 && --f)
3348 }
3349 i.unit = r, i.start = u, i.end = s[1] ? u + (s[1] + 1) * n : n
3350 }
3351 return i
3352 }
3353 ]
3354 };
3355 v.Animation = v.extend(Kn, {
3356 tweener: function(e, t) {
3357 v.isFunction(e) ? (t = e, e = ["*"]) : e = e.split(" ");
3358 var n, r = 0,
3359 i = e.length;
3360 for (; r < i; r++) n = e[r], Vn[n] = Vn[n] || [], Vn[n].unshift(t)
3361 },
3362 prefilter: function(e, t) {
3363 t ? Xn.unshift(e) : Xn.push(e)
3364 }
3365 }), v.Tween = Yn, Yn.prototype = {
3366 constructor: Yn,
3367 init: function(e, t, n, r, i, s) {
3368 this.elem = e, this.prop = n, this.easing = i || "swing", this.options = t, this.start = this.now = this.cur(), this.end = r, this.unit = s || (v.cssNumber[n] ? "" : "px")
3369 },
3370 cur: function() {
3371 var e = Yn.propHooks[this.prop];
3372 return e && e.get ? e.get(this) : Yn.propHooks._default.get(this)
3373 },
3374 run: function(e) {
3375 var t, n = Yn.propHooks[this.prop];
3376 return this.options.duration ? this.pos = t = v.easing[this.easing](e, this.options.duration * e, 0, 1, this.options.duration) : this.pos = t = e, this.now = (this.end - this.start) * t + this.start, this.options.step && this.options.step.call(this.elem, this.now, this), n && n.set ? n.set(this) : Yn.propHooks._default.set(this), this
3377 }
3378 }, Yn.prototype.init.prototype = Yn.prototype, Yn.propHooks = {
3379 _default: {
3380 get: function(e) {
3381 var t;
3382 return e.elem[e.prop] == null || !!e.elem.style && e.elem.style[e.prop] != null ? (t = v.css(e.elem, e.prop, !1, ""), !t || t === "auto" ? 0 : t) : e.elem[e.prop]
3383 },
3384 set: function(e) {
3385 v.fx.step[e.prop] ? v.fx.step[e.prop](e) : e.elem.style && (e.elem.style[v.cssProps[e.prop]] != null || v.cssHooks[e.prop]) ? v.style(e.elem, e.prop, e.now + e.unit) : e.elem[e.prop] = e.now
3386 }
3387 }
3388 }, Yn.propHooks.scrollTop = Yn.propHooks.scrollLeft = {
3389 set: function(e) {
3390 e.elem.nodeType && e.elem.parentNode && (e.elem[e.prop] = e.now)
3391 }
3392 }, v.each(["toggle", "show", "hide"], function(e, t) {
3393 var n = v.fn[t];
3394 v.fn[t] = function(r, i, s) {
3395 return r == null || typeof r == "boolean" || !e && v.isFunction(r) && v.isFunction(i) ? n.apply(this, arguments) : this.animate(Zn(t, !0), r, i, s)
3396 }
3397 }), v.fn.extend({
3398 fadeTo: function(e, t, n, r) {
3399 return this.filter(Gt).css("opacity", 0).show().end().animate({
3400 opacity: t
3401 }, e, n, r)
3402 },
3403 animate: function(e, t, n, r) {
3404 var i = v.isEmptyObject(e),
3405 s = v.speed(t, n, r),
3406 o = function() {
3407 var t = Kn(this, v.extend({}, e), s);
3408 i && t.stop(!0)
3409 };
3410 return i || s.queue === !1 ? this.each(o) : this.queue(s.queue, o)
3411 },
3412 stop: function(e, n, r) {
3413 var i = function(e) {
3414 var t = e.stop;
3415 delete e.stop, t(r)
3416 };
3417 return typeof e != "string" && (r = n, n = e, e = t), n && e !== !1 && this.queue(e || "fx", []), this.each(function() {
3418 var t = !0,
3419 n = e != null && e + "queueHooks",
3420 s = v.timers,
3421 o = v._data(this);
3422 if (n) o[n] && o[n].stop && i(o[n]);
3423 else
3424 for (n in o) o[n] && o[n].stop && Wn.test(n) && i(o[n]);
3425 for (n = s.length; n--;) s[n].elem === this && (e == null || s[n].queue === e) && (s[n].anim.stop(r), t = !1, s.splice(n, 1));
3426 (t || !r) && v.dequeue(this, e)
3427 })
3428 }
3429 }), v.each({
3430 slideDown: Zn("show"),
3431 slideUp: Zn("hide"),
3432 slideToggle: Zn("toggle"),
3433 fadeIn: {
3434 opacity: "show"
3435 },
3436 fadeOut: {
3437 opacity: "hide"
3438 },
3439 fadeToggle: {
3440 opacity: "toggle"
3441 }
3442 }, function(e, t) {
3443 v.fn[e] = function(e, n, r) {
3444 return this.animate(t, e, n, r)
3445 }
3446 }), v.speed = function(e, t, n) {
3447 var r = e && typeof e == "object" ? v.extend({}, e) : {
3448 complete: n || !n && t || v.isFunction(e) && e,
3449 duration: e,
3450 easing: n && t || t && !v.isFunction(t) && t
3451 };
3452 r.duration = v.fx.off ? 0 : typeof r.duration == "number" ? r.duration : r.duration in v.fx.speeds ? v.fx.speeds[r.duration] : v.fx.speeds._default;
3453 if (r.queue == null || r.queue === !0) r.queue = "fx";
3454 return r.old = r.complete, r.complete = function() {
3455 v.isFunction(r.old) && r.old.call(this), r.queue && v.dequeue(this, r.queue)
3456 }, r
3457 }, v.easing = {
3458 linear: function(e) {
3459 return e
3460 },
3461 swing: function(e) {
3462 return .5 - Math.cos(e * Math.PI) / 2
3463 }
3464 }, v.timers = [], v.fx = Yn.prototype.init, v.fx.tick = function() {
3465 var e, n = v.timers,
3466 r = 0;
3467 qn = v.now();
3468 for (; r < n.length; r++) e = n[r], !e() && n[r] === e && n.splice(r--, 1);
3469 n.length || v.fx.stop(), qn = t
3470 }, v.fx.timer = function(e) {
3471 e() && v.timers.push(e) && !Rn && (Rn = setInterval(v.fx.tick, v.fx.interval))
3472 }, v.fx.interval = 13, v.fx.stop = function() {
3473 clearInterval(Rn), Rn = null
3474 }, v.fx.speeds = {
3475 slow: 600,
3476 fast: 200,
3477 _default: 400
3478 }, v.fx.step = {}, v.expr && v.expr.filters && (v.expr.filters.animated = function(e) {
3479 return v.grep(v.timers, function(t) {
3480 return e === t.elem
3481 }).length
3482 });
3483 var er = /^(?:body|html)$/i;
3484 v.fn.offset = function(e) {
3485 if (arguments.length) return e === t ? this : this.each(function(t) {
3486 v.offset.setOffset(this, e, t)
3487 });
3488 var n, r, i, s, o, u, a, f = {
3489 top: 0,
3490 left: 0
3491 },
3492 l = this[0],
3493 c = l && l.ownerDocument;
3494 if (!c) return;
3495 return (r = c.body) === l ? v.offset.bodyOffset(l) : (n = c.documentElement, v.contains(n, l) ? (typeof l.getBoundingClientRect != "undefined" && (f = l.getBoundingClientRect()), i = tr(c), s = n.clientTop || r.clientTop || 0, o = n.clientLeft || r.clientLeft || 0, u = i.pageYOffset || n.scrollTop, a = i.pageXOffset || n.scrollLeft, {
3496 top: f.top + u - s,
3497 left: f.left + a - o
3498 }) : f)
3499 }, v.offset = {
3500 bodyOffset: function(e) {
3501 var t = e.offsetTop,
3502 n = e.offsetLeft;
3503 return v.support.doesNotIncludeMarginInBodyOffset && (t += parseFloat(v.css(e, "marginTop")) || 0, n += parseFloat(v.css(e, "marginLeft")) || 0), {
3504 top: t,
3505 left: n
3506 }
3507 },
3508 setOffset: function(e, t, n) {
3509 var r = v.css(e, "position");
3510 r === "static" && (e.style.position = "relative");
3511 var i = v(e),
3512 s = i.offset(),
3513 o = v.css(e, "top"),
3514 u = v.css(e, "left"),
3515 a = (r === "absolute" || r === "fixed") && v.inArray("auto", [o, u]) > -1,
3516 f = {},
3517 l = {},
3518 c, h;
3519 a ? (l = i.position(), c = l.top, h = l.left) : (c = parseFloat(o) || 0, h = parseFloat(u) || 0), v.isFunction(t) && (t = t.call(e, n, s)), t.top != null && (f.top = t.top - s.top + c), t.left != null && (f.left = t.left - s.left + h), "using" in t ? t.using.call(e, f) : i.css(f)
3520 }
3521 }, v.fn.extend({
3522 position: function() {
3523 if (!this[0]) return;
3524 var e = this[0],
3525 t = this.offsetParent(),
3526 n = this.offset(),
3527 r = er.test(t[0].nodeName) ? {
3528 top: 0,
3529 left: 0
3530 } : t.offset();
3531 return n.top -= parseFloat(v.css(e, "marginTop")) || 0, n.left -= parseFloat(v.css(e, "marginLeft")) || 0, r.top += parseFloat(v.css(t[0], "borderTopWidth")) || 0, r.left += parseFloat(v.css(t[0], "borderLeftWidth")) || 0, {
3532 top: n.top - r.top,
3533 left: n.left - r.left
3534 }
3535 },
3536 offsetParent: function() {
3537 return this.map(function() {
3538 var e = this.offsetParent || i.body;
3539 while (e && !er.test(e.nodeName) && v.css(e, "position") === "static") e = e.offsetParent;
3540 return e || i.body
3541 })
3542 }
3543 }), v.each({
3544 scrollLeft: "pageXOffset",
3545 scrollTop: "pageYOffset"
3546 }, function(e, n) {
3547 var r = /Y/.test(n);
3548 v.fn[e] = function(i) {
3549 return v.access(this, function(e, i, s) {
3550 var o = tr(e);
3551 if (s === t) return o ? n in o ? o[n] : o.document.documentElement[i] : e[i];
3552 o ? o.scrollTo(r ? v(o).scrollLeft() : s, r ? s : v(o).scrollTop()) : e[i] = s
3553 }, e, i, arguments.length, null)
3554 }
3555 }), v.each({
3556 Height: "height",
3557 Width: "width"
3558 }, function(e, n) {
3559 v.each({
3560 padding: "inner" + e,
3561 content: n,
3562 "": "outer" + e
3563 }, function(r, i) {
3564 v.fn[i] = function(i, s) {
3565 var o = arguments.length && (r || typeof i != "boolean"),
3566 u = r || (i === !0 || s === !0 ? "margin" : "border");
3567 return v.access(this, function(n, r, i) {
3568 var s;
3569 return v.isWindow(n) ? n.document.documentElement["client" + e] : n.nodeType === 9 ? (s = n.documentElement, Math.max(n.body["scroll" + e], s["scroll" + e], n.body["offset" + e], s["offset" + e], s["client" + e])) : i === t ? v.css(n, r, i, u) : v.style(n, r, i, u)
3570 }, n, o ? i : t, o, null)
3571 }
3572 })
3573 }), e.jQuery = e.$ = v, typeof define == "function" && define.amd && define.amd.jQuery && define("jquery", [], function() {
3574 return v
3575 })
3576})(window); \ No newline at end of file
diff --git a/Back/jinwei.me/js/jquery.swatchbook.js b/Back/jinwei.me/js/jquery.swatchbook.js
new file mode 100644
index 0000000..dc6ce43
--- /dev/null
+++ b/Back/jinwei.me/js/jquery.swatchbook.js
@@ -0,0 +1,255 @@
1/**
2 * jquery.swatchbook.js v1.1.0
3 * http://www.codrops.com
4 *
5 * Licensed under the MIT license.
6 * http://www.opensource.org/licenses/mit-license.php
7 *
8 * Copyright 2012, Codrops
9 * http://www.codrops.com
10 */
11
12;
13(function($, window, undefined) {
14
15 'use strict';
16
17 // global
18 var Modernizr = window.Modernizr;
19
20 jQuery.fn.reverse = [].reverse;
21
22 $.SwatchBook = function(options, element) {
23
24 this.$el = $(element);
25 this._init(options);
26
27 };
28
29 $.SwatchBook.defaults = {
30 // index of initial centered item
31 center: 6,
32 // number of degrees that is between each item
33 angleInc: 8,
34 speed: 700,
35 easing: 'ease',
36 // amount in degrees for the opened item's next sibling
37 proximity: 45,
38 // amount in degrees between the opened item's next siblings
39 neighbor: 4,
40 // animate on load
41 onLoadAnim: true,
42 // if it should be closed by default
43 initclosed: false,
44 // index of the element that when clicked, triggers the open/close function
45 // by default there is no such element
46 closeIdx: -1,
47 // open one specific item initially (overrides initclosed)
48 openAt: -1
49 };
50
51 $.SwatchBook.prototype = {
52
53 _init: function(options) {
54
55 this.options = $.extend(true, {}, $.SwatchBook.defaults, options);
56
57 this.$items = this.$el.children('div');
58 this.itemsCount = this.$items.length;
59 this.current = -1;
60 this.support = Modernizr.csstransitions;
61 this.cache = [];
62
63 if (this.options.onLoadAnim) {
64 this._setTransition();
65 }
66
67 if (!this.options.initclosed) {
68 this._center(this.options.center, this.options.onLoadAnim);
69 } else {
70
71 this.isClosed = true;
72 if (!this.options.onLoadAnim) {
73 this._setTransition();
74 }
75
76 }
77
78 if (this.options.openAt >= 0 && this.options.openAt < this.itemsCount) {
79 this._openItem(this.$items.eq(this.options.openAt));
80 }
81
82 this._initEvents();
83
84 },
85 _setTransition: function() {
86
87 if (this.support) {
88 this.$items.css({
89 'transition': 'all ' + this.options.speed + 'ms ' + this.options.easing
90 });
91 }
92
93 },
94 _openclose: function() {
95
96 this.isClosed ? this._center(this.options.center, true) : this.$items.css({
97 'transform': 'rotate(0deg)'
98 });
99 this.isClosed = !this.isClosed;
100
101 },
102 _center: function(idx, anim) {
103
104 var self = this;
105
106 this.$items.each(function(i) {
107
108 var transformStr = 'rotate(' + (self.options.angleInc * (i - idx)) + 'deg)';
109 $(this).css({
110 'transform': transformStr
111 });
112
113 });
114
115 },
116 _openItem: function($item) {
117
118 var itmIdx = $item.index();
119
120 if (itmIdx !== this.current) {
121
122 if (this.options.closeIdx !== -1 && itmIdx === this.options.closeIdx) {
123
124 this._openclose();
125 this._setCurrent();
126
127 } else {
128
129 this._setCurrent($item);
130 $item.css({
131 'transform': 'rotate(0deg)'
132 });
133 this._rotateSiblings($item);
134
135 }
136
137 }
138
139 },
140 _initEvents: function() {
141
142 var self = this;
143
144 this.$items.on('click.swatchbook', function(event) {
145 self._openItem($(this));
146 });
147
148 },
149 _rotateSiblings: function($item) {
150
151 var self = this,
152 idx = $item.index(),
153 $cached = this.cache[idx],
154 $siblings;
155
156 if ($cached) {
157 $siblings = $cached;
158 } else {
159
160 $siblings = $item.siblings();
161 this.cache[idx] = $siblings;
162
163 }
164
165 $siblings.each(function(i) {
166
167 var rotateVal = i < idx ?
168 self.options.angleInc * (i - idx) :
169 i - idx === 1 ?
170 self.options.proximity :
171 self.options.proximity + (i - idx - 1) * self.options.neighbor;
172
173 var transformStr = 'rotate(' + rotateVal + 'deg)';
174
175 $(this).css({
176 'transform': transformStr
177 });
178
179 });
180
181 },
182 _setCurrent: function($el) {
183
184 this.current = $el ? $el.index() : -1;
185 this.$items.removeClass('ff-active');
186 if ($el) {
187 $el.addClass('ff-active');
188 }
189
190 }
191
192 };
193
194 var logError = function(message) {
195
196 if (window.console) {
197
198 window.console.error(message);
199
200 }
201
202 };
203
204 $.fn.swatchbook = function(options) {
205
206 var instance = $.data(this, 'swatchbook');
207
208 if (typeof options === 'string') {
209
210 var args = Array.prototype.slice.call(arguments, 1);
211
212 this.each(function() {
213
214 if (!instance) {
215
216 logError("cannot call methods on swatchbook prior to initialization; " +
217 "attempted to call method '" + options + "'");
218 return;
219
220 }
221
222 if (!$.isFunction(instance[options]) || options.charAt(0) === "_") {
223
224 logError("no such method '" + options + "' for swatchbook instance");
225 return;
226
227 }
228
229 instance[options].apply(instance, args);
230
231 });
232
233 } else {
234
235 this.each(function() {
236
237 if (instance) {
238
239 instance._init();
240
241 } else {
242
243 instance = $.data(this, 'swatchbook', new $.SwatchBook(options, this));
244
245 }
246
247 });
248
249 }
250
251 return instance;
252
253 };
254
255})(jQuery, window); \ No newline at end of file
diff --git a/Back/jinwei.me/js/modernizr.custom.79639.js b/Back/jinwei.me/js/modernizr.custom.79639.js
new file mode 100644
index 0000000..23b151c
--- /dev/null
+++ b/Back/jinwei.me/js/modernizr.custom.79639.js
@@ -0,0 +1,167 @@
1/* Modernizr 2.5.3 (Custom Build) | MIT & BSD
2 * Build: http://www.modernizr.com/download/#-cssanimations-csstransforms-csstransforms3d-csstransitions-shiv-cssclasses-teststyles-testprop-testallprops-prefixes-domprefixes
3 */
4;
5window.Modernizr = function(a, b, c) {
6 function z(a) {
7 j.cssText = a
8 }
9
10 function A(a, b) {
11 return z(m.join(a + ";") + (b || ""))
12 }
13
14 function B(a, b) {
15 return typeof a === b
16 }
17
18 function C(a, b) {
19 return !!~("" + a).indexOf(b)
20 }
21
22 function D(a, b) {
23 for (var d in a)
24 if (j[a[d]] !== c) return b == "pfx" ? a[d] : !0;
25 return !1
26 }
27
28 function E(a, b, d) {
29 for (var e in a) {
30 var f = b[a[e]];
31 if (f !== c) return d === !1 ? a[e] : B(f, "function") ? f.bind(d || b) : f
32 }
33 return !1
34 }
35
36 function F(a, b, c) {
37 var d = a.charAt(0).toUpperCase() + a.substr(1),
38 e = (a + " " + o.join(d + " ") + d).split(" ");
39 return B(b, "string") || B(b, "undefined") ? D(e, b) : (e = (a + " " + p.join(d + " ") + d).split(" "), E(e, b, c))
40 }
41 var d = "2.5.3",
42 e = {},
43 f = !0,
44 g = b.documentElement,
45 h = "modernizr",
46 i = b.createElement(h),
47 j = i.style,
48 k, l = {}.toString,
49 m = " -webkit- -moz- -o- -ms- ".split(" "),
50 n = "Webkit Moz O ms",
51 o = n.split(" "),
52 p = n.toLowerCase().split(" "),
53 q = {},
54 r = {},
55 s = {},
56 t = [],
57 u = t.slice,
58 v, w = function(a, c, d, e) {
59 var f, i, j, k = b.createElement("div"),
60 l = b.body,
61 m = l ? l : b.createElement("body");
62 if (parseInt(d, 10))
63 while (d--) j = b.createElement("div"), j.id = e ? e[d] : h + (d + 1), k.appendChild(j);
64 return f = ["&#173;", "<style>", a, "</style>"].join(""), k.id = h, (l ? k : m).innerHTML += f, m.appendChild(k), l || (m.style.background = "", g.appendChild(m)), i = c(k, a), l ? k.parentNode.removeChild(k) : m.parentNode.removeChild(m), !!i
65 },
66 x = {}.hasOwnProperty,
67 y;
68 !B(x, "undefined") && !B(x.call, "undefined") ? y = function(a, b) {
69 return x.call(a, b)
70 } : y = function(a, b) {
71 return b in a && B(a.constructor.prototype[b], "undefined")
72 }, Function.prototype.bind || (Function.prototype.bind = function(b) {
73 var c = this;
74 if (typeof c != "function") throw new TypeError;
75 var d = u.call(arguments, 1),
76 e = function() {
77 if (this instanceof e) {
78 var a = function() {};
79 a.prototype = c.prototype;
80 var f = new a,
81 g = c.apply(f, d.concat(u.call(arguments)));
82 return Object(g) === g ? g : f
83 }
84 return c.apply(b, d.concat(u.call(arguments)))
85 };
86 return e
87 });
88 var G = function(a, c) {
89 var d = a.join(""),
90 f = c.length;
91 w(d, function(a, c) {
92 var d = b.styleSheets[b.styleSheets.length - 1],
93 g = d ? d.cssRules && d.cssRules[0] ? d.cssRules[0].cssText : d.cssText || "" : "",
94 h = a.childNodes,
95 i = {};
96 while (f--) i[h[f].id] = h[f];
97 e.csstransforms3d = (i.csstransforms3d && i.csstransforms3d.offsetLeft) === 9 && i.csstransforms3d.offsetHeight === 3
98 }, f, c)
99 }([, ["@media (", m.join("transform-3d),("), h, ")", "{#csstransforms3d{left:9px;position:absolute;height:3px;}}"].join("")], [, "csstransforms3d"]);
100 q.cssanimations = function() {
101 return F("animationName")
102 }, q.csstransforms = function() {
103 return !!F("transform")
104 }, q.csstransforms3d = function() {
105 var a = !!F("perspective");
106 return a && "webkitPerspective" in g.style && (a = e.csstransforms3d), a
107 }, q.csstransitions = function() {
108 return F("transition")
109 };
110 for (var H in q) y(q, H) && (v = H.toLowerCase(), e[v] = q[H](), t.push((e[v] ? "" : "no-") + v));
111 return z(""), i = k = null,
112 function(a, b) {
113 function g(a, b) {
114 var c = a.createElement("p"),
115 d = a.getElementsByTagName("head")[0] || a.documentElement;
116 return c.innerHTML = "x<style>" + b + "</style>", d.insertBefore(c.lastChild, d.firstChild)
117 }
118
119 function h() {
120 var a = k.elements;
121 return typeof a == "string" ? a.split(" ") : a
122 }
123
124 function i(a) {
125 var b = {},
126 c = a.createElement,
127 e = a.createDocumentFragment,
128 f = e();
129 a.createElement = function(a) {
130 var e = (b[a] || (b[a] = c(a))).cloneNode();
131 return k.shivMethods && e.canHaveChildren && !d.test(a) ? f.appendChild(e) : e
132 }, a.createDocumentFragment = Function("h,f", "return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&(" + h().join().replace(/\w+/g, function(a) {
133 return b[a] = c(a), f.createElement(a), 'c("' + a + '")'
134 }) + ");return n}")(k, f)
135 }
136
137 function j(a) {
138 var b;
139 return a.documentShived ? a : (k.shivCSS && !e && (b = !!g(a, "article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio{display:none}canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden]{display:none}audio[controls]{display:inline-block;*display:inline;*zoom:1}mark{background:#FF0;color:#000}")), f || (b = !i(a)), b && (a.documentShived = b), a)
140 }
141 var c = a.html5 || {},
142 d = /^<|^(?:button|form|map|select|textarea)$/i,
143 e, f;
144 (function() {
145 var a = b.createElement("a");
146 a.innerHTML = "<xyz></xyz>", e = "hidden" in a, f = a.childNodes.length == 1 || function() {
147 try {
148 b.createElement("a")
149 } catch (a) {
150 return !0
151 }
152 var c = b.createDocumentFragment();
153 return typeof c.cloneNode == "undefined" || typeof c.createDocumentFragment == "undefined" || typeof c.createElement == "undefined"
154 }()
155 })();
156 var k = {
157 elements: c.elements || "abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",
158 shivCSS: c.shivCSS !== !1,
159 shivMethods: c.shivMethods !== !1,
160 type: "default",
161 shivDocument: j
162 };
163 a.html5 = k, j(b)
164 }(this, b), e._version = d, e._prefixes = m, e._domPrefixes = p, e._cssomPrefixes = o, e.testProp = function(a) {
165 return D([a])
166 }, e.testAllProps = F, e.testStyles = w, g.className = g.className.replace(/(^|\s)no-js(\s|$)/, "$1$2") + (f ? " js " + t.join(" ") : ""), e
167}(this, this.document); \ No newline at end of file
diff --git a/Back/jinwei.me/mobile/css/bootstrap-theme.css b/Back/jinwei.me/mobile/css/bootstrap-theme.css
new file mode 100644
index 0000000..a406992
--- /dev/null
+++ b/Back/jinwei.me/mobile/css/bootstrap-theme.css
@@ -0,0 +1,347 @@
1/*!
2 * Bootstrap v3.1.1 (http://getbootstrap.com)
3 * Copyright 2011-2014 Twitter, Inc.
4 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5 */
6
7.btn-default,
8.btn-primary,
9.btn-success,
10.btn-info,
11.btn-warning,
12.btn-danger {
13 text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);
14 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
15 box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
16}
17.btn-default:active,
18.btn-primary:active,
19.btn-success:active,
20.btn-info:active,
21.btn-warning:active,
22.btn-danger:active,
23.btn-default.active,
24.btn-primary.active,
25.btn-success.active,
26.btn-info.active,
27.btn-warning.active,
28.btn-danger.active {
29 -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
30 box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
31}
32.btn:active,
33.btn.active {
34 background-image: none;
35}
36.btn-default {
37 text-shadow: 0 1px 0 #fff;
38 background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);
39 background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);
40 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);
41 filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
42 background-repeat: repeat-x;
43 border-color: #dbdbdb;
44 border-color: #ccc;
45}
46.btn-default:hover,
47.btn-default:focus {
48 background-color: #e0e0e0;
49 background-position: 0 -15px;
50}
51.btn-default:active,
52.btn-default.active {
53 background-color: #e0e0e0;
54 border-color: #dbdbdb;
55}
56.btn-primary {
57 background-image: -webkit-linear-gradient(top, #428bca 0%, #2d6ca2 100%);
58 background-image: linear-gradient(to bottom, #428bca 0%, #2d6ca2 100%);
59 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff2d6ca2', GradientType=0);
60 filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
61 background-repeat: repeat-x;
62 border-color: #2b669a;
63}
64.btn-primary:hover,
65.btn-primary:focus {
66 background-color: #2d6ca2;
67 background-position: 0 -15px;
68}
69.btn-primary:active,
70.btn-primary.active {
71 background-color: #2d6ca2;
72 border-color: #2b669a;
73}
74.btn-success {
75 background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);
76 background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);
77 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);
78 filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
79 background-repeat: repeat-x;
80 border-color: #3e8f3e;
81}
82.btn-success:hover,
83.btn-success:focus {
84 background-color: #419641;
85 background-position: 0 -15px;
86}
87.btn-success:active,
88.btn-success.active {
89 background-color: #419641;
90 border-color: #3e8f3e;
91}
92.btn-info {
93 background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
94 background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);
95 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);
96 filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
97 background-repeat: repeat-x;
98 border-color: #28a4c9;
99}
100.btn-info:hover,
101.btn-info:focus {
102 background-color: #2aabd2;
103 background-position: 0 -15px;
104}
105.btn-info:active,
106.btn-info.active {
107 background-color: #2aabd2;
108 border-color: #28a4c9;
109}
110.btn-warning {
111 background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
112 background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);
113 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);
114 filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
115 background-repeat: repeat-x;
116 border-color: #e38d13;
117}
118.btn-warning:hover,
119.btn-warning:focus {
120 background-color: #eb9316;
121 background-position: 0 -15px;
122}
123.btn-warning:active,
124.btn-warning.active {
125 background-color: #eb9316;
126 border-color: #e38d13;
127}
128.btn-danger {
129 background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
130 background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);
131 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);
132 filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
133 background-repeat: repeat-x;
134 border-color: #b92c28;
135}
136.btn-danger:hover,
137.btn-danger:focus {
138 background-color: #c12e2a;
139 background-position: 0 -15px;
140}
141.btn-danger:active,
142.btn-danger.active {
143 background-color: #c12e2a;
144 border-color: #b92c28;
145}
146.thumbnail,
147.img-thumbnail {
148 -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
149 box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
150}
151.dropdown-menu > li > a:hover,
152.dropdown-menu > li > a:focus {
153 background-color: #e8e8e8;
154 background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
155 background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
156 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
157 background-repeat: repeat-x;
158}
159.dropdown-menu > .active > a,
160.dropdown-menu > .active > a:hover,
161.dropdown-menu > .active > a:focus {
162 background-color: #357ebd;
163 background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%);
164 background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%);
165 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);
166 background-repeat: repeat-x;
167}
168.navbar-default {
169 background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);
170 background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);
171 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);
172 filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
173 background-repeat: repeat-x;
174 border-radius: 4px;
175 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
176 box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
177}
178.navbar-default .navbar-nav > .active > a {
179 background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f3f3f3 100%);
180 background-image: linear-gradient(to bottom, #ebebeb 0%, #f3f3f3 100%);
181 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff3f3f3', GradientType=0);
182 background-repeat: repeat-x;
183 -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
184 box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
185}
186.navbar-brand,
187.navbar-nav > li > a {
188 text-shadow: 0 1px 0 rgba(255, 255, 255, .25);
189}
190.navbar-inverse {
191 background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);
192 background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);
193 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);
194 filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
195 background-repeat: repeat-x;
196}
197.navbar-inverse .navbar-nav > .active > a {
198 background-image: -webkit-linear-gradient(top, #222 0%, #282828 100%);
199 background-image: linear-gradient(to bottom, #222 0%, #282828 100%);
200 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff282828', GradientType=0);
201 background-repeat: repeat-x;
202 -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
203 box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
204}
205.navbar-inverse .navbar-brand,
206.navbar-inverse .navbar-nav > li > a {
207 text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);
208}
209.navbar-static-top,
210.navbar-fixed-top,
211.navbar-fixed-bottom {
212 border-radius: 0;
213}
214.alert {
215 text-shadow: 0 1px 0 rgba(255, 255, 255, .2);
216 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
217 box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
218}
219.alert-success {
220 background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
221 background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);
222 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);
223 background-repeat: repeat-x;
224 border-color: #b2dba1;
225}
226.alert-info {
227 background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
228 background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);
229 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);
230 background-repeat: repeat-x;
231 border-color: #9acfea;
232}
233.alert-warning {
234 background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
235 background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);
236 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);
237 background-repeat: repeat-x;
238 border-color: #f5e79e;
239}
240.alert-danger {
241 background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
242 background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);
243 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);
244 background-repeat: repeat-x;
245 border-color: #dca7a7;
246}
247.progress {
248 background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
249 background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);
250 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);
251 background-repeat: repeat-x;
252}
253.progress-bar {
254 background-image: -webkit-linear-gradient(top, #428bca 0%, #3071a9 100%);
255 background-image: linear-gradient(to bottom, #428bca 0%, #3071a9 100%);
256 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0);
257 background-repeat: repeat-x;
258}
259.progress-bar-success {
260 background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);
261 background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);
262 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);
263 background-repeat: repeat-x;
264}
265.progress-bar-info {
266 background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
267 background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);
268 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);
269 background-repeat: repeat-x;
270}
271.progress-bar-warning {
272 background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
273 background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);
274 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);
275 background-repeat: repeat-x;
276}
277.progress-bar-danger {
278 background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);
279 background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);
280 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);
281 background-repeat: repeat-x;
282}
283.list-group {
284 border-radius: 4px;
285 -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
286 box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
287}
288.list-group-item.active,
289.list-group-item.active:hover,
290.list-group-item.active:focus {
291 text-shadow: 0 -1px 0 #3071a9;
292 background-image: -webkit-linear-gradient(top, #428bca 0%, #3278b3 100%);
293 background-image: linear-gradient(to bottom, #428bca 0%, #3278b3 100%);
294 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0);
295 background-repeat: repeat-x;
296 border-color: #3278b3;
297}
298.panel {
299 -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
300 box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
301}
302.panel-default > .panel-heading {
303 background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
304 background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
305 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
306 background-repeat: repeat-x;
307}
308.panel-primary > .panel-heading {
309 background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%);
310 background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%);
311 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);
312 background-repeat: repeat-x;
313}
314.panel-success > .panel-heading {
315 background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
316 background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);
317 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);
318 background-repeat: repeat-x;
319}
320.panel-info > .panel-heading {
321 background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
322 background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);
323 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);
324 background-repeat: repeat-x;
325}
326.panel-warning > .panel-heading {
327 background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
328 background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);
329 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);
330 background-repeat: repeat-x;
331}
332.panel-danger > .panel-heading {
333 background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
334 background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);
335 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);
336 background-repeat: repeat-x;
337}
338.well {
339 background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
340 background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);
341 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);
342 background-repeat: repeat-x;
343 border-color: #dcdcdc;
344 -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
345 box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
346}
347/*# sourceMappingURL=bootstrap-theme.css.map */
diff --git a/Back/jinwei.me/mobile/css/bootstrap-theme.css.map b/Back/jinwei.me/mobile/css/bootstrap-theme.css.map
new file mode 100644
index 0000000..b36fc9a
--- /dev/null
+++ b/Back/jinwei.me/mobile/css/bootstrap-theme.css.map
@@ -0,0 +1 @@
{"version":3,"sources":["less/theme.less","less/mixins.less"],"names":[],"mappings":"AAeA;AACA;AACA;AACA;AACA;AACA;EACE,wCAAA;ECoGA,2FAAA;EACQ,mFAAA;;ADhGR,YAAC;AAAD,YAAC;AAAD,YAAC;AAAD,SAAC;AAAD,YAAC;AAAD,WAAC;AACD,YAAC;AAAD,YAAC;AAAD,YAAC;AAAD,SAAC;AAAD,YAAC;AAAD,WAAC;EC8FD,wDAAA;EACQ,gDAAA;;ADnER,IAAC;AACD,IAAC;EACC,sBAAA;;AAKJ;EC4PI,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EAEA,sHAAA;EAoCF,mEAAA;ED7TA,2BAAA;EACA,qBAAA;EAyB2C,yBAAA;EAA2B,kBAAA;;AAvBtE,YAAC;AACD,YAAC;EACC,yBAAA;EACA,4BAAA;;AAGF,YAAC;AACD,YAAC;EACC,yBAAA;EACA,qBAAA;;AAeJ;EC2PI,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EAEA,sHAAA;EAoCF,mEAAA;ED7TA,2BAAA;EACA,qBAAA;;AAEA,YAAC;AACD,YAAC;EACC,yBAAA;EACA,4BAAA;;AAGF,YAAC;AACD,YAAC;EACC,yBAAA;EACA,qBAAA;;AAgBJ;EC0PI,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EAEA,sHAAA;EAoCF,mEAAA;ED7TA,2BAAA;EACA,qBAAA;;AAEA,YAAC;AACD,YAAC;EACC,yBAAA;EACA,4BAAA;;AAGF,YAAC;AACD,YAAC;EACC,yBAAA;EACA,qBAAA;;AAiBJ;ECyPI,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EAEA,sHAAA;EAoCF,mEAAA;ED7TA,2BAAA;EACA,qBAAA;;AAEA,SAAC;AACD,SAAC;EACC,yBAAA;EACA,4BAAA;;AAGF,SAAC;AACD,SAAC;EACC,yBAAA;EACA,qBAAA;;AAkBJ;ECwPI,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EAEA,sHAAA;EAoCF,mEAAA;ED7TA,2BAAA;EACA,qBAAA;;AAEA,YAAC;AACD,YAAC;EACC,yBAAA;EACA,4BAAA;;AAGF,YAAC;AACD,YAAC;EACC,yBAAA;EACA,qBAAA;;AAmBJ;ECuPI,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EAEA,sHAAA;EAoCF,mEAAA;ED7TA,2BAAA;EACA,qBAAA;;AAEA,WAAC;AACD,WAAC;EACC,yBAAA;EACA,4BAAA;;AAGF,WAAC;AACD,WAAC;EACC,yBAAA;EACA,qBAAA;;AA2BJ;AACA;EC6CE,kDAAA;EACQ,0CAAA;;ADpCV,cAAe,KAAK,IAAG;AACvB,cAAe,KAAK,IAAG;ECmOnB,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;EDpOF,yBAAA;;AAEF,cAAe,UAAU;AACzB,cAAe,UAAU,IAAG;AAC5B,cAAe,UAAU,IAAG;EC6NxB,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;ED9NF,yBAAA;;AAUF;ECiNI,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;EAoCF,mEAAA;EDrPA,kBAAA;ECaA,2FAAA;EACQ,mFAAA;;ADjBV,eAOE,YAAY,UAAU;EC0MpB,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;EApMF,wDAAA;EACQ,gDAAA;;ADLV;AACA,WAAY,KAAK;EACf,8CAAA;;AAIF;EC+LI,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;EAoCF,mEAAA;;ADtOF,eAIE,YAAY,UAAU;EC2LpB,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;EApMF,uDAAA;EACQ,+CAAA;;ADCV,eASE;AATF,eAUE,YAAY,KAAK;EACf,yCAAA;;AAKJ;AACA;AACA;EACE,gBAAA;;AAUF;EACE,6CAAA;EChCA,0FAAA;EACQ,kFAAA;;AD2CV;ECqJI,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;ED5JF,qBAAA;;AAKF;ECoJI,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;ED5JF,qBAAA;;AAMF;ECmJI,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;ED5JF,qBAAA;;AAOF;ECkJI,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;ED5JF,qBAAA;;AAgBF;ECyII,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;;ADlIJ;EC+HI,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;;ADjIJ;EC8HI,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;;ADhIJ;EC6HI,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;;AD/HJ;EC4HI,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;;AD9HJ;EC2HI,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;;ADtHJ;EACE,kBAAA;EC/EA,kDAAA;EACQ,0CAAA;;ADiFV,gBAAgB;AAChB,gBAAgB,OAAO;AACvB,gBAAgB,OAAO;EACrB,6BAAA;EC4GE,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;ED7GF,qBAAA;;AAUF;ECjGE,iDAAA;EACQ,yCAAA;;AD0GV,cAAe;ECsFX,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;;ADxFJ,cAAe;ECqFX,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;;ADvFJ,cAAe;ECoFX,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;;ADtFJ,WAAY;ECmFR,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;;ADrFJ,cAAe;ECkFX,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;;ADpFJ,aAAc;ECiFV,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;;AD5EJ;ECyEI,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;ED1EF,qBAAA;EC1HA,yFAAA;EACQ,iFAAA","sourcesContent":["\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables.less\";\n@import \"mixins.less\";\n\n\n\n//\n// Buttons\n// --------------------------------------------------\n\n// Common styles\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0,0,0,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n // Reset the shadow\n &:active,\n &.active {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n}\n\n// Mixin for generating new styles\n.btn-styles(@btn-color: #555) {\n #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));\n .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners\n background-repeat: repeat-x;\n border-color: darken(@btn-color, 14%);\n\n &:hover,\n &:focus {\n background-color: darken(@btn-color, 12%);\n background-position: 0 -15px;\n }\n\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n border-color: darken(@btn-color, 14%);\n }\n}\n\n// Common styles\n.btn {\n // Remove the gradient for the pressed/active state\n &:active,\n &.active {\n background-image: none;\n }\n}\n\n// Apply the mixin to the buttons\n.btn-default { .btn-styles(@btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; }\n.btn-primary { .btn-styles(@btn-primary-bg); }\n.btn-success { .btn-styles(@btn-success-bg); }\n.btn-info { .btn-styles(@btn-info-bg); }\n.btn-warning { .btn-styles(@btn-warning-bg); }\n.btn-danger { .btn-styles(@btn-danger-bg); }\n\n\n\n//\n// Images\n// --------------------------------------------------\n\n.thumbnail,\n.img-thumbnail {\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n\n\n\n//\n// Dropdowns\n// --------------------------------------------------\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));\n background-color: darken(@dropdown-link-hover-bg, 5%);\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n background-color: darken(@dropdown-link-active-bg, 5%);\n}\n\n\n\n//\n// Navbar\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n border-radius: @navbar-border-radius;\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: darken(@navbar-default-bg, 5%); @end-color: darken(@navbar-default-bg, 2%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.075));\n }\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255,255,255,.25);\n}\n\n// Inverted navbar\n.navbar-inverse {\n #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: @navbar-inverse-bg; @end-color: lighten(@navbar-inverse-bg, 2.5%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.25));\n }\n\n .navbar-brand,\n .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0,0,0,.25);\n }\n}\n\n// Undo rounded corners in static and fixed navbars\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n\n\n\n//\n// Alerts\n// --------------------------------------------------\n\n// Common styles\n.alert {\n text-shadow: 0 1px 0 rgba(255,255,255,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);\n .box-shadow(@shadow);\n}\n\n// Mixin for generating new styles\n.alert-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));\n border-color: darken(@color, 15%);\n}\n\n// Apply the mixin to the alerts\n.alert-success { .alert-styles(@alert-success-bg); }\n.alert-info { .alert-styles(@alert-info-bg); }\n.alert-warning { .alert-styles(@alert-warning-bg); }\n.alert-danger { .alert-styles(@alert-danger-bg); }\n\n\n\n//\n// Progress bars\n// --------------------------------------------------\n\n// Give the progress background some depth\n.progress {\n #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)\n}\n\n// Mixin for generating new styles\n.progress-bar-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));\n}\n\n// Apply the mixin to the progress bars\n.progress-bar { .progress-bar-styles(@progress-bar-bg); }\n.progress-bar-success { .progress-bar-styles(@progress-bar-success-bg); }\n.progress-bar-info { .progress-bar-styles(@progress-bar-info-bg); }\n.progress-bar-warning { .progress-bar-styles(@progress-bar-warning-bg); }\n.progress-bar-danger { .progress-bar-styles(@progress-bar-danger-bg); }\n\n\n\n//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n border-radius: @border-radius-base;\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);\n #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));\n border-color: darken(@list-group-active-border, 7.5%);\n}\n\n\n\n//\n// Panels\n// --------------------------------------------------\n\n// Common styles\n.panel {\n .box-shadow(0 1px 2px rgba(0,0,0,.05));\n}\n\n// Mixin for generating new styles\n.panel-heading-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));\n}\n\n// Apply the mixin to the panel headings only\n.panel-default > .panel-heading { .panel-heading-styles(@panel-default-heading-bg); }\n.panel-primary > .panel-heading { .panel-heading-styles(@panel-primary-heading-bg); }\n.panel-success > .panel-heading { .panel-heading-styles(@panel-success-heading-bg); }\n.panel-info > .panel-heading { .panel-heading-styles(@panel-info-heading-bg); }\n.panel-warning > .panel-heading { .panel-heading-styles(@panel-warning-heading-bg); }\n.panel-danger > .panel-heading { .panel-heading-styles(@panel-danger-heading-bg); }\n\n\n\n//\n// Wells\n// --------------------------------------------------\n\n.well {\n #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg);\n border-color: darken(@well-bg, 10%);\n @shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n}\n","//\n// Mixins\n// --------------------------------------------------\n\n\n// Utilities\n// -------------------------\n\n// Clearfix\n// Source: http://nicolasgallagher.com/micro-clearfix-hack/\n//\n// For modern browsers\n// 1. The space content is one way to avoid an Opera bug when the\n// contenteditable attribute is included anywhere else in the document.\n// Otherwise it causes space to appear at the top and bottom of elements\n// that are clearfixed.\n// 2. The use of `table` rather than `block` is only necessary if using\n// `:before` to contain the top-margins of child elements.\n.clearfix() {\n &:before,\n &:after {\n content: \" \"; // 1\n display: table; // 2\n }\n &:after {\n clear: both;\n }\n}\n\n// WebKit-style focus\n.tab-focus() {\n // Default\n outline: thin dotted;\n // WebKit\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n\n// Center-align a block level element\n.center-block() {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n\n// Sizing shortcuts\n.size(@width; @height) {\n width: @width;\n height: @height;\n}\n.square(@size) {\n .size(@size; @size);\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n &::-moz-placeholder { color: @color; // Firefox\n opacity: 1; } // See https://github.com/twbs/bootstrap/pull/11526\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Text overflow\n// Requires inline-block or block for proper styling\n.text-overflow() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n// CSS image replacement\n//\n// Heads up! v3 launched with with only `.hide-text()`, but per our pattern for\n// mixins being reused as classes with the same name, this doesn't hold up. As\n// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`. Note\n// that we cannot chain the mixins together in Less, so they are repeated.\n//\n// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757\n\n// Deprecated as of v3.0.1 (will be removed in v4)\n.hide-text() {\n font: ~\"0/0\" a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n// New mixin to use as of v3.0.1\n.text-hide() {\n .hide-text();\n}\n\n\n\n// CSS3 PROPERTIES\n// --------------------------------------------------\n\n// Single side border-radius\n.border-top-radius(@radius) {\n border-top-right-radius: @radius;\n border-top-left-radius: @radius;\n}\n.border-right-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-top-right-radius: @radius;\n}\n.border-bottom-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-bottom-left-radius: @radius;\n}\n.border-left-radius(@radius) {\n border-bottom-left-radius: @radius;\n border-top-left-radius: @radius;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support the\n// standard `box-shadow` property.\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Transitions\n.transition(@transition) {\n -webkit-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n// Transformations\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n transform: rotate(@degrees);\n}\n.scale(@ratio; @ratio-y...) {\n -webkit-transform: scale(@ratio, @ratio-y);\n -ms-transform: scale(@ratio, @ratio-y); // IE9 only\n transform: scale(@ratio, @ratio-y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n transform: translate(@x, @y);\n}\n.skew(@x; @y) {\n -webkit-transform: skew(@x, @y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n transform: skew(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n.backface-visibility(@visibility){\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// User select\n// For selecting text on the page\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n\n// Resize anything\n.resizable(@direction) {\n resize: @direction; // Options: horizontal, vertical, both\n overflow: auto; // Safari fix\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Opacity\n.opacity(@opacity) {\n opacity: @opacity;\n // IE8 filter\n @opacity-ie: (@opacity * 100);\n filter: ~\"alpha(opacity=@{opacity-ie})\";\n}\n\n\n\n// GRADIENTS\n// --------------------------------------------------\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, color-stop(@start-color @start-percent), color-stop(@end-color @end-percent)); // Safari 5.1-6, Chrome 10+\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n\n// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n\n\n\n// Retina images\n//\n// Short retina mixin for setting background-image and -size\n\n.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {\n background-image: url(\"@{file-1x}\");\n\n @media\n only screen and (-webkit-min-device-pixel-ratio: 2),\n only screen and ( min--moz-device-pixel-ratio: 2),\n only screen and ( -o-min-device-pixel-ratio: 2/1),\n only screen and ( min-device-pixel-ratio: 2),\n only screen and ( min-resolution: 192dpi),\n only screen and ( min-resolution: 2dppx) {\n background-image: url(\"@{file-2x}\");\n background-size: @width-1x @height-1x;\n }\n}\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n\n.img-responsive(@display: block) {\n display: @display;\n max-width: 100%; // Part 1: Set a maximum relative to the parent\n height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching\n}\n\n\n// COMPONENT MIXINS\n// --------------------------------------------------\n\n// Horizontal dividers\n// -------------------------\n// Dividers (basically an hr) within dropdowns and nav lists\n.nav-divider(@color: #e5e5e5) {\n height: 1px;\n margin: ((@line-height-computed / 2) - 1) 0;\n overflow: hidden;\n background-color: @color;\n}\n\n// Panels\n// -------------------------\n.panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) {\n border-color: @border;\n\n & > .panel-heading {\n color: @heading-text-color;\n background-color: @heading-bg-color;\n border-color: @heading-border;\n\n + .panel-collapse .panel-body {\n border-top-color: @border;\n }\n }\n & > .panel-footer {\n + .panel-collapse .panel-body {\n border-bottom-color: @border;\n }\n }\n}\n\n// Alerts\n// -------------------------\n.alert-variant(@background; @border; @text-color) {\n background-color: @background;\n border-color: @border;\n color: @text-color;\n\n hr {\n border-top-color: darken(@border, 5%);\n }\n .alert-link {\n color: darken(@text-color, 10%);\n }\n}\n\n// Tables\n// -------------------------\n.table-row-variant(@state; @background) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table > thead > tr,\n .table > tbody > tr,\n .table > tfoot > tr {\n > td.@{state},\n > th.@{state},\n &.@{state} > td,\n &.@{state} > th {\n background-color: @background;\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover > tbody > tr {\n > td.@{state}:hover,\n > th.@{state}:hover,\n &.@{state}:hover > td,\n &.@{state}:hover > th {\n background-color: darken(@background, 5%);\n }\n }\n}\n\n// List Groups\n// -------------------------\n.list-group-item-variant(@state; @background; @color) {\n .list-group-item-@{state} {\n color: @color;\n background-color: @background;\n\n a& {\n color: @color;\n\n .list-group-item-heading { color: inherit; }\n\n &:hover,\n &:focus {\n color: @color;\n background-color: darken(@background, 5%);\n }\n &.active,\n &.active:hover,\n &.active:focus {\n color: #fff;\n background-color: @color;\n border-color: @color;\n }\n }\n }\n}\n\n// Button variants\n// -------------------------\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n.button-variant(@color; @background; @border) {\n color: @color;\n background-color: @background;\n border-color: @border;\n\n &:hover,\n &:focus,\n &:active,\n &.active,\n .open .dropdown-toggle& {\n color: @color;\n background-color: darken(@background, 8%);\n border-color: darken(@border, 12%);\n }\n &:active,\n &.active,\n .open .dropdown-toggle& {\n background-image: none;\n }\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &:active,\n &.active {\n background-color: @background;\n border-color: @border;\n }\n }\n\n .badge {\n color: @background;\n background-color: @color;\n }\n}\n\n// Button sizes\n// -------------------------\n.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n}\n\n// Pagination\n// -------------------------\n.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @border-radius) {\n > li {\n > a,\n > span {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n }\n &:first-child {\n > a,\n > span {\n .border-left-radius(@border-radius);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius);\n }\n }\n }\n}\n\n// Labels\n// -------------------------\n.label-variant(@color) {\n background-color: @color;\n &[href] {\n &:hover,\n &:focus {\n background-color: darken(@color, 10%);\n }\n }\n}\n\n// Contextual backgrounds\n// -------------------------\n.bg-variant(@color) {\n background-color: @color;\n a&:hover {\n background-color: darken(@color, 10%);\n }\n}\n\n// Typography\n// -------------------------\n.text-emphasis-variant(@color) {\n color: @color;\n a&:hover {\n color: darken(@color, 10%);\n }\n}\n\n// Navbar vertical align\n// -------------------------\n// Vertically center elements in the navbar.\n// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.\n.navbar-vertical-align(@element-height) {\n margin-top: ((@navbar-height - @element-height) / 2);\n margin-bottom: ((@navbar-height - @element-height) / 2);\n}\n\n// Progress bars\n// -------------------------\n.progress-bar-variant(@color) {\n background-color: @color;\n .progress-striped & {\n #gradient > .striped();\n }\n}\n\n// Responsive utilities\n// -------------------------\n// More easily include all the states for responsive-utilities.less.\n.responsive-visibility() {\n display: block !important;\n table& { display: table; }\n tr& { display: table-row !important; }\n th&,\n td& { display: table-cell !important; }\n}\n\n.responsive-invisibility() {\n display: none !important;\n}\n\n\n// Grid System\n// -----------\n\n// Centered container element\n.container-fixed() {\n margin-right: auto;\n margin-left: auto;\n padding-left: (@grid-gutter-width / 2);\n padding-right: (@grid-gutter-width / 2);\n &:extend(.clearfix all);\n}\n\n// Creates a wrapper for a series of columns\n.make-row(@gutter: @grid-gutter-width) {\n margin-left: (@gutter / -2);\n margin-right: (@gutter / -2);\n &:extend(.clearfix all);\n}\n\n// Generate the extra small columns\n.make-xs-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n float: left;\n width: percentage((@columns / @grid-columns));\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n}\n.make-xs-column-offset(@columns) {\n @media (min-width: @screen-xs-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-xs-column-push(@columns) {\n @media (min-width: @screen-xs-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-xs-column-pull(@columns) {\n @media (min-width: @screen-xs-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n\n// Generate the small columns\n.make-sm-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-sm-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-offset(@columns) {\n @media (min-width: @screen-sm-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-push(@columns) {\n @media (min-width: @screen-sm-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-pull(@columns) {\n @media (min-width: @screen-sm-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n\n// Generate the medium columns\n.make-md-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-md-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-offset(@columns) {\n @media (min-width: @screen-md-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-push(@columns) {\n @media (min-width: @screen-md-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-pull(@columns) {\n @media (min-width: @screen-md-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n\n// Generate the large columns\n.make-lg-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-lg-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-offset(@columns) {\n @media (min-width: @screen-lg-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-push(@columns) {\n @media (min-width: @screen-lg-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-pull(@columns) {\n @media (min-width: @screen-lg-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `@grid-columns`.\n\n.make-grid-columns() {\n // Common styles for all sizes of grid columns, widths 1-12\n .col(@index) when (@index = 1) { // initial\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general; \"=<\" isn't a typo\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n position: relative;\n // Prevent columns from collapsing when empty\n min-height: 1px;\n // Inner gutter via padding\n padding-left: (@grid-gutter-width / 2);\n padding-right: (@grid-gutter-width / 2);\n }\n }\n .col(1); // kickstart it\n}\n\n.float-grid-columns(@class) {\n .col(@index) when (@index = 1) { // initial\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n float: left;\n }\n }\n .col(1); // kickstart it\n}\n\n.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {\n .col-@{class}-@{index} {\n width: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) {\n .col-@{class}-push-@{index} {\n left: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) {\n .col-@{class}-pull-@{index} {\n right: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = offset) {\n .col-@{class}-offset-@{index} {\n margin-left: percentage((@index / @grid-columns));\n }\n}\n\n// Basic looping in LESS\n.loop-grid-columns(@index, @class, @type) when (@index >= 0) {\n .calc-grid-column(@index, @class, @type);\n // next iteration\n .loop-grid-columns((@index - 1), @class, @type);\n}\n\n// Create grid for specific class\n.make-grid(@class) {\n .float-grid-columns(@class);\n .loop-grid-columns(@grid-columns, @class, width);\n .loop-grid-columns(@grid-columns, @class, pull);\n .loop-grid-columns(@grid-columns, @class, push);\n .loop-grid-columns(@grid-columns, @class, offset);\n}\n\n// Form validation states\n//\n// Used in forms.less to generate the form validation CSS for warnings, errors,\n// and successes.\n\n.form-control-validation(@text-color: #555; @border-color: #ccc; @background-color: #f5f5f5) {\n // Color the label and help text\n .help-block,\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline {\n color: @text-color;\n }\n // Set the border and box shadow on specific inputs to match\n .form-control {\n border-color: @border-color;\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work\n &:focus {\n border-color: darken(@border-color, 10%);\n @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@border-color, 20%);\n .box-shadow(@shadow);\n }\n }\n // Set validation states also for addons\n .input-group-addon {\n color: @text-color;\n border-color: @border-color;\n background-color: @background-color;\n }\n // Optional feedback icon\n .form-control-feedback {\n color: @text-color;\n }\n}\n\n// Form control focus state\n//\n// Generate a customized focus state and for any input with the specified color,\n// which defaults to the `@input-focus-border` variable.\n//\n// We highly encourage you to not customize the default value, but instead use\n// this to tweak colors on an as-needed basis. This aesthetic change is based on\n// WebKit's default styles, but applicable to a wider range of browsers. Its\n// usability and accessibility should be taken into account with any change.\n//\n// Example usage: change the default blue border and shadow to white for better\n// contrast against a dark gray background.\n\n.form-control-focus(@color: @input-border-focus) {\n @color-rgba: rgba(red(@color), green(@color), blue(@color), .6);\n &:focus {\n border-color: @color;\n outline: 0;\n .box-shadow(~\"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px @{color-rgba}\");\n }\n}\n\n// Form control sizing\n//\n// Relative text size, padding, and border-radii changes for form controls. For\n// horizontal sizing, wrap controls in the predefined grid classes. `<select>`\n// element gets special love because it's special, and that's a fact!\n\n.input-size(@input-height; @padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n height: @input-height;\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n\n select& {\n height: @input-height;\n line-height: @input-height;\n }\n\n textarea&,\n select[multiple]& {\n height: auto;\n }\n}\n"]} \ No newline at end of file
diff --git a/Back/jinwei.me/mobile/css/bootstrap-theme.min.css b/Back/jinwei.me/mobile/css/bootstrap-theme.min.css
new file mode 100644
index 0000000..ba4bd28
--- /dev/null
+++ b/Back/jinwei.me/mobile/css/bootstrap-theme.min.css
@@ -0,0 +1,7 @@
1/*!
2 * Bootstrap v3.1.1 (http://getbootstrap.com)
3 * Copyright 2011-2014 Twitter, Inc.
4 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5 */
6
7.btn-default,.btn-primary,.btn-success,.btn-info,.btn-warning,.btn-danger{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-default:active,.btn-primary:active,.btn-success:active,.btn-info:active,.btn-warning:active,.btn-danger:active,.btn-default.active,.btn-primary.active,.btn-success.active,.btn-info.active,.btn-warning.active,.btn-danger.active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn:active,.btn.active{background-image:none}.btn-default{background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;text-shadow:0 1px 0 #fff;border-color:#ccc}.btn-default:hover,.btn-default:focus{background-color:#e0e0e0;background-position:0 -15px}.btn-default:active,.btn-default.active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-primary{background-image:-webkit-linear-gradient(top,#428bca 0,#2d6ca2 100%);background-image:linear-gradient(to bottom,#428bca 0,#2d6ca2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff2d6ca2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#2b669a}.btn-primary:hover,.btn-primary:focus{background-color:#2d6ca2;background-position:0 -15px}.btn-primary:active,.btn-primary.active{background-color:#2d6ca2;border-color:#2b669a}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:hover,.btn-success:focus{background-color:#419641;background-position:0 -15px}.btn-success:active,.btn-success.active{background-color:#419641;border-color:#3e8f3e}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:hover,.btn-info:focus{background-color:#2aabd2;background-position:0 -15px}.btn-info:active,.btn-info.active{background-color:#2aabd2;border-color:#28a4c9}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:hover,.btn-warning:focus{background-color:#eb9316;background-position:0 -15px}.btn-warning:active,.btn-warning.active{background-color:#eb9316;border-color:#e38d13}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:hover,.btn-danger:focus{background-color:#c12e2a;background-position:0 -15px}.btn-danger:active,.btn-danger.active{background-color:#c12e2a;border-color:#b92c28}.thumbnail,.img-thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-color:#e8e8e8}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);background-color:#357ebd}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f3f3f3 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f3f3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff3f3f3', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.navbar-inverse .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#222 0,#282828 100%);background-image:linear-gradient(to bottom,#222 0,#282828 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff282828', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-static-top,.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0)}.progress-bar{background-image:-webkit-linear-gradient(top,#428bca 0,#3071a9 100%);background-image:linear-gradient(to bottom,#428bca 0,#3071a9 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0)}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0)}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0)}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0)}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{text-shadow:0 -1px 0 #3071a9;background-image:-webkit-linear-gradient(top,#428bca 0,#3278b3 100%);background-image:linear-gradient(to bottom,#428bca 0,#3278b3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0);border-color:#3278b3}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0)}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0)}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0)}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0)}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0)}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0)}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)} \ No newline at end of file
diff --git a/Back/jinwei.me/mobile/css/bootstrap.css b/Back/jinwei.me/mobile/css/bootstrap.css
new file mode 100644
index 0000000..7f36651
--- /dev/null
+++ b/Back/jinwei.me/mobile/css/bootstrap.css
@@ -0,0 +1,5785 @@
1/*!
2 * Bootstrap v3.1.1 (http://getbootstrap.com)
3 * Copyright 2011-2014 Twitter, Inc.
4 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5 */
6
7/*! normalize.css v3.0.0 | MIT License | git.io/normalize */
8html {
9 font-family: sans-serif;
10 -webkit-text-size-adjust: 100%;
11 -ms-text-size-adjust: 100%;
12}
13body {
14 margin: 0;
15}
16article,
17aside,
18details,
19figcaption,
20figure,
21footer,
22header,
23hgroup,
24main,
25nav,
26section,
27summary {
28 display: block;
29}
30audio,
31canvas,
32progress,
33video {
34 display: inline-block;
35 vertical-align: baseline;
36}
37audio:not([controls]) {
38 display: none;
39 height: 0;
40}
41[hidden],
42template {
43 display: none;
44}
45a {
46 background: transparent;
47}
48a:active,
49a:hover {
50 outline: 0;
51}
52abbr[title] {
53 border-bottom: 1px dotted;
54}
55b,
56strong {
57 font-weight: bold;
58}
59dfn {
60 font-style: italic;
61}
62h1 {
63 margin: .67em 0;
64 font-size: 2em;
65}
66mark {
67 color: #000;
68 background: #ff0;
69}
70small {
71 font-size: 80%;
72}
73sub,
74sup {
75 position: relative;
76 font-size: 75%;
77 line-height: 0;
78 vertical-align: baseline;
79}
80sup {
81 top: -.5em;
82}
83sub {
84 bottom: -.25em;
85}
86img {
87 border: 0;
88}
89svg:not(:root) {
90 overflow: hidden;
91}
92figure {
93 margin: 1em 40px;
94}
95hr {
96 height: 0;
97 -moz-box-sizing: content-box;
98 box-sizing: content-box;
99}
100pre {
101 overflow: auto;
102}
103code,
104kbd,
105pre,
106samp {
107 font-family: monospace, monospace;
108 font-size: 1em;
109}
110button,
111input,
112optgroup,
113select,
114textarea {
115 margin: 0;
116 font: inherit;
117 color: inherit;
118}
119button {
120 overflow: visible;
121}
122button,
123select {
124 text-transform: none;
125}
126button,
127html input[type="button"],
128input[type="reset"],
129input[type="submit"] {
130 -webkit-appearance: button;
131 cursor: pointer;
132}
133button[disabled],
134html input[disabled] {
135 cursor: default;
136}
137button::-moz-focus-inner,
138input::-moz-focus-inner {
139 padding: 0;
140 border: 0;
141}
142input {
143 line-height: normal;
144}
145input[type="checkbox"],
146input[type="radio"] {
147 box-sizing: border-box;
148 padding: 0;
149}
150input[type="number"]::-webkit-inner-spin-button,
151input[type="number"]::-webkit-outer-spin-button {
152 height: auto;
153}
154input[type="search"] {
155 -webkit-box-sizing: content-box;
156 -moz-box-sizing: content-box;
157 box-sizing: content-box;
158 -webkit-appearance: textfield;
159}
160input[type="search"]::-webkit-search-cancel-button,
161input[type="search"]::-webkit-search-decoration {
162 -webkit-appearance: none;
163}
164fieldset {
165 padding: .35em .625em .75em;
166 margin: 0 2px;
167 border: 1px solid #c0c0c0;
168}
169legend {
170 padding: 0;
171 border: 0;
172}
173textarea {
174 overflow: auto;
175}
176optgroup {
177 font-weight: bold;
178}
179table {
180 border-spacing: 0;
181 border-collapse: collapse;
182}
183td,
184th {
185 padding: 0;
186}
187@media print {
188 * {
189 color: #000 !important;
190 text-shadow: none !important;
191 background: transparent !important;
192 box-shadow: none !important;
193 }
194 a,
195 a:visited {
196 text-decoration: underline;
197 }
198 a[href]:after {
199 content: " (" attr(href) ")";
200 }
201 abbr[title]:after {
202 content: " (" attr(title) ")";
203 }
204 a[href^="javascript:"]:after,
205 a[href^="#"]:after {
206 content: "";
207 }
208 pre,
209 blockquote {
210 border: 1px solid #999;
211
212 page-break-inside: avoid;
213 }
214 thead {
215 display: table-header-group;
216 }
217 tr,
218 img {
219 page-break-inside: avoid;
220 }
221 img {
222 max-width: 100% !important;
223 }
224 p,
225 h2,
226 h3 {
227 orphans: 3;
228 widows: 3;
229 }
230 h2,
231 h3 {
232 page-break-after: avoid;
233 }
234 select {
235 background: #fff !important;
236 }
237 .navbar {
238 display: none;
239 }
240 .table td,
241 .table th {
242 background-color: #fff !important;
243 }
244 .btn > .caret,
245 .dropup > .btn > .caret {
246 border-top-color: #000 !important;
247 }
248 .label {
249 border: 1px solid #000;
250 }
251 .table {
252 border-collapse: collapse !important;
253 }
254 .table-bordered th,
255 .table-bordered td {
256 border: 1px solid #ddd !important;
257 }
258}
259* {
260 -webkit-box-sizing: border-box;
261 -moz-box-sizing: border-box;
262 box-sizing: border-box;
263}
264*:before,
265*:after {
266 -webkit-box-sizing: border-box;
267 -moz-box-sizing: border-box;
268 box-sizing: border-box;
269}
270html {
271 font-size: 62.5%;
272
273 -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
274}
275body {
276 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
277 font-size: 14px;
278 line-height: 1.42857143;
279 color: #333;
280 background-color: #fff;
281}
282input,
283button,
284select,
285textarea {
286 font-family: inherit;
287 font-size: inherit;
288 line-height: inherit;
289}
290a {
291 color: #428bca;
292 text-decoration: none;
293}
294a:hover,
295a:focus {
296 color: #2a6496;
297 text-decoration: underline;
298}
299a:focus {
300 outline: thin dotted;
301 outline: 5px auto -webkit-focus-ring-color;
302 outline-offset: -2px;
303}
304figure {
305 margin: 0;
306}
307img {
308 vertical-align: middle;
309}
310.img-responsive,
311.thumbnail > img,
312.thumbnail a > img,
313.carousel-inner > .item > img,
314.carousel-inner > .item > a > img {
315 display: block;
316 max-width: 100%;
317 height: auto;
318}
319.img-rounded {
320 border-radius: 6px;
321}
322.img-thumbnail {
323 display: inline-block;
324 max-width: 100%;
325 height: auto;
326 padding: 4px;
327 line-height: 1.42857143;
328 background-color: #fff;
329 border: 1px solid #ddd;
330 border-radius: 4px;
331 -webkit-transition: all .2s ease-in-out;
332 transition: all .2s ease-in-out;
333}
334.img-circle {
335 border-radius: 50%;
336}
337hr {
338 margin-top: 20px;
339 margin-bottom: 20px;
340 border: 0;
341 border-top: 1px solid #eee;
342}
343.sr-only {
344 position: absolute;
345 width: 1px;
346 height: 1px;
347 padding: 0;
348 margin: -1px;
349 overflow: hidden;
350 clip: rect(0, 0, 0, 0);
351 border: 0;
352}
353h1,
354h2,
355h3,
356h4,
357h5,
358h6,
359.h1,
360.h2,
361.h3,
362.h4,
363.h5,
364.h6 {
365 font-family: inherit;
366 font-weight: 500;
367 line-height: 1.1;
368 color: inherit;
369}
370h1 small,
371h2 small,
372h3 small,
373h4 small,
374h5 small,
375h6 small,
376.h1 small,
377.h2 small,
378.h3 small,
379.h4 small,
380.h5 small,
381.h6 small,
382h1 .small,
383h2 .small,
384h3 .small,
385h4 .small,
386h5 .small,
387h6 .small,
388.h1 .small,
389.h2 .small,
390.h3 .small,
391.h4 .small,
392.h5 .small,
393.h6 .small {
394 font-weight: normal;
395 line-height: 1;
396 color: #999;
397}
398h1,
399.h1,
400h2,
401.h2,
402h3,
403.h3 {
404 margin-top: 20px;
405 margin-bottom: 10px;
406}
407h1 small,
408.h1 small,
409h2 small,
410.h2 small,
411h3 small,
412.h3 small,
413h1 .small,
414.h1 .small,
415h2 .small,
416.h2 .small,
417h3 .small,
418.h3 .small {
419 font-size: 65%;
420}
421h4,
422.h4,
423h5,
424.h5,
425h6,
426.h6 {
427 margin-top: 10px;
428 margin-bottom: 10px;
429}
430h4 small,
431.h4 small,
432h5 small,
433.h5 small,
434h6 small,
435.h6 small,
436h4 .small,
437.h4 .small,
438h5 .small,
439.h5 .small,
440h6 .small,
441.h6 .small {
442 font-size: 75%;
443}
444h1,
445.h1 {
446 font-size: 36px;
447}
448h2,
449.h2 {
450 font-size: 30px;
451}
452h3,
453.h3 {
454 font-size: 24px;
455}
456h4,
457.h4 {
458 font-size: 18px;
459}
460h5,
461.h5 {
462 font-size: 14px;
463}
464h6,
465.h6 {
466 font-size: 12px;
467}
468p {
469 margin: 0 0 10px;
470}
471.lead {
472 margin-bottom: 20px;
473 font-size: 16px;
474 font-weight: 200;
475 line-height: 1.4;
476}
477@media (min-width: 768px) {
478 .lead {
479 font-size: 21px;
480 }
481}
482small,
483.small {
484 font-size: 85%;
485}
486cite {
487 font-style: normal;
488}
489.text-left {
490 text-align: left;
491}
492.text-right {
493 text-align: right;
494}
495.text-center {
496 text-align: center;
497}
498.text-justify {
499 text-align: justify;
500}
501.text-muted {
502 color: #999;
503}
504.text-primary {
505 color: #428bca;
506}
507a.text-primary:hover {
508 color: #3071a9;
509}
510.text-success {
511 color: #3c763d;
512}
513a.text-success:hover {
514 color: #2b542c;
515}
516.text-info {
517 color: #31708f;
518}
519a.text-info:hover {
520 color: #245269;
521}
522.text-warning {
523 color: #8a6d3b;
524}
525a.text-warning:hover {
526 color: #66512c;
527}
528.text-danger {
529 color: #a94442;
530}
531a.text-danger:hover {
532 color: #843534;
533}
534.bg-primary {
535 color: #fff;
536 background-color: #428bca;
537}
538a.bg-primary:hover {
539 background-color: #3071a9;
540}
541.bg-success {
542 background-color: #dff0d8;
543}
544a.bg-success:hover {
545 background-color: #c1e2b3;
546}
547.bg-info {
548 background-color: #d9edf7;
549}
550a.bg-info:hover {
551 background-color: #afd9ee;
552}
553.bg-warning {
554 background-color: #fcf8e3;
555}
556a.bg-warning:hover {
557 background-color: #f7ecb5;
558}
559.bg-danger {
560 background-color: #f2dede;
561}
562a.bg-danger:hover {
563 background-color: #e4b9b9;
564}
565.page-header {
566 padding-bottom: 9px;
567 margin: 40px 0 20px;
568 border-bottom: 1px solid #eee;
569}
570ul,
571ol {
572 margin-top: 0;
573 margin-bottom: 10px;
574}
575ul ul,
576ol ul,
577ul ol,
578ol ol {
579 margin-bottom: 0;
580}
581.list-unstyled {
582 padding-left: 0;
583 list-style: none;
584}
585.list-inline {
586 padding-left: 0;
587 margin-left: -5px;
588 list-style: none;
589}
590.list-inline > li {
591 display: inline-block;
592 padding-right: 5px;
593 padding-left: 5px;
594}
595dl {
596 margin-top: 0;
597 margin-bottom: 20px;
598}
599dt,
600dd {
601 line-height: 1.42857143;
602}
603dt {
604 font-weight: bold;
605}
606dd {
607 margin-left: 0;
608}
609@media (min-width: 768px) {
610 .dl-horizontal dt {
611 float: left;
612 width: 160px;
613 overflow: hidden;
614 clear: left;
615 text-align: right;
616 text-overflow: ellipsis;
617 white-space: nowrap;
618 }
619 .dl-horizontal dd {
620 margin-left: 180px;
621 }
622}
623abbr[title],
624abbr[data-original-title] {
625 cursor: help;
626 border-bottom: 1px dotted #999;
627}
628.initialism {
629 font-size: 90%;
630 text-transform: uppercase;
631}
632blockquote {
633 padding: 10px 20px;
634 margin: 0 0 20px;
635 font-size: 17.5px;
636 border-left: 5px solid #eee;
637}
638blockquote p:last-child,
639blockquote ul:last-child,
640blockquote ol:last-child {
641 margin-bottom: 0;
642}
643blockquote footer,
644blockquote small,
645blockquote .small {
646 display: block;
647 font-size: 80%;
648 line-height: 1.42857143;
649 color: #999;
650}
651blockquote footer:before,
652blockquote small:before,
653blockquote .small:before {
654 content: '\2014 \00A0';
655}
656.blockquote-reverse,
657blockquote.pull-right {
658 padding-right: 15px;
659 padding-left: 0;
660 text-align: right;
661 border-right: 5px solid #eee;
662 border-left: 0;
663}
664.blockquote-reverse footer:before,
665blockquote.pull-right footer:before,
666.blockquote-reverse small:before,
667blockquote.pull-right small:before,
668.blockquote-reverse .small:before,
669blockquote.pull-right .small:before {
670 content: '';
671}
672.blockquote-reverse footer:after,
673blockquote.pull-right footer:after,
674.blockquote-reverse small:after,
675blockquote.pull-right small:after,
676.blockquote-reverse .small:after,
677blockquote.pull-right .small:after {
678 content: '\00A0 \2014';
679}
680blockquote:before,
681blockquote:after {
682 content: "";
683}
684address {
685 margin-bottom: 20px;
686 font-style: normal;
687 line-height: 1.42857143;
688}
689code,
690kbd,
691pre,
692samp {
693 font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
694}
695code {
696 padding: 2px 4px;
697 font-size: 90%;
698 color: #c7254e;
699 white-space: nowrap;
700 background-color: #f9f2f4;
701 border-radius: 4px;
702}
703kbd {
704 padding: 2px 4px;
705 font-size: 90%;
706 color: #fff;
707 background-color: #333;
708 border-radius: 3px;
709 box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
710}
711pre {
712 display: block;
713 padding: 9.5px;
714 margin: 0 0 10px;
715 font-size: 13px;
716 line-height: 1.42857143;
717 color: #333;
718 word-break: break-all;
719 word-wrap: break-word;
720 background-color: #f5f5f5;
721 border: 1px solid #ccc;
722 border-radius: 4px;
723}
724pre code {
725 padding: 0;
726 font-size: inherit;
727 color: inherit;
728 white-space: pre-wrap;
729 background-color: transparent;
730 border-radius: 0;
731}
732.pre-scrollable {
733 max-height: 340px;
734 overflow-y: scroll;
735}
736.container {
737 padding-right: 15px;
738 padding-left: 15px;
739 margin-right: auto;
740 margin-left: auto;
741}
742@media (min-width: 768px) {
743 .container {
744 width: 750px;
745 }
746}
747@media (min-width: 992px) {
748 .container {
749 width: 970px;
750 }
751}
752@media (min-width: 1200px) {
753 .container {
754 width: 1170px;
755 }
756}
757.container-fluid {
758 padding-right: 15px;
759 padding-left: 15px;
760 margin-right: auto;
761 margin-left: auto;
762}
763.row {
764 margin-right: -15px;
765 margin-left: -15px;
766}
767.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
768 position: relative;
769 min-height: 1px;
770 padding-right: 15px;
771 padding-left: 15px;
772}
773.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
774 float: left;
775}
776.col-xs-12 {
777 width: 100%;
778}
779.col-xs-11 {
780 width: 91.66666667%;
781}
782.col-xs-10 {
783 width: 83.33333333%;
784}
785.col-xs-9 {
786 width: 75%;
787}
788.col-xs-8 {
789 width: 66.66666667%;
790}
791.col-xs-7 {
792 width: 58.33333333%;
793}
794.col-xs-6 {
795 width: 50%;
796}
797.col-xs-5 {
798 width: 41.66666667%;
799}
800.col-xs-4 {
801 width: 33.33333333%;
802}
803.col-xs-3 {
804 width: 25%;
805}
806.col-xs-2 {
807 width: 16.66666667%;
808}
809.col-xs-1 {
810 width: 8.33333333%;
811}
812.col-xs-pull-12 {
813 right: 100%;
814}
815.col-xs-pull-11 {
816 right: 91.66666667%;
817}
818.col-xs-pull-10 {
819 right: 83.33333333%;
820}
821.col-xs-pull-9 {
822 right: 75%;
823}
824.col-xs-pull-8 {
825 right: 66.66666667%;
826}
827.col-xs-pull-7 {
828 right: 58.33333333%;
829}
830.col-xs-pull-6 {
831 right: 50%;
832}
833.col-xs-pull-5 {
834 right: 41.66666667%;
835}
836.col-xs-pull-4 {
837 right: 33.33333333%;
838}
839.col-xs-pull-3 {
840 right: 25%;
841}
842.col-xs-pull-2 {
843 right: 16.66666667%;
844}
845.col-xs-pull-1 {
846 right: 8.33333333%;
847}
848.col-xs-pull-0 {
849 right: 0;
850}
851.col-xs-push-12 {
852 left: 100%;
853}
854.col-xs-push-11 {
855 left: 91.66666667%;
856}
857.col-xs-push-10 {
858 left: 83.33333333%;
859}
860.col-xs-push-9 {
861 left: 75%;
862}
863.col-xs-push-8 {
864 left: 66.66666667%;
865}
866.col-xs-push-7 {
867 left: 58.33333333%;
868}
869.col-xs-push-6 {
870 left: 50%;
871}
872.col-xs-push-5 {
873 left: 41.66666667%;
874}
875.col-xs-push-4 {
876 left: 33.33333333%;
877}
878.col-xs-push-3 {
879 left: 25%;
880}
881.col-xs-push-2 {
882 left: 16.66666667%;
883}
884.col-xs-push-1 {
885 left: 8.33333333%;
886}
887.col-xs-push-0 {
888 left: 0;
889}
890.col-xs-offset-12 {
891 margin-left: 100%;
892}
893.col-xs-offset-11 {
894 margin-left: 91.66666667%;
895}
896.col-xs-offset-10 {
897 margin-left: 83.33333333%;
898}
899.col-xs-offset-9 {
900 margin-left: 75%;
901}
902.col-xs-offset-8 {
903 margin-left: 66.66666667%;
904}
905.col-xs-offset-7 {
906 margin-left: 58.33333333%;
907}
908.col-xs-offset-6 {
909 margin-left: 50%;
910}
911.col-xs-offset-5 {
912 margin-left: 41.66666667%;
913}
914.col-xs-offset-4 {
915 margin-left: 33.33333333%;
916}
917.col-xs-offset-3 {
918 margin-left: 25%;
919}
920.col-xs-offset-2 {
921 margin-left: 16.66666667%;
922}
923.col-xs-offset-1 {
924 margin-left: 8.33333333%;
925}
926.col-xs-offset-0 {
927 margin-left: 0;
928}
929@media (min-width: 768px) {
930 .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
931 float: left;
932 }
933 .col-sm-12 {
934 width: 100%;
935 }
936 .col-sm-11 {
937 width: 91.66666667%;
938 }
939 .col-sm-10 {
940 width: 83.33333333%;
941 }
942 .col-sm-9 {
943 width: 75%;
944 }
945 .col-sm-8 {
946 width: 66.66666667%;
947 }
948 .col-sm-7 {
949 width: 58.33333333%;
950 }
951 .col-sm-6 {
952 width: 50%;
953 }
954 .col-sm-5 {
955 width: 41.66666667%;
956 }
957 .col-sm-4 {
958 width: 33.33333333%;
959 }
960 .col-sm-3 {
961 width: 25%;
962 }
963 .col-sm-2 {
964 width: 16.66666667%;
965 }
966 .col-sm-1 {
967 width: 8.33333333%;
968 }
969 .col-sm-pull-12 {
970 right: 100%;
971 }
972 .col-sm-pull-11 {
973 right: 91.66666667%;
974 }
975 .col-sm-pull-10 {
976 right: 83.33333333%;
977 }
978 .col-sm-pull-9 {
979 right: 75%;
980 }
981 .col-sm-pull-8 {
982 right: 66.66666667%;
983 }
984 .col-sm-pull-7 {
985 right: 58.33333333%;
986 }
987 .col-sm-pull-6 {
988 right: 50%;
989 }
990 .col-sm-pull-5 {
991 right: 41.66666667%;
992 }
993 .col-sm-pull-4 {
994 right: 33.33333333%;
995 }
996 .col-sm-pull-3 {
997 right: 25%;
998 }
999 .col-sm-pull-2 {
1000 right: 16.66666667%;
1001 }
1002 .col-sm-pull-1 {
1003 right: 8.33333333%;
1004 }
1005 .col-sm-pull-0 {
1006 right: 0;
1007 }
1008 .col-sm-push-12 {
1009 left: 100%;
1010 }
1011 .col-sm-push-11 {
1012 left: 91.66666667%;
1013 }
1014 .col-sm-push-10 {
1015 left: 83.33333333%;
1016 }
1017 .col-sm-push-9 {
1018 left: 75%;
1019 }
1020 .col-sm-push-8 {
1021 left: 66.66666667%;
1022 }
1023 .col-sm-push-7 {
1024 left: 58.33333333%;
1025 }
1026 .col-sm-push-6 {
1027 left: 50%;
1028 }
1029 .col-sm-push-5 {
1030 left: 41.66666667%;
1031 }
1032 .col-sm-push-4 {
1033 left: 33.33333333%;
1034 }
1035 .col-sm-push-3 {
1036 left: 25%;
1037 }
1038 .col-sm-push-2 {
1039 left: 16.66666667%;
1040 }
1041 .col-sm-push-1 {
1042 left: 8.33333333%;
1043 }
1044 .col-sm-push-0 {
1045 left: 0;
1046 }
1047 .col-sm-offset-12 {
1048 margin-left: 100%;
1049 }
1050 .col-sm-offset-11 {
1051 margin-left: 91.66666667%;
1052 }
1053 .col-sm-offset-10 {
1054 margin-left: 83.33333333%;
1055 }
1056 .col-sm-offset-9 {
1057 margin-left: 75%;
1058 }
1059 .col-sm-offset-8 {
1060 margin-left: 66.66666667%;
1061 }
1062 .col-sm-offset-7 {
1063 margin-left: 58.33333333%;
1064 }
1065 .col-sm-offset-6 {
1066 margin-left: 50%;
1067 }
1068 .col-sm-offset-5 {
1069 margin-left: 41.66666667%;
1070 }
1071 .col-sm-offset-4 {
1072 margin-left: 33.33333333%;
1073 }
1074 .col-sm-offset-3 {
1075 margin-left: 25%;
1076 }
1077 .col-sm-offset-2 {
1078 margin-left: 16.66666667%;
1079 }
1080 .col-sm-offset-1 {
1081 margin-left: 8.33333333%;
1082 }
1083 .col-sm-offset-0 {
1084 margin-left: 0;
1085 }
1086}
1087@media (min-width: 992px) {
1088 .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
1089 float: left;
1090 }
1091 .col-md-12 {
1092 width: 100%;
1093 }
1094 .col-md-11 {
1095 width: 91.66666667%;
1096 }
1097 .col-md-10 {
1098 width: 83.33333333%;
1099 }
1100 .col-md-9 {
1101 width: 75%;
1102 }
1103 .col-md-8 {
1104 width: 66.66666667%;
1105 }
1106 .col-md-7 {
1107 width: 58.33333333%;
1108 }
1109 .col-md-6 {
1110 width: 50%;
1111 }
1112 .col-md-5 {
1113 width: 41.66666667%;
1114 }
1115 .col-md-4 {
1116 width: 33.33333333%;
1117 }
1118 .col-md-3 {
1119 width: 25%;
1120 }
1121 .col-md-2 {
1122 width: 16.66666667%;
1123 }
1124 .col-md-1 {
1125 width: 8.33333333%;
1126 }
1127 .col-md-pull-12 {
1128 right: 100%;
1129 }
1130 .col-md-pull-11 {
1131 right: 91.66666667%;
1132 }
1133 .col-md-pull-10 {
1134 right: 83.33333333%;
1135 }
1136 .col-md-pull-9 {
1137 right: 75%;
1138 }
1139 .col-md-pull-8 {
1140 right: 66.66666667%;
1141 }
1142 .col-md-pull-7 {
1143 right: 58.33333333%;
1144 }
1145 .col-md-pull-6 {
1146 right: 50%;
1147 }
1148 .col-md-pull-5 {
1149 right: 41.66666667%;
1150 }
1151 .col-md-pull-4 {
1152 right: 33.33333333%;
1153 }
1154 .col-md-pull-3 {
1155 right: 25%;
1156 }
1157 .col-md-pull-2 {
1158 right: 16.66666667%;
1159 }
1160 .col-md-pull-1 {
1161 right: 8.33333333%;
1162 }
1163 .col-md-pull-0 {
1164 right: 0;
1165 }
1166 .col-md-push-12 {
1167 left: 100%;
1168 }
1169 .col-md-push-11 {
1170 left: 91.66666667%;
1171 }
1172 .col-md-push-10 {
1173 left: 83.33333333%;
1174 }
1175 .col-md-push-9 {
1176 left: 75%;
1177 }
1178 .col-md-push-8 {
1179 left: 66.66666667%;
1180 }
1181 .col-md-push-7 {
1182 left: 58.33333333%;
1183 }
1184 .col-md-push-6 {
1185 left: 50%;
1186 }
1187 .col-md-push-5 {
1188 left: 41.66666667%;
1189 }
1190 .col-md-push-4 {
1191 left: 33.33333333%;
1192 }
1193 .col-md-push-3 {
1194 left: 25%;
1195 }
1196 .col-md-push-2 {
1197 left: 16.66666667%;
1198 }
1199 .col-md-push-1 {
1200 left: 8.33333333%;
1201 }
1202 .col-md-push-0 {
1203 left: 0;
1204 }
1205 .col-md-offset-12 {
1206 margin-left: 100%;
1207 }
1208 .col-md-offset-11 {
1209 margin-left: 91.66666667%;
1210 }
1211 .col-md-offset-10 {
1212 margin-left: 83.33333333%;
1213 }
1214 .col-md-offset-9 {
1215 margin-left: 75%;
1216 }
1217 .col-md-offset-8 {
1218 margin-left: 66.66666667%;
1219 }
1220 .col-md-offset-7 {
1221 margin-left: 58.33333333%;
1222 }
1223 .col-md-offset-6 {
1224 margin-left: 50%;
1225 }
1226 .col-md-offset-5 {
1227 margin-left: 41.66666667%;
1228 }
1229 .col-md-offset-4 {
1230 margin-left: 33.33333333%;
1231 }
1232 .col-md-offset-3 {
1233 margin-left: 25%;
1234 }
1235 .col-md-offset-2 {
1236 margin-left: 16.66666667%;
1237 }
1238 .col-md-offset-1 {
1239 margin-left: 8.33333333%;
1240 }
1241 .col-md-offset-0 {
1242 margin-left: 0;
1243 }
1244}
1245@media (min-width: 1200px) {
1246 .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
1247 float: left;
1248 }
1249 .col-lg-12 {
1250 width: 100%;
1251 }
1252 .col-lg-11 {
1253 width: 91.66666667%;
1254 }
1255 .col-lg-10 {
1256 width: 83.33333333%;
1257 }
1258 .col-lg-9 {
1259 width: 75%;
1260 }
1261 .col-lg-8 {
1262 width: 66.66666667%;
1263 }
1264 .col-lg-7 {
1265 width: 58.33333333%;
1266 }
1267 .col-lg-6 {
1268 width: 50%;
1269 }
1270 .col-lg-5 {
1271 width: 41.66666667%;
1272 }
1273 .col-lg-4 {
1274 width: 33.33333333%;
1275 }
1276 .col-lg-3 {
1277 width: 25%;
1278 }
1279 .col-lg-2 {
1280 width: 16.66666667%;
1281 }
1282 .col-lg-1 {
1283 width: 8.33333333%;
1284 }
1285 .col-lg-pull-12 {
1286 right: 100%;
1287 }
1288 .col-lg-pull-11 {
1289 right: 91.66666667%;
1290 }
1291 .col-lg-pull-10 {
1292 right: 83.33333333%;
1293 }
1294 .col-lg-pull-9 {
1295 right: 75%;
1296 }
1297 .col-lg-pull-8 {
1298 right: 66.66666667%;
1299 }
1300 .col-lg-pull-7 {
1301 right: 58.33333333%;
1302 }
1303 .col-lg-pull-6 {
1304 right: 50%;
1305 }
1306 .col-lg-pull-5 {
1307 right: 41.66666667%;
1308 }
1309 .col-lg-pull-4 {
1310 right: 33.33333333%;
1311 }
1312 .col-lg-pull-3 {
1313 right: 25%;
1314 }
1315 .col-lg-pull-2 {
1316 right: 16.66666667%;
1317 }
1318 .col-lg-pull-1 {
1319 right: 8.33333333%;
1320 }
1321 .col-lg-pull-0 {
1322 right: 0;
1323 }
1324 .col-lg-push-12 {
1325 left: 100%;
1326 }
1327 .col-lg-push-11 {
1328 left: 91.66666667%;
1329 }
1330 .col-lg-push-10 {
1331 left: 83.33333333%;
1332 }
1333 .col-lg-push-9 {
1334 left: 75%;
1335 }
1336 .col-lg-push-8 {
1337 left: 66.66666667%;
1338 }
1339 .col-lg-push-7 {
1340 left: 58.33333333%;
1341 }
1342 .col-lg-push-6 {
1343 left: 50%;
1344 }
1345 .col-lg-push-5 {
1346 left: 41.66666667%;
1347 }
1348 .col-lg-push-4 {
1349 left: 33.33333333%;
1350 }
1351 .col-lg-push-3 {
1352 left: 25%;
1353 }
1354 .col-lg-push-2 {
1355 left: 16.66666667%;
1356 }
1357 .col-lg-push-1 {
1358 left: 8.33333333%;
1359 }
1360 .col-lg-push-0 {
1361 left: 0;
1362 }
1363 .col-lg-offset-12 {
1364 margin-left: 100%;
1365 }
1366 .col-lg-offset-11 {
1367 margin-left: 91.66666667%;
1368 }
1369 .col-lg-offset-10 {
1370 margin-left: 83.33333333%;
1371 }
1372 .col-lg-offset-9 {
1373 margin-left: 75%;
1374 }
1375 .col-lg-offset-8 {
1376 margin-left: 66.66666667%;
1377 }
1378 .col-lg-offset-7 {
1379 margin-left: 58.33333333%;
1380 }
1381 .col-lg-offset-6 {
1382 margin-left: 50%;
1383 }
1384 .col-lg-offset-5 {
1385 margin-left: 41.66666667%;
1386 }
1387 .col-lg-offset-4 {
1388 margin-left: 33.33333333%;
1389 }
1390 .col-lg-offset-3 {
1391 margin-left: 25%;
1392 }
1393 .col-lg-offset-2 {
1394 margin-left: 16.66666667%;
1395 }
1396 .col-lg-offset-1 {
1397 margin-left: 8.33333333%;
1398 }
1399 .col-lg-offset-0 {
1400 margin-left: 0;
1401 }
1402}
1403table {
1404 max-width: 100%;
1405 background-color: transparent;
1406}
1407th {
1408 text-align: left;
1409}
1410.table {
1411 width: 100%;
1412 margin-bottom: 20px;
1413}
1414.table > thead > tr > th,
1415.table > tbody > tr > th,
1416.table > tfoot > tr > th,
1417.table > thead > tr > td,
1418.table > tbody > tr > td,
1419.table > tfoot > tr > td {
1420 padding: 8px;
1421 line-height: 1.42857143;
1422 vertical-align: top;
1423 border-top: 1px solid #ddd;
1424}
1425.table > thead > tr > th {
1426 vertical-align: bottom;
1427 border-bottom: 2px solid #ddd;
1428}
1429.table > caption + thead > tr:first-child > th,
1430.table > colgroup + thead > tr:first-child > th,
1431.table > thead:first-child > tr:first-child > th,
1432.table > caption + thead > tr:first-child > td,
1433.table > colgroup + thead > tr:first-child > td,
1434.table > thead:first-child > tr:first-child > td {
1435 border-top: 0;
1436}
1437.table > tbody + tbody {
1438 border-top: 2px solid #ddd;
1439}
1440.table .table {
1441 background-color: #fff;
1442}
1443.table-condensed > thead > tr > th,
1444.table-condensed > tbody > tr > th,
1445.table-condensed > tfoot > tr > th,
1446.table-condensed > thead > tr > td,
1447.table-condensed > tbody > tr > td,
1448.table-condensed > tfoot > tr > td {
1449 padding: 5px;
1450}
1451.table-bordered {
1452 border: 1px solid #ddd;
1453}
1454.table-bordered > thead > tr > th,
1455.table-bordered > tbody > tr > th,
1456.table-bordered > tfoot > tr > th,
1457.table-bordered > thead > tr > td,
1458.table-bordered > tbody > tr > td,
1459.table-bordered > tfoot > tr > td {
1460 border: 1px solid #ddd;
1461}
1462.table-bordered > thead > tr > th,
1463.table-bordered > thead > tr > td {
1464 border-bottom-width: 2px;
1465}
1466.table-striped > tbody > tr:nth-child(odd) > td,
1467.table-striped > tbody > tr:nth-child(odd) > th {
1468 background-color: #f9f9f9;
1469}
1470.table-hover > tbody > tr:hover > td,
1471.table-hover > tbody > tr:hover > th {
1472 background-color: #f5f5f5;
1473}
1474table col[class*="col-"] {
1475 position: static;
1476 display: table-column;
1477 float: none;
1478}
1479table td[class*="col-"],
1480table th[class*="col-"] {
1481 position: static;
1482 display: table-cell;
1483 float: none;
1484}
1485.table > thead > tr > td.active,
1486.table > tbody > tr > td.active,
1487.table > tfoot > tr > td.active,
1488.table > thead > tr > th.active,
1489.table > tbody > tr > th.active,
1490.table > tfoot > tr > th.active,
1491.table > thead > tr.active > td,
1492.table > tbody > tr.active > td,
1493.table > tfoot > tr.active > td,
1494.table > thead > tr.active > th,
1495.table > tbody > tr.active > th,
1496.table > tfoot > tr.active > th {
1497 background-color: #f5f5f5;
1498}
1499.table-hover > tbody > tr > td.active:hover,
1500.table-hover > tbody > tr > th.active:hover,
1501.table-hover > tbody > tr.active:hover > td,
1502.table-hover > tbody > tr.active:hover > th {
1503 background-color: #e8e8e8;
1504}
1505.table > thead > tr > td.success,
1506.table > tbody > tr > td.success,
1507.table > tfoot > tr > td.success,
1508.table > thead > tr > th.success,
1509.table > tbody > tr > th.success,
1510.table > tfoot > tr > th.success,
1511.table > thead > tr.success > td,
1512.table > tbody > tr.success > td,
1513.table > tfoot > tr.success > td,
1514.table > thead > tr.success > th,
1515.table > tbody > tr.success > th,
1516.table > tfoot > tr.success > th {
1517 background-color: #dff0d8;
1518}
1519.table-hover > tbody > tr > td.success:hover,
1520.table-hover > tbody > tr > th.success:hover,
1521.table-hover > tbody > tr.success:hover > td,
1522.table-hover > tbody > tr.success:hover > th {
1523 background-color: #d0e9c6;
1524}
1525.table > thead > tr > td.info,
1526.table > tbody > tr > td.info,
1527.table > tfoot > tr > td.info,
1528.table > thead > tr > th.info,
1529.table > tbody > tr > th.info,
1530.table > tfoot > tr > th.info,
1531.table > thead > tr.info > td,
1532.table > tbody > tr.info > td,
1533.table > tfoot > tr.info > td,
1534.table > thead > tr.info > th,
1535.table > tbody > tr.info > th,
1536.table > tfoot > tr.info > th {
1537 background-color: #d9edf7;
1538}
1539.table-hover > tbody > tr > td.info:hover,
1540.table-hover > tbody > tr > th.info:hover,
1541.table-hover > tbody > tr.info:hover > td,
1542.table-hover > tbody > tr.info:hover > th {
1543 background-color: #c4e3f3;
1544}
1545.table > thead > tr > td.warning,
1546.table > tbody > tr > td.warning,
1547.table > tfoot > tr > td.warning,
1548.table > thead > tr > th.warning,
1549.table > tbody > tr > th.warning,
1550.table > tfoot > tr > th.warning,
1551.table > thead > tr.warning > td,
1552.table > tbody > tr.warning > td,
1553.table > tfoot > tr.warning > td,
1554.table > thead > tr.warning > th,
1555.table > tbody > tr.warning > th,
1556.table > tfoot > tr.warning > th {
1557 background-color: #fcf8e3;
1558}
1559.table-hover > tbody > tr > td.warning:hover,
1560.table-hover > tbody > tr > th.warning:hover,
1561.table-hover > tbody > tr.warning:hover > td,
1562.table-hover > tbody > tr.warning:hover > th {
1563 background-color: #faf2cc;
1564}
1565.table > thead > tr > td.danger,
1566.table > tbody > tr > td.danger,
1567.table > tfoot > tr > td.danger,
1568.table > thead > tr > th.danger,
1569.table > tbody > tr > th.danger,
1570.table > tfoot > tr > th.danger,
1571.table > thead > tr.danger > td,
1572.table > tbody > tr.danger > td,
1573.table > tfoot > tr.danger > td,
1574.table > thead > tr.danger > th,
1575.table > tbody > tr.danger > th,
1576.table > tfoot > tr.danger > th {
1577 background-color: #f2dede;
1578}
1579.table-hover > tbody > tr > td.danger:hover,
1580.table-hover > tbody > tr > th.danger:hover,
1581.table-hover > tbody > tr.danger:hover > td,
1582.table-hover > tbody > tr.danger:hover > th {
1583 background-color: #ebcccc;
1584}
1585@media (max-width: 767px) {
1586 .table-responsive {
1587 width: 100%;
1588 margin-bottom: 15px;
1589 overflow-x: scroll;
1590 overflow-y: hidden;
1591 -webkit-overflow-scrolling: touch;
1592 -ms-overflow-style: -ms-autohiding-scrollbar;
1593 border: 1px solid #ddd;
1594 }
1595 .table-responsive > .table {
1596 margin-bottom: 0;
1597 }
1598 .table-responsive > .table > thead > tr > th,
1599 .table-responsive > .table > tbody > tr > th,
1600 .table-responsive > .table > tfoot > tr > th,
1601 .table-responsive > .table > thead > tr > td,
1602 .table-responsive > .table > tbody > tr > td,
1603 .table-responsive > .table > tfoot > tr > td {
1604 white-space: nowrap;
1605 }
1606 .table-responsive > .table-bordered {
1607 border: 0;
1608 }
1609 .table-responsive > .table-bordered > thead > tr > th:first-child,
1610 .table-responsive > .table-bordered > tbody > tr > th:first-child,
1611 .table-responsive > .table-bordered > tfoot > tr > th:first-child,
1612 .table-responsive > .table-bordered > thead > tr > td:first-child,
1613 .table-responsive > .table-bordered > tbody > tr > td:first-child,
1614 .table-responsive > .table-bordered > tfoot > tr > td:first-child {
1615 border-left: 0;
1616 }
1617 .table-responsive > .table-bordered > thead > tr > th:last-child,
1618 .table-responsive > .table-bordered > tbody > tr > th:last-child,
1619 .table-responsive > .table-bordered > tfoot > tr > th:last-child,
1620 .table-responsive > .table-bordered > thead > tr > td:last-child,
1621 .table-responsive > .table-bordered > tbody > tr > td:last-child,
1622 .table-responsive > .table-bordered > tfoot > tr > td:last-child {
1623 border-right: 0;
1624 }
1625 .table-responsive > .table-bordered > tbody > tr:last-child > th,
1626 .table-responsive > .table-bordered > tfoot > tr:last-child > th,
1627 .table-responsive > .table-bordered > tbody > tr:last-child > td,
1628 .table-responsive > .table-bordered > tfoot > tr:last-child > td {
1629 border-bottom: 0;
1630 }
1631}
1632fieldset {
1633 min-width: 0;
1634 padding: 0;
1635 margin: 0;
1636 border: 0;
1637}
1638legend {
1639 display: block;
1640 width: 100%;
1641 padding: 0;
1642 margin-bottom: 20px;
1643 font-size: 21px;
1644 line-height: inherit;
1645 color: #333;
1646 border: 0;
1647 border-bottom: 1px solid #e5e5e5;
1648}
1649label {
1650 display: inline-block;
1651 margin-bottom: 5px;
1652 font-weight: bold;
1653}
1654input[type="search"] {
1655 -webkit-box-sizing: border-box;
1656 -moz-box-sizing: border-box;
1657 box-sizing: border-box;
1658}
1659input[type="radio"],
1660input[type="checkbox"] {
1661 margin: 4px 0 0;
1662 margin-top: 1px \9;
1663 /* IE8-9 */
1664 line-height: normal;
1665}
1666input[type="file"] {
1667 display: block;
1668}
1669input[type="range"] {
1670 display: block;
1671 width: 100%;
1672}
1673select[multiple],
1674select[size] {
1675 height: auto;
1676}
1677input[type="file"]:focus,
1678input[type="radio"]:focus,
1679input[type="checkbox"]:focus {
1680 outline: thin dotted;
1681 outline: 5px auto -webkit-focus-ring-color;
1682 outline-offset: -2px;
1683}
1684output {
1685 display: block;
1686 padding-top: 7px;
1687 font-size: 14px;
1688 line-height: 1.42857143;
1689 color: #555;
1690}
1691.form-control {
1692 display: block;
1693 width: 100%;
1694 height: 34px;
1695 padding: 6px 12px;
1696 font-size: 14px;
1697 line-height: 1.42857143;
1698 color: #555;
1699 background-color: #fff;
1700 background-image: none;
1701 border: 1px solid #ccc;
1702 border-radius: 4px;
1703 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
1704 box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
1705 -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
1706 transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
1707}
1708.form-control:focus {
1709 border-color: #66afe9;
1710 outline: 0;
1711 -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
1712 box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
1713}
1714.form-control::-moz-placeholder {
1715 color: #999;
1716 opacity: 1;
1717}
1718.form-control:-ms-input-placeholder {
1719 color: #999;
1720}
1721.form-control::-webkit-input-placeholder {
1722 color: #999;
1723}
1724.form-control[disabled],
1725.form-control[readonly],
1726fieldset[disabled] .form-control {
1727 cursor: not-allowed;
1728 background-color: #eee;
1729 opacity: 1;
1730}
1731textarea.form-control {
1732 height: auto;
1733}
1734input[type="search"] {
1735 -webkit-appearance: none;
1736}
1737input[type="date"] {
1738 line-height: 34px;
1739}
1740.form-group {
1741 margin-bottom: 15px;
1742}
1743.radio,
1744.checkbox {
1745 display: block;
1746 min-height: 20px;
1747 padding-left: 20px;
1748 margin-top: 10px;
1749 margin-bottom: 10px;
1750}
1751.radio label,
1752.checkbox label {
1753 display: inline;
1754 font-weight: normal;
1755 cursor: pointer;
1756}
1757.radio input[type="radio"],
1758.radio-inline input[type="radio"],
1759.checkbox input[type="checkbox"],
1760.checkbox-inline input[type="checkbox"] {
1761 float: left;
1762 margin-left: -20px;
1763}
1764.radio + .radio,
1765.checkbox + .checkbox {
1766 margin-top: -5px;
1767}
1768.radio-inline,
1769.checkbox-inline {
1770 display: inline-block;
1771 padding-left: 20px;
1772 margin-bottom: 0;
1773 font-weight: normal;
1774 vertical-align: middle;
1775 cursor: pointer;
1776}
1777.radio-inline + .radio-inline,
1778.checkbox-inline + .checkbox-inline {
1779 margin-top: 0;
1780 margin-left: 10px;
1781}
1782input[type="radio"][disabled],
1783input[type="checkbox"][disabled],
1784.radio[disabled],
1785.radio-inline[disabled],
1786.checkbox[disabled],
1787.checkbox-inline[disabled],
1788fieldset[disabled] input[type="radio"],
1789fieldset[disabled] input[type="checkbox"],
1790fieldset[disabled] .radio,
1791fieldset[disabled] .radio-inline,
1792fieldset[disabled] .checkbox,
1793fieldset[disabled] .checkbox-inline {
1794 cursor: not-allowed;
1795}
1796.input-sm {
1797 height: 30px;
1798 padding: 5px 10px;
1799 font-size: 12px;
1800 line-height: 1.5;
1801 border-radius: 3px;
1802}
1803select.input-sm {
1804 height: 30px;
1805 line-height: 30px;
1806}
1807textarea.input-sm,
1808select[multiple].input-sm {
1809 height: auto;
1810}
1811.input-lg {
1812 height: 46px;
1813 padding: 10px 16px;
1814 font-size: 18px;
1815 line-height: 1.33;
1816 border-radius: 6px;
1817}
1818select.input-lg {
1819 height: 46px;
1820 line-height: 46px;
1821}
1822textarea.input-lg,
1823select[multiple].input-lg {
1824 height: auto;
1825}
1826.has-feedback {
1827 position: relative;
1828}
1829.has-feedback .form-control {
1830 padding-right: 42.5px;
1831}
1832.has-feedback .form-control-feedback {
1833 position: absolute;
1834 top: 25px;
1835 right: 0;
1836 display: block;
1837 width: 34px;
1838 height: 34px;
1839 line-height: 34px;
1840 text-align: center;
1841}
1842.has-success .help-block,
1843.has-success .control-label,
1844.has-success .radio,
1845.has-success .checkbox,
1846.has-success .radio-inline,
1847.has-success .checkbox-inline {
1848 color: #3c763d;
1849}
1850.has-success .form-control {
1851 border-color: #3c763d;
1852 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
1853 box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
1854}
1855.has-success .form-control:focus {
1856 border-color: #2b542c;
1857 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
1858 box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
1859}
1860.has-success .input-group-addon {
1861 color: #3c763d;
1862 background-color: #dff0d8;
1863 border-color: #3c763d;
1864}
1865.has-success .form-control-feedback {
1866 color: #3c763d;
1867}
1868.has-warning .help-block,
1869.has-warning .control-label,
1870.has-warning .radio,
1871.has-warning .checkbox,
1872.has-warning .radio-inline,
1873.has-warning .checkbox-inline {
1874 color: #8a6d3b;
1875}
1876.has-warning .form-control {
1877 border-color: #8a6d3b;
1878 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
1879 box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
1880}
1881.has-warning .form-control:focus {
1882 border-color: #66512c;
1883 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
1884 box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
1885}
1886.has-warning .input-group-addon {
1887 color: #8a6d3b;
1888 background-color: #fcf8e3;
1889 border-color: #8a6d3b;
1890}
1891.has-warning .form-control-feedback {
1892 color: #8a6d3b;
1893}
1894.has-error .help-block,
1895.has-error .control-label,
1896.has-error .radio,
1897.has-error .checkbox,
1898.has-error .radio-inline,
1899.has-error .checkbox-inline {
1900 color: #a94442;
1901}
1902.has-error .form-control {
1903 border-color: #a94442;
1904 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
1905 box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
1906}
1907.has-error .form-control:focus {
1908 border-color: #843534;
1909 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
1910 box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
1911}
1912.has-error .input-group-addon {
1913 color: #a94442;
1914 background-color: #f2dede;
1915 border-color: #a94442;
1916}
1917.has-error .form-control-feedback {
1918 color: #a94442;
1919}
1920.form-control-static {
1921 margin-bottom: 0;
1922}
1923.help-block {
1924 display: block;
1925 margin-top: 5px;
1926 margin-bottom: 10px;
1927 color: #737373;
1928}
1929@media (min-width: 768px) {
1930 .form-inline .form-group {
1931 display: inline-block;
1932 margin-bottom: 0;
1933 vertical-align: middle;
1934 }
1935 .form-inline .form-control {
1936 display: inline-block;
1937 width: auto;
1938 vertical-align: middle;
1939 }
1940 .form-inline .input-group > .form-control {
1941 width: 100%;
1942 }
1943 .form-inline .control-label {
1944 margin-bottom: 0;
1945 vertical-align: middle;
1946 }
1947 .form-inline .radio,
1948 .form-inline .checkbox {
1949 display: inline-block;
1950 padding-left: 0;
1951 margin-top: 0;
1952 margin-bottom: 0;
1953 vertical-align: middle;
1954 }
1955 .form-inline .radio input[type="radio"],
1956 .form-inline .checkbox input[type="checkbox"] {
1957 float: none;
1958 margin-left: 0;
1959 }
1960 .form-inline .has-feedback .form-control-feedback {
1961 top: 0;
1962 }
1963}
1964.form-horizontal .control-label,
1965.form-horizontal .radio,
1966.form-horizontal .checkbox,
1967.form-horizontal .radio-inline,
1968.form-horizontal .checkbox-inline {
1969 padding-top: 7px;
1970 margin-top: 0;
1971 margin-bottom: 0;
1972}
1973.form-horizontal .radio,
1974.form-horizontal .checkbox {
1975 min-height: 27px;
1976}
1977.form-horizontal .form-group {
1978 margin-right: -15px;
1979 margin-left: -15px;
1980}
1981.form-horizontal .form-control-static {
1982 padding-top: 7px;
1983}
1984@media (min-width: 768px) {
1985 .form-horizontal .control-label {
1986 text-align: right;
1987 }
1988}
1989.form-horizontal .has-feedback .form-control-feedback {
1990 top: 0;
1991 right: 15px;
1992}
1993.btn {
1994 display: inline-block;
1995 padding: 6px 12px;
1996 margin-bottom: 0;
1997 font-size: 14px;
1998 font-weight: normal;
1999 line-height: 1.42857143;
2000 text-align: center;
2001 white-space: nowrap;
2002 vertical-align: middle;
2003 cursor: pointer;
2004 -webkit-user-select: none;
2005 -moz-user-select: none;
2006 -ms-user-select: none;
2007 user-select: none;
2008 background-image: none;
2009 border: 1px solid transparent;
2010 border-radius: 4px;
2011}
2012.btn:focus,
2013.btn:active:focus,
2014.btn.active:focus {
2015 outline: thin dotted;
2016 outline: 5px auto -webkit-focus-ring-color;
2017 outline-offset: -2px;
2018}
2019.btn:hover,
2020.btn:focus {
2021 color: #333;
2022 text-decoration: none;
2023}
2024.btn:active,
2025.btn.active {
2026 background-image: none;
2027 outline: 0;
2028 -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
2029 box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
2030}
2031.btn.disabled,
2032.btn[disabled],
2033fieldset[disabled] .btn {
2034 pointer-events: none;
2035 cursor: not-allowed;
2036 filter: alpha(opacity=65);
2037 -webkit-box-shadow: none;
2038 box-shadow: none;
2039 opacity: .65;
2040}
2041.btn-default {
2042 color: #333;
2043 background-color: #fff;
2044 border-color: #ccc;
2045}
2046.btn-default:hover,
2047.btn-default:focus,
2048.btn-default:active,
2049.btn-default.active,
2050.open .dropdown-toggle.btn-default {
2051 color: #333;
2052 background-color: #ebebeb;
2053 border-color: #adadad;
2054}
2055.btn-default:active,
2056.btn-default.active,
2057.open .dropdown-toggle.btn-default {
2058 background-image: none;
2059}
2060.btn-default.disabled,
2061.btn-default[disabled],
2062fieldset[disabled] .btn-default,
2063.btn-default.disabled:hover,
2064.btn-default[disabled]:hover,
2065fieldset[disabled] .btn-default:hover,
2066.btn-default.disabled:focus,
2067.btn-default[disabled]:focus,
2068fieldset[disabled] .btn-default:focus,
2069.btn-default.disabled:active,
2070.btn-default[disabled]:active,
2071fieldset[disabled] .btn-default:active,
2072.btn-default.disabled.active,
2073.btn-default[disabled].active,
2074fieldset[disabled] .btn-default.active {
2075 background-color: #fff;
2076 border-color: #ccc;
2077}
2078.btn-default .badge {
2079 color: #fff;
2080 background-color: #333;
2081}
2082.btn-primary {
2083 color: #fff;
2084 background-color: #428bca;
2085 border-color: #357ebd;
2086}
2087.btn-primary:hover,
2088.btn-primary:focus,
2089.btn-primary:active,
2090.btn-primary.active,
2091.open .dropdown-toggle.btn-primary {
2092 color: #fff;
2093 background-color: #3276b1;
2094 border-color: #285e8e;
2095}
2096.btn-primary:active,
2097.btn-primary.active,
2098.open .dropdown-toggle.btn-primary {
2099 background-image: none;
2100}
2101.btn-primary.disabled,
2102.btn-primary[disabled],
2103fieldset[disabled] .btn-primary,
2104.btn-primary.disabled:hover,
2105.btn-primary[disabled]:hover,
2106fieldset[disabled] .btn-primary:hover,
2107.btn-primary.disabled:focus,
2108.btn-primary[disabled]:focus,
2109fieldset[disabled] .btn-primary:focus,
2110.btn-primary.disabled:active,
2111.btn-primary[disabled]:active,
2112fieldset[disabled] .btn-primary:active,
2113.btn-primary.disabled.active,
2114.btn-primary[disabled].active,
2115fieldset[disabled] .btn-primary.active {
2116 background-color: #428bca;
2117 border-color: #357ebd;
2118}
2119.btn-primary .badge {
2120 color: #428bca;
2121 background-color: #fff;
2122}
2123.btn-success {
2124 color: #fff;
2125 background-color: #5cb85c;
2126 border-color: #4cae4c;
2127}
2128.btn-success:hover,
2129.btn-success:focus,
2130.btn-success:active,
2131.btn-success.active,
2132.open .dropdown-toggle.btn-success {
2133 color: #fff;
2134 background-color: #47a447;
2135 border-color: #398439;
2136}
2137.btn-success:active,
2138.btn-success.active,
2139.open .dropdown-toggle.btn-success {
2140 background-image: none;
2141}
2142.btn-success.disabled,
2143.btn-success[disabled],
2144fieldset[disabled] .btn-success,
2145.btn-success.disabled:hover,
2146.btn-success[disabled]:hover,
2147fieldset[disabled] .btn-success:hover,
2148.btn-success.disabled:focus,
2149.btn-success[disabled]:focus,
2150fieldset[disabled] .btn-success:focus,
2151.btn-success.disabled:active,
2152.btn-success[disabled]:active,
2153fieldset[disabled] .btn-success:active,
2154.btn-success.disabled.active,
2155.btn-success[disabled].active,
2156fieldset[disabled] .btn-success.active {
2157 background-color: #5cb85c;
2158 border-color: #4cae4c;
2159}
2160.btn-success .badge {
2161 color: #5cb85c;
2162 background-color: #fff;
2163}
2164.btn-info {
2165 color: #fff;
2166 background-color: #5bc0de;
2167 border-color: #46b8da;
2168}
2169.btn-info:hover,
2170.btn-info:focus,
2171.btn-info:active,
2172.btn-info.active,
2173.open .dropdown-toggle.btn-info {
2174 color: #fff;
2175 background-color: #39b3d7;
2176 border-color: #269abc;
2177}
2178.btn-info:active,
2179.btn-info.active,
2180.open .dropdown-toggle.btn-info {
2181 background-image: none;
2182}
2183.btn-info.disabled,
2184.btn-info[disabled],
2185fieldset[disabled] .btn-info,
2186.btn-info.disabled:hover,
2187.btn-info[disabled]:hover,
2188fieldset[disabled] .btn-info:hover,
2189.btn-info.disabled:focus,
2190.btn-info[disabled]:focus,
2191fieldset[disabled] .btn-info:focus,
2192.btn-info.disabled:active,
2193.btn-info[disabled]:active,
2194fieldset[disabled] .btn-info:active,
2195.btn-info.disabled.active,
2196.btn-info[disabled].active,
2197fieldset[disabled] .btn-info.active {
2198 background-color: #5bc0de;
2199 border-color: #46b8da;
2200}
2201.btn-info .badge {
2202 color: #5bc0de;
2203 background-color: #fff;
2204}
2205.btn-warning {
2206 color: #fff;
2207 background-color: #f0ad4e;
2208 border-color: #eea236;
2209}
2210.btn-warning:hover,
2211.btn-warning:focus,
2212.btn-warning:active,
2213.btn-warning.active,
2214.open .dropdown-toggle.btn-warning {
2215 color: #fff;
2216 background-color: #ed9c28;
2217 border-color: #d58512;
2218}
2219.btn-warning:active,
2220.btn-warning.active,
2221.open .dropdown-toggle.btn-warning {
2222 background-image: none;
2223}
2224.btn-warning.disabled,
2225.btn-warning[disabled],
2226fieldset[disabled] .btn-warning,
2227.btn-warning.disabled:hover,
2228.btn-warning[disabled]:hover,
2229fieldset[disabled] .btn-warning:hover,
2230.btn-warning.disabled:focus,
2231.btn-warning[disabled]:focus,
2232fieldset[disabled] .btn-warning:focus,
2233.btn-warning.disabled:active,
2234.btn-warning[disabled]:active,
2235fieldset[disabled] .btn-warning:active,
2236.btn-warning.disabled.active,
2237.btn-warning[disabled].active,
2238fieldset[disabled] .btn-warning.active {
2239 background-color: #f0ad4e;
2240 border-color: #eea236;
2241}
2242.btn-warning .badge {
2243 color: #f0ad4e;
2244 background-color: #fff;
2245}
2246.btn-danger {
2247 color: #fff;
2248 background-color: #d9534f;
2249 border-color: #d43f3a;
2250}
2251.btn-danger:hover,
2252.btn-danger:focus,
2253.btn-danger:active,
2254.btn-danger.active,
2255.open .dropdown-toggle.btn-danger {
2256 color: #fff;
2257 background-color: #d2322d;
2258 border-color: #ac2925;
2259}
2260.btn-danger:active,
2261.btn-danger.active,
2262.open .dropdown-toggle.btn-danger {
2263 background-image: none;
2264}
2265.btn-danger.disabled,
2266.btn-danger[disabled],
2267fieldset[disabled] .btn-danger,
2268.btn-danger.disabled:hover,
2269.btn-danger[disabled]:hover,
2270fieldset[disabled] .btn-danger:hover,
2271.btn-danger.disabled:focus,
2272.btn-danger[disabled]:focus,
2273fieldset[disabled] .btn-danger:focus,
2274.btn-danger.disabled:active,
2275.btn-danger[disabled]:active,
2276fieldset[disabled] .btn-danger:active,
2277.btn-danger.disabled.active,
2278.btn-danger[disabled].active,
2279fieldset[disabled] .btn-danger.active {
2280 background-color: #d9534f;
2281 border-color: #d43f3a;
2282}
2283.btn-danger .badge {
2284 color: #d9534f;
2285 background-color: #fff;
2286}
2287.btn-link {
2288 font-weight: normal;
2289 color: #428bca;
2290 cursor: pointer;
2291 border-radius: 0;
2292}
2293.btn-link,
2294.btn-link:active,
2295.btn-link[disabled],
2296fieldset[disabled] .btn-link {
2297 background-color: transparent;
2298 -webkit-box-shadow: none;
2299 box-shadow: none;
2300}
2301.btn-link,
2302.btn-link:hover,
2303.btn-link:focus,
2304.btn-link:active {
2305 border-color: transparent;
2306}
2307.btn-link:hover,
2308.btn-link:focus {
2309 color: #2a6496;
2310 text-decoration: underline;
2311 background-color: transparent;
2312}
2313.btn-link[disabled]:hover,
2314fieldset[disabled] .btn-link:hover,
2315.btn-link[disabled]:focus,
2316fieldset[disabled] .btn-link:focus {
2317 color: #999;
2318 text-decoration: none;
2319}
2320.btn-lg,
2321.btn-group-lg > .btn {
2322 padding: 10px 16px;
2323 font-size: 18px;
2324 line-height: 1.33;
2325 border-radius: 6px;
2326}
2327.btn-sm,
2328.btn-group-sm > .btn {
2329 padding: 5px 10px;
2330 font-size: 12px;
2331 line-height: 1.5;
2332 border-radius: 3px;
2333}
2334.btn-xs,
2335.btn-group-xs > .btn {
2336 padding: 1px 5px;
2337 font-size: 12px;
2338 line-height: 1.5;
2339 border-radius: 3px;
2340}
2341.btn-block {
2342 display: block;
2343 width: 100%;
2344 padding-right: 0;
2345 padding-left: 0;
2346}
2347.btn-block + .btn-block {
2348 margin-top: 5px;
2349}
2350input[type="submit"].btn-block,
2351input[type="reset"].btn-block,
2352input[type="button"].btn-block {
2353 width: 100%;
2354}
2355.fade {
2356 opacity: 0;
2357 -webkit-transition: opacity .15s linear;
2358 transition: opacity .15s linear;
2359}
2360.fade.in {
2361 opacity: 1;
2362}
2363.collapse {
2364 display: none;
2365}
2366.collapse.in {
2367 display: block;
2368}
2369.collapsing {
2370 position: relative;
2371 height: 0;
2372 overflow: hidden;
2373 -webkit-transition: height .35s ease;
2374 transition: height .35s ease;
2375}
2376@font-face {
2377 font-family: 'Glyphicons Halflings';
2378
2379 src: url('../fonts/glyphicons-halflings-regular.eot');
2380 src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
2381}
2382.glyphicon {
2383 position: relative;
2384 top: 1px;
2385 display: inline-block;
2386 font-family: 'Glyphicons Halflings';
2387 font-style: normal;
2388 font-weight: normal;
2389 line-height: 1;
2390
2391 -webkit-font-smoothing: antialiased;
2392 -moz-osx-font-smoothing: grayscale;
2393}
2394.glyphicon-asterisk:before {
2395 content: "\2a";
2396}
2397.glyphicon-plus:before {
2398 content: "\2b";
2399}
2400.glyphicon-euro:before {
2401 content: "\20ac";
2402}
2403.glyphicon-minus:before {
2404 content: "\2212";
2405}
2406.glyphicon-cloud:before {
2407 content: "\2601";
2408}
2409.glyphicon-envelope:before {
2410 content: "\2709";
2411}
2412.glyphicon-pencil:before {
2413 content: "\270f";
2414}
2415.glyphicon-glass:before {
2416 content: "\e001";
2417}
2418.glyphicon-music:before {
2419 content: "\e002";
2420}
2421.glyphicon-search:before {
2422 content: "\e003";
2423}
2424.glyphicon-heart:before {
2425 content: "\e005";
2426}
2427.glyphicon-star:before {
2428 content: "\e006";
2429}
2430.glyphicon-star-empty:before {
2431 content: "\e007";
2432}
2433.glyphicon-user:before {
2434 content: "\e008";
2435}
2436.glyphicon-film:before {
2437 content: "\e009";
2438}
2439.glyphicon-th-large:before {
2440 content: "\e010";
2441}
2442.glyphicon-th:before {
2443 content: "\e011";
2444}
2445.glyphicon-th-list:before {
2446 content: "\e012";
2447}
2448.glyphicon-ok:before {
2449 content: "\e013";
2450}
2451.glyphicon-remove:before {
2452 content: "\e014";
2453}
2454.glyphicon-zoom-in:before {
2455 content: "\e015";
2456}
2457.glyphicon-zoom-out:before {
2458 content: "\e016";
2459}
2460.glyphicon-off:before {
2461 content: "\e017";
2462}
2463.glyphicon-signal:before {
2464 content: "\e018";
2465}
2466.glyphicon-cog:before {
2467 content: "\e019";
2468}
2469.glyphicon-trash:before {
2470 content: "\e020";
2471}
2472.glyphicon-home:before {
2473 content: "\e021";
2474}
2475.glyphicon-file:before {
2476 content: "\e022";
2477}
2478.glyphicon-time:before {
2479 content: "\e023";
2480}
2481.glyphicon-road:before {
2482 content: "\e024";
2483}
2484.glyphicon-download-alt:before {
2485 content: "\e025";
2486}
2487.glyphicon-download:before {
2488 content: "\e026";
2489}
2490.glyphicon-upload:before {
2491 content: "\e027";
2492}
2493.glyphicon-inbox:before {
2494 content: "\e028";
2495}
2496.glyphicon-play-circle:before {
2497 content: "\e029";
2498}
2499.glyphicon-repeat:before {
2500 content: "\e030";
2501}
2502.glyphicon-refresh:before {
2503 content: "\e031";
2504}
2505.glyphicon-list-alt:before {
2506 content: "\e032";
2507}
2508.glyphicon-lock:before {
2509 content: "\e033";
2510}
2511.glyphicon-flag:before {
2512 content: "\e034";
2513}
2514.glyphicon-headphones:before {
2515 content: "\e035";
2516}
2517.glyphicon-volume-off:before {
2518 content: "\e036";
2519}
2520.glyphicon-volume-down:before {
2521 content: "\e037";
2522}
2523.glyphicon-volume-up:before {
2524 content: "\e038";
2525}
2526.glyphicon-qrcode:before {
2527 content: "\e039";
2528}
2529.glyphicon-barcode:before {
2530 content: "\e040";
2531}
2532.glyphicon-tag:before {
2533 content: "\e041";
2534}
2535.glyphicon-tags:before {
2536 content: "\e042";
2537}
2538.glyphicon-book:before {
2539 content: "\e043";
2540}
2541.glyphicon-bookmark:before {
2542 content: "\e044";
2543}
2544.glyphicon-print:before {
2545 content: "\e045";
2546}
2547.glyphicon-camera:before {
2548 content: "\e046";
2549}
2550.glyphicon-font:before {
2551 content: "\e047";
2552}
2553.glyphicon-bold:before {
2554 content: "\e048";
2555}
2556.glyphicon-italic:before {
2557 content: "\e049";
2558}
2559.glyphicon-text-height:before {
2560 content: "\e050";
2561}
2562.glyphicon-text-width:before {
2563 content: "\e051";
2564}
2565.glyphicon-align-left:before {
2566 content: "\e052";
2567}
2568.glyphicon-align-center:before {
2569 content: "\e053";
2570}
2571.glyphicon-align-right:before {
2572 content: "\e054";
2573}
2574.glyphicon-align-justify:before {
2575 content: "\e055";
2576}
2577.glyphicon-list:before {
2578 content: "\e056";
2579}
2580.glyphicon-indent-left:before {
2581 content: "\e057";
2582}
2583.glyphicon-indent-right:before {
2584 content: "\e058";
2585}
2586.glyphicon-facetime-video:before {
2587 content: "\e059";
2588}
2589.glyphicon-picture:before {
2590 content: "\e060";
2591}
2592.glyphicon-map-marker:before {
2593 content: "\e062";
2594}
2595.glyphicon-adjust:before {
2596 content: "\e063";
2597}
2598.glyphicon-tint:before {
2599 content: "\e064";
2600}
2601.glyphicon-edit:before {
2602 content: "\e065";
2603}
2604.glyphicon-share:before {
2605 content: "\e066";
2606}
2607.glyphicon-check:before {
2608 content: "\e067";
2609}
2610.glyphicon-move:before {
2611 content: "\e068";
2612}
2613.glyphicon-step-backward:before {
2614 content: "\e069";
2615}
2616.glyphicon-fast-backward:before {
2617 content: "\e070";
2618}
2619.glyphicon-backward:before {
2620 content: "\e071";
2621}
2622.glyphicon-play:before {
2623 content: "\e072";
2624}
2625.glyphicon-pause:before {
2626 content: "\e073";
2627}
2628.glyphicon-stop:before {
2629 content: "\e074";
2630}
2631.glyphicon-forward:before {
2632 content: "\e075";
2633}
2634.glyphicon-fast-forward:before {
2635 content: "\e076";
2636}
2637.glyphicon-step-forward:before {
2638 content: "\e077";
2639}
2640.glyphicon-eject:before {
2641 content: "\e078";
2642}
2643.glyphicon-chevron-left:before {
2644 content: "\e079";
2645}
2646.glyphicon-chevron-right:before {
2647 content: "\e080";
2648}
2649.glyphicon-plus-sign:before {
2650 content: "\e081";
2651}
2652.glyphicon-minus-sign:before {
2653 content: "\e082";
2654}
2655.glyphicon-remove-sign:before {
2656 content: "\e083";
2657}
2658.glyphicon-ok-sign:before {
2659 content: "\e084";
2660}
2661.glyphicon-question-sign:before {
2662 content: "\e085";
2663}
2664.glyphicon-info-sign:before {
2665 content: "\e086";
2666}
2667.glyphicon-screenshot:before {
2668 content: "\e087";
2669}
2670.glyphicon-remove-circle:before {
2671 content: "\e088";
2672}
2673.glyphicon-ok-circle:before {
2674 content: "\e089";
2675}
2676.glyphicon-ban-circle:before {
2677 content: "\e090";
2678}
2679.glyphicon-arrow-left:before {
2680 content: "\e091";
2681}
2682.glyphicon-arrow-right:before {
2683 content: "\e092";
2684}
2685.glyphicon-arrow-up:before {
2686 content: "\e093";
2687}
2688.glyphicon-arrow-down:before {
2689 content: "\e094";
2690}
2691.glyphicon-share-alt:before {
2692 content: "\e095";
2693}
2694.glyphicon-resize-full:before {
2695 content: "\e096";
2696}
2697.glyphicon-resize-small:before {
2698 content: "\e097";
2699}
2700.glyphicon-exclamation-sign:before {
2701 content: "\e101";
2702}
2703.glyphicon-gift:before {
2704 content: "\e102";
2705}
2706.glyphicon-leaf:before {
2707 content: "\e103";
2708}
2709.glyphicon-fire:before {
2710 content: "\e104";
2711}
2712.glyphicon-eye-open:before {
2713 content: "\e105";
2714}
2715.glyphicon-eye-close:before {
2716 content: "\e106";
2717}
2718.glyphicon-warning-sign:before {
2719 content: "\e107";
2720}
2721.glyphicon-plane:before {
2722 content: "\e108";
2723}
2724.glyphicon-calendar:before {
2725 content: "\e109";
2726}
2727.glyphicon-random:before {
2728 content: "\e110";
2729}
2730.glyphicon-comment:before {
2731 content: "\e111";
2732}
2733.glyphicon-magnet:before {
2734 content: "\e112";
2735}
2736.glyphicon-chevron-up:before {
2737 content: "\e113";
2738}
2739.glyphicon-chevron-down:before {
2740 content: "\e114";
2741}
2742.glyphicon-retweet:before {
2743 content: "\e115";
2744}
2745.glyphicon-shopping-cart:before {
2746 content: "\e116";
2747}
2748.glyphicon-folder-close:before {
2749 content: "\e117";
2750}
2751.glyphicon-folder-open:before {
2752 content: "\e118";
2753}
2754.glyphicon-resize-vertical:before {
2755 content: "\e119";
2756}
2757.glyphicon-resize-horizontal:before {
2758 content: "\e120";
2759}
2760.glyphicon-hdd:before {
2761 content: "\e121";
2762}
2763.glyphicon-bullhorn:before {
2764 content: "\e122";
2765}
2766.glyphicon-bell:before {
2767 content: "\e123";
2768}
2769.glyphicon-certificate:before {
2770 content: "\e124";
2771}
2772.glyphicon-thumbs-up:before {
2773 content: "\e125";
2774}
2775.glyphicon-thumbs-down:before {
2776 content: "\e126";
2777}
2778.glyphicon-hand-right:before {
2779 content: "\e127";
2780}
2781.glyphicon-hand-left:before {
2782 content: "\e128";
2783}
2784.glyphicon-hand-up:before {
2785 content: "\e129";
2786}
2787.glyphicon-hand-down:before {
2788 content: "\e130";
2789}
2790.glyphicon-circle-arrow-right:before {
2791 content: "\e131";
2792}
2793.glyphicon-circle-arrow-left:before {
2794 content: "\e132";
2795}
2796.glyphicon-circle-arrow-up:before {
2797 content: "\e133";
2798}
2799.glyphicon-circle-arrow-down:before {
2800 content: "\e134";
2801}
2802.glyphicon-globe:before {
2803 content: "\e135";
2804}
2805.glyphicon-wrench:before {
2806 content: "\e136";
2807}
2808.glyphicon-tasks:before {
2809 content: "\e137";
2810}
2811.glyphicon-filter:before {
2812 content: "\e138";
2813}
2814.glyphicon-briefcase:before {
2815 content: "\e139";
2816}
2817.glyphicon-fullscreen:before {
2818 content: "\e140";
2819}
2820.glyphicon-dashboard:before {
2821 content: "\e141";
2822}
2823.glyphicon-paperclip:before {
2824 content: "\e142";
2825}
2826.glyphicon-heart-empty:before {
2827 content: "\e143";
2828}
2829.glyphicon-link:before {
2830 content: "\e144";
2831}
2832.glyphicon-phone:before {
2833 content: "\e145";
2834}
2835.glyphicon-pushpin:before {
2836 content: "\e146";
2837}
2838.glyphicon-usd:before {
2839 content: "\e148";
2840}
2841.glyphicon-gbp:before {
2842 content: "\e149";
2843}
2844.glyphicon-sort:before {
2845 content: "\e150";
2846}
2847.glyphicon-sort-by-alphabet:before {
2848 content: "\e151";
2849}
2850.glyphicon-sort-by-alphabet-alt:before {
2851 content: "\e152";
2852}
2853.glyphicon-sort-by-order:before {
2854 content: "\e153";
2855}
2856.glyphicon-sort-by-order-alt:before {
2857 content: "\e154";
2858}
2859.glyphicon-sort-by-attributes:before {
2860 content: "\e155";
2861}
2862.glyphicon-sort-by-attributes-alt:before {
2863 content: "\e156";
2864}
2865.glyphicon-unchecked:before {
2866 content: "\e157";
2867}
2868.glyphicon-expand:before {
2869 content: "\e158";
2870}
2871.glyphicon-collapse-down:before {
2872 content: "\e159";
2873}
2874.glyphicon-collapse-up:before {
2875 content: "\e160";
2876}
2877.glyphicon-log-in:before {
2878 content: "\e161";
2879}
2880.glyphicon-flash:before {
2881 content: "\e162";
2882}
2883.glyphicon-log-out:before {
2884 content: "\e163";
2885}
2886.glyphicon-new-window:before {
2887 content: "\e164";
2888}
2889.glyphicon-record:before {
2890 content: "\e165";
2891}
2892.glyphicon-save:before {
2893 content: "\e166";
2894}
2895.glyphicon-open:before {
2896 content: "\e167";
2897}
2898.glyphicon-saved:before {
2899 content: "\e168";
2900}
2901.glyphicon-import:before {
2902 content: "\e169";
2903}
2904.glyphicon-export:before {
2905 content: "\e170";
2906}
2907.glyphicon-send:before {
2908 content: "\e171";
2909}
2910.glyphicon-floppy-disk:before {
2911 content: "\e172";
2912}
2913.glyphicon-floppy-saved:before {
2914 content: "\e173";
2915}
2916.glyphicon-floppy-remove:before {
2917 content: "\e174";
2918}
2919.glyphicon-floppy-save:before {
2920 content: "\e175";
2921}
2922.glyphicon-floppy-open:before {
2923 content: "\e176";
2924}
2925.glyphicon-credit-card:before {
2926 content: "\e177";
2927}
2928.glyphicon-transfer:before {
2929 content: "\e178";
2930}
2931.glyphicon-cutlery:before {
2932 content: "\e179";
2933}
2934.glyphicon-header:before {
2935 content: "\e180";
2936}
2937.glyphicon-compressed:before {
2938 content: "\e181";
2939}
2940.glyphicon-earphone:before {
2941 content: "\e182";
2942}
2943.glyphicon-phone-alt:before {
2944 content: "\e183";
2945}
2946.glyphicon-tower:before {
2947 content: "\e184";
2948}
2949.glyphicon-stats:before {
2950 content: "\e185";
2951}
2952.glyphicon-sd-video:before {
2953 content: "\e186";
2954}
2955.glyphicon-hd-video:before {
2956 content: "\e187";
2957}
2958.glyphicon-subtitles:before {
2959 content: "\e188";
2960}
2961.glyphicon-sound-stereo:before {
2962 content: "\e189";
2963}
2964.glyphicon-sound-dolby:before {
2965 content: "\e190";
2966}
2967.glyphicon-sound-5-1:before {
2968 content: "\e191";
2969}
2970.glyphicon-sound-6-1:before {
2971 content: "\e192";
2972}
2973.glyphicon-sound-7-1:before {
2974 content: "\e193";
2975}
2976.glyphicon-copyright-mark:before {
2977 content: "\e194";
2978}
2979.glyphicon-registration-mark:before {
2980 content: "\e195";
2981}
2982.glyphicon-cloud-download:before {
2983 content: "\e197";
2984}
2985.glyphicon-cloud-upload:before {
2986 content: "\e198";
2987}
2988.glyphicon-tree-conifer:before {
2989 content: "\e199";
2990}
2991.glyphicon-tree-deciduous:before {
2992 content: "\e200";
2993}
2994.caret {
2995 display: inline-block;
2996 width: 0;
2997 height: 0;
2998 margin-left: 2px;
2999 vertical-align: middle;
3000 border-top: 4px solid;
3001 border-right: 4px solid transparent;
3002 border-left: 4px solid transparent;
3003}
3004.dropdown {
3005 position: relative;
3006}
3007.dropdown-toggle:focus {
3008 outline: 0;
3009}
3010.dropdown-menu {
3011 position: absolute;
3012 top: 100%;
3013 left: 0;
3014 z-index: 1000;
3015 display: none;
3016 float: left;
3017 min-width: 160px;
3018 padding: 5px 0;
3019 margin: 2px 0 0;
3020 font-size: 14px;
3021 list-style: none;
3022 background-color: #fff;
3023 background-clip: padding-box;
3024 border: 1px solid #ccc;
3025 border: 1px solid rgba(0, 0, 0, .15);
3026 border-radius: 4px;
3027 -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
3028 box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
3029}
3030.dropdown-menu.pull-right {
3031 right: 0;
3032 left: auto;
3033}
3034.dropdown-menu .divider {
3035 height: 1px;
3036 margin: 9px 0;
3037 overflow: hidden;
3038 background-color: #e5e5e5;
3039}
3040.dropdown-menu > li > a {
3041 display: block;
3042 padding: 3px 20px;
3043 clear: both;
3044 font-weight: normal;
3045 line-height: 1.42857143;
3046 color: #333;
3047 white-space: nowrap;
3048}
3049.dropdown-menu > li > a:hover,
3050.dropdown-menu > li > a:focus {
3051 color: #262626;
3052 text-decoration: none;
3053 background-color: #f5f5f5;
3054}
3055.dropdown-menu > .active > a,
3056.dropdown-menu > .active > a:hover,
3057.dropdown-menu > .active > a:focus {
3058 color: #fff;
3059 text-decoration: none;
3060 background-color: #428bca;
3061 outline: 0;
3062}
3063.dropdown-menu > .disabled > a,
3064.dropdown-menu > .disabled > a:hover,
3065.dropdown-menu > .disabled > a:focus {
3066 color: #999;
3067}
3068.dropdown-menu > .disabled > a:hover,
3069.dropdown-menu > .disabled > a:focus {
3070 text-decoration: none;
3071 cursor: not-allowed;
3072 background-color: transparent;
3073 background-image: none;
3074 filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
3075}
3076.open > .dropdown-menu {
3077 display: block;
3078}
3079.open > a {
3080 outline: 0;
3081}
3082.dropdown-menu-right {
3083 right: 0;
3084 left: auto;
3085}
3086.dropdown-menu-left {
3087 right: auto;
3088 left: 0;
3089}
3090.dropdown-header {
3091 display: block;
3092 padding: 3px 20px;
3093 font-size: 12px;
3094 line-height: 1.42857143;
3095 color: #999;
3096}
3097.dropdown-backdrop {
3098 position: fixed;
3099 top: 0;
3100 right: 0;
3101 bottom: 0;
3102 left: 0;
3103 z-index: 990;
3104}
3105.pull-right > .dropdown-menu {
3106 right: 0;
3107 left: auto;
3108}
3109.dropup .caret,
3110.navbar-fixed-bottom .dropdown .caret {
3111 content: "";
3112 border-top: 0;
3113 border-bottom: 4px solid;
3114}
3115.dropup .dropdown-menu,
3116.navbar-fixed-bottom .dropdown .dropdown-menu {
3117 top: auto;
3118 bottom: 100%;
3119 margin-bottom: 1px;
3120}
3121@media (min-width: 768px) {
3122 .navbar-right .dropdown-menu {
3123 right: 0;
3124 left: auto;
3125 }
3126 .navbar-right .dropdown-menu-left {
3127 right: auto;
3128 left: 0;
3129 }
3130}
3131.btn-group,
3132.btn-group-vertical {
3133 position: relative;
3134 display: inline-block;
3135 vertical-align: middle;
3136}
3137.btn-group > .btn,
3138.btn-group-vertical > .btn {
3139 position: relative;
3140 float: left;
3141}
3142.btn-group > .btn:hover,
3143.btn-group-vertical > .btn:hover,
3144.btn-group > .btn:focus,
3145.btn-group-vertical > .btn:focus,
3146.btn-group > .btn:active,
3147.btn-group-vertical > .btn:active,
3148.btn-group > .btn.active,
3149.btn-group-vertical > .btn.active {
3150 z-index: 2;
3151}
3152.btn-group > .btn:focus,
3153.btn-group-vertical > .btn:focus {
3154 outline: none;
3155}
3156.btn-group .btn + .btn,
3157.btn-group .btn + .btn-group,
3158.btn-group .btn-group + .btn,
3159.btn-group .btn-group + .btn-group {
3160 margin-left: -1px;
3161}
3162.btn-toolbar {
3163 margin-left: -5px;
3164}
3165.btn-toolbar .btn-group,
3166.btn-toolbar .input-group {
3167 float: left;
3168}
3169.btn-toolbar > .btn,
3170.btn-toolbar > .btn-group,
3171.btn-toolbar > .input-group {
3172 margin-left: 5px;
3173}
3174.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
3175 border-radius: 0;
3176}
3177.btn-group > .btn:first-child {
3178 margin-left: 0;
3179}
3180.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
3181 border-top-right-radius: 0;
3182 border-bottom-right-radius: 0;
3183}
3184.btn-group > .btn:last-child:not(:first-child),
3185.btn-group > .dropdown-toggle:not(:first-child) {
3186 border-top-left-radius: 0;
3187 border-bottom-left-radius: 0;
3188}
3189.btn-group > .btn-group {
3190 float: left;
3191}
3192.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
3193 border-radius: 0;
3194}
3195.btn-group > .btn-group:first-child > .btn:last-child,
3196.btn-group > .btn-group:first-child > .dropdown-toggle {
3197 border-top-right-radius: 0;
3198 border-bottom-right-radius: 0;
3199}
3200.btn-group > .btn-group:last-child > .btn:first-child {
3201 border-top-left-radius: 0;
3202 border-bottom-left-radius: 0;
3203}
3204.btn-group .dropdown-toggle:active,
3205.btn-group.open .dropdown-toggle {
3206 outline: 0;
3207}
3208.btn-group > .btn + .dropdown-toggle {
3209 padding-right: 8px;
3210 padding-left: 8px;
3211}
3212.btn-group > .btn-lg + .dropdown-toggle {
3213 padding-right: 12px;
3214 padding-left: 12px;
3215}
3216.btn-group.open .dropdown-toggle {
3217 -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
3218 box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
3219}
3220.btn-group.open .dropdown-toggle.btn-link {
3221 -webkit-box-shadow: none;
3222 box-shadow: none;
3223}
3224.btn .caret {
3225 margin-left: 0;
3226}
3227.btn-lg .caret {
3228 border-width: 5px 5px 0;
3229 border-bottom-width: 0;
3230}
3231.dropup .btn-lg .caret {
3232 border-width: 0 5px 5px;
3233}
3234.btn-group-vertical > .btn,
3235.btn-group-vertical > .btn-group,
3236.btn-group-vertical > .btn-group > .btn {
3237 display: block;
3238 float: none;
3239 width: 100%;
3240 max-width: 100%;
3241}
3242.btn-group-vertical > .btn-group > .btn {
3243 float: none;
3244}
3245.btn-group-vertical > .btn + .btn,
3246.btn-group-vertical > .btn + .btn-group,
3247.btn-group-vertical > .btn-group + .btn,
3248.btn-group-vertical > .btn-group + .btn-group {
3249 margin-top: -1px;
3250 margin-left: 0;
3251}
3252.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
3253 border-radius: 0;
3254}
3255.btn-group-vertical > .btn:first-child:not(:last-child) {
3256 border-top-right-radius: 4px;
3257 border-bottom-right-radius: 0;
3258 border-bottom-left-radius: 0;
3259}
3260.btn-group-vertical > .btn:last-child:not(:first-child) {
3261 border-top-left-radius: 0;
3262 border-top-right-radius: 0;
3263 border-bottom-left-radius: 4px;
3264}
3265.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
3266 border-radius: 0;
3267}
3268.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
3269.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
3270 border-bottom-right-radius: 0;
3271 border-bottom-left-radius: 0;
3272}
3273.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
3274 border-top-left-radius: 0;
3275 border-top-right-radius: 0;
3276}
3277.btn-group-justified {
3278 display: table;
3279 width: 100%;
3280 table-layout: fixed;
3281 border-collapse: separate;
3282}
3283.btn-group-justified > .btn,
3284.btn-group-justified > .btn-group {
3285 display: table-cell;
3286 float: none;
3287 width: 1%;
3288}
3289.btn-group-justified > .btn-group .btn {
3290 width: 100%;
3291}
3292[data-toggle="buttons"] > .btn > input[type="radio"],
3293[data-toggle="buttons"] > .btn > input[type="checkbox"] {
3294 display: none;
3295}
3296.input-group {
3297 position: relative;
3298 display: table;
3299 border-collapse: separate;
3300}
3301.input-group[class*="col-"] {
3302 float: none;
3303 padding-right: 0;
3304 padding-left: 0;
3305}
3306.input-group .form-control {
3307 position: relative;
3308 z-index: 2;
3309 float: left;
3310 width: 100%;
3311 margin-bottom: 0;
3312}
3313.input-group-lg > .form-control,
3314.input-group-lg > .input-group-addon,
3315.input-group-lg > .input-group-btn > .btn {
3316 height: 46px;
3317 padding: 10px 16px;
3318 font-size: 18px;
3319 line-height: 1.33;
3320 border-radius: 6px;
3321}
3322select.input-group-lg > .form-control,
3323select.input-group-lg > .input-group-addon,
3324select.input-group-lg > .input-group-btn > .btn {
3325 height: 46px;
3326 line-height: 46px;
3327}
3328textarea.input-group-lg > .form-control,
3329textarea.input-group-lg > .input-group-addon,
3330textarea.input-group-lg > .input-group-btn > .btn,
3331select[multiple].input-group-lg > .form-control,
3332select[multiple].input-group-lg > .input-group-addon,
3333select[multiple].input-group-lg > .input-group-btn > .btn {
3334 height: auto;
3335}
3336.input-group-sm > .form-control,
3337.input-group-sm > .input-group-addon,
3338.input-group-sm > .input-group-btn > .btn {
3339 height: 30px;
3340 padding: 5px 10px;
3341 font-size: 12px;
3342 line-height: 1.5;
3343 border-radius: 3px;
3344}
3345select.input-group-sm > .form-control,
3346select.input-group-sm > .input-group-addon,
3347select.input-group-sm > .input-group-btn > .btn {
3348 height: 30px;
3349 line-height: 30px;
3350}
3351textarea.input-group-sm > .form-control,
3352textarea.input-group-sm > .input-group-addon,
3353textarea.input-group-sm > .input-group-btn > .btn,
3354select[multiple].input-group-sm > .form-control,
3355select[multiple].input-group-sm > .input-group-addon,
3356select[multiple].input-group-sm > .input-group-btn > .btn {
3357 height: auto;
3358}
3359.input-group-addon,
3360.input-group-btn,
3361.input-group .form-control {
3362 display: table-cell;
3363}
3364.input-group-addon:not(:first-child):not(:last-child),
3365.input-group-btn:not(:first-child):not(:last-child),
3366.input-group .form-control:not(:first-child):not(:last-child) {
3367 border-radius: 0;
3368}
3369.input-group-addon,
3370.input-group-btn {
3371 width: 1%;
3372 white-space: nowrap;
3373 vertical-align: middle;
3374}
3375.input-group-addon {
3376 padding: 6px 12px;
3377 font-size: 14px;
3378 font-weight: normal;
3379 line-height: 1;
3380 color: #555;
3381 text-align: center;
3382 background-color: #eee;
3383 border: 1px solid #ccc;
3384 border-radius: 4px;
3385}
3386.input-group-addon.input-sm {
3387 padding: 5px 10px;
3388 font-size: 12px;
3389 border-radius: 3px;
3390}
3391.input-group-addon.input-lg {
3392 padding: 10px 16px;
3393 font-size: 18px;
3394 border-radius: 6px;
3395}
3396.input-group-addon input[type="radio"],
3397.input-group-addon input[type="checkbox"] {
3398 margin-top: 0;
3399}
3400.input-group .form-control:first-child,
3401.input-group-addon:first-child,
3402.input-group-btn:first-child > .btn,
3403.input-group-btn:first-child > .btn-group > .btn,
3404.input-group-btn:first-child > .dropdown-toggle,
3405.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
3406.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
3407 border-top-right-radius: 0;
3408 border-bottom-right-radius: 0;
3409}
3410.input-group-addon:first-child {
3411 border-right: 0;
3412}
3413.input-group .form-control:last-child,
3414.input-group-addon:last-child,
3415.input-group-btn:last-child > .btn,
3416.input-group-btn:last-child > .btn-group > .btn,
3417.input-group-btn:last-child > .dropdown-toggle,
3418.input-group-btn:first-child > .btn:not(:first-child),
3419.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
3420 border-top-left-radius: 0;
3421 border-bottom-left-radius: 0;
3422}
3423.input-group-addon:last-child {
3424 border-left: 0;
3425}
3426.input-group-btn {
3427 position: relative;
3428 font-size: 0;
3429 white-space: nowrap;
3430}
3431.input-group-btn > .btn {
3432 position: relative;
3433}
3434.input-group-btn > .btn + .btn {
3435 margin-left: -1px;
3436}
3437.input-group-btn > .btn:hover,
3438.input-group-btn > .btn:focus,
3439.input-group-btn > .btn:active {
3440 z-index: 2;
3441}
3442.input-group-btn:first-child > .btn,
3443.input-group-btn:first-child > .btn-group {
3444 margin-right: -1px;
3445}
3446.input-group-btn:last-child > .btn,
3447.input-group-btn:last-child > .btn-group {
3448 margin-left: -1px;
3449}
3450.nav {
3451 padding-left: 0;
3452 margin-bottom: 0;
3453 list-style: none;
3454}
3455.nav > li {
3456 position: relative;
3457 display: block;
3458}
3459.nav > li > a {
3460 position: relative;
3461 display: block;
3462 padding: 10px 15px;
3463}
3464.nav > li > a:hover,
3465.nav > li > a:focus {
3466 text-decoration: none;
3467 background-color: #eee;
3468}
3469.nav > li.disabled > a {
3470 color: #999;
3471}
3472.nav > li.disabled > a:hover,
3473.nav > li.disabled > a:focus {
3474 color: #999;
3475 text-decoration: none;
3476 cursor: not-allowed;
3477 background-color: transparent;
3478}
3479.nav .open > a,
3480.nav .open > a:hover,
3481.nav .open > a:focus {
3482 background-color: #eee;
3483 border-color: #428bca;
3484}
3485.nav .nav-divider {
3486 height: 1px;
3487 margin: 9px 0;
3488 overflow: hidden;
3489 background-color: #e5e5e5;
3490}
3491.nav > li > a > img {
3492 max-width: none;
3493}
3494.nav-tabs {
3495 border-bottom: 1px solid #ddd;
3496}
3497.nav-tabs > li {
3498 float: left;
3499 margin-bottom: -1px;
3500}
3501.nav-tabs > li > a {
3502 margin-right: 2px;
3503 line-height: 1.42857143;
3504 border: 1px solid transparent;
3505 border-radius: 4px 4px 0 0;
3506}
3507.nav-tabs > li > a:hover {
3508 border-color: #eee #eee #ddd;
3509}
3510.nav-tabs > li.active > a,
3511.nav-tabs > li.active > a:hover,
3512.nav-tabs > li.active > a:focus {
3513 color: #555;
3514 cursor: default;
3515 background-color: #fff;
3516 border: 1px solid #ddd;
3517 border-bottom-color: transparent;
3518}
3519.nav-tabs.nav-justified {
3520 width: 100%;
3521 border-bottom: 0;
3522}
3523.nav-tabs.nav-justified > li {
3524 float: none;
3525}
3526.nav-tabs.nav-justified > li > a {
3527 margin-bottom: 5px;
3528 text-align: center;
3529}
3530.nav-tabs.nav-justified > .dropdown .dropdown-menu {
3531 top: auto;
3532 left: auto;
3533}
3534@media (min-width: 768px) {
3535 .nav-tabs.nav-justified > li {
3536 display: table-cell;
3537 width: 1%;
3538 }
3539 .nav-tabs.nav-justified > li > a {
3540 margin-bottom: 0;
3541 }
3542}
3543.nav-tabs.nav-justified > li > a {
3544 margin-right: 0;
3545 border-radius: 4px;
3546}
3547.nav-tabs.nav-justified > .active > a,
3548.nav-tabs.nav-justified > .active > a:hover,
3549.nav-tabs.nav-justified > .active > a:focus {
3550 border: 1px solid #ddd;
3551}
3552@media (min-width: 768px) {
3553 .nav-tabs.nav-justified > li > a {
3554 border-bottom: 1px solid #ddd;
3555 border-radius: 4px 4px 0 0;
3556 }
3557 .nav-tabs.nav-justified > .active > a,
3558 .nav-tabs.nav-justified > .active > a:hover,
3559 .nav-tabs.nav-justified > .active > a:focus {
3560 border-bottom-color: #fff;
3561 }
3562}
3563.nav-pills > li {
3564 float: left;
3565}
3566.nav-pills > li > a {
3567 border-radius: 4px;
3568}
3569.nav-pills > li + li {
3570 margin-left: 2px;
3571}
3572.nav-pills > li.active > a,
3573.nav-pills > li.active > a:hover,
3574.nav-pills > li.active > a:focus {
3575 color: #fff;
3576 background-color: #428bca;
3577}
3578.nav-stacked > li {
3579 float: none;
3580}
3581.nav-stacked > li + li {
3582 margin-top: 2px;
3583 margin-left: 0;
3584}
3585.nav-justified {
3586 width: 100%;
3587}
3588.nav-justified > li {
3589 float: none;
3590}
3591.nav-justified > li > a {
3592 margin-bottom: 5px;
3593 text-align: center;
3594}
3595.nav-justified > .dropdown .dropdown-menu {
3596 top: auto;
3597 left: auto;
3598}
3599@media (min-width: 768px) {
3600 .nav-justified > li {
3601 display: table-cell;
3602 width: 1%;
3603 }
3604 .nav-justified > li > a {
3605 margin-bottom: 0;
3606 }
3607}
3608.nav-tabs-justified {
3609 border-bottom: 0;
3610}
3611.nav-tabs-justified > li > a {
3612 margin-right: 0;
3613 border-radius: 4px;
3614}
3615.nav-tabs-justified > .active > a,
3616.nav-tabs-justified > .active > a:hover,
3617.nav-tabs-justified > .active > a:focus {
3618 border: 1px solid #ddd;
3619}
3620@media (min-width: 768px) {
3621 .nav-tabs-justified > li > a {
3622 border-bottom: 1px solid #ddd;
3623 border-radius: 4px 4px 0 0;
3624 }
3625 .nav-tabs-justified > .active > a,
3626 .nav-tabs-justified > .active > a:hover,
3627 .nav-tabs-justified > .active > a:focus {
3628 border-bottom-color: #fff;
3629 }
3630}
3631.tab-content > .tab-pane {
3632 display: none;
3633}
3634.tab-content > .active {
3635 display: block;
3636}
3637.nav-tabs .dropdown-menu {
3638 margin-top: -1px;
3639 border-top-left-radius: 0;
3640 border-top-right-radius: 0;
3641}
3642.navbar {
3643 position: relative;
3644 min-height: 50px;
3645 margin-bottom: 20px;
3646 border: 1px solid transparent;
3647}
3648@media (min-width: 768px) {
3649 .navbar {
3650 border-radius: 4px;
3651 }
3652}
3653@media (min-width: 768px) {
3654 .navbar-header {
3655 float: left;
3656 }
3657}
3658.navbar-collapse {
3659 max-height: 340px;
3660 padding-right: 15px;
3661 padding-left: 15px;
3662 overflow-x: visible;
3663 -webkit-overflow-scrolling: touch;
3664 border-top: 1px solid transparent;
3665 box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
3666}
3667.navbar-collapse.in {
3668 overflow-y: auto;
3669}
3670@media (min-width: 768px) {
3671 .navbar-collapse {
3672 width: auto;
3673 border-top: 0;
3674 box-shadow: none;
3675 }
3676 .navbar-collapse.collapse {
3677 display: block !important;
3678 height: auto !important;
3679 padding-bottom: 0;
3680 overflow: visible !important;
3681 }
3682 .navbar-collapse.in {
3683 overflow-y: visible;
3684 }
3685 .navbar-fixed-top .navbar-collapse,
3686 .navbar-static-top .navbar-collapse,
3687 .navbar-fixed-bottom .navbar-collapse {
3688 padding-right: 0;
3689 padding-left: 0;
3690 }
3691}
3692.container > .navbar-header,
3693.container-fluid > .navbar-header,
3694.container > .navbar-collapse,
3695.container-fluid > .navbar-collapse {
3696 margin-right: -15px;
3697 margin-left: -15px;
3698}
3699@media (min-width: 768px) {
3700 .container > .navbar-header,
3701 .container-fluid > .navbar-header,
3702 .container > .navbar-collapse,
3703 .container-fluid > .navbar-collapse {
3704 margin-right: 0;
3705 margin-left: 0;
3706 }
3707}
3708.navbar-static-top {
3709 z-index: 1000;
3710 border-width: 0 0 1px;
3711}
3712@media (min-width: 768px) {
3713 .navbar-static-top {
3714 border-radius: 0;
3715 }
3716}
3717.navbar-fixed-top,
3718.navbar-fixed-bottom {
3719 position: fixed;
3720 right: 0;
3721 left: 0;
3722 z-index: 1030;
3723}
3724@media (min-width: 768px) {
3725 .navbar-fixed-top,
3726 .navbar-fixed-bottom {
3727 border-radius: 0;
3728 }
3729}
3730.navbar-fixed-top {
3731 top: 0;
3732 border-width: 0 0 1px;
3733}
3734.navbar-fixed-bottom {
3735 bottom: 0;
3736 margin-bottom: 0;
3737 border-width: 1px 0 0;
3738}
3739.navbar-brand {
3740 float: left;
3741 height: 50px;
3742 padding: 15px 15px;
3743 font-size: 18px;
3744 line-height: 20px;
3745}
3746.navbar-brand:hover,
3747.navbar-brand:focus {
3748 text-decoration: none;
3749}
3750@media (min-width: 768px) {
3751 .navbar > .container .navbar-brand,
3752 .navbar > .container-fluid .navbar-brand {
3753 margin-left: -15px;
3754 }
3755}
3756.navbar-toggle {
3757 position: relative;
3758 float: right;
3759 padding: 9px 10px;
3760 margin-top: 8px;
3761 margin-right: 15px;
3762 margin-bottom: 8px;
3763 background-color: transparent;
3764 background-image: none;
3765 border: 1px solid transparent;
3766 border-radius: 4px;
3767}
3768.navbar-toggle:focus {
3769 outline: none;
3770}
3771.navbar-toggle .icon-bar {
3772 display: block;
3773 width: 22px;
3774 height: 2px;
3775 border-radius: 1px;
3776}
3777.navbar-toggle .icon-bar + .icon-bar {
3778 margin-top: 4px;
3779}
3780@media (min-width: 768px) {
3781 .navbar-toggle {
3782 display: none;
3783 }
3784}
3785.navbar-nav {
3786 margin: 7.5px -15px;
3787}
3788.navbar-nav > li > a {
3789 padding-top: 10px;
3790 padding-bottom: 10px;
3791 line-height: 20px;
3792}
3793@media (max-width: 767px) {
3794 .navbar-nav .open .dropdown-menu {
3795 position: static;
3796 float: none;
3797 width: auto;
3798 margin-top: 0;
3799 background-color: transparent;
3800 border: 0;
3801 box-shadow: none;
3802 }
3803 .navbar-nav .open .dropdown-menu > li > a,
3804 .navbar-nav .open .dropdown-menu .dropdown-header {
3805 padding: 5px 15px 5px 25px;
3806 }
3807 .navbar-nav .open .dropdown-menu > li > a {
3808 line-height: 20px;
3809 }
3810 .navbar-nav .open .dropdown-menu > li > a:hover,
3811 .navbar-nav .open .dropdown-menu > li > a:focus {
3812 background-image: none;
3813 }
3814}
3815@media (min-width: 768px) {
3816 .navbar-nav {
3817 float: left;
3818 margin: 0;
3819 }
3820 .navbar-nav > li {
3821 float: left;
3822 }
3823 .navbar-nav > li > a {
3824 padding-top: 15px;
3825 padding-bottom: 15px;
3826 }
3827 .navbar-nav.navbar-right:last-child {
3828 margin-right: -15px;
3829 }
3830}
3831@media (min-width: 768px) {
3832 .navbar-left {
3833 float: left !important;
3834 }
3835 .navbar-right {
3836 float: right !important;
3837 }
3838}
3839.navbar-form {
3840 padding: 10px 15px;
3841 margin-top: 8px;
3842 margin-right: -15px;
3843 margin-bottom: 8px;
3844 margin-left: -15px;
3845 border-top: 1px solid transparent;
3846 border-bottom: 1px solid transparent;
3847 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
3848 box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
3849}
3850@media (min-width: 768px) {
3851 .navbar-form .form-group {
3852 display: inline-block;
3853 margin-bottom: 0;
3854 vertical-align: middle;
3855 }
3856 .navbar-form .form-control {
3857 display: inline-block;
3858 width: auto;
3859 vertical-align: middle;
3860 }
3861 .navbar-form .input-group > .form-control {
3862 width: 100%;
3863 }
3864 .navbar-form .control-label {
3865 margin-bottom: 0;
3866 vertical-align: middle;
3867 }
3868 .navbar-form .radio,
3869 .navbar-form .checkbox {
3870 display: inline-block;
3871 padding-left: 0;
3872 margin-top: 0;
3873 margin-bottom: 0;
3874 vertical-align: middle;
3875 }
3876 .navbar-form .radio input[type="radio"],
3877 .navbar-form .checkbox input[type="checkbox"] {
3878 float: none;
3879 margin-left: 0;
3880 }
3881 .navbar-form .has-feedback .form-control-feedback {
3882 top: 0;
3883 }
3884}
3885@media (max-width: 767px) {
3886 .navbar-form .form-group {
3887 margin-bottom: 5px;
3888 }
3889}
3890@media (min-width: 768px) {
3891 .navbar-form {
3892 width: auto;
3893 padding-top: 0;
3894 padding-bottom: 0;
3895 margin-right: 0;
3896 margin-left: 0;
3897 border: 0;
3898 -webkit-box-shadow: none;
3899 box-shadow: none;
3900 }
3901 .navbar-form.navbar-right:last-child {
3902 margin-right: -15px;
3903 }
3904}
3905.navbar-nav > li > .dropdown-menu {
3906 margin-top: 0;
3907 border-top-left-radius: 0;
3908 border-top-right-radius: 0;
3909}
3910.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
3911 border-bottom-right-radius: 0;
3912 border-bottom-left-radius: 0;
3913}
3914.navbar-btn {
3915 margin-top: 8px;
3916 margin-bottom: 8px;
3917}
3918.navbar-btn.btn-sm {
3919 margin-top: 10px;
3920 margin-bottom: 10px;
3921}
3922.navbar-btn.btn-xs {
3923 margin-top: 14px;
3924 margin-bottom: 14px;
3925}
3926.navbar-text {
3927 margin-top: 15px;
3928 margin-bottom: 15px;
3929}
3930@media (min-width: 768px) {
3931 .navbar-text {
3932 float: left;
3933 margin-right: 15px;
3934 margin-left: 15px;
3935 }
3936 .navbar-text.navbar-right:last-child {
3937 margin-right: 0;
3938 }
3939}
3940.navbar-default {
3941 background-color: #f8f8f8;
3942 border-color: #e7e7e7;
3943}
3944.navbar-default .navbar-brand {
3945 color: #777;
3946}
3947.navbar-default .navbar-brand:hover,
3948.navbar-default .navbar-brand:focus {
3949 color: #5e5e5e;
3950 background-color: transparent;
3951}
3952.navbar-default .navbar-text {
3953 color: #777;
3954}
3955.navbar-default .navbar-nav > li > a {
3956 color: #777;
3957}
3958.navbar-default .navbar-nav > li > a:hover,
3959.navbar-default .navbar-nav > li > a:focus {
3960 color: #333;
3961 background-color: transparent;
3962}
3963.navbar-default .navbar-nav > .active > a,
3964.navbar-default .navbar-nav > .active > a:hover,
3965.navbar-default .navbar-nav > .active > a:focus {
3966 color: #555;
3967 background-color: #e7e7e7;
3968}
3969.navbar-default .navbar-nav > .disabled > a,
3970.navbar-default .navbar-nav > .disabled > a:hover,
3971.navbar-default .navbar-nav > .disabled > a:focus {
3972 color: #ccc;
3973 background-color: transparent;
3974}
3975.navbar-default .navbar-toggle {
3976 border-color: #ddd;
3977}
3978.navbar-default .navbar-toggle:hover,
3979.navbar-default .navbar-toggle:focus {
3980 background-color: #ddd;
3981}
3982.navbar-default .navbar-toggle .icon-bar {
3983 background-color: #888;
3984}
3985.navbar-default .navbar-collapse,
3986.navbar-default .navbar-form {
3987 border-color: #e7e7e7;
3988}
3989.navbar-default .navbar-nav > .open > a,
3990.navbar-default .navbar-nav > .open > a:hover,
3991.navbar-default .navbar-nav > .open > a:focus {
3992 color: #555;
3993 background-color: #e7e7e7;
3994}
3995@media (max-width: 767px) {
3996 .navbar-default .navbar-nav .open .dropdown-menu > li > a {
3997 color: #777;
3998 }
3999 .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
4000 .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
4001 color: #333;
4002 background-color: transparent;
4003 }
4004 .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
4005 .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
4006 .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
4007 color: #555;
4008 background-color: #e7e7e7;
4009 }
4010 .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
4011 .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
4012 .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
4013 color: #ccc;
4014 background-color: transparent;
4015 }
4016}
4017.navbar-default .navbar-link {
4018 color: #777;
4019}
4020.navbar-default .navbar-link:hover {
4021 color: #333;
4022}
4023.navbar-inverse {
4024 background-color: #222;
4025 border-color: #080808;
4026}
4027.navbar-inverse .navbar-brand {
4028 color: #999;
4029}
4030.navbar-inverse .navbar-brand:hover,
4031.navbar-inverse .navbar-brand:focus {
4032 color: #fff;
4033 background-color: transparent;
4034}
4035.navbar-inverse .navbar-text {
4036 color: #999;
4037}
4038.navbar-inverse .navbar-nav > li > a {
4039 color: #999;
4040}
4041.navbar-inverse .navbar-nav > li > a:hover,
4042.navbar-inverse .navbar-nav > li > a:focus {
4043 color: #fff;
4044 background-color: transparent;
4045}
4046.navbar-inverse .navbar-nav > .active > a,
4047.navbar-inverse .navbar-nav > .active > a:hover,
4048.navbar-inverse .navbar-nav > .active > a:focus {
4049 color: #fff;
4050 background-color: #080808;
4051}
4052.navbar-inverse .navbar-nav > .disabled > a,
4053.navbar-inverse .navbar-nav > .disabled > a:hover,
4054.navbar-inverse .navbar-nav > .disabled > a:focus {
4055 color: #444;
4056 background-color: transparent;
4057}
4058.navbar-inverse .navbar-toggle {
4059 border-color: #333;
4060}
4061.navbar-inverse .navbar-toggle:hover,
4062.navbar-inverse .navbar-toggle:focus {
4063 background-color: #333;
4064}
4065.navbar-inverse .navbar-toggle .icon-bar {
4066 background-color: #fff;
4067}
4068.navbar-inverse .navbar-collapse,
4069.navbar-inverse .navbar-form {
4070 border-color: #101010;
4071}
4072.navbar-inverse .navbar-nav > .open > a,
4073.navbar-inverse .navbar-nav > .open > a:hover,
4074.navbar-inverse .navbar-nav > .open > a:focus {
4075 color: #fff;
4076 background-color: #080808;
4077}
4078@media (max-width: 767px) {
4079 .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
4080 border-color: #080808;
4081 }
4082 .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
4083 background-color: #080808;
4084 }
4085 .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
4086 color: #999;
4087 }
4088 .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
4089 .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
4090 color: #fff;
4091 background-color: transparent;
4092 }
4093 .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
4094 .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
4095 .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
4096 color: #fff;
4097 background-color: #080808;
4098 }
4099 .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
4100 .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
4101 .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
4102 color: #444;
4103 background-color: transparent;
4104 }
4105}
4106.navbar-inverse .navbar-link {
4107 color: #999;
4108}
4109.navbar-inverse .navbar-link:hover {
4110 color: #fff;
4111}
4112.breadcrumb {
4113 padding: 8px 15px;
4114 margin-bottom: 20px;
4115 list-style: none;
4116 background-color: #f5f5f5;
4117 border-radius: 4px;
4118}
4119.breadcrumb > li {
4120 display: inline-block;
4121}
4122.breadcrumb > li + li:before {
4123 padding: 0 5px;
4124 color: #ccc;
4125 content: "/\00a0";
4126}
4127.breadcrumb > .active {
4128 color: #999;
4129}
4130.pagination {
4131 display: inline-block;
4132 padding-left: 0;
4133 margin: 20px 0;
4134 border-radius: 4px;
4135}
4136.pagination > li {
4137 display: inline;
4138}
4139.pagination > li > a,
4140.pagination > li > span {
4141 position: relative;
4142 float: left;
4143 padding: 6px 12px;
4144 margin-left: -1px;
4145 line-height: 1.42857143;
4146 color: #428bca;
4147 text-decoration: none;
4148 background-color: #fff;
4149 border: 1px solid #ddd;
4150}
4151.pagination > li:first-child > a,
4152.pagination > li:first-child > span {
4153 margin-left: 0;
4154 border-top-left-radius: 4px;
4155 border-bottom-left-radius: 4px;
4156}
4157.pagination > li:last-child > a,
4158.pagination > li:last-child > span {
4159 border-top-right-radius: 4px;
4160 border-bottom-right-radius: 4px;
4161}
4162.pagination > li > a:hover,
4163.pagination > li > span:hover,
4164.pagination > li > a:focus,
4165.pagination > li > span:focus {
4166 color: #2a6496;
4167 background-color: #eee;
4168 border-color: #ddd;
4169}
4170.pagination > .active > a,
4171.pagination > .active > span,
4172.pagination > .active > a:hover,
4173.pagination > .active > span:hover,
4174.pagination > .active > a:focus,
4175.pagination > .active > span:focus {
4176 z-index: 2;
4177 color: #fff;
4178 cursor: default;
4179 background-color: #428bca;
4180 border-color: #428bca;
4181}
4182.pagination > .disabled > span,
4183.pagination > .disabled > span:hover,
4184.pagination > .disabled > span:focus,
4185.pagination > .disabled > a,
4186.pagination > .disabled > a:hover,
4187.pagination > .disabled > a:focus {
4188 color: #999;
4189 cursor: not-allowed;
4190 background-color: #fff;
4191 border-color: #ddd;
4192}
4193.pagination-lg > li > a,
4194.pagination-lg > li > span {
4195 padding: 10px 16px;
4196 font-size: 18px;
4197}
4198.pagination-lg > li:first-child > a,
4199.pagination-lg > li:first-child > span {
4200 border-top-left-radius: 6px;
4201 border-bottom-left-radius: 6px;
4202}
4203.pagination-lg > li:last-child > a,
4204.pagination-lg > li:last-child > span {
4205 border-top-right-radius: 6px;
4206 border-bottom-right-radius: 6px;
4207}
4208.pagination-sm > li > a,
4209.pagination-sm > li > span {
4210 padding: 5px 10px;
4211 font-size: 12px;
4212}
4213.pagination-sm > li:first-child > a,
4214.pagination-sm > li:first-child > span {
4215 border-top-left-radius: 3px;
4216 border-bottom-left-radius: 3px;
4217}
4218.pagination-sm > li:last-child > a,
4219.pagination-sm > li:last-child > span {
4220 border-top-right-radius: 3px;
4221 border-bottom-right-radius: 3px;
4222}
4223.pager {
4224 padding-left: 0;
4225 margin: 20px 0;
4226 text-align: center;
4227 list-style: none;
4228}
4229.pager li {
4230 display: inline;
4231}
4232.pager li > a,
4233.pager li > span {
4234 display: inline-block;
4235 padding: 5px 14px;
4236 background-color: #fff;
4237 border: 1px solid #ddd;
4238 border-radius: 15px;
4239}
4240.pager li > a:hover,
4241.pager li > a:focus {
4242 text-decoration: none;
4243 background-color: #eee;
4244}
4245.pager .next > a,
4246.pager .next > span {
4247 float: right;
4248}
4249.pager .previous > a,
4250.pager .previous > span {
4251 float: left;
4252}
4253.pager .disabled > a,
4254.pager .disabled > a:hover,
4255.pager .disabled > a:focus,
4256.pager .disabled > span {
4257 color: #999;
4258 cursor: not-allowed;
4259 background-color: #fff;
4260}
4261.label {
4262 display: inline;
4263 padding: .2em .6em .3em;
4264 font-size: 75%;
4265 font-weight: bold;
4266 line-height: 1;
4267 color: #fff;
4268 text-align: center;
4269 white-space: nowrap;
4270 vertical-align: baseline;
4271 border-radius: .25em;
4272}
4273.label[href]:hover,
4274.label[href]:focus {
4275 color: #fff;
4276 text-decoration: none;
4277 cursor: pointer;
4278}
4279.label:empty {
4280 display: none;
4281}
4282.btn .label {
4283 position: relative;
4284 top: -1px;
4285}
4286.label-default {
4287 background-color: #999;
4288}
4289.label-default[href]:hover,
4290.label-default[href]:focus {
4291 background-color: #808080;
4292}
4293.label-primary {
4294 background-color: #428bca;
4295}
4296.label-primary[href]:hover,
4297.label-primary[href]:focus {
4298 background-color: #3071a9;
4299}
4300.label-success {
4301 background-color: #5cb85c;
4302}
4303.label-success[href]:hover,
4304.label-success[href]:focus {
4305 background-color: #449d44;
4306}
4307.label-info {
4308 background-color: #5bc0de;
4309}
4310.label-info[href]:hover,
4311.label-info[href]:focus {
4312 background-color: #31b0d5;
4313}
4314.label-warning {
4315 background-color: #f0ad4e;
4316}
4317.label-warning[href]:hover,
4318.label-warning[href]:focus {
4319 background-color: #ec971f;
4320}
4321.label-danger {
4322 background-color: #d9534f;
4323}
4324.label-danger[href]:hover,
4325.label-danger[href]:focus {
4326 background-color: #c9302c;
4327}
4328.badge {
4329 display: inline-block;
4330 min-width: 10px;
4331 padding: 3px 7px;
4332 font-size: 12px;
4333 font-weight: bold;
4334 line-height: 1;
4335 color: #fff;
4336 text-align: center;
4337 white-space: nowrap;
4338 vertical-align: baseline;
4339 background-color: #999;
4340 border-radius: 10px;
4341}
4342.badge:empty {
4343 display: none;
4344}
4345.btn .badge {
4346 position: relative;
4347 top: -1px;
4348}
4349.btn-xs .badge {
4350 top: 0;
4351 padding: 1px 5px;
4352}
4353a.badge:hover,
4354a.badge:focus {
4355 color: #fff;
4356 text-decoration: none;
4357 cursor: pointer;
4358}
4359a.list-group-item.active > .badge,
4360.nav-pills > .active > a > .badge {
4361 color: #428bca;
4362 background-color: #fff;
4363}
4364.nav-pills > li > a > .badge {
4365 margin-left: 3px;
4366}
4367.jumbotron {
4368 padding: 30px;
4369 margin-bottom: 30px;
4370 color: inherit;
4371 background-color: #eee;
4372}
4373.jumbotron h1,
4374.jumbotron .h1 {
4375 color: inherit;
4376}
4377.jumbotron p {
4378 margin-bottom: 15px;
4379 font-size: 21px;
4380 font-weight: 200;
4381}
4382.container .jumbotron {
4383 border-radius: 6px;
4384}
4385.jumbotron .container {
4386 max-width: 100%;
4387}
4388@media screen and (min-width: 768px) {
4389 .jumbotron {
4390 padding-top: 48px;
4391 padding-bottom: 48px;
4392 }
4393 .container .jumbotron {
4394 padding-right: 60px;
4395 padding-left: 60px;
4396 }
4397 .jumbotron h1,
4398 .jumbotron .h1 {
4399 font-size: 63px;
4400 }
4401}
4402.thumbnail {
4403 display: block;
4404 padding: 4px;
4405 margin-bottom: 20px;
4406 line-height: 1.42857143;
4407 background-color: #fff;
4408 border: 1px solid #ddd;
4409 border-radius: 4px;
4410 -webkit-transition: all .2s ease-in-out;
4411 transition: all .2s ease-in-out;
4412}
4413.thumbnail > img,
4414.thumbnail a > img {
4415 margin-right: auto;
4416 margin-left: auto;
4417}
4418a.thumbnail:hover,
4419a.thumbnail:focus,
4420a.thumbnail.active {
4421 border-color: #428bca;
4422}
4423.thumbnail .caption {
4424 padding: 9px;
4425 color: #333;
4426}
4427.alert {
4428 padding: 15px;
4429 margin-bottom: 20px;
4430 border: 1px solid transparent;
4431 border-radius: 4px;
4432}
4433.alert h4 {
4434 margin-top: 0;
4435 color: inherit;
4436}
4437.alert .alert-link {
4438 font-weight: bold;
4439}
4440.alert > p,
4441.alert > ul {
4442 margin-bottom: 0;
4443}
4444.alert > p + p {
4445 margin-top: 5px;
4446}
4447.alert-dismissable {
4448 padding-right: 35px;
4449}
4450.alert-dismissable .close {
4451 position: relative;
4452 top: -2px;
4453 right: -21px;
4454 color: inherit;
4455}
4456.alert-success {
4457 color: #3c763d;
4458 background-color: #dff0d8;
4459 border-color: #d6e9c6;
4460}
4461.alert-success hr {
4462 border-top-color: #c9e2b3;
4463}
4464.alert-success .alert-link {
4465 color: #2b542c;
4466}
4467.alert-info {
4468 color: #31708f;
4469 background-color: #d9edf7;
4470 border-color: #bce8f1;
4471}
4472.alert-info hr {
4473 border-top-color: #a6e1ec;
4474}
4475.alert-info .alert-link {
4476 color: #245269;
4477}
4478.alert-warning {
4479 color: #8a6d3b;
4480 background-color: #fcf8e3;
4481 border-color: #faebcc;
4482}
4483.alert-warning hr {
4484 border-top-color: #f7e1b5;
4485}
4486.alert-warning .alert-link {
4487 color: #66512c;
4488}
4489.alert-danger {
4490 color: #a94442;
4491 background-color: #f2dede;
4492 border-color: #ebccd1;
4493}
4494.alert-danger hr {
4495 border-top-color: #e4b9c0;
4496}
4497.alert-danger .alert-link {
4498 color: #843534;
4499}
4500@-webkit-keyframes progress-bar-stripes {
4501 from {
4502 background-position: 40px 0;
4503 }
4504 to {
4505 background-position: 0 0;
4506 }
4507}
4508@keyframes progress-bar-stripes {
4509 from {
4510 background-position: 40px 0;
4511 }
4512 to {
4513 background-position: 0 0;
4514 }
4515}
4516.progress {
4517 height: 20px;
4518 margin-bottom: 20px;
4519 overflow: hidden;
4520 background-color: #f5f5f5;
4521 border-radius: 4px;
4522 -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
4523 box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
4524}
4525.progress-bar {
4526 float: left;
4527 width: 0;
4528 height: 100%;
4529 font-size: 12px;
4530 line-height: 20px;
4531 color: #fff;
4532 text-align: center;
4533 background-color: #428bca;
4534 -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
4535 box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
4536 -webkit-transition: width .6s ease;
4537 transition: width .6s ease;
4538}
4539.progress-striped .progress-bar {
4540 background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
4541 background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
4542 background-size: 40px 40px;
4543}
4544.progress.active .progress-bar {
4545 -webkit-animation: progress-bar-stripes 2s linear infinite;
4546 animation: progress-bar-stripes 2s linear infinite;
4547}
4548.progress-bar-success {
4549 background-color: #5cb85c;
4550}
4551.progress-striped .progress-bar-success {
4552 background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
4553 background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
4554}
4555.progress-bar-info {
4556 background-color: #5bc0de;
4557}
4558.progress-striped .progress-bar-info {
4559 background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
4560 background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
4561}
4562.progress-bar-warning {
4563 background-color: #f0ad4e;
4564}
4565.progress-striped .progress-bar-warning {
4566 background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
4567 background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
4568}
4569.progress-bar-danger {
4570 background-color: #d9534f;
4571}
4572.progress-striped .progress-bar-danger {
4573 background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
4574 background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
4575}
4576.media,
4577.media-body {
4578 overflow: hidden;
4579 zoom: 1;
4580}
4581.media,
4582.media .media {
4583 margin-top: 15px;
4584}
4585.media:first-child {
4586 margin-top: 0;
4587}
4588.media-object {
4589 display: block;
4590}
4591.media-heading {
4592 margin: 0 0 5px;
4593}
4594.media > .pull-left {
4595 margin-right: 10px;
4596}
4597.media > .pull-right {
4598 margin-left: 10px;
4599}
4600.media-list {
4601 padding-left: 0;
4602 list-style: none;
4603}
4604.list-group {
4605 padding-left: 0;
4606 margin-bottom: 20px;
4607}
4608.list-group-item {
4609 position: relative;
4610 display: block;
4611 padding: 10px 15px;
4612 margin-bottom: -1px;
4613 background-color: #fff;
4614 border: 1px solid #ddd;
4615}
4616.list-group-item:first-child {
4617 border-top-left-radius: 4px;
4618 border-top-right-radius: 4px;
4619}
4620.list-group-item:last-child {
4621 margin-bottom: 0;
4622 border-bottom-right-radius: 4px;
4623 border-bottom-left-radius: 4px;
4624}
4625.list-group-item > .badge {
4626 float: right;
4627}
4628.list-group-item > .badge + .badge {
4629 margin-right: 5px;
4630}
4631a.list-group-item {
4632 color: #555;
4633}
4634a.list-group-item .list-group-item-heading {
4635 color: #333;
4636}
4637a.list-group-item:hover,
4638a.list-group-item:focus {
4639 text-decoration: none;
4640 background-color: #f5f5f5;
4641}
4642a.list-group-item.active,
4643a.list-group-item.active:hover,
4644a.list-group-item.active:focus {
4645 z-index: 2;
4646 color: #fff;
4647 background-color: #428bca;
4648 border-color: #428bca;
4649}
4650a.list-group-item.active .list-group-item-heading,
4651a.list-group-item.active:hover .list-group-item-heading,
4652a.list-group-item.active:focus .list-group-item-heading {
4653 color: inherit;
4654}
4655a.list-group-item.active .list-group-item-text,
4656a.list-group-item.active:hover .list-group-item-text,
4657a.list-group-item.active:focus .list-group-item-text {
4658 color: #e1edf7;
4659}
4660.list-group-item-success {
4661 color: #3c763d;
4662 background-color: #dff0d8;
4663}
4664a.list-group-item-success {
4665 color: #3c763d;
4666}
4667a.list-group-item-success .list-group-item-heading {
4668 color: inherit;
4669}
4670a.list-group-item-success:hover,
4671a.list-group-item-success:focus {
4672 color: #3c763d;
4673 background-color: #d0e9c6;
4674}
4675a.list-group-item-success.active,
4676a.list-group-item-success.active:hover,
4677a.list-group-item-success.active:focus {
4678 color: #fff;
4679 background-color: #3c763d;
4680 border-color: #3c763d;
4681}
4682.list-group-item-info {
4683 color: #31708f;
4684 background-color: #d9edf7;
4685}
4686a.list-group-item-info {
4687 color: #31708f;
4688}
4689a.list-group-item-info .list-group-item-heading {
4690 color: inherit;
4691}
4692a.list-group-item-info:hover,
4693a.list-group-item-info:focus {
4694 color: #31708f;
4695 background-color: #c4e3f3;
4696}
4697a.list-group-item-info.active,
4698a.list-group-item-info.active:hover,
4699a.list-group-item-info.active:focus {
4700 color: #fff;
4701 background-color: #31708f;
4702 border-color: #31708f;
4703}
4704.list-group-item-warning {
4705 color: #8a6d3b;
4706 background-color: #fcf8e3;
4707}
4708a.list-group-item-warning {
4709 color: #8a6d3b;
4710}
4711a.list-group-item-warning .list-group-item-heading {
4712 color: inherit;
4713}
4714a.list-group-item-warning:hover,
4715a.list-group-item-warning:focus {
4716 color: #8a6d3b;
4717 background-color: #faf2cc;
4718}
4719a.list-group-item-warning.active,
4720a.list-group-item-warning.active:hover,
4721a.list-group-item-warning.active:focus {
4722 color: #fff;
4723 background-color: #8a6d3b;
4724 border-color: #8a6d3b;
4725}
4726.list-group-item-danger {
4727 color: #a94442;
4728 background-color: #f2dede;
4729}
4730a.list-group-item-danger {
4731 color: #a94442;
4732}
4733a.list-group-item-danger .list-group-item-heading {
4734 color: inherit;
4735}
4736a.list-group-item-danger:hover,
4737a.list-group-item-danger:focus {
4738 color: #a94442;
4739 background-color: #ebcccc;
4740}
4741a.list-group-item-danger.active,
4742a.list-group-item-danger.active:hover,
4743a.list-group-item-danger.active:focus {
4744 color: #fff;
4745 background-color: #a94442;
4746 border-color: #a94442;
4747}
4748.list-group-item-heading {
4749 margin-top: 0;
4750 margin-bottom: 5px;
4751}
4752.list-group-item-text {
4753 margin-bottom: 0;
4754 line-height: 1.3;
4755}
4756.panel {
4757 margin-bottom: 20px;
4758 background-color: #fff;
4759 border: 1px solid transparent;
4760 border-radius: 4px;
4761 -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
4762 box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
4763}
4764.panel-body {
4765 padding: 15px;
4766}
4767.panel-heading {
4768 padding: 10px 15px;
4769 border-bottom: 1px solid transparent;
4770 border-top-left-radius: 3px;
4771 border-top-right-radius: 3px;
4772}
4773.panel-heading > .dropdown .dropdown-toggle {
4774 color: inherit;
4775}
4776.panel-title {
4777 margin-top: 0;
4778 margin-bottom: 0;
4779 font-size: 16px;
4780 color: inherit;
4781}
4782.panel-title > a {
4783 color: inherit;
4784}
4785.panel-footer {
4786 padding: 10px 15px;
4787 background-color: #f5f5f5;
4788 border-top: 1px solid #ddd;
4789 border-bottom-right-radius: 3px;
4790 border-bottom-left-radius: 3px;
4791}
4792.panel > .list-group {
4793 margin-bottom: 0;
4794}
4795.panel > .list-group .list-group-item {
4796 border-width: 1px 0;
4797 border-radius: 0;
4798}
4799.panel > .list-group:first-child .list-group-item:first-child {
4800 border-top: 0;
4801 border-top-left-radius: 3px;
4802 border-top-right-radius: 3px;
4803}
4804.panel > .list-group:last-child .list-group-item:last-child {
4805 border-bottom: 0;
4806 border-bottom-right-radius: 3px;
4807 border-bottom-left-radius: 3px;
4808}
4809.panel-heading + .list-group .list-group-item:first-child {
4810 border-top-width: 0;
4811}
4812.panel > .table,
4813.panel > .table-responsive > .table {
4814 margin-bottom: 0;
4815}
4816.panel > .table:first-child,
4817.panel > .table-responsive:first-child > .table:first-child {
4818 border-top-left-radius: 3px;
4819 border-top-right-radius: 3px;
4820}
4821.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
4822.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
4823.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
4824.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
4825.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
4826.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
4827.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
4828.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
4829 border-top-left-radius: 3px;
4830}
4831.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
4832.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
4833.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
4834.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
4835.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
4836.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
4837.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
4838.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
4839 border-top-right-radius: 3px;
4840}
4841.panel > .table:last-child,
4842.panel > .table-responsive:last-child > .table:last-child {
4843 border-bottom-right-radius: 3px;
4844 border-bottom-left-radius: 3px;
4845}
4846.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
4847.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
4848.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
4849.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
4850.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
4851.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
4852.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
4853.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
4854 border-bottom-left-radius: 3px;
4855}
4856.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
4857.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
4858.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
4859.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
4860.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
4861.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
4862.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
4863.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
4864 border-bottom-right-radius: 3px;
4865}
4866.panel > .panel-body + .table,
4867.panel > .panel-body + .table-responsive {
4868 border-top: 1px solid #ddd;
4869}
4870.panel > .table > tbody:first-child > tr:first-child th,
4871.panel > .table > tbody:first-child > tr:first-child td {
4872 border-top: 0;
4873}
4874.panel > .table-bordered,
4875.panel > .table-responsive > .table-bordered {
4876 border: 0;
4877}
4878.panel > .table-bordered > thead > tr > th:first-child,
4879.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
4880.panel > .table-bordered > tbody > tr > th:first-child,
4881.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
4882.panel > .table-bordered > tfoot > tr > th:first-child,
4883.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
4884.panel > .table-bordered > thead > tr > td:first-child,
4885.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
4886.panel > .table-bordered > tbody > tr > td:first-child,
4887.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
4888.panel > .table-bordered > tfoot > tr > td:first-child,
4889.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
4890 border-left: 0;
4891}
4892.panel > .table-bordered > thead > tr > th:last-child,
4893.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
4894.panel > .table-bordered > tbody > tr > th:last-child,
4895.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
4896.panel > .table-bordered > tfoot > tr > th:last-child,
4897.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
4898.panel > .table-bordered > thead > tr > td:last-child,
4899.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
4900.panel > .table-bordered > tbody > tr > td:last-child,
4901.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
4902.panel > .table-bordered > tfoot > tr > td:last-child,
4903.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
4904 border-right: 0;
4905}
4906.panel > .table-bordered > thead > tr:first-child > td,
4907.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
4908.panel > .table-bordered > tbody > tr:first-child > td,
4909.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
4910.panel > .table-bordered > thead > tr:first-child > th,
4911.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
4912.panel > .table-bordered > tbody > tr:first-child > th,
4913.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
4914 border-bottom: 0;
4915}
4916.panel > .table-bordered > tbody > tr:last-child > td,
4917.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
4918.panel > .table-bordered > tfoot > tr:last-child > td,
4919.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
4920.panel > .table-bordered > tbody > tr:last-child > th,
4921.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
4922.panel > .table-bordered > tfoot > tr:last-child > th,
4923.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
4924 border-bottom: 0;
4925}
4926.panel > .table-responsive {
4927 margin-bottom: 0;
4928 border: 0;
4929}
4930.panel-group {
4931 margin-bottom: 20px;
4932}
4933.panel-group .panel {
4934 margin-bottom: 0;
4935 overflow: hidden;
4936 border-radius: 4px;
4937}
4938.panel-group .panel + .panel {
4939 margin-top: 5px;
4940}
4941.panel-group .panel-heading {
4942 border-bottom: 0;
4943}
4944.panel-group .panel-heading + .panel-collapse .panel-body {
4945 border-top: 1px solid #ddd;
4946}
4947.panel-group .panel-footer {
4948 border-top: 0;
4949}
4950.panel-group .panel-footer + .panel-collapse .panel-body {
4951 border-bottom: 1px solid #ddd;
4952}
4953.panel-default {
4954 border-color: #ddd;
4955}
4956.panel-default > .panel-heading {
4957 color: #333;
4958 background-color: #f5f5f5;
4959 border-color: #ddd;
4960}
4961.panel-default > .panel-heading + .panel-collapse .panel-body {
4962 border-top-color: #ddd;
4963}
4964.panel-default > .panel-footer + .panel-collapse .panel-body {
4965 border-bottom-color: #ddd;
4966}
4967.panel-primary {
4968 border-color: #428bca;
4969}
4970.panel-primary > .panel-heading {
4971 color: #fff;
4972 background-color: #428bca;
4973 border-color: #428bca;
4974}
4975.panel-primary > .panel-heading + .panel-collapse .panel-body {
4976 border-top-color: #428bca;
4977}
4978.panel-primary > .panel-footer + .panel-collapse .panel-body {
4979 border-bottom-color: #428bca;
4980}
4981.panel-success {
4982 border-color: #d6e9c6;
4983}
4984.panel-success > .panel-heading {
4985 color: #3c763d;
4986 background-color: #dff0d8;
4987 border-color: #d6e9c6;
4988}
4989.panel-success > .panel-heading + .panel-collapse .panel-body {
4990 border-top-color: #d6e9c6;
4991}
4992.panel-success > .panel-footer + .panel-collapse .panel-body {
4993 border-bottom-color: #d6e9c6;
4994}
4995.panel-info {
4996 border-color: #bce8f1;
4997}
4998.panel-info > .panel-heading {
4999 color: #31708f;
5000 background-color: #d9edf7;
5001 border-color: #bce8f1;
5002}
5003.panel-info > .panel-heading + .panel-collapse .panel-body {
5004 border-top-color: #bce8f1;
5005}
5006.panel-info > .panel-footer + .panel-collapse .panel-body {
5007 border-bottom-color: #bce8f1;
5008}
5009.panel-warning {
5010 border-color: #faebcc;
5011}
5012.panel-warning > .panel-heading {
5013 color: #8a6d3b;
5014 background-color: #fcf8e3;
5015 border-color: #faebcc;
5016}
5017.panel-warning > .panel-heading + .panel-collapse .panel-body {
5018 border-top-color: #faebcc;
5019}
5020.panel-warning > .panel-footer + .panel-collapse .panel-body {
5021 border-bottom-color: #faebcc;
5022}
5023.panel-danger {
5024 border-color: #ebccd1;
5025}
5026.panel-danger > .panel-heading {
5027 color: #a94442;
5028 background-color: #f2dede;
5029 border-color: #ebccd1;
5030}
5031.panel-danger > .panel-heading + .panel-collapse .panel-body {
5032 border-top-color: #ebccd1;
5033}
5034.panel-danger > .panel-footer + .panel-collapse .panel-body {
5035 border-bottom-color: #ebccd1;
5036}
5037.well {
5038 min-height: 20px;
5039 padding: 19px;
5040 margin-bottom: 20px;
5041 background-color: #f5f5f5;
5042 border: 1px solid #e3e3e3;
5043 border-radius: 4px;
5044 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);
5045 box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);
5046}
5047.well blockquote {
5048 border-color: #ddd;
5049 border-color: rgba(0, 0, 0, .15);
5050}
5051.well-lg {
5052 padding: 24px;
5053 border-radius: 6px;
5054}
5055.well-sm {
5056 padding: 9px;
5057 border-radius: 3px;
5058}
5059.close {
5060 float: right;
5061 font-size: 21px;
5062 font-weight: bold;
5063 line-height: 1;
5064 color: #000;
5065 text-shadow: 0 1px 0 #fff;
5066 filter: alpha(opacity=20);
5067 opacity: .2;
5068}
5069.close:hover,
5070.close:focus {
5071 color: #000;
5072 text-decoration: none;
5073 cursor: pointer;
5074 filter: alpha(opacity=50);
5075 opacity: .5;
5076}
5077button.close {
5078 -webkit-appearance: none;
5079 padding: 0;
5080 cursor: pointer;
5081 background: transparent;
5082 border: 0;
5083}
5084.modal-open {
5085 overflow: hidden;
5086}
5087.modal {
5088 position: fixed;
5089 top: 0;
5090 right: 0;
5091 bottom: 0;
5092 left: 0;
5093 z-index: 1050;
5094 display: none;
5095 overflow: auto;
5096 overflow-y: scroll;
5097 -webkit-overflow-scrolling: touch;
5098 outline: 0;
5099}
5100.modal.fade .modal-dialog {
5101 -webkit-transition: -webkit-transform .3s ease-out;
5102 -moz-transition: -moz-transform .3s ease-out;
5103 -o-transition: -o-transform .3s ease-out;
5104 transition: transform .3s ease-out;
5105 -webkit-transform: translate(0, -25%);
5106 -ms-transform: translate(0, -25%);
5107 transform: translate(0, -25%);
5108}
5109.modal.in .modal-dialog {
5110 -webkit-transform: translate(0, 0);
5111 -ms-transform: translate(0, 0);
5112 transform: translate(0, 0);
5113}
5114.modal-dialog {
5115 position: relative;
5116 width: auto;
5117 margin: 10px;
5118}
5119.modal-content {
5120 position: relative;
5121 background-color: #fff;
5122 background-clip: padding-box;
5123 border: 1px solid #999;
5124 border: 1px solid rgba(0, 0, 0, .2);
5125 border-radius: 6px;
5126 outline: none;
5127 -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
5128 box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
5129}
5130.modal-backdrop {
5131 position: fixed;
5132 top: 0;
5133 right: 0;
5134 bottom: 0;
5135 left: 0;
5136 z-index: 1040;
5137 background-color: #000;
5138}
5139.modal-backdrop.fade {
5140 filter: alpha(opacity=0);
5141 opacity: 0;
5142}
5143.modal-backdrop.in {
5144 filter: alpha(opacity=50);
5145 opacity: .5;
5146}
5147.modal-header {
5148 min-height: 16.42857143px;
5149 padding: 15px;
5150 border-bottom: 1px solid #e5e5e5;
5151}
5152.modal-header .close {
5153 margin-top: -2px;
5154}
5155.modal-title {
5156 margin: 0;
5157 line-height: 1.42857143;
5158}
5159.modal-body {
5160 position: relative;
5161 padding: 20px;
5162}
5163.modal-footer {
5164 padding: 19px 20px 20px;
5165 margin-top: 15px;
5166 text-align: right;
5167 border-top: 1px solid #e5e5e5;
5168}
5169.modal-footer .btn + .btn {
5170 margin-bottom: 0;
5171 margin-left: 5px;
5172}
5173.modal-footer .btn-group .btn + .btn {
5174 margin-left: -1px;
5175}
5176.modal-footer .btn-block + .btn-block {
5177 margin-left: 0;
5178}
5179@media (min-width: 768px) {
5180 .modal-dialog {
5181 width: 600px;
5182 margin: 30px auto;
5183 }
5184 .modal-content {
5185 -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
5186 box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
5187 }
5188 .modal-sm {
5189 width: 300px;
5190 }
5191}
5192@media (min-width: 992px) {
5193 .modal-lg {
5194 width: 900px;
5195 }
5196}
5197.tooltip {
5198 position: absolute;
5199 z-index: 1030;
5200 display: block;
5201 font-size: 12px;
5202 line-height: 1.4;
5203 visibility: visible;
5204 filter: alpha(opacity=0);
5205 opacity: 0;
5206}
5207.tooltip.in {
5208 filter: alpha(opacity=90);
5209 opacity: .9;
5210}
5211.tooltip.top {
5212 padding: 5px 0;
5213 margin-top: -3px;
5214}
5215.tooltip.right {
5216 padding: 0 5px;
5217 margin-left: 3px;
5218}
5219.tooltip.bottom {
5220 padding: 5px 0;
5221 margin-top: 3px;
5222}
5223.tooltip.left {
5224 padding: 0 5px;
5225 margin-left: -3px;
5226}
5227.tooltip-inner {
5228 max-width: 200px;
5229 padding: 3px 8px;
5230 color: #fff;
5231 text-align: center;
5232 text-decoration: none;
5233 background-color: #000;
5234 border-radius: 4px;
5235}
5236.tooltip-arrow {
5237 position: absolute;
5238 width: 0;
5239 height: 0;
5240 border-color: transparent;
5241 border-style: solid;
5242}
5243.tooltip.top .tooltip-arrow {
5244 bottom: 0;
5245 left: 50%;
5246 margin-left: -5px;
5247 border-width: 5px 5px 0;
5248 border-top-color: #000;
5249}
5250.tooltip.top-left .tooltip-arrow {
5251 bottom: 0;
5252 left: 5px;
5253 border-width: 5px 5px 0;
5254 border-top-color: #000;
5255}
5256.tooltip.top-right .tooltip-arrow {
5257 right: 5px;
5258 bottom: 0;
5259 border-width: 5px 5px 0;
5260 border-top-color: #000;
5261}
5262.tooltip.right .tooltip-arrow {
5263 top: 50%;
5264 left: 0;
5265 margin-top: -5px;
5266 border-width: 5px 5px 5px 0;
5267 border-right-color: #000;
5268}
5269.tooltip.left .tooltip-arrow {
5270 top: 50%;
5271 right: 0;
5272 margin-top: -5px;
5273 border-width: 5px 0 5px 5px;
5274 border-left-color: #000;
5275}
5276.tooltip.bottom .tooltip-arrow {
5277 top: 0;
5278 left: 50%;
5279 margin-left: -5px;
5280 border-width: 0 5px 5px;
5281 border-bottom-color: #000;
5282}
5283.tooltip.bottom-left .tooltip-arrow {
5284 top: 0;
5285 left: 5px;
5286 border-width: 0 5px 5px;
5287 border-bottom-color: #000;
5288}
5289.tooltip.bottom-right .tooltip-arrow {
5290 top: 0;
5291 right: 5px;
5292 border-width: 0 5px 5px;
5293 border-bottom-color: #000;
5294}
5295.popover {
5296 position: absolute;
5297 top: 0;
5298 left: 0;
5299 z-index: 1010;
5300 display: none;
5301 max-width: 276px;
5302 padding: 1px;
5303 text-align: left;
5304 white-space: normal;
5305 background-color: #fff;
5306 background-clip: padding-box;
5307 border: 1px solid #ccc;
5308 border: 1px solid rgba(0, 0, 0, .2);
5309 border-radius: 6px;
5310 -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
5311 box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
5312}
5313.popover.top {
5314 margin-top: -10px;
5315}
5316.popover.right {
5317 margin-left: 10px;
5318}
5319.popover.bottom {
5320 margin-top: 10px;
5321}
5322.popover.left {
5323 margin-left: -10px;
5324}
5325.popover-title {
5326 padding: 8px 14px;
5327 margin: 0;
5328 font-size: 14px;
5329 font-weight: normal;
5330 line-height: 18px;
5331 background-color: #f7f7f7;
5332 border-bottom: 1px solid #ebebeb;
5333 border-radius: 5px 5px 0 0;
5334}
5335.popover-content {
5336 padding: 9px 14px;
5337}
5338.popover > .arrow,
5339.popover > .arrow:after {
5340 position: absolute;
5341 display: block;
5342 width: 0;
5343 height: 0;
5344 border-color: transparent;
5345 border-style: solid;
5346}
5347.popover > .arrow {
5348 border-width: 11px;
5349}
5350.popover > .arrow:after {
5351 content: "";
5352 border-width: 10px;
5353}
5354.popover.top > .arrow {
5355 bottom: -11px;
5356 left: 50%;
5357 margin-left: -11px;
5358 border-top-color: #999;
5359 border-top-color: rgba(0, 0, 0, .25);
5360 border-bottom-width: 0;
5361}
5362.popover.top > .arrow:after {
5363 bottom: 1px;
5364 margin-left: -10px;
5365 content: " ";
5366 border-top-color: #fff;
5367 border-bottom-width: 0;
5368}
5369.popover.right > .arrow {
5370 top: 50%;
5371 left: -11px;
5372 margin-top: -11px;
5373 border-right-color: #999;
5374 border-right-color: rgba(0, 0, 0, .25);
5375 border-left-width: 0;
5376}
5377.popover.right > .arrow:after {
5378 bottom: -10px;
5379 left: 1px;
5380 content: " ";
5381 border-right-color: #fff;
5382 border-left-width: 0;
5383}
5384.popover.bottom > .arrow {
5385 top: -11px;
5386 left: 50%;
5387 margin-left: -11px;
5388 border-top-width: 0;
5389 border-bottom-color: #999;
5390 border-bottom-color: rgba(0, 0, 0, .25);
5391}
5392.popover.bottom > .arrow:after {
5393 top: 1px;
5394 margin-left: -10px;
5395 content: " ";
5396 border-top-width: 0;
5397 border-bottom-color: #fff;
5398}
5399.popover.left > .arrow {
5400 top: 50%;
5401 right: -11px;
5402 margin-top: -11px;
5403 border-right-width: 0;
5404 border-left-color: #999;
5405 border-left-color: rgba(0, 0, 0, .25);
5406}
5407.popover.left > .arrow:after {
5408 right: 1px;
5409 bottom: -10px;
5410 content: " ";
5411 border-right-width: 0;
5412 border-left-color: #fff;
5413}
5414.carousel {
5415 position: relative;
5416}
5417.carousel-inner {
5418 position: relative;
5419 width: 100%;
5420 overflow: hidden;
5421}
5422.carousel-inner > .item {
5423 position: relative;
5424 display: none;
5425 -webkit-transition: .6s ease-in-out left;
5426 transition: .6s ease-in-out left;
5427}
5428.carousel-inner > .item > img,
5429.carousel-inner > .item > a > img {
5430 line-height: 1;
5431}
5432.carousel-inner > .active,
5433.carousel-inner > .next,
5434.carousel-inner > .prev {
5435 display: block;
5436}
5437.carousel-inner > .active {
5438 left: 0;
5439}
5440.carousel-inner > .next,
5441.carousel-inner > .prev {
5442 position: absolute;
5443 top: 0;
5444 width: 100%;
5445}
5446.carousel-inner > .next {
5447 left: 100%;
5448}
5449.carousel-inner > .prev {
5450 left: -100%;
5451}
5452.carousel-inner > .next.left,
5453.carousel-inner > .prev.right {
5454 left: 0;
5455}
5456.carousel-inner > .active.left {
5457 left: -100%;
5458}
5459.carousel-inner > .active.right {
5460 left: 100%;
5461}
5462.carousel-control {
5463 position: absolute;
5464 top: 0;
5465 bottom: 0;
5466 left: 0;
5467 width: 15%;
5468 font-size: 20px;
5469 color: #fff;
5470 text-align: center;
5471 text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
5472 filter: alpha(opacity=50);
5473 opacity: .5;
5474}
5475.carousel-control.left {
5476 background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, .5) 0%), color-stop(rgba(0, 0, 0, .0001) 100%));
5477 background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
5478 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
5479 background-repeat: repeat-x;
5480}
5481.carousel-control.right {
5482 right: 0;
5483 left: auto;
5484 background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, .0001) 0%), color-stop(rgba(0, 0, 0, .5) 100%));
5485 background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
5486 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
5487 background-repeat: repeat-x;
5488}
5489.carousel-control:hover,
5490.carousel-control:focus {
5491 color: #fff;
5492 text-decoration: none;
5493 filter: alpha(opacity=90);
5494 outline: none;
5495 opacity: .9;
5496}
5497.carousel-control .icon-prev,
5498.carousel-control .icon-next,
5499.carousel-control .glyphicon-chevron-left,
5500.carousel-control .glyphicon-chevron-right {
5501 position: absolute;
5502 top: 50%;
5503 z-index: 5;
5504 display: inline-block;
5505}
5506.carousel-control .icon-prev,
5507.carousel-control .glyphicon-chevron-left {
5508 left: 50%;
5509}
5510.carousel-control .icon-next,
5511.carousel-control .glyphicon-chevron-right {
5512 right: 50%;
5513}
5514.carousel-control .icon-prev,
5515.carousel-control .icon-next {
5516 width: 20px;
5517 height: 20px;
5518 margin-top: -10px;
5519 margin-left: -10px;
5520 font-family: serif;
5521}
5522.carousel-control .icon-prev:before {
5523 content: '\2039';
5524}
5525.carousel-control .icon-next:before {
5526 content: '\203a';
5527}
5528.carousel-indicators {
5529 position: absolute;
5530 bottom: 10px;
5531 left: 50%;
5532 z-index: 15;
5533 width: 60%;
5534 padding-left: 0;
5535 margin-left: -30%;
5536 text-align: center;
5537 list-style: none;
5538}
5539.carousel-indicators li {
5540 display: inline-block;
5541 width: 10px;
5542 height: 10px;
5543 margin: 1px;
5544 text-indent: -999px;
5545 cursor: pointer;
5546 background-color: #000 \9;
5547 background-color: rgba(0, 0, 0, 0);
5548 border: 1px solid #fff;
5549 border-radius: 10px;
5550}
5551.carousel-indicators .active {
5552 width: 12px;
5553 height: 12px;
5554 margin: 0;
5555 background-color: #fff;
5556}
5557.carousel-caption {
5558 position: absolute;
5559 right: 15%;
5560 bottom: 20px;
5561 left: 15%;
5562 z-index: 10;
5563 padding-top: 20px;
5564 padding-bottom: 20px;
5565 color: #fff;
5566 text-align: center;
5567 text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
5568}
5569.carousel-caption .btn {
5570 text-shadow: none;
5571}
5572@media screen and (min-width: 768px) {
5573 .carousel-control .glyphicon-chevron-left,
5574 .carousel-control .glyphicon-chevron-right,
5575 .carousel-control .icon-prev,
5576 .carousel-control .icon-next {
5577 width: 30px;
5578 height: 30px;
5579 margin-top: -15px;
5580 margin-left: -15px;
5581 font-size: 30px;
5582 }
5583 .carousel-caption {
5584 right: 20%;
5585 left: 20%;
5586 padding-bottom: 30px;
5587 }
5588 .carousel-indicators {
5589 bottom: 20px;
5590 }
5591}
5592.clearfix:before,
5593.clearfix:after,
5594.container:before,
5595.container:after,
5596.container-fluid:before,
5597.container-fluid:after,
5598.row:before,
5599.row:after,
5600.form-horizontal .form-group:before,
5601.form-horizontal .form-group:after,
5602.btn-toolbar:before,
5603.btn-toolbar:after,
5604.btn-group-vertical > .btn-group:before,
5605.btn-group-vertical > .btn-group:after,
5606.nav:before,
5607.nav:after,
5608.navbar:before,
5609.navbar:after,
5610.navbar-header:before,
5611.navbar-header:after,
5612.navbar-collapse:before,
5613.navbar-collapse:after,
5614.pager:before,
5615.pager:after,
5616.panel-body:before,
5617.panel-body:after,
5618.modal-footer:before,
5619.modal-footer:after {
5620 display: table;
5621 content: " ";
5622}
5623.clearfix:after,
5624.container:after,
5625.container-fluid:after,
5626.row:after,
5627.form-horizontal .form-group:after,
5628.btn-toolbar:after,
5629.btn-group-vertical > .btn-group:after,
5630.nav:after,
5631.navbar:after,
5632.navbar-header:after,
5633.navbar-collapse:after,
5634.pager:after,
5635.panel-body:after,
5636.modal-footer:after {
5637 clear: both;
5638}
5639.center-block {
5640 display: block;
5641 margin-right: auto;
5642 margin-left: auto;
5643}
5644.pull-right {
5645 float: right !important;
5646}
5647.pull-left {
5648 float: left !important;
5649}
5650.hide {
5651 display: none !important;
5652}
5653.show {
5654 display: block !important;
5655}
5656.invisible {
5657 visibility: hidden;
5658}
5659.text-hide {
5660 font: 0/0 a;
5661 color: transparent;
5662 text-shadow: none;
5663 background-color: transparent;
5664 border: 0;
5665}
5666.hidden {
5667 display: none !important;
5668 visibility: hidden !important;
5669}
5670.affix {
5671 position: fixed;
5672}
5673@-ms-viewport {
5674 width: device-width;
5675}
5676.visible-xs,
5677.visible-sm,
5678.visible-md,
5679.visible-lg {
5680 display: none !important;
5681}
5682@media (max-width: 767px) {
5683 .visible-xs {
5684 display: block !important;
5685 }
5686 table.visible-xs {
5687 display: table;
5688 }
5689 tr.visible-xs {
5690 display: table-row !important;
5691 }
5692 th.visible-xs,
5693 td.visible-xs {
5694 display: table-cell !important;
5695 }
5696}
5697@media (min-width: 768px) and (max-width: 991px) {
5698 .visible-sm {
5699 display: block !important;
5700 }
5701 table.visible-sm {
5702 display: table;
5703 }
5704 tr.visible-sm {
5705 display: table-row !important;
5706 }
5707 th.visible-sm,
5708 td.visible-sm {
5709 display: table-cell !important;
5710 }
5711}
5712@media (min-width: 992px) and (max-width: 1199px) {
5713 .visible-md {
5714 display: block !important;
5715 }
5716 table.visible-md {
5717 display: table;
5718 }
5719 tr.visible-md {
5720 display: table-row !important;
5721 }
5722 th.visible-md,
5723 td.visible-md {
5724 display: table-cell !important;
5725 }
5726}
5727@media (min-width: 1200px) {
5728 .visible-lg {
5729 display: block !important;
5730 }
5731 table.visible-lg {
5732 display: table;
5733 }
5734 tr.visible-lg {
5735 display: table-row !important;
5736 }
5737 th.visible-lg,
5738 td.visible-lg {
5739 display: table-cell !important;
5740 }
5741}
5742@media (max-width: 767px) {
5743 .hidden-xs {
5744 display: none !important;
5745 }
5746}
5747@media (min-width: 768px) and (max-width: 991px) {
5748 .hidden-sm {
5749 display: none !important;
5750 }
5751}
5752@media (min-width: 992px) and (max-width: 1199px) {
5753 .hidden-md {
5754 display: none !important;
5755 }
5756}
5757@media (min-width: 1200px) {
5758 .hidden-lg {
5759 display: none !important;
5760 }
5761}
5762.visible-print {
5763 display: none !important;
5764}
5765@media print {
5766 .visible-print {
5767 display: block !important;
5768 }
5769 table.visible-print {
5770 display: table;
5771 }
5772 tr.visible-print {
5773 display: table-row !important;
5774 }
5775 th.visible-print,
5776 td.visible-print {
5777 display: table-cell !important;
5778 }
5779}
5780@media print {
5781 .hidden-print {
5782 display: none !important;
5783 }
5784}
5785/*# sourceMappingURL=bootstrap.css.map */
diff --git a/Back/jinwei.me/mobile/css/bootstrap.css.map b/Back/jinwei.me/mobile/css/bootstrap.css.map
new file mode 100644
index 0000000..6bc5a2d
--- /dev/null
+++ b/Back/jinwei.me/mobile/css/bootstrap.css.map
@@ -0,0 +1 @@
{"version":3,"sources":["less/normalize.less","less/print.less","less/scaffolding.less","less/mixins.less","less/variables.less","less/thumbnails.less","less/carousel.less","less/type.less","less/code.less","less/grid.less","less/tables.less","less/forms.less","less/buttons.less","less/button-groups.less","less/component-animations.less","less/glyphicons.less","less/dropdowns.less","less/input-groups.less","less/navs.less","less/navbar.less","less/utilities.less","less/breadcrumbs.less","less/pagination.less","less/pager.less","less/labels.less","less/badges.less","less/jumbotron.less","less/alerts.less","less/progress-bars.less","less/media.less","less/list-group.less","less/panels.less","less/wells.less","less/close.less","less/modals.less","less/tooltip.less","less/popovers.less","less/responsive-utilities.less"],"names":[],"mappings":";AAQA;EACE,uBAAA;EACA,0BAAA;EACA,8BAAA;;AAOF;EACE,SAAA;;AAUF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,cAAA;;AAQF;AACA;AACA;AACA;EACE,qBAAA;EACA,wBAAA;;AAQF,KAAK,IAAI;EACP,aAAA;EACA,SAAA;;AAQF;AACA;EACE,aAAA;;AAUF;EACE,uBAAA;;AAOF,CAAC;AACD,CAAC;EACC,UAAA;;AAUF,IAAI;EACF,yBAAA;;AAOF;AACA;EACE,iBAAA;;AAOF;EACE,kBAAA;;AAQF;EACE,cAAA;EACA,gBAAA;;AAOF;EACE,gBAAA;EACA,WAAA;;AAOF;EACE,cAAA;;AAOF;AACA;EACE,cAAA;EACA,cAAA;EACA,kBAAA;EACA,wBAAA;;AAGF;EACE,WAAA;;AAGF;EACE,eAAA;;AAUF;EACE,SAAA;;AAOF,GAAG,IAAI;EACL,gBAAA;;AAUF;EACE,gBAAA;;AAOF;EACE,4BAAA;EACA,uBAAA;EACA,SAAA;;AAOF;EACE,cAAA;;AAOF;AACA;AACA;AACA;EACE,iCAAA;EACA,cAAA;;AAkBF;AACA;AACA;AACA;AACA;EACE,cAAA;EACA,aAAA;EACA,SAAA;;AAOF;EACE,iBAAA;;AAUF;AACA;EACE,oBAAA;;AAWF;AACA,IAAK,MAAK;AACV,KAAK;AACL,KAAK;EACH,0BAAA;EACA,eAAA;;AAOF,MAAM;AACN,IAAK,MAAK;EACR,eAAA;;AAOF,MAAM;AACN,KAAK;EACH,SAAA;EACA,UAAA;;AAQF;EACE,mBAAA;;AAWF,KAAK;AACL,KAAK;EACH,sBAAA;EACA,UAAA;;AASF,KAAK,eAAe;AACpB,KAAK,eAAe;EAClB,YAAA;;AASF,KAAK;EACH,6BAAA;EACA,4BAAA;EACA,+BAAA;EACA,uBAAA;;AASF,KAAK,eAAe;AACpB,KAAK,eAAe;EAClB,wBAAA;;AAOF;EACE,yBAAA;EACA,aAAA;EACA,8BAAA;;AAQF;EACE,SAAA;EACA,UAAA;;AAOF;EACE,cAAA;;AAQF;EACE,iBAAA;;AAUF;EACE,yBAAA;EACA,iBAAA;;AAGF;AACA;EACE,UAAA;;AChUF;EA9FE;IACE,4BAAA;IACA,sBAAA;IACA,kCAAA;IACA,2BAAA;;EAGF;EACA,CAAC;IACC,0BAAA;;EAGF,CAAC,MAAM;IACL,SAAS,KAAK,WAAW,GAAzB;;EAGF,IAAI,OAAO;IACT,SAAS,KAAK,YAAY,GAA1B;;EAIF,CAAC,qBAAqB;EACtB,CAAC,WAAW;IACV,SAAS,EAAT;;EAGF;EACA;IACE,sBAAA;IACA,wBAAA;;EAGF;IACE,2BAAA;;EAGF;EACA;IACE,wBAAA;;EAGF;IACE,0BAAA;;EAGF;EACA;EACA;IACE,UAAA;IACA,SAAA;;EAGF;EACA;IACE,uBAAA;;EAKF;IACE,2BAAA;;EAIF;IACE,aAAA;;EAEF,MACE;EADF,MAEE;IACE,iCAAA;;EAGJ,IAEE;EADF,OAAQ,OACN;IACE,iCAAA;;EAGJ;IACE,sBAAA;;EAGF;IACE,oCAAA;;EAEF,eACE;EADF,eAEE;IACE,iCAAA;;;ACtFN;ECyOE,8BAAA;EACG,2BAAA;EACK,sBAAA;;ADxOV,CAAC;AACD,CAAC;ECqOC,8BAAA;EACG,2BAAA;EACK,sBAAA;;ADhOV;EACE,gBAAA;EACA,6CAAA;;AAGF;EACE,aEcwB,8CFdxB;EACA,eAAA;EACA,uBAAA;EACA,cAAA;EACA,yBAAA;;AAIF;AACA;AACA;AACA;EACE,oBAAA;EACA,kBAAA;EACA,oBAAA;;AAMF;EACE,cAAA;EACA,qBAAA;;AAEA,CAAC;AACD,CAAC;EACC,cAAA;EACA,0BAAA;;AAGF,CAAC;ECzBD,oBAAA;EAEA,0CAAA;EACA,oBAAA;;ADiCF;EACE,SAAA;;AAMF;EACE,sBAAA;;AAIF;AG1EA,UAUE;AAVF,UAWE,EAAE;ACPJ,eAKE,QAME;AAXJ,eAKE,QAOE,IAAI;EHyWN,cAAA;EACA,eAAA;EACA,YAAA;;AD5SF;EACE,kBAAA;;AAMF;EACE,YAAA;EACA,uBAAA;EACA,yBAAA;EACA,yBAAA;EACA,kBAAA;EC8BA,wCAAA;EACQ,gCAAA;EA+PR,qBAAA;EACA,eAAA;EACA,YAAA;;ADxRF;EACE,kBAAA;;AAMF;EACE,gBAAA;EACA,mBAAA;EACA,SAAA;EACA,6BAAA;;AAQF;EACE,kBAAA;EACA,UAAA;EACA,WAAA;EACA,YAAA;EACA,UAAA;EACA,gBAAA;EACA,MAAM,gBAAN;EACA,SAAA;;AK5HF;AAAI;AAAI;AAAI;AAAI;AAAI;AACpB;AAAK;AAAK;AAAK;AAAK;AAAK;EACvB,oBAAA;EACA,gBAAA;EACA,gBAAA;EACA,cAAA;;AALF,EAOE;AAPE,EAOF;AAPM,EAON;AAPU,EAOV;AAPc,EAOd;AAPkB,EAOlB;AANF,GAME;AANG,GAMH;AANQ,GAMR;AANa,GAMb;AANkB,GAMlB;AANuB,GAMvB;AAPF,EAQE;AARE,EAQF;AARM,EAQN;AARU,EAQV;AARc,EAQd;AARkB,EAQlB;AAPF,GAOE;AAPG,GAOH;AAPQ,GAOR;AAPa,GAOb;AAPkB,GAOlB;AAPuB,GAOvB;EACE,mBAAA;EACA,cAAA;EACA,cAAA;;AAIJ;AAAI;AACJ;AAAI;AACJ;AAAI;EACF,gBAAA;EACA,mBAAA;;AAJF,EAME;AANE,GAMF;AALF,EAKE;AALE,GAKF;AAJF,EAIE;AAJE,GAIF;AANF,EAOE;AAPE,GAOF;AANF,EAME;AANE,GAMF;AALF,EAKE;AALE,GAKF;EACE,cAAA;;AAGJ;AAAI;AACJ;AAAI;AACJ;AAAI;EACF,gBAAA;EACA,mBAAA;;AAJF,EAME;AANE,GAMF;AALF,EAKE;AALE,GAKF;AAJF,EAIE;AAJE,GAIF;AANF,EAOE;AAPE,GAOF;AANF,EAME;AANE,GAMF;AALF,EAKE;AALE,GAKF;EACE,cAAA;;AAIJ;AAAI;EAAM,eAAA;;AACV;AAAI;EAAM,eAAA;;AACV;AAAI;EAAM,eAAA;;AACV;AAAI;EAAM,eAAA;;AACV;AAAI;EAAM,eAAA;;AACV;AAAI;EAAM,eAAA;;AAMV;EACE,gBAAA;;AAGF;EACE,mBAAA;EACA,eAAA;EACA,gBAAA;EACA,gBAAA;;AAKF,QAHqC;EAGrC;IAFI,eAAA;;;AASJ;AACA;EAAU,cAAA;;AAGV;EAAU,kBAAA;;AAGV;EAAuB,gBAAA;;AACvB;EAAuB,iBAAA;;AACvB;EAAuB,kBAAA;;AACvB;EAAuB,mBAAA;;AAGvB;EACE,cAAA;;AAEF;EJofE,cAAA;;AACA,CAAC,aAAC;EACA,cAAA;;AInfJ;EJifE,cAAA;;AACA,CAAC,aAAC;EACA,cAAA;;AIhfJ;EJ8eE,cAAA;;AACA,CAAC,UAAC;EACA,cAAA;;AI7eJ;EJ2eE,cAAA;;AACA,CAAC,aAAC;EACA,cAAA;;AI1eJ;EJweE,cAAA;;AACA,CAAC,YAAC;EACA,cAAA;;AIneJ;EAGE,WAAA;EJqdA,yBAAA;;AACA,CAAC,WAAC;EACA,yBAAA;;AIpdJ;EJkdE,yBAAA;;AACA,CAAC,WAAC;EACA,yBAAA;;AIjdJ;EJ+cE,yBAAA;;AACA,CAAC,QAAC;EACA,yBAAA;;AI9cJ;EJ4cE,yBAAA;;AACA,CAAC,WAAC;EACA,yBAAA;;AI3cJ;EJycE,yBAAA;;AACA,CAAC,UAAC;EACA,yBAAA;;AIncJ;EACE,mBAAA;EACA,mBAAA;EACA,gCAAA;;AAQF;AACA;EACE,aAAA;EACA,mBAAA;;AAHF,EAIE;AAHF,EAGE;AAJF,EAKE;AAJF,EAIE;EACE,gBAAA;;AAOJ;EACE,eAAA;EACA,gBAAA;;AAIF;EALE,eAAA;EACA,gBAAA;EAMA,iBAAA;;AAFF,YAIE;EACE,qBAAA;EACA,iBAAA;EACA,kBAAA;;AAKJ;EACE,aAAA;EACA,mBAAA;;AAEF;AACA;EACE,uBAAA;;AAEF;EACE,iBAAA;;AAEF;EACE,cAAA;;AAwBF,QAhB2C;EACzC,cACE;IACE,WAAA;IACA,YAAA;IACA,WAAA;IACA,iBAAA;IJ1IJ,gBAAA;IACA,uBAAA;IACA,mBAAA;;EImIA,cAQE;IACE,kBAAA;;;AAUN,IAAI;AAEJ,IAAI;EACF,YAAA;EACA,iCAAA;;AAEF;EACE,cAAA;EACA,yBAAA;;AAIF;EACE,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,8BAAA;;AAKE,UAHF,EAGG;AAAD,UAFF,GAEG;AAAD,UADF,GACG;EACC,gBAAA;;AAVN,UAgBE;AAhBF,UAiBE;AAjBF,UAkBE;EACE,cAAA;EACA,cAAA;EACA,uBAAA;EACA,cAAA;;AAEA,UARF,OAQG;AAAD,UAPF,MAOG;AAAD,UANF,OAMG;EACC,SAAS,aAAT;;AAQN;AACA,UAAU;EACR,mBAAA;EACA,eAAA;EACA,+BAAA;EACA,cAAA;EACA,iBAAA;;AAME,mBAHF,OAGG;AAAD,UAXM,WAQR,OAGG;AAAD,mBAFF,MAEG;AAAD,UAXM,WASR,MAEG;AAAD,mBADF,OACG;AAAD,UAXM,WAUR,OACG;EAAU,SAAS,EAAT;;AACX,mBAJF,OAIG;AAAD,UAZM,WAQR,OAIG;AAAD,mBAHF,MAGG;AAAD,UAZM,WASR,MAGG;AAAD,mBAFF,OAEG;AAAD,UAZM,WAUR,OAEG;EACC,SAAS,aAAT;;AAMN,UAAU;AACV,UAAU;EACR,SAAS,EAAT;;AAIF;EACE,mBAAA;EACA,kBAAA;EACA,uBAAA;;AC7RF;AACA;AACA;AACA;EACE,sCJkCiD,wBIlCjD;;AAIF;EACE,gBAAA;EACA,cAAA;EACA,cAAA;EACA,yBAAA;EACA,mBAAA;EACA,kBAAA;;AAIF;EACE,gBAAA;EACA,cAAA;EACA,cAAA;EACA,yBAAA;EACA,kBAAA;EACA,8CAAA;;AAIF;EACE,cAAA;EACA,cAAA;EACA,gBAAA;EACA,eAAA;EACA,uBAAA;EACA,qBAAA;EACA,qBAAA;EACA,cAAA;EACA,yBAAA;EACA,yBAAA;EACA,kBAAA;;AAXF,GAcE;EACE,UAAA;EACA,kBAAA;EACA,cAAA;EACA,qBAAA;EACA,6BAAA;EACA,gBAAA;;AAKJ;EACE,iBAAA;EACA,kBAAA;;ACpDF;ENqnBE,kBAAA;EACA,iBAAA;EACA,kBAAA;EACA,mBAAA;;AMlnBA,QAHmC;EAGnC;IAFE,YAAA;;;AAKF,QAHmC;EAGnC;IAFE,YAAA;;;AAKJ,QAHqC;EAGrC;IAFI,aAAA;;;AAUJ;ENimBE,kBAAA;EACA,iBAAA;EACA,kBAAA;EACA,mBAAA;;AM3lBF;ENimBE,kBAAA;EACA,mBAAA;;AAqIE;EACE,kBAAA;EAEA,eAAA;EAEA,kBAAA;EACA,mBAAA;;AAgBF;EACE,WAAA;;AAOJ,KAAK,EAAQ,CAAC;EACZ,WAAA;;AADF,KAAK,EAAQ,CAAC;EACZ,mBAAA;;AADF,KAAK,EAAQ,CAAC;EACZ,mBAAA;;AADF,KAAK,EAAQ,CAAC;EACZ,UAAA;;AADF,KAAK,EAAQ,CAAC;EACZ,mBAAA;;AADF,KAAK,EAAQ,CAAC;EACZ,mBAAA;;AADF,KAAK,EAAQ,CAAC;EACZ,UAAA;;AADF,KAAK,EAAQ,CAAC;EACZ,mBAAA;;AADF,KAAK,EAAQ,CAAC;EACZ,mBAAA;;AADF,KAAK,EAAQ,CAAC;EACZ,UAAA;;AADF,KAAK,EAAQ,CAAC;EACZ,mBAAA;;AADF,KAAK,EAAQ,CAAC;EACZ,kBAAA;;AASF,KAAK,EAAQ,MAAM;EACjB,WAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,mBAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,mBAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,UAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,mBAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,mBAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,UAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,mBAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,mBAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,UAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,mBAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,kBAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,SAAA;;AANF,KAAK,EAAQ,MAAM;EACjB,UAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,kBAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,kBAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,SAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,kBAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,kBAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,SAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,kBAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,kBAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,SAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,kBAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,iBAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,QAAA;;AASF,KAAK,EAAQ,QAAQ;EACnB,iBAAA;;AADF,KAAK,EAAQ,QAAQ;EACnB,yBAAA;;AADF,KAAK,EAAQ,QAAQ;EACnB,yBAAA;;AADF,KAAK,EAAQ,QAAQ;EACnB,gBAAA;;AADF,KAAK,EAAQ,QAAQ;EACnB,yBAAA;;AADF,KAAK,EAAQ,QAAQ;EACnB,yBAAA;;AADF,KAAK,EAAQ,QAAQ;EACnB,gBAAA;;AADF,KAAK,EAAQ,QAAQ;EACnB,yBAAA;;AADF,KAAK,EAAQ,QAAQ;EACnB,yBAAA;;AADF,KAAK,EAAQ,QAAQ;EACnB,gBAAA;;AADF,KAAK,EAAQ,QAAQ;EACnB,yBAAA;;AADF,KAAK,EAAQ,QAAQ;EACnB,wBAAA;;AADF,KAAK,EAAQ,QAAQ;EACnB,eAAA;;AMvvBJ,QALmC;ENouB/B;IACE,WAAA;;EAOJ,KAAK,EAAQ,CAAC;IACZ,WAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,UAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,UAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,UAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,kBAAA;;EASF,KAAK,EAAQ,MAAM;IACjB,WAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,mBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,mBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,UAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,mBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,mBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,UAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,mBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,mBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,UAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,mBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,SAAA;;EANF,KAAK,EAAQ,MAAM;IACjB,UAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,SAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,SAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,SAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,iBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,QAAA;;EASF,KAAK,EAAQ,QAAQ;IACnB,iBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,yBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,yBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,gBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,yBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,yBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,gBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,yBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,yBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,gBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,yBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,wBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,eAAA;;;AM9uBJ,QALmC;EN2tB/B;IACE,WAAA;;EAOJ,KAAK,EAAQ,CAAC;IACZ,WAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,UAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,UAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,UAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,kBAAA;;EASF,KAAK,EAAQ,MAAM;IACjB,WAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,mBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,mBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,UAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,mBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,mBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,UAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,mBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,mBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,UAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,mBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,SAAA;;EANF,KAAK,EAAQ,MAAM;IACjB,UAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,SAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,SAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,SAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,iBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,QAAA;;EASF,KAAK,EAAQ,QAAQ;IACnB,iBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,yBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,yBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,gBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,yBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,yBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,gBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,yBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,yBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,gBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,yBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,wBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,eAAA;;;AMvuBJ,QAHmC;ENktB/B;IACE,WAAA;;EAOJ,KAAK,EAAQ,CAAC;IACZ,WAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,UAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,UAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,UAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,kBAAA;;EASF,KAAK,EAAQ,MAAM;IACjB,WAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,mBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,mBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,UAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,mBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,mBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,UAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,mBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,mBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,UAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,mBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,SAAA;;EANF,KAAK,EAAQ,MAAM;IACjB,UAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,SAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,SAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,SAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,iBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,QAAA;;EASF,KAAK,EAAQ,QAAQ;IACnB,iBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,yBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,yBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,gBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,yBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,yBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,gBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,yBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,yBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,gBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,yBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,wBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,eAAA;;;AOtzBJ;EACE,eAAA;EACA,6BAAA;;AAEF;EACE,gBAAA;;AAMF;EACE,WAAA;EACA,mBAAA;;AAFF,MAIE,QAGE,KACE;AARN,MAKE,QAEE,KACE;AARN,MAME,QACE,KACE;AARN,MAIE,QAGE,KAEE;AATN,MAKE,QAEE,KAEE;AATN,MAME,QACE,KAEE;EACE,YAAA;EACA,uBAAA;EACA,mBAAA;EACA,6BAAA;;AAbR,MAkBE,QAAQ,KAAK;EACX,sBAAA;EACA,gCAAA;;AApBJ,MAuBE,UAAU,QAGR,KAAI,YACF;AA3BN,MAwBE,WAAW,QAET,KAAI,YACF;AA3BN,MAyBE,QAAO,YACL,KAAI,YACF;AA3BN,MAuBE,UAAU,QAGR,KAAI,YAEF;AA5BN,MAwBE,WAAW,QAET,KAAI,YAEF;AA5BN,MAyBE,QAAO,YACL,KAAI,YAEF;EACE,aAAA;;AA7BR,MAkCE,QAAQ;EACN,6BAAA;;AAnCJ,MAuCE;EACE,yBAAA;;AAOJ,gBACE,QAGE,KACE;AALN,gBAEE,QAEE,KACE;AALN,gBAGE,QACE,KACE;AALN,gBACE,QAGE,KAEE;AANN,gBAEE,QAEE,KAEE;AANN,gBAGE,QACE,KAEE;EACE,YAAA;;AAWR;EACE,yBAAA;;AADF,eAEE,QAGE,KACE;AANN,eAGE,QAEE,KACE;AANN,eAIE,QACE,KACE;AANN,eAEE,QAGE,KAEE;AAPN,eAGE,QAEE,KAEE;AAPN,eAIE,QACE,KAEE;EACE,yBAAA;;AARR,eAYE,QAAQ,KACN;AAbJ,eAYE,QAAQ,KAEN;EACE,wBAAA;;AAUN,cACE,QAAQ,KAAI,UAAU,KACpB;AAFJ,cACE,QAAQ,KAAI,UAAU,KAEpB;EACE,yBAAA;;AAUN,YACE,QAAQ,KAAI,MACV;AAFJ,YACE,QAAQ,KAAI,MAEV;EACE,yBAAA;;AAUN,KAAM,IAAG;EACP,gBAAA;EACA,WAAA;EACA,qBAAA;;AAKE,KAFF,GAEG;AAAD,KADF,GACG;EACC,gBAAA;EACA,WAAA;EACA,mBAAA;;AP0SJ,MAAO,QAAQ,KAGb,KAAI,CAAC;AAFP,MAAO,QAAQ,KAEb,KAAI,CAAC;AADP,MAAO,QAAQ,KACb,KAAI,CAAC;AAHP,MAAO,QAAQ,KAIb,KAAI,CAAC;AAHP,MAAO,QAAQ,KAGb,KAAI,CAAC;AAFP,MAAO,QAAQ,KAEb,KAAI,CAAC;AACL,MALK,QAAQ,KAKZ,CAAC,MAAS;AAAX,MAJK,QAAQ,KAIZ,CAAC,MAAS;AAAX,MAHK,QAAQ,KAGZ,CAAC,MAAS;AACX,MANK,QAAQ,KAMZ,CAAC,MAAS;AAAX,MALK,QAAQ,KAKZ,CAAC,MAAS;AAAX,MAJK,QAAQ,KAIZ,CAAC,MAAS;EACT,yBAAA;;AAMJ,YAAa,QAAQ,KACnB,KAAI,CAAC,MAAQ;AADf,YAAa,QAAQ,KAEnB,KAAI,CAAC,MAAQ;AACb,YAHW,QAAQ,KAGlB,CAAC,MAAQ,MAAO;AACjB,YAJW,QAAQ,KAIlB,CAAC,MAAQ,MAAO;EACf,yBAAA;;AAlBJ,MAAO,QAAQ,KAGb,KAAI,CAAC;AAFP,MAAO,QAAQ,KAEb,KAAI,CAAC;AADP,MAAO,QAAQ,KACb,KAAI,CAAC;AAHP,MAAO,QAAQ,KAIb,KAAI,CAAC;AAHP,MAAO,QAAQ,KAGb,KAAI,CAAC;AAFP,MAAO,QAAQ,KAEb,KAAI,CAAC;AACL,MALK,QAAQ,KAKZ,CAAC,OAAS;AAAX,MAJK,QAAQ,KAIZ,CAAC,OAAS;AAAX,MAHK,QAAQ,KAGZ,CAAC,OAAS;AACX,MANK,QAAQ,KAMZ,CAAC,OAAS;AAAX,MALK,QAAQ,KAKZ,CAAC,OAAS;AAAX,MAJK,QAAQ,KAIZ,CAAC,OAAS;EACT,yBAAA;;AAMJ,YAAa,QAAQ,KACnB,KAAI,CAAC,OAAQ;AADf,YAAa,QAAQ,KAEnB,KAAI,CAAC,OAAQ;AACb,YAHW,QAAQ,KAGlB,CAAC,OAAQ,MAAO;AACjB,YAJW,QAAQ,KAIlB,CAAC,OAAQ,MAAO;EACf,yBAAA;;AAlBJ,MAAO,QAAQ,KAGb,KAAI,CAAC;AAFP,MAAO,QAAQ,KAEb,KAAI,CAAC;AADP,MAAO,QAAQ,KACb,KAAI,CAAC;AAHP,MAAO,QAAQ,KAIb,KAAI,CAAC;AAHP,MAAO,QAAQ,KAGb,KAAI,CAAC;AAFP,MAAO,QAAQ,KAEb,KAAI,CAAC;AACL,MALK,QAAQ,KAKZ,CAAC,IAAS;AAAX,MAJK,QAAQ,KAIZ,CAAC,IAAS;AAAX,MAHK,QAAQ,KAGZ,CAAC,IAAS;AACX,MANK,QAAQ,KAMZ,CAAC,IAAS;AAAX,MALK,QAAQ,KAKZ,CAAC,IAAS;AAAX,MAJK,QAAQ,KAIZ,CAAC,IAAS;EACT,yBAAA;;AAMJ,YAAa,QAAQ,KACnB,KAAI,CAAC,IAAQ;AADf,YAAa,QAAQ,KAEnB,KAAI,CAAC,IAAQ;AACb,YAHW,QAAQ,KAGlB,CAAC,IAAQ,MAAO;AACjB,YAJW,QAAQ,KAIlB,CAAC,IAAQ,MAAO;EACf,yBAAA;;AAlBJ,MAAO,QAAQ,KAGb,KAAI,CAAC;AAFP,MAAO,QAAQ,KAEb,KAAI,CAAC;AADP,MAAO,QAAQ,KACb,KAAI,CAAC;AAHP,MAAO,QAAQ,KAIb,KAAI,CAAC;AAHP,MAAO,QAAQ,KAGb,KAAI,CAAC;AAFP,MAAO,QAAQ,KAEb,KAAI,CAAC;AACL,MALK,QAAQ,KAKZ,CAAC,OAAS;AAAX,MAJK,QAAQ,KAIZ,CAAC,OAAS;AAAX,MAHK,QAAQ,KAGZ,CAAC,OAAS;AACX,MANK,QAAQ,KAMZ,CAAC,OAAS;AAAX,MALK,QAAQ,KAKZ,CAAC,OAAS;AAAX,MAJK,QAAQ,KAIZ,CAAC,OAAS;EACT,yBAAA;;AAMJ,YAAa,QAAQ,KACnB,KAAI,CAAC,OAAQ;AADf,YAAa,QAAQ,KAEnB,KAAI,CAAC,OAAQ;AACb,YAHW,QAAQ,KAGlB,CAAC,OAAQ,MAAO;AACjB,YAJW,QAAQ,KAIlB,CAAC,OAAQ,MAAO;EACf,yBAAA;;AAlBJ,MAAO,QAAQ,KAGb,KAAI,CAAC;AAFP,MAAO,QAAQ,KAEb,KAAI,CAAC;AADP,MAAO,QAAQ,KACb,KAAI,CAAC;AAHP,MAAO,QAAQ,KAIb,KAAI,CAAC;AAHP,MAAO,QAAQ,KAGb,KAAI,CAAC;AAFP,MAAO,QAAQ,KAEb,KAAI,CAAC;AACL,MALK,QAAQ,KAKZ,CAAC,MAAS;AAAX,MAJK,QAAQ,KAIZ,CAAC,MAAS;AAAX,MAHK,QAAQ,KAGZ,CAAC,MAAS;AACX,MANK,QAAQ,KAMZ,CAAC,MAAS;AAAX,MALK,QAAQ,KAKZ,CAAC,MAAS;AAAX,MAJK,QAAQ,KAIZ,CAAC,MAAS;EACT,yBAAA;;AAMJ,YAAa,QAAQ,KACnB,KAAI,CAAC,MAAQ;AADf,YAAa,QAAQ,KAEnB,KAAI,CAAC,MAAQ;AACb,YAHW,QAAQ,KAGlB,CAAC,MAAQ,MAAO;AACjB,YAJW,QAAQ,KAIlB,CAAC,MAAQ,MAAO;EACf,yBAAA;;AOpON,QA/DmC;EACjC;IACE,WAAA;IACA,mBAAA;IACA,kBAAA;IACA,kBAAA;IACA,4CAAA;IACA,yBAAA;IACA,iCAAA;;EAPF,iBAUE;IACE,gBAAA;;EAXJ,iBAUE,SAIE,QAGE,KACE;EAlBR,iBAUE,SAKE,QAEE,KACE;EAlBR,iBAUE,SAME,QACE,KACE;EAlBR,iBAUE,SAIE,QAGE,KAEE;EAnBR,iBAUE,SAKE,QAEE,KAEE;EAnBR,iBAUE,SAME,QACE,KAEE;IACE,mBAAA;;EApBV,iBA2BE;IACE,SAAA;;EA5BJ,iBA2BE,kBAIE,QAGE,KACE,KAAI;EAnCZ,iBA2BE,kBAKE,QAEE,KACE,KAAI;EAnCZ,iBA2BE,kBAME,QACE,KACE,KAAI;EAnCZ,iBA2BE,kBAIE,QAGE,KAEE,KAAI;EApCZ,iBA2BE,kBAKE,QAEE,KAEE,KAAI;EApCZ,iBA2BE,kBAME,QACE,KAEE,KAAI;IACF,cAAA;;EArCV,iBA2BE,kBAIE,QAGE,KAKE,KAAI;EAvCZ,iBA2BE,kBAKE,QAEE,KAKE,KAAI;EAvCZ,iBA2BE,kBAME,QACE,KAKE,KAAI;EAvCZ,iBA2BE,kBAIE,QAGE,KAME,KAAI;EAxCZ,iBA2BE,kBAKE,QAEE,KAME,KAAI;EAxCZ,iBA2BE,kBAME,QACE,KAME,KAAI;IACF,eAAA;;EAzCV,iBA2BE,kBAsBE,QAEE,KAAI,WACF;EApDR,iBA2BE,kBAuBE,QACE,KAAI,WACF;EApDR,iBA2BE,kBAsBE,QAEE,KAAI,WAEF;EArDR,iBA2BE,kBAuBE,QACE,KAAI,WAEF;IACE,gBAAA;;;ACxNZ;EACE,UAAA;EACA,SAAA;EACA,SAAA;EAIA,YAAA;;AAGF;EACE,cAAA;EACA,WAAA;EACA,UAAA;EACA,mBAAA;EACA,eAAA;EACA,oBAAA;EACA,cAAA;EACA,SAAA;EACA,gCAAA;;AAGF;EACE,qBAAA;EACA,kBAAA;EACA,iBAAA;;AAWF,KAAK;ERsMH,8BAAA;EACG,2BAAA;EACK,sBAAA;;AQnMV,KAAK;AACL,KAAK;EACH,eAAA;EACA,kBAAA;;EACA,mBAAA;;AAIF,KAAK;EACH,cAAA;;AAIF,KAAK;EACH,cAAA;EACA,WAAA;;AAIF,MAAM;AACN,MAAM;EACJ,YAAA;;AAIF,KAAK,aAAa;AAClB,KAAK,cAAc;AACnB,KAAK,iBAAiB;ER7CpB,oBAAA;EAEA,0CAAA;EACA,oBAAA;;AQ+CF;EACE,cAAA;EACA,gBAAA;EACA,eAAA;EACA,uBAAA;EACA,cAAA;;AA0BF;EACE,cAAA;EACA,WAAA;EACA,YAAA;EACA,iBAAA;EACA,eAAA;EACA,uBAAA;EACA,cAAA;EACA,yBAAA;EACA,sBAAA;EACA,yBAAA;EACA,kBAAA;ERHA,wDAAA;EACQ,gDAAA;EAKR,8EAAA;EACQ,sEAAA;;AAmwBR,aAAC;EACC,qBAAA;EACA,UAAA;EA5wBF,sFAAA;EACQ,8EAAA;;AAlER,aAAC;EAA+B,cAAA;EACA,UAAA;;AAChC,aAAC;EAA+B,cAAA;;AAChC,aAAC;EAA+B,cAAA;;AQgFhC,aAAC;AACD,aAAC;AACD,QAAQ,UAAW;EACjB,mBAAA;EACA,yBAAA;EACA,UAAA;;AAIF,QAAQ;EACN,YAAA;;AAYJ,KAAK;EACH,wBAAA;;AASF,KAAK;EACH,iBAAA;;AASF;EACE,mBAAA;;AAQF;AACA;EACE,cAAA;EACA,gBAAA;EACA,gBAAA;EACA,mBAAA;EACA,kBAAA;;AANF,MAOE;AANF,SAME;EACE,eAAA;EACA,mBAAA;EACA,eAAA;;AAGJ,MAAO,MAAK;AACZ,aAAc,MAAK;AACnB,SAAU,MAAK;AACf,gBAAiB,MAAK;EACpB,WAAA;EACA,kBAAA;;AAEF,MAAO;AACP,SAAU;EACR,gBAAA;;AAIF;AACA;EACE,qBAAA;EACA,kBAAA;EACA,gBAAA;EACA,sBAAA;EACA,mBAAA;EACA,eAAA;;AAEF,aAAc;AACd,gBAAiB;EACf,aAAA;EACA,iBAAA;;AAYA,KANG,cAMF;AAAD,KALG,iBAKF;AAAD,MAAC;AAAD,aAAC;AAAD,SAAC;AAAD,gBAAC;AACD,QAAQ,UAAW,MAPhB;AAOH,QAAQ,UAAW,MANhB;AAMH,QAAQ,UAAW;AAAnB,QAAQ,UAAW;AAAnB,QAAQ,UAAW;AAAnB,QAAQ,UAAW;EACjB,mBAAA;;AAUJ;ERqpBE,YAAA;EACA,iBAAA;EACA,eAAA;EACA,gBAAA;EACA,kBAAA;;AAEA,MAAM;EACJ,YAAA;EACA,iBAAA;;AAGF,QAAQ;AACR,MAAM,UAAU;EACd,YAAA;;AQ9pBJ;ERipBE,YAAA;EACA,kBAAA;EACA,eAAA;EACA,iBAAA;EACA,kBAAA;;AAEA,MAAM;EACJ,YAAA;EACA,iBAAA;;AAGF,QAAQ;AACR,MAAM,UAAU;EACd,YAAA;;AQrpBJ;EAEE,kBAAA;;AAFF,aAKE;EACE,qBAAA;;AANJ,aAUE;EACE,kBAAA;EACA,SAAA;EACA,QAAA;EACA,cAAA;EACA,WAAA;EACA,YAAA;EACA,iBAAA;EACA,kBAAA;;AAKJ,YRsjBE;AQtjBF,YRujBE;AQvjBF,YRwjBE;AQxjBF,YRyjBE;AQzjBF,YR0jBE;AQ1jBF,YR2jBE;EACE,cAAA;;AQ5jBJ,YR+jBE;EACE,qBAAA;EAvuBF,wDAAA;EACQ,gDAAA;;AAwuBN,YAHF,cAGG;EACC,qBAAA;EA1uBJ,yEAAA;EACQ,iEAAA;;AQsKV,YRykBE;EACE,cAAA;EACA,qBAAA;EACA,yBAAA;;AQ5kBJ,YR+kBE;EACE,cAAA;;AQ7kBJ,YRmjBE;AQnjBF,YRojBE;AQpjBF,YRqjBE;AQrjBF,YRsjBE;AQtjBF,YRujBE;AQvjBF,YRwjBE;EACE,cAAA;;AQzjBJ,YR4jBE;EACE,qBAAA;EAvuBF,wDAAA;EACQ,gDAAA;;AAwuBN,YAHF,cAGG;EACC,qBAAA;EA1uBJ,yEAAA;EACQ,iEAAA;;AQyKV,YRskBE;EACE,cAAA;EACA,qBAAA;EACA,yBAAA;;AQzkBJ,YR4kBE;EACE,cAAA;;AQ1kBJ,URgjBE;AQhjBF,URijBE;AQjjBF,URkjBE;AQljBF,URmjBE;AQnjBF,URojBE;AQpjBF,URqjBE;EACE,cAAA;;AQtjBJ,URyjBE;EACE,qBAAA;EAvuBF,wDAAA;EACQ,gDAAA;;AAwuBN,UAHF,cAGG;EACC,qBAAA;EA1uBJ,yEAAA;EACQ,iEAAA;;AQ4KV,URmkBE;EACE,cAAA;EACA,qBAAA;EACA,yBAAA;;AQtkBJ,URykBE;EACE,cAAA;;AQhkBJ;EACE,gBAAA;;AASF;EACE,cAAA;EACA,eAAA;EACA,mBAAA;EACA,cAAA;;AAoEF,QAjDqC;EAiDrC,YA/CI;IACE,qBAAA;IACA,gBAAA;IACA,sBAAA;;EA4CN,YAxCI;IACE,qBAAA;IACA,WAAA;IACA,sBAAA;;EAqCN,YAlCI,aAAa;IACX,WAAA;;EAiCN,YA9BI;IACE,gBAAA;IACA,sBAAA;;EA4BN,YAtBI;EAsBJ,YArBI;IACE,qBAAA;IACA,aAAA;IACA,gBAAA;IACA,eAAA;IACA,sBAAA;;EAgBN,YAdI,OAAO,MAAK;EAchB,YAbI,UAAU,MAAK;IACb,WAAA;IACA,cAAA;;EAWN,YAJI,cAAc;IACZ,MAAA;;;AAWN,gBAGE;AAHF,gBAIE;AAJF,gBAKE;AALF,gBAME;AANF,gBAOE;EACE,aAAA;EACA,gBAAA;EACA,gBAAA;;AAVJ,gBAcE;AAdF,gBAeE;EACE,gBAAA;;AAhBJ,gBAoBE;ERyOA,kBAAA;EACA,mBAAA;;AQ9PF,gBAwBE;EACE,gBAAA;;AAUF,QANmC;EAMnC,gBALE;IACE,iBAAA;;;AA/BN,gBAuCE,cAAc;EACZ,MAAA;EACA,WAAA;;AC3aJ;EACE,qBAAA;EACA,gBAAA;EACA,mBAAA;EACA,kBAAA;EACA,sBAAA;EACA,eAAA;EACA,sBAAA;EACA,6BAAA;EACA,mBAAA;ET0gBA,iBAAA;EACA,eAAA;EACA,uBAAA;EACA,kBAAA;EAnSA,yBAAA;EACG,sBAAA;EACC,qBAAA;EACI,iBAAA;;AStON,IAAC;AAAD,IAFD,OAEE;AAAD,IADD,OACE;ETQH,oBAAA;EAEA,0CAAA;EACA,oBAAA;;ASNA,IAAC;AACD,IAAC;EACC,cAAA;EACA,qBAAA;;AAGF,IAAC;AACD,IAAC;EACC,UAAA;EACA,sBAAA;ETmFF,wDAAA;EACQ,gDAAA;;AShFR,IAAC;AACD,IAAC;AACD,QAAQ,UAAW;EACjB,mBAAA;EACA,oBAAA;ET+OF,aAAA;EAGA,yBAAA;EAvKA,wBAAA;EACQ,gBAAA;;ASlEV;ET2bE,cAAA;EACA,yBAAA;EACA,qBAAA;;AAEA,YAAC;AACD,YAAC;AACD,YAAC;AACD,YAAC;AACD,KAAM,iBAAgB;EACpB,cAAA;EACA,yBAAA;EACI,qBAAA;;AAEN,YAAC;AACD,YAAC;AACD,KAAM,iBAAgB;EACpB,sBAAA;;AAKA,YAHD;AAGC,YAFD;AAEC,QADM,UAAW;AAEjB,YAJD,SAIE;AAAD,YAHD,UAGE;AAAD,QAFM,UAAW,aAEhB;AACD,YALD,SAKE;AAAD,YAJD,UAIE;AAAD,QAHM,UAAW,aAGhB;AACD,YAND,SAME;AAAD,YALD,UAKE;AAAD,QAJM,UAAW,aAIhB;AACD,YAPD,SAOE;AAAD,YAND,UAME;AAAD,QALM,UAAW,aAKhB;EACC,yBAAA;EACI,qBAAA;;AStdV,YT0dE;EACE,cAAA;EACA,yBAAA;;ASzdJ;ETwbE,cAAA;EACA,yBAAA;EACA,qBAAA;;AAEA,YAAC;AACD,YAAC;AACD,YAAC;AACD,YAAC;AACD,KAAM,iBAAgB;EACpB,cAAA;EACA,yBAAA;EACI,qBAAA;;AAEN,YAAC;AACD,YAAC;AACD,KAAM,iBAAgB;EACpB,sBAAA;;AAKA,YAHD;AAGC,YAFD;AAEC,QADM,UAAW;AAEjB,YAJD,SAIE;AAAD,YAHD,UAGE;AAAD,QAFM,UAAW,aAEhB;AACD,YALD,SAKE;AAAD,YAJD,UAIE;AAAD,QAHM,UAAW,aAGhB;AACD,YAND,SAME;AAAD,YALD,UAKE;AAAD,QAJM,UAAW,aAIhB;AACD,YAPD,SAOE;AAAD,YAND,UAME;AAAD,QALM,UAAW,aAKhB;EACC,yBAAA;EACI,qBAAA;;ASndV,YTudE;EACE,cAAA;EACA,yBAAA;;ASrdJ;ETobE,cAAA;EACA,yBAAA;EACA,qBAAA;;AAEA,YAAC;AACD,YAAC;AACD,YAAC;AACD,YAAC;AACD,KAAM,iBAAgB;EACpB,cAAA;EACA,yBAAA;EACI,qBAAA;;AAEN,YAAC;AACD,YAAC;AACD,KAAM,iBAAgB;EACpB,sBAAA;;AAKA,YAHD;AAGC,YAFD;AAEC,QADM,UAAW;AAEjB,YAJD,SAIE;AAAD,YAHD,UAGE;AAAD,QAFM,UAAW,aAEhB;AACD,YALD,SAKE;AAAD,YAJD,UAIE;AAAD,QAHM,UAAW,aAGhB;AACD,YAND,SAME;AAAD,YALD,UAKE;AAAD,QAJM,UAAW,aAIhB;AACD,YAPD,SAOE;AAAD,YAND,UAME;AAAD,QALM,UAAW,aAKhB;EACC,yBAAA;EACI,qBAAA;;AS/cV,YTmdE;EACE,cAAA;EACA,yBAAA;;ASjdJ;ETgbE,cAAA;EACA,yBAAA;EACA,qBAAA;;AAEA,SAAC;AACD,SAAC;AACD,SAAC;AACD,SAAC;AACD,KAAM,iBAAgB;EACpB,cAAA;EACA,yBAAA;EACI,qBAAA;;AAEN,SAAC;AACD,SAAC;AACD,KAAM,iBAAgB;EACpB,sBAAA;;AAKA,SAHD;AAGC,SAFD;AAEC,QADM,UAAW;AAEjB,SAJD,SAIE;AAAD,SAHD,UAGE;AAAD,QAFM,UAAW,UAEhB;AACD,SALD,SAKE;AAAD,SAJD,UAIE;AAAD,QAHM,UAAW,UAGhB;AACD,SAND,SAME;AAAD,SALD,UAKE;AAAD,QAJM,UAAW,UAIhB;AACD,SAPD,SAOE;AAAD,SAND,UAME;AAAD,QALM,UAAW,UAKhB;EACC,yBAAA;EACI,qBAAA;;AS3cV,ST+cE;EACE,cAAA;EACA,yBAAA;;AS7cJ;ET4aE,cAAA;EACA,yBAAA;EACA,qBAAA;;AAEA,YAAC;AACD,YAAC;AACD,YAAC;AACD,YAAC;AACD,KAAM,iBAAgB;EACpB,cAAA;EACA,yBAAA;EACI,qBAAA;;AAEN,YAAC;AACD,YAAC;AACD,KAAM,iBAAgB;EACpB,sBAAA;;AAKA,YAHD;AAGC,YAFD;AAEC,QADM,UAAW;AAEjB,YAJD,SAIE;AAAD,YAHD,UAGE;AAAD,QAFM,UAAW,aAEhB;AACD,YALD,SAKE;AAAD,YAJD,UAIE;AAAD,QAHM,UAAW,aAGhB;AACD,YAND,SAME;AAAD,YALD,UAKE;AAAD,QAJM,UAAW,aAIhB;AACD,YAPD,SAOE;AAAD,YAND,UAME;AAAD,QALM,UAAW,aAKhB;EACC,yBAAA;EACI,qBAAA;;ASvcV,YT2cE;EACE,cAAA;EACA,yBAAA;;ASzcJ;ETwaE,cAAA;EACA,yBAAA;EACA,qBAAA;;AAEA,WAAC;AACD,WAAC;AACD,WAAC;AACD,WAAC;AACD,KAAM,iBAAgB;EACpB,cAAA;EACA,yBAAA;EACI,qBAAA;;AAEN,WAAC;AACD,WAAC;AACD,KAAM,iBAAgB;EACpB,sBAAA;;AAKA,WAHD;AAGC,WAFD;AAEC,QADM,UAAW;AAEjB,WAJD,SAIE;AAAD,WAHD,UAGE;AAAD,QAFM,UAAW,YAEhB;AACD,WALD,SAKE;AAAD,WAJD,UAIE;AAAD,QAHM,UAAW,YAGhB;AACD,WAND,SAME;AAAD,WALD,UAKE;AAAD,QAJM,UAAW,YAIhB;AACD,WAPD,SAOE;AAAD,WAND,UAME;AAAD,QALM,UAAW,YAKhB;EACC,yBAAA;EACI,qBAAA;;ASncV,WTucE;EACE,cAAA;EACA,yBAAA;;AShcJ;EACE,cAAA;EACA,mBAAA;EACA,eAAA;EACA,gBAAA;;AAEA;AACA,SAAC;AACD,SAAC;AACD,QAAQ,UAAW;EACjB,6BAAA;ET2BF,wBAAA;EACQ,gBAAA;;ASzBR;AACA,SAAC;AACD,SAAC;AACD,SAAC;EACC,yBAAA;;AAEF,SAAC;AACD,SAAC;EACC,cAAA;EACA,0BAAA;EACA,6BAAA;;AAIA,SAFD,UAEE;AAAD,QADM,UAAW,UAChB;AACD,SAHD,UAGE;AAAD,QAFM,UAAW,UAEhB;EACC,cAAA;EACA,qBAAA;;AASN;ACvBA,aAAc;EVubZ,kBAAA;EACA,eAAA;EACA,iBAAA;EACA,kBAAA;;AS/ZF;AC5BA,aAAc;EVwbZ,iBAAA;EACA,eAAA;EACA,gBAAA;EACA,kBAAA;;AS3ZF;ACjCA,aAAc;EVybZ,gBAAA;EACA,eAAA;EACA,gBAAA;EACA,kBAAA;;ASnZF;EACE,cAAA;EACA,WAAA;EACA,eAAA;EACA,gBAAA;;AAIF,UAAW;EACT,eAAA;;AAOA,KAHG,eAGF;AAAD,KAFG,cAEF;AAAD,KADG,eACF;EACC,WAAA;;AEnJJ;EACE,UAAA;EXqHA,wCAAA;EACQ,gCAAA;;AWpHR,KAAC;EACC,UAAA;;AAIJ;EACE,aAAA;;AACA,SAAC;EACC,cAAA;;AAGJ;EACE,kBAAA;EACA,SAAA;EACA,gBAAA;EXqGA,qCAAA;EACQ,6BAAA;;AYtHV;EACE,aAAa,sBAAb;EACA,qDAAA;EACA,2TAAA;;AAOF;EACE,kBAAA;EACA,QAAA;EACA,qBAAA;EACA,aAAa,sBAAb;EACA,kBAAA;EACA,mBAAA;EACA,cAAA;EACA,mCAAA;EACA,kCAAA;;AAIkC,mBAAC;EAAU,SAAS,KAAT;;AACX,eAAC;EAAU,SAAS,KAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,mBAAC;EAAU,SAAS,OAAT;;AACX,iBAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,iBAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,qBAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,mBAAC;EAAU,SAAS,OAAT;;AACX,aAAC;EAAU,SAAS,OAAT;;AACX,kBAAC;EAAU,SAAS,OAAT;;AACX,aAAC;EAAU,SAAS,OAAT;;AACX,iBAAC;EAAU,SAAS,OAAT;;AACX,kBAAC;EAAU,SAAS,OAAT;;AACX,mBAAC;EAAU,SAAS,OAAT;;AACX,cAAC;EAAU,SAAS,OAAT;;AACX,iBAAC;EAAU,SAAS,OAAT;;AACX,cAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,uBAAC;EAAU,SAAS,OAAT;;AACX,mBAAC;EAAU,SAAS,OAAT;;AACX,iBAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,sBAAC;EAAU,SAAS,OAAT;;AACX,iBAAC;EAAU,SAAS,OAAT;;AACX,kBAAC;EAAU,SAAS,OAAT;;AACX,mBAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,qBAAC;EAAU,SAAS,OAAT;;AACX,qBAAC;EAAU,SAAS,OAAT;;AACX,sBAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,iBAAC;EAAU,SAAS,OAAT;;AACX,kBAAC;EAAU,SAAS,OAAT;;AACX,cAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,mBAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,iBAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,iBAAC;EAAU,SAAS,OAAT;;AACX,sBAAC;EAAU,SAAS,OAAT;;AACX,qBAAC;EAAU,SAAS,OAAT;;AACX,qBAAC;EAAU,SAAS,OAAT;;AACX,uBAAC;EAAU,SAAS,OAAT;;AACX,sBAAC;EAAU,SAAS,OAAT;;AACX,wBAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,sBAAC;EAAU,SAAS,OAAT;;AACX,uBAAC;EAAU,SAAS,OAAT;;AACX,yBAAC;EAAU,SAAS,OAAT;;AACX,kBAAC;EAAU,SAAS,OAAT;;AACX,qBAAC;EAAU,SAAS,OAAT;;AACX,iBAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,wBAAC;EAAU,SAAS,OAAT;;AACX,wBAAC;EAAU,SAAS,OAAT;;AACX,mBAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,kBAAC;EAAU,SAAS,OAAT;;AACX,uBAAC;EAAU,SAAS,OAAT;;AACX,uBAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,uBAAC;EAAU,SAAS,OAAT;;AACX,wBAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,qBAAC;EAAU,SAAS,OAAT;;AACX,sBAAC;EAAU,SAAS,OAAT;;AACX,kBAAC;EAAU,SAAS,OAAT;;AACX,wBAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,qBAAC;EAAU,SAAS,OAAT;;AACX,wBAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,qBAAC;EAAU,SAAS,OAAT;;AACX,qBAAC;EAAU,SAAS,OAAT;;AACX,sBAAC;EAAU,SAAS,OAAT;;AACX,mBAAC;EAAU,SAAS,OAAT;;AACX,qBAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,sBAAC;EAAU,SAAS,OAAT;;AACX,uBAAC;EAAU,SAAS,OAAT;;AACX,2BAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,mBAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,uBAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,mBAAC;EAAU,SAAS,OAAT;;AACX,iBAAC;EAAU,SAAS,OAAT;;AACX,kBAAC;EAAU,SAAS,OAAT;;AACX,iBAAC;EAAU,SAAS,OAAT;;AACX,qBAAC;EAAU,SAAS,OAAT;;AACX,uBAAC;EAAU,SAAS,OAAT;;AACX,kBAAC;EAAU,SAAS,OAAT;;AACX,wBAAC;EAAU,SAAS,OAAT;;AACX,uBAAC;EAAU,SAAS,OAAT;;AACX,sBAAC;EAAU,SAAS,OAAT;;AACX,0BAAC;EAAU,SAAS,OAAT;;AACX,4BAAC;EAAU,SAAS,OAAT;;AACX,cAAC;EAAU,SAAS,OAAT;;AACX,mBAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,sBAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,sBAAC;EAAU,SAAS,OAAT;;AACX,qBAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,kBAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,6BAAC;EAAU,SAAS,OAAT;;AACX,4BAAC;EAAU,SAAS,OAAT;;AACX,0BAAC;EAAU,SAAS,OAAT;;AACX,4BAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,iBAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,iBAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,qBAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,sBAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,kBAAC;EAAU,SAAS,OAAT;;AACX,cAAC;EAAU,SAAS,OAAT;;AACX,cAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,2BAAC;EAAU,SAAS,OAAT;;AACX,+BAAC;EAAU,SAAS,OAAT;;AACX,wBAAC;EAAU,SAAS,OAAT;;AACX,4BAAC;EAAU,SAAS,OAAT;;AACX,6BAAC;EAAU,SAAS,OAAT;;AACX,iCAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,iBAAC;EAAU,SAAS,OAAT;;AACX,wBAAC;EAAU,SAAS,OAAT;;AACX,sBAAC;EAAU,SAAS,OAAT;;AACX,iBAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,kBAAC;EAAU,SAAS,OAAT;;AACX,qBAAC;EAAU,SAAS,OAAT;;AACX,iBAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,iBAAC;EAAU,SAAS,OAAT;;AACX,iBAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,sBAAC;EAAU,SAAS,OAAT;;AACX,uBAAC;EAAU,SAAS,OAAT;;AACX,wBAAC;EAAU,SAAS,OAAT;;AACX,sBAAC;EAAU,SAAS,OAAT;;AACX,sBAAC;EAAU,SAAS,OAAT;;AACX,sBAAC;EAAU,SAAS,OAAT;;AACX,mBAAC;EAAU,SAAS,OAAT;;AACX,kBAAC;EAAU,SAAS,OAAT;;AACX,iBAAC;EAAU,SAAS,OAAT;;AACX,qBAAC;EAAU,SAAS,OAAT;;AACX,mBAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,mBAAC;EAAU,SAAS,OAAT;;AACX,mBAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,uBAAC;EAAU,SAAS,OAAT;;AACX,sBAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,yBAAC;EAAU,SAAS,OAAT;;AACX,4BAAC;EAAU,SAAS,OAAT;;AACX,yBAAC;EAAU,SAAS,OAAT;;AACX,uBAAC;EAAU,SAAS,OAAT;;AACX,uBAAC;EAAU,SAAS,OAAT;;AACX,yBAAC;EAAU,SAAS,OAAT;;AClO/C;EACE,qBAAA;EACA,QAAA;EACA,SAAA;EACA,gBAAA;EACA,sBAAA;EACA,qBAAA;EACA,mCAAA;EACA,kCAAA;;AAIF;EACE,kBAAA;;AAIF,gBAAgB;EACd,UAAA;;AAIF;EACE,kBAAA;EACA,SAAA;EACA,OAAA;EACA,aAAA;EACA,aAAA;EACA,WAAA;EACA,gBAAA;EACA,cAAA;EACA,eAAA;EACA,gBAAA;EACA,eAAA;EACA,yBAAA;EACA,yBAAA;EACA,qCAAA;EACA,kBAAA;Eb8EA,mDAAA;EACQ,2CAAA;Ea7ER,4BAAA;;AAKA,cAAC;EACC,QAAA;EACA,UAAA;;AAxBJ,cA4BE;EboVA,WAAA;EACA,aAAA;EACA,gBAAA;EACA,yBAAA;;AanXF,cAiCE,KAAK;EACH,cAAA;EACA,iBAAA;EACA,WAAA;EACA,mBAAA;EACA,uBAAA;EACA,cAAA;EACA,mBAAA;;AAMF,cADa,KAAK,IACjB;AACD,cAFa,KAAK,IAEjB;EACC,qBAAA;EACA,cAAA;EACA,yBAAA;;AAMF,cADa,UAAU;AAEvB,cAFa,UAAU,IAEtB;AACD,cAHa,UAAU,IAGtB;EACC,cAAA;EACA,qBAAA;EACA,UAAA;EACA,yBAAA;;AASF,cADa,YAAY;AAEzB,cAFa,YAAY,IAExB;AACD,cAHa,YAAY,IAGxB;EACC,cAAA;;AAKF,cADa,YAAY,IACxB;AACD,cAFa,YAAY,IAExB;EACC,qBAAA;EACA,6BAAA;EACA,sBAAA;EbkPF,mEAAA;EahPE,mBAAA;;AAKJ,KAEE;EACE,cAAA;;AAHJ,KAOE;EACE,UAAA;;AAQJ;EACE,UAAA;EACA,QAAA;;AAQF;EACE,OAAA;EACA,WAAA;;AAIF;EACE,cAAA;EACA,iBAAA;EACA,eAAA;EACA,uBAAA;EACA,cAAA;;AAIF;EACE,eAAA;EACA,OAAA;EACA,QAAA;EACA,SAAA;EACA,MAAA;EACA,YAAA;;AAIF,WAAY;EACV,QAAA;EACA,UAAA;;AAQF,OAGE;AAFF,oBAAqB,UAEnB;EACE,aAAA;EACA,wBAAA;EACA,SAAS,EAAT;;AANJ,OASE;AARF,oBAAqB,UAQnB;EACE,SAAA;EACA,YAAA;EACA,kBAAA;;AAsBJ,QAb2C;EACzC,aACE;IAnEF,UAAA;IACA,QAAA;;EAiEA,aAME;IA9DF,OAAA;IACA,WAAA;;;AH7IF;AACA;EACE,kBAAA;EACA,qBAAA;EACA,sBAAA;;AAJF,UAKE;AAJF,mBAIE;EACE,kBAAA;EACA,WAAA;;AAEA,UAJF,OAIG;AAAD,mBAJF,OAIG;AACD,UALF,OAKG;AAAD,mBALF,OAKG;AACD,UANF,OAMG;AAAD,mBANF,OAMG;AACD,UAPF,OAOG;AAAD,mBAPF,OAOG;EACC,UAAA;;AAEF,UAVF,OAUG;AAAD,mBAVF,OAUG;EAEC,aAAA;;AAMN,UACE,KAAK;AADP,UAEE,KAAK;AAFP,UAGE,WAAW;AAHb,UAIE,WAAW;EACT,iBAAA;;AAKJ;EACE,iBAAA;;AADF,YAIE;AAJF,YAKE;EACE,WAAA;;AANJ,YAQE;AARF,YASE;AATF,YAUE;EACE,gBAAA;;AAIJ,UAAW,OAAM,IAAI,cAAc,IAAI,aAAa,IAAI;EACtD,gBAAA;;AAIF,UAAW,OAAM;EACf,cAAA;;AACA,UAFS,OAAM,YAEd,IAAI,aAAa,IAAI;EV2CtB,6BAAA;EACG,0BAAA;;AUvCL,UAAW,OAAM,WAAW,IAAI;AAChC,UAAW,mBAAkB,IAAI;EV6C/B,4BAAA;EACG,yBAAA;;AUzCL,UAAW;EACT,WAAA;;AAEF,UAAW,aAAY,IAAI,cAAc,IAAI,aAAc;EACzD,gBAAA;;AAEF,UAAW,aAAY,YACrB,OAAM;AADR,UAAW,aAAY,YAErB;EVwBA,6BAAA;EACG,0BAAA;;AUrBL,UAAW,aAAY,WAAY,OAAM;EV4BvC,4BAAA;EACG,yBAAA;;AUxBL,UAAW,iBAAgB;AAC3B,UAAU,KAAM;EACd,UAAA;;AAiBF,UAAW,OAAO;EAChB,iBAAA;EACA,kBAAA;;AAEF,UAAW,UAAU;EACnB,kBAAA;EACA,mBAAA;;AAKF,UAAU,KAAM;EVGd,wDAAA;EACQ,gDAAA;;AUAR,UAJQ,KAAM,iBAIb;EVDD,wBAAA;EACQ,gBAAA;;AUOV,IAAK;EACH,cAAA;;AAGF,OAAQ;EACN,uBAAA;EACA,sBAAA;;AAGF,OAAQ,QAAQ;EACd,uBAAA;;AAOF,mBACE;AADF,mBAEE;AAFF,mBAGE,aAAa;EACX,cAAA;EACA,WAAA;EACA,WAAA;EACA,eAAA;;AAPJ,mBAWE,aAEE;EACE,WAAA;;AAdN,mBAkBE,OAAO;AAlBT,mBAmBE,OAAO;AAnBT,mBAoBE,aAAa;AApBf,mBAqBE,aAAa;EACX,gBAAA;EACA,cAAA;;AAKF,mBADkB,OACjB,IAAI,cAAc,IAAI;EACrB,gBAAA;;AAEF,mBAJkB,OAIjB,YAAY,IAAI;EACf,4BAAA;EVvEF,6BAAA;EACC,4BAAA;;AUyED,mBARkB,OAQjB,WAAW,IAAI;EACd,8BAAA;EVnFF,0BAAA;EACC,yBAAA;;AUsFH,mBAAoB,aAAY,IAAI,cAAc,IAAI,aAAc;EAClE,gBAAA;;AAEF,mBAAoB,aAAY,YAAY,IAAI,aAC9C,OAAM;AADR,mBAAoB,aAAY,YAAY,IAAI,aAE9C;EVpFA,6BAAA;EACC,4BAAA;;AUuFH,mBAAoB,aAAY,WAAW,IAAI,cAAe,OAAM;EVhGlE,0BAAA;EACC,yBAAA;;AUwGH;EACE,cAAA;EACA,WAAA;EACA,mBAAA;EACA,yBAAA;;AAJF,oBAKE;AALF,oBAME;EACE,WAAA;EACA,mBAAA;EACA,SAAA;;AATJ,oBAWE,aAAa;EACX,WAAA;;AAMJ,uBAAwB,OAAO,QAAO;AACtC,uBAAwB,OAAO,QAAO;EACpC,aAAA;;AI1NF;EACE,kBAAA;EACA,cAAA;EACA,yBAAA;;AAGA,YAAC;EACC,WAAA;EACA,eAAA;EACA,gBAAA;;AATJ,YAYE;EAGE,kBAAA;EACA,UAAA;EAKA,WAAA;EAEA,WAAA;EACA,gBAAA;;AASJ,eAAgB;AAChB,eAAgB;AAChB,eAAgB,mBAAmB;Edw2BjC,YAAA;EACA,kBAAA;EACA,eAAA;EACA,iBAAA;EACA,kBAAA;;AAEA,MAAM,ech3BQ;Adg3Bd,MAAM,ec/2BQ;Ad+2Bd,MAAM,ec92BQ,mBAAmB;Ed+2B/B,YAAA;EACA,iBAAA;;AAGF,QAAQ,ecr3BM;Adq3Bd,QAAQ,ecp3BM;Ado3Bd,QAAQ,ecn3BM,mBAAmB;Ado3BjC,MAAM,UAAU,ect3BF;Ads3Bd,MAAM,UAAU,ecr3BF;Adq3Bd,MAAM,UAAU,ecp3BF,mBAAmB;Edq3B/B,YAAA;;Acp3BJ,eAAgB;AAChB,eAAgB;AAChB,eAAgB,mBAAmB;Edq2BjC,YAAA;EACA,iBAAA;EACA,eAAA;EACA,gBAAA;EACA,kBAAA;;AAEA,MAAM,ec72BQ;Ad62Bd,MAAM,ec52BQ;Ad42Bd,MAAM,ec32BQ,mBAAmB;Ed42B/B,YAAA;EACA,iBAAA;;AAGF,QAAQ,ecl3BM;Adk3Bd,QAAQ,ecj3BM;Adi3Bd,QAAQ,ech3BM,mBAAmB;Adi3BjC,MAAM,UAAU,ecn3BF;Adm3Bd,MAAM,UAAU,ecl3BF;Adk3Bd,MAAM,UAAU,ecj3BF,mBAAmB;Edk3B/B,YAAA;;Ac72BJ;AACA;AACA,YAAa;EACX,mBAAA;;AAEA,kBAAC,IAAI,cAAc,IAAI;AAAvB,gBAAC,IAAI,cAAc,IAAI;AAAvB,YAHW,cAGV,IAAI,cAAc,IAAI;EACrB,gBAAA;;AAIJ;AACA;EACE,SAAA;EACA,mBAAA;EACA,sBAAA;;AAKF;EACE,iBAAA;EACA,eAAA;EACA,mBAAA;EACA,cAAA;EACA,cAAA;EACA,kBAAA;EACA,yBAAA;EACA,yBAAA;EACA,kBAAA;;AAGA,kBAAC;EACC,iBAAA;EACA,eAAA;EACA,kBAAA;;AAEF,kBAAC;EACC,kBAAA;EACA,eAAA;EACA,kBAAA;;AApBJ,kBAwBE,MAAK;AAxBP,kBAyBE,MAAK;EACH,aAAA;;AAKJ,YAAa,cAAa;AAC1B,kBAAkB;AAClB,gBAAgB,YAAa;AAC7B,gBAAgB,YAAa,aAAa;AAC1C,gBAAgB,YAAa;AAC7B,gBAAgB,WAAY,OAAM,IAAI,aAAa,IAAI;AACvD,gBAAgB,WAAY,aAAY,IAAI,aAAc;EdFxD,6BAAA;EACG,0BAAA;;AcIL,kBAAkB;EAChB,eAAA;;AAEF,YAAa,cAAa;AAC1B,kBAAkB;AAClB,gBAAgB,WAAY;AAC5B,gBAAgB,WAAY,aAAa;AACzC,gBAAgB,WAAY;AAC5B,gBAAgB,YAAa,OAAM,IAAI;AACvC,gBAAgB,YAAa,aAAY,IAAI,cAAe;EdN1D,4BAAA;EACG,yBAAA;;AcQL,kBAAkB;EAChB,cAAA;;AAKF;EACE,kBAAA;EAGA,YAAA;EACA,mBAAA;;AALF,gBASE;EACE,kBAAA;;AAVJ,gBASE,OAEE;EACE,iBAAA;;AAGF,gBANF,OAMG;AACD,gBAPF,OAOG;AACD,gBARF,OAQG;EACC,UAAA;;AAKJ,gBAAC,YACC;AADF,gBAAC,YAEC;EACE,kBAAA;;AAGJ,gBAAC,WACC;AADF,gBAAC,WAEC;EACE,iBAAA;;ACtJN;EACE,gBAAA;EACA,eAAA;EACA,gBAAA;;AAHF,IAME;EACE,kBAAA;EACA,cAAA;;AARJ,IAME,KAIE;EACE,kBAAA;EACA,cAAA;EACA,kBAAA;;AACA,IARJ,KAIE,IAIG;AACD,IATJ,KAIE,IAKG;EACC,qBAAA;EACA,yBAAA;;AAKJ,IAhBF,KAgBG,SAAU;EACT,cAAA;;AAEA,IAnBJ,KAgBG,SAAU,IAGR;AACD,IApBJ,KAgBG,SAAU,IAIR;EACC,cAAA;EACA,qBAAA;EACA,6BAAA;EACA,mBAAA;;AAOJ,IADF,MAAM;AAEJ,IAFF,MAAM,IAEH;AACD,IAHF,MAAM,IAGH;EACC,yBAAA;EACA,qBAAA;;AAzCN,IAkDE;EfkVA,WAAA;EACA,aAAA;EACA,gBAAA;EACA,yBAAA;;AevYF,IAyDE,KAAK,IAAI;EACP,eAAA;;AASJ;EACE,gCAAA;;AADF,SAEE;EACE,WAAA;EAEA,mBAAA;;AALJ,SAEE,KAME;EACE,iBAAA;EACA,uBAAA;EACA,6BAAA;EACA,0BAAA;;AACA,SAXJ,KAME,IAKG;EACC,qCAAA;;AAMF,SAlBJ,KAiBG,OAAQ;AAEP,SAnBJ,KAiBG,OAAQ,IAEN;AACD,SApBJ,KAiBG,OAAQ,IAGN;EACC,cAAA;EACA,yBAAA;EACA,yBAAA;EACA,gCAAA;EACA,eAAA;;AAKN,SAAC;EAqDD,WAAA;EA8BA,gBAAA;;AAnFA,SAAC,cAuDD;EACE,WAAA;;AAxDF,SAAC,cAuDD,KAEG;EACC,kBAAA;EACA,kBAAA;;AA3DJ,SAAC,cA+DD,YAAY;EACV,SAAA;EACA,UAAA;;AAYJ,QATqC;EASrC,SA7EG,cAqEC;IACE,mBAAA;IACA,SAAA;;EAMN,SA7EG,cAqEC,KAGE;IACE,gBAAA;;;AAzEN,SAAC,cAqFD,KAAK;EAEH,eAAA;EACA,kBAAA;;AAxFF,SAAC,cA2FD,UAAU;AA3FV,SAAC,cA4FD,UAAU,IAAG;AA5Fb,SAAC,cA6FD,UAAU,IAAG;EACX,yBAAA;;AAcJ,QAXqC;EAWrC,SA5GG,cAkGC,KAAK;IACH,gCAAA;IACA,0BAAA;;EAQN,SA5GG,cAsGC,UAAU;EAMd,SA5GG,cAuGC,UAAU,IAAG;EAKjB,SA5GG,cAwGC,UAAU,IAAG;IACX,4BAAA;;;AAhGN,UACE;EACE,WAAA;;AAFJ,UACE,KAIE;EACE,kBAAA;;AANN,UACE,KAOE;EACE,gBAAA;;AAKA,UAbJ,KAYG,OAAQ;AAEP,UAdJ,KAYG,OAAQ,IAEN;AACD,UAfJ,KAYG,OAAQ,IAGN;EACC,cAAA;EACA,yBAAA;;AAQR,YACE;EACE,WAAA;;AAFJ,YACE,KAEE;EACE,eAAA;EACA,cAAA;;AAYN;EACE,WAAA;;AADF,cAGE;EACE,WAAA;;AAJJ,cAGE,KAEG;EACC,kBAAA;EACA,kBAAA;;AAPN,cAWE,YAAY;EACV,SAAA;EACA,UAAA;;AAYJ,QATqC;EASrC,cARI;IACE,mBAAA;IACA,SAAA;;EAMN,cARI,KAGE;IACE,gBAAA;;;AASR;EACE,gBAAA;;AADF,mBAGE,KAAK;EAEH,eAAA;EACA,kBAAA;;AANJ,mBASE,UAAU;AATZ,mBAUE,UAAU,IAAG;AAVf,mBAWE,UAAU,IAAG;EACX,yBAAA;;AAcJ,QAXqC;EAWrC,mBAVI,KAAK;IACH,gCAAA;IACA,0BAAA;;EAQN,mBANI,UAAU;EAMd,mBALI,UAAU,IAAG;EAKjB,mBAJI,UAAU,IAAG;IACX,4BAAA;;;AAUN,YACE;EACE,aAAA;;AAFJ,YAIE;EACE,cAAA;;AASJ,SAAU;EAER,gBAAA;Ef3IA,0BAAA;EACC,yBAAA;;AgB1FH;EACE,kBAAA;EACA,gBAAA;EACA,mBAAA;EACA,6BAAA;;AAQF,QAH6C;EAG7C;IAFI,kBAAA;;;AAgBJ,QAH6C;EAG7C;IAFI,WAAA;;;AAeJ;EACE,iBAAA;EACA,mBAAA;EACA,mBAAA;EACA,kBAAA;EACA,iCAAA;EACA,kDAAA;EAEA,iCAAA;;AAEA,gBAAC;EACC,gBAAA;;AA4BJ,QAzB6C;EAyB7C;IAxBI,WAAA;IACA,aAAA;IACA,gBAAA;;EAEA,gBAAC;IACC,yBAAA;IACA,uBAAA;IACA,iBAAA;IACA,4BAAA;;EAGF,gBAAC;IACC,mBAAA;;EAKF,iBAAkB;EAClB,kBAAmB;EACnB,oBAAqB;IACnB,eAAA;IACA,gBAAA;;;AAUN,UAEE;AADF,gBACE;AAFF,UAGE;AAFF,gBAEE;EACE,mBAAA;EACA,kBAAA;;AAMF,QAJ6C;EAI7C,UATA;EASA,gBATA;EASA,UARA;EAQA,gBARA;IAKI,eAAA;IACA,cAAA;;;AAaN;EACE,aAAA;EACA,qBAAA;;AAKF,QAH6C;EAG7C;IAFI,gBAAA;;;AAKJ;AACA;EACE,eAAA;EACA,QAAA;EACA,OAAA;EACA,aAAA;;AAMF,QAH6C;EAG7C;EAAA;IAFI,gBAAA;;;AAGJ;EACE,MAAA;EACA,qBAAA;;AAEF;EACE,SAAA;EACA,gBAAA;EACA,qBAAA;;AAMF;EACE,WAAA;EACA,kBAAA;EACA,eAAA;EACA,iBAAA;EACA,YAAA;;AAEA,aAAC;AACD,aAAC;EACC,qBAAA;;AASJ,QAN6C;EACzC,OAAQ,aAAa;EACrB,OAAQ,mBAAmB;IACzB,kBAAA;;;AAWN;EACE,kBAAA;EACA,YAAA;EACA,kBAAA;EACA,iBAAA;EhBsaA,eAAA;EACA,kBAAA;EgBraA,6BAAA;EACA,sBAAA;EACA,6BAAA;EACA,kBAAA;;AAIA,cAAC;EACC,aAAA;;AAdJ,cAkBE;EACE,cAAA;EACA,WAAA;EACA,WAAA;EACA,kBAAA;;AAtBJ,cAwBE,UAAU;EACR,eAAA;;AAMJ,QAH6C;EAG7C;IAFI,aAAA;;;AAUJ;EACE,mBAAA;;AADF,WAGE,KAAK;EACH,iBAAA;EACA,oBAAA;EACA,iBAAA;;AA2BF,QAxB+C;EAwB/C,WAtBE,MAAM;IACJ,gBAAA;IACA,WAAA;IACA,WAAA;IACA,aAAA;IACA,6BAAA;IACA,SAAA;IACA,gBAAA;;EAeJ,WAtBE,MAAM,eAQJ,KAAK;EAcT,WAtBE,MAAM,eASJ;IACE,0BAAA;;EAYN,WAtBE,MAAM,eAYJ,KAAK;IACH,iBAAA;;EACA,WAdJ,MAAM,eAYJ,KAAK,IAEF;EACD,WAfJ,MAAM,eAYJ,KAAK,IAGF;IACC,sBAAA;;;AAuBV,QAhB6C;EAgB7C;IAfI,WAAA;IACA,SAAA;;EAcJ,WAZI;IACE,WAAA;;EAWN,WAZI,KAEE;IACE,iBAAA;IACA,oBAAA;;EAIJ,WAAC,aAAa;IACZ,mBAAA;;;AAkBN,QAN2C;EACzC;ICnQA,sBAAA;;EDoQA;ICvQA,uBAAA;;;ADgRF;EACE,kBAAA;EACA,mBAAA;EACA,kBAAA;EACA,iCAAA;EACA,oCAAA;EhB3KA,4FAAA;EACQ,oFAAA;EAkeR,eAAA;EACA,kBAAA;;AQ3NF,QAjDqC;EAiDrC,YA/CI;IACE,qBAAA;IACA,gBAAA;IACA,sBAAA;;EA4CN,YAxCI;IACE,qBAAA;IACA,WAAA;IACA,sBAAA;;EAqCN,YAlCI,aAAa;IACX,WAAA;;EAiCN,YA9BI;IACE,gBAAA;IACA,sBAAA;;EA4BN,YAtBI;EAsBJ,YArBI;IACE,qBAAA;IACA,aAAA;IACA,gBAAA;IACA,eAAA;IACA,sBAAA;;EAgBN,YAdI,OAAO,MAAK;EAchB,YAbI,UAAU,MAAK;IACb,WAAA;IACA,cAAA;;EAWN,YAJI,cAAc;IACZ,MAAA;;;AQhFJ,QAHiD;EAGjD,YAJA;IAEI,kBAAA;;;AAsBN,QAd6C;EAc7C;IAbI,WAAA;IACA,SAAA;IACA,cAAA;IACA,eAAA;IACA,cAAA;IACA,iBAAA;IhBlMF,wBAAA;IACQ,gBAAA;;EgBqMN,YAAC,aAAa;IACZ,mBAAA;;;AASN,WAAY,KAAK;EACf,aAAA;EhBvOA,0BAAA;EACC,yBAAA;;AgB0OH,oBAAqB,YAAY,KAAK;EhBnOpC,6BAAA;EACC,4BAAA;;AgB2OH;EhBqQE,eAAA;EACA,kBAAA;;AgBnQA,WAAC;EhBkQD,gBAAA;EACA,mBAAA;;AgBhQA,WAAC;EhB+PD,gBAAA;EACA,mBAAA;;AgBtPF;EhBqPE,gBAAA;EACA,mBAAA;;AgBzOF,QAV6C;EAU7C;IATI,WAAA;IACA,iBAAA;IACA,kBAAA;;EAGA,YAAC,aAAa;IACZ,eAAA;;;AASN;EACE,yBAAA;EACA,qBAAA;;AAFF,eAIE;EACE,cAAA;;AACA,eAFF,cAEG;AACD,eAHF,cAGG;EACC,cAAA;EACA,6BAAA;;AATN,eAaE;EACE,cAAA;;AAdJ,eAiBE,YACE,KAAK;EACH,cAAA;;AAEA,eAJJ,YACE,KAAK,IAGF;AACD,eALJ,YACE,KAAK,IAIF;EACC,cAAA;EACA,6BAAA;;AAIF,eAXJ,YAUE,UAAU;AAER,eAZJ,YAUE,UAAU,IAEP;AACD,eAbJ,YAUE,UAAU,IAGP;EACC,cAAA;EACA,yBAAA;;AAIF,eAnBJ,YAkBE,YAAY;AAEV,eApBJ,YAkBE,YAAY,IAET;AACD,eArBJ,YAkBE,YAAY,IAGT;EACC,cAAA;EACA,6BAAA;;AAxCR,eA6CE;EACE,qBAAA;;AACA,eAFF,eAEG;AACD,eAHF,eAGG;EACC,yBAAA;;AAjDN,eA6CE,eAME;EACE,yBAAA;;AApDN,eAwDE;AAxDF,eAyDE;EACE,qBAAA;;AAOE,eAHJ,YAEE,QAAQ;AAEN,eAJJ,YAEE,QAAQ,IAEL;AACD,eALJ,YAEE,QAAQ,IAGL;EACC,yBAAA;EACA,cAAA;;AAiCN,QA7BiD;EA6BjD,eAxCA,YAaI,MAAM,eACJ,KAAK;IACH,cAAA;;EACA,eAhBR,YAaI,MAAM,eACJ,KAAK,IAEF;EACD,eAjBR,YAaI,MAAM,eACJ,KAAK,IAGF;IACC,cAAA;IACA,6BAAA;;EAIF,eAvBR,YAaI,MAAM,eASJ,UAAU;EAER,eAxBR,YAaI,MAAM,eASJ,UAAU,IAEP;EACD,eAzBR,YAaI,MAAM,eASJ,UAAU,IAGP;IACC,cAAA;IACA,yBAAA;;EAIF,eA/BR,YAaI,MAAM,eAiBJ,YAAY;EAEV,eAhCR,YAaI,MAAM,eAiBJ,YAAY,IAET;EACD,eAjCR,YAaI,MAAM,eAiBJ,YAAY,IAGT;IACC,cAAA;IACA,6BAAA;;;AAjGZ,eA6GE;EACE,cAAA;;AACA,eAFF,aAEG;EACC,cAAA;;AAQN;EACE,yBAAA;EACA,qBAAA;;AAFF,eAIE;EACE,cAAA;;AACA,eAFF,cAEG;AACD,eAHF,cAGG;EACC,cAAA;EACA,6BAAA;;AATN,eAaE;EACE,cAAA;;AAdJ,eAiBE,YACE,KAAK;EACH,cAAA;;AAEA,eAJJ,YACE,KAAK,IAGF;AACD,eALJ,YACE,KAAK,IAIF;EACC,cAAA;EACA,6BAAA;;AAIF,eAXJ,YAUE,UAAU;AAER,eAZJ,YAUE,UAAU,IAEP;AACD,eAbJ,YAUE,UAAU,IAGP;EACC,cAAA;EACA,yBAAA;;AAIF,eAnBJ,YAkBE,YAAY;AAEV,eApBJ,YAkBE,YAAY,IAET;AACD,eArBJ,YAkBE,YAAY,IAGT;EACC,cAAA;EACA,6BAAA;;AAxCR,eA8CE;EACE,qBAAA;;AACA,eAFF,eAEG;AACD,eAHF,eAGG;EACC,yBAAA;;AAlDN,eA8CE,eAME;EACE,yBAAA;;AArDN,eAyDE;AAzDF,eA0DE;EACE,qBAAA;;AAME,eAFJ,YACE,QAAQ;AAEN,eAHJ,YACE,QAAQ,IAEL;AACD,eAJJ,YACE,QAAQ,IAGL;EACC,yBAAA;EACA,cAAA;;AAuCN,QAnCiD;EAmCjD,eA7CA,YAYI,MAAM,eACJ;IACE,qBAAA;;EA+BR,eA7CA,YAYI,MAAM,eAIJ;IACE,yBAAA;;EA4BR,eA7CA,YAYI,MAAM,eAOJ,KAAK;IACH,cAAA;;EACA,eArBR,YAYI,MAAM,eAOJ,KAAK,IAEF;EACD,eAtBR,YAYI,MAAM,eAOJ,KAAK,IAGF;IACC,cAAA;IACA,6BAAA;;EAIF,eA5BR,YAYI,MAAM,eAeJ,UAAU;EAER,eA7BR,YAYI,MAAM,eAeJ,UAAU,IAEP;EACD,eA9BR,YAYI,MAAM,eAeJ,UAAU,IAGP;IACC,cAAA;IACA,yBAAA;;EAIF,eApCR,YAYI,MAAM,eAuBJ,YAAY;EAEV,eArCR,YAYI,MAAM,eAuBJ,YAAY,IAET;EACD,eAtCR,YAYI,MAAM,eAuBJ,YAAY,IAGT;IACC,cAAA;IACA,6BAAA;;;AAvGZ,eA8GE;EACE,cAAA;;AACA,eAFF,aAEG;EACC,cAAA;;AE9lBN;EACE,iBAAA;EACA,mBAAA;EACA,gBAAA;EACA,yBAAA;EACA,kBAAA;;AALF,WAOE;EACE,qBAAA;;AARJ,WAOE,KAGE,KAAI;EACF,SAAS,QAAT;EACA,cAAA;EACA,cAAA;;AAbN,WAiBE;EACE,cAAA;;ACpBJ;EACE,qBAAA;EACA,eAAA;EACA,cAAA;EACA,kBAAA;;AAJF,WAME;EACE,eAAA;;AAPJ,WAME,KAEE;AARJ,WAME,KAGE;EACE,kBAAA;EACA,WAAA;EACA,iBAAA;EACA,uBAAA;EACA,qBAAA;EACA,cAAA;EACA,yBAAA;EACA,yBAAA;EACA,iBAAA;;AAEF,WAdF,KAcG,YACC;AADF,WAdF,KAcG,YAEC;EACE,cAAA;EnBqFN,8BAAA;EACG,2BAAA;;AmBlFD,WArBF,KAqBG,WACC;AADF,WArBF,KAqBG,WAEC;EnBuEJ,+BAAA;EACG,4BAAA;;AmBhED,WAFF,KAAK,IAEF;AAAD,WADF,KAAK,OACF;AACD,WAHF,KAAK,IAGF;AAAD,WAFF,KAAK,OAEF;EACC,cAAA;EACA,yBAAA;EACA,qBAAA;;AAMF,WAFF,UAAU;AAER,WADF,UAAU;AAER,WAHF,UAAU,IAGP;AAAD,WAFF,UAAU,OAEP;AACD,WAJF,UAAU,IAIP;AAAD,WAHF,UAAU,OAGP;EACC,UAAA;EACA,cAAA;EACA,yBAAA;EACA,qBAAA;EACA,eAAA;;AAtDN,WA0DE,YACE;AA3DJ,WA0DE,YAEE,OAAM;AA5DV,WA0DE,YAGE,OAAM;AA7DV,WA0DE,YAIE;AA9DJ,WA0DE,YAKE,IAAG;AA/DP,WA0DE,YAME,IAAG;EACD,cAAA;EACA,yBAAA;EACA,qBAAA;EACA,mBAAA;;AASN,cnBodE,KACE;AmBrdJ,cnBodE,KAEE;EACE,kBAAA;EACA,eAAA;;AAEF,cANF,KAMG,YACC;AADF,cANF,KAMG,YAEC;EA7bJ,8BAAA;EACG,2BAAA;;AAgcD,cAZF,KAYG,WACC;AADF,cAZF,KAYG,WAEC;EA3cJ,+BAAA;EACG,4BAAA;;AmBnBL,cnB+cE,KACE;AmBhdJ,cnB+cE,KAEE;EACE,iBAAA;EACA,eAAA;;AAEF,cANF,KAMG,YACC;AADF,cANF,KAMG,YAEC;EA7bJ,8BAAA;EACG,2BAAA;;AAgcD,cAZF,KAYG,WACC;AADF,cAZF,KAYG,WAEC;EA3cJ,+BAAA;EACG,4BAAA;;AoBnGL;EACE,eAAA;EACA,cAAA;EACA,gBAAA;EACA,kBAAA;;AAJF,MAME;EACE,eAAA;;AAPJ,MAME,GAEE;AARJ,MAME,GAGE;EACE,qBAAA;EACA,iBAAA;EACA,yBAAA;EACA,yBAAA;EACA,mBAAA;;AAdN,MAME,GAWE,IAAG;AAjBP,MAME,GAYE,IAAG;EACD,qBAAA;EACA,yBAAA;;AApBN,MAwBE,MACE;AAzBJ,MAwBE,MAEE;EACE,YAAA;;AA3BN,MA+BE,UACE;AAhCJ,MA+BE,UAEE;EACE,WAAA;;AAlCN,MAsCE,UACE;AAvCJ,MAsCE,UAEE,IAAG;AAxCP,MAsCE,UAGE,IAAG;AAzCP,MAsCE,UAIE;EACE,cAAA;EACA,yBAAA;EACA,mBAAA;;AC9CN;EACE,eAAA;EACA,uBAAA;EACA,cAAA;EACA,iBAAA;EACA,cAAA;EACA,cAAA;EACA,kBAAA;EACA,mBAAA;EACA,wBAAA;EACA,oBAAA;;AAIE,MADD,MACE;AACD,MAFD,MAEE;EACC,cAAA;EACA,qBAAA;EACA,eAAA;;AAKJ,MAAC;EACC,aAAA;;AAIF,IAAK;EACH,kBAAA;EACA,SAAA;;AAOJ;ErBmhBE,yBAAA;;AAEE,cADD,MACE;AACD,cAFD,MAEE;EACC,yBAAA;;AqBnhBN;ErB+gBE,yBAAA;;AAEE,cADD,MACE;AACD,cAFD,MAEE;EACC,yBAAA;;AqB/gBN;ErB2gBE,yBAAA;;AAEE,cADD,MACE;AACD,cAFD,MAEE;EACC,yBAAA;;AqB3gBN;ErBugBE,yBAAA;;AAEE,WADD,MACE;AACD,WAFD,MAEE;EACC,yBAAA;;AqBvgBN;ErBmgBE,yBAAA;;AAEE,cADD,MACE;AACD,cAFD,MAEE;EACC,yBAAA;;AqBngBN;ErB+fE,yBAAA;;AAEE,aADD,MACE;AACD,aAFD,MAEE;EACC,yBAAA;;AsB1jBN;EACE,qBAAA;EACA,eAAA;EACA,gBAAA;EACA,eAAA;EACA,iBAAA;EACA,cAAA;EACA,cAAA;EACA,wBAAA;EACA,mBAAA;EACA,kBAAA;EACA,yBAAA;EACA,mBAAA;;AAGA,MAAC;EACC,aAAA;;AAIF,IAAK;EACH,kBAAA;EACA,SAAA;;AAEF,OAAQ;EACN,MAAA;EACA,gBAAA;;AAMF,CADD,MACE;AACD,CAFD,MAEE;EACC,cAAA;EACA,qBAAA;EACA,eAAA;;AAKJ,CAAC,gBAAgB,OAAQ;AACzB,UAAW,UAAU,IAAI;EACvB,cAAA;EACA,yBAAA;;AAEF,UAAW,KAAK,IAAI;EAClB,gBAAA;;AChDF;EACE,aAAA;EACA,mBAAA;EACA,cAAA;EACA,yBAAA;;AAJF,UAME;AANF,UAOE;EACE,cAAA;;AARJ,UAUE;EACE,mBAAA;EACA,eAAA;EACA,gBAAA;;AAGF,UAAW;EACT,kBAAA;;AAjBJ,UAoBE;EACE,eAAA;;AAiBJ,mBAdgD;EAchD;IAbI,iBAAA;IACA,oBAAA;;EAEA,UAAW;IACT,kBAAA;IACA,mBAAA;;EAQN,UALI;EAKJ,UAJI;IACE,eAAA;;;ArBlCN;EACE,cAAA;EACA,YAAA;EACA,mBAAA;EACA,uBAAA;EACA,yBAAA;EACA,yBAAA;EACA,kBAAA;EFkHA,wCAAA;EACQ,gCAAA;;AE1HV,UAUE;AAVF,UAWE,EAAE;EAEA,iBAAA;EACA,kBAAA;;AAIF,CAAC,UAAC;AACF,CAAC,UAAC;AACF,CAAC,UAAC;EACA,qBAAA;;AArBJ,UAyBE;EACE,YAAA;EACA,cAAA;;AsBzBJ;EACE,aAAA;EACA,mBAAA;EACA,6BAAA;EACA,kBAAA;;AAJF,MAOE;EACE,aAAA;EAEA,cAAA;;AAVJ,MAaE;EACE,iBAAA;;AAdJ,MAkBE;AAlBF,MAmBE;EACE,gBAAA;;AApBJ,MAsBE,IAAI;EACF,eAAA;;AAQJ;EACC,mBAAA;;AADD,kBAIE;EACE,kBAAA;EACA,SAAA;EACA,YAAA;EACA,cAAA;;AAQJ;ExBmXE,yBAAA;EACA,qBAAA;EACA,cAAA;;AwBrXF,cxBuXE;EACE,yBAAA;;AwBxXJ,cxB0XE;EACE,cAAA;;AwBxXJ;ExBgXE,yBAAA;EACA,qBAAA;EACA,cAAA;;AwBlXF,WxBoXE;EACE,yBAAA;;AwBrXJ,WxBuXE;EACE,cAAA;;AwBrXJ;ExB6WE,yBAAA;EACA,qBAAA;EACA,cAAA;;AwB/WF,cxBiXE;EACE,yBAAA;;AwBlXJ,cxBoXE;EACE,cAAA;;AwBlXJ;ExB0WE,yBAAA;EACA,qBAAA;EACA,cAAA;;AwB5WF,axB8WE;EACE,yBAAA;;AwB/WJ,axBiXE;EACE,cAAA;;AyBzaJ;EACE;IAAQ,2BAAA;;EACR;IAAQ,wBAAA;;;AAIV;EACE;IAAQ,2BAAA;;EACR;IAAQ,wBAAA;;;AASV;EACE,gBAAA;EACA,YAAA;EACA,mBAAA;EACA,yBAAA;EACA,kBAAA;EzB0FA,sDAAA;EACQ,8CAAA;;AyBtFV;EACE,WAAA;EACA,SAAA;EACA,YAAA;EACA,eAAA;EACA,iBAAA;EACA,cAAA;EACA,kBAAA;EACA,yBAAA;EzB6EA,sDAAA;EACQ,8CAAA;EAKR,mCAAA;EACQ,2BAAA;;AyB9EV,iBAAkB;EzBqSd,kBAAkB,2LAAlB;EACA,kBAAkB,mLAAlB;EyBpSF,0BAAA;;AAIF,SAAS,OAAQ;EzBoJf,0DAAA;EACQ,kDAAA;;AyB5IV;EzBkiBE,yBAAA;;AACA,iBAAkB;EA7QhB,kBAAkB,2LAAlB;EACA,kBAAkB,mLAAlB;;AyBnRJ;EzB8hBE,yBAAA;;AACA,iBAAkB;EA7QhB,kBAAkB,2LAAlB;EACA,kBAAkB,mLAAlB;;AyB/QJ;EzB0hBE,yBAAA;;AACA,iBAAkB;EA7QhB,kBAAkB,2LAAlB;EACA,kBAAkB,mLAAlB;;AyB3QJ;EzBshBE,yBAAA;;AACA,iBAAkB;EA7QhB,kBAAkB,2LAAlB;EACA,kBAAkB,mLAAlB;;A0B/UJ;AACA;EACE,gBAAA;EACA,OAAA;;AAIF;AACA,MAAO;EACL,gBAAA;;AAEF,MAAM;EACJ,aAAA;;AAIF;EACE,cAAA;;AAIF;EACE,eAAA;;AAOF,MACE;EACE,kBAAA;;AAFJ,MAIE;EACE,iBAAA;;AASJ;EACE,eAAA;EACA,gBAAA;;AC7CF;EAEE,mBAAA;EACA,eAAA;;AAQF;EACE,kBAAA;EACA,cAAA;EACA,kBAAA;EAEA,mBAAA;EACA,yBAAA;EACA,yBAAA;;AAGA,gBAAC;E3BqED,4BAAA;EACC,2BAAA;;A2BnED,gBAAC;EACC,gBAAA;E3ByEF,+BAAA;EACC,8BAAA;;A2BxFH,gBAmBE;EACE,YAAA;;AApBJ,gBAsBE,SAAS;EACP,iBAAA;;AAUJ,CAAC;EACC,cAAA;;AADF,CAAC,gBAGC;EACE,cAAA;;AAIF,CARD,gBAQE;AACD,CATD,gBASE;EACC,qBAAA;EACA,yBAAA;;AAIF,CAfD,gBAeE;AACD,CAhBD,gBAgBE,OAAO;AACR,CAjBD,gBAiBE,OAAO;EACN,UAAA;EACA,cAAA;EACA,yBAAA;EACA,qBAAA;;AANF,CAfD,gBAeE,OASC;AARF,CAhBD,gBAgBE,OAAO,MAQN;AAPF,CAjBD,gBAiBE,OAAO,MAON;EACE,cAAA;;AAVJ,CAfD,gBAeE,OAYC;AAXF,CAhBD,gBAgBE,OAAO,MAWN;AAVF,CAjBD,gBAiBE,OAAO,MAUN;EACE,cAAA;;A3BoYJ,iBAAiB;EACf,cAAA;EACA,yBAAA;;AAEA,CAAC,iBAJc;EAKb,cAAA;;AADF,CAAC,iBAJc,OAOb;EAA2B,cAAA;;AAE3B,CALD,iBAJc,OASZ;AACD,CAND,iBAJc,OAUZ;EACC,cAAA;EACA,yBAAA;;AAEF,CAVD,iBAJc,OAcZ;AACD,CAXD,iBAJc,OAeZ,OAAO;AACR,CAZD,iBAJc,OAgBZ,OAAO;EACN,WAAA;EACA,yBAAA;EACA,qBAAA;;AAnBN,iBAAiB;EACf,cAAA;EACA,yBAAA;;AAEA,CAAC,iBAJc;EAKb,cAAA;;AADF,CAAC,iBAJc,IAOb;EAA2B,cAAA;;AAE3B,CALD,iBAJc,IASZ;AACD,CAND,iBAJc,IAUZ;EACC,cAAA;EACA,yBAAA;;AAEF,CAVD,iBAJc,IAcZ;AACD,CAXD,iBAJc,IAeZ,OAAO;AACR,CAZD,iBAJc,IAgBZ,OAAO;EACN,WAAA;EACA,yBAAA;EACA,qBAAA;;AAnBN,iBAAiB;EACf,cAAA;EACA,yBAAA;;AAEA,CAAC,iBAJc;EAKb,cAAA;;AADF,CAAC,iBAJc,OAOb;EAA2B,cAAA;;AAE3B,CALD,iBAJc,OASZ;AACD,CAND,iBAJc,OAUZ;EACC,cAAA;EACA,yBAAA;;AAEF,CAVD,iBAJc,OAcZ;AACD,CAXD,iBAJc,OAeZ,OAAO;AACR,CAZD,iBAJc,OAgBZ,OAAO;EACN,WAAA;EACA,yBAAA;EACA,qBAAA;;AAnBN,iBAAiB;EACf,cAAA;EACA,yBAAA;;AAEA,CAAC,iBAJc;EAKb,cAAA;;AADF,CAAC,iBAJc,MAOb;EAA2B,cAAA;;AAE3B,CALD,iBAJc,MASZ;AACD,CAND,iBAJc,MAUZ;EACC,cAAA;EACA,yBAAA;;AAEF,CAVD,iBAJc,MAcZ;AACD,CAXD,iBAJc,MAeZ,OAAO;AACR,CAZD,iBAJc,MAgBZ,OAAO;EACN,WAAA;EACA,yBAAA;EACA,qBAAA;;A2BlYR;EACE,aAAA;EACA,kBAAA;;AAEF;EACE,gBAAA;EACA,gBAAA;;ACtGF;EACE,mBAAA;EACA,yBAAA;EACA,6BAAA;EACA,kBAAA;E5B+GA,iDAAA;EACQ,yCAAA;;A4B3GV;EACE,aAAA;;AAKF;EACE,kBAAA;EACA,oCAAA;E5B4EA,4BAAA;EACC,2BAAA;;A4B/EH,cAKE,YAAY;EACV,cAAA;;AAKJ;EACE,aAAA;EACA,gBAAA;EACA,eAAA;EACA,cAAA;;AAJF,YAME;EACE,cAAA;;AAKJ;EACE,kBAAA;EACA,yBAAA;EACA,6BAAA;E5B4DA,+BAAA;EACC,8BAAA;;A4BnDH,MACE;EACE,gBAAA;;AAFJ,MACE,cAGE;EACE,mBAAA;EACA,gBAAA;;AAIF,MATF,cASG,YACC,iBAAgB;EACd,aAAA;E5B8BN,4BAAA;EACC,2BAAA;;A4B1BC,MAhBF,cAgBG,WACC,iBAAgB;EACd,gBAAA;E5B+BN,+BAAA;EACC,8BAAA;;A4BzBH,cAAe,cACb,iBAAgB;EACd,mBAAA;;AAUJ,MACE;AADF,MAEE,oBAAoB;EAClB,gBAAA;;AAHJ,MAME,SAAQ;AANV,MAOE,oBAAmB,YAAa,SAAQ;E5BHxC,4BAAA;EACC,2BAAA;;A4BLH,MAME,SAAQ,YAIN,QAAO,YAEL,KAAI,YACF,GAAE;AAbV,MAOE,oBAAmB,YAAa,SAAQ,YAGtC,QAAO,YAEL,KAAI,YACF,GAAE;AAbV,MAME,SAAQ,YAKN,QAAO,YACL,KAAI,YACF,GAAE;AAbV,MAOE,oBAAmB,YAAa,SAAQ,YAItC,QAAO,YACL,KAAI,YACF,GAAE;AAbV,MAME,SAAQ,YAIN,QAAO,YAEL,KAAI,YAEF,GAAE;AAdV,MAOE,oBAAmB,YAAa,SAAQ,YAGtC,QAAO,YAEL,KAAI,YAEF,GAAE;AAdV,MAME,SAAQ,YAKN,QAAO,YACL,KAAI,YAEF,GAAE;AAdV,MAOE,oBAAmB,YAAa,SAAQ,YAItC,QAAO,YACL,KAAI,YAEF,GAAE;EACA,2BAAA;;AAfV,MAME,SAAQ,YAIN,QAAO,YAEL,KAAI,YAKF,GAAE;AAjBV,MAOE,oBAAmB,YAAa,SAAQ,YAGtC,QAAO,YAEL,KAAI,YAKF,GAAE;AAjBV,MAME,SAAQ,YAKN,QAAO,YACL,KAAI,YAKF,GAAE;AAjBV,MAOE,oBAAmB,YAAa,SAAQ,YAItC,QAAO,YACL,KAAI,YAKF,GAAE;AAjBV,MAME,SAAQ,YAIN,QAAO,YAEL,KAAI,YAMF,GAAE;AAlBV,MAOE,oBAAmB,YAAa,SAAQ,YAGtC,QAAO,YAEL,KAAI,YAMF,GAAE;AAlBV,MAME,SAAQ,YAKN,QAAO,YACL,KAAI,YAMF,GAAE;AAlBV,MAOE,oBAAmB,YAAa,SAAQ,YAItC,QAAO,YACL,KAAI,YAMF,GAAE;EACA,4BAAA;;AAnBV,MAyBE,SAAQ;AAzBV,MA0BE,oBAAmB,WAAY,SAAQ;E5BdvC,+BAAA;EACC,8BAAA;;A4BbH,MAyBE,SAAQ,WAIN,QAAO,WAEL,KAAI,WACF,GAAE;AAhCV,MA0BE,oBAAmB,WAAY,SAAQ,WAGrC,QAAO,WAEL,KAAI,WACF,GAAE;AAhCV,MAyBE,SAAQ,WAKN,QAAO,WACL,KAAI,WACF,GAAE;AAhCV,MA0BE,oBAAmB,WAAY,SAAQ,WAIrC,QAAO,WACL,KAAI,WACF,GAAE;AAhCV,MAyBE,SAAQ,WAIN,QAAO,WAEL,KAAI,WAEF,GAAE;AAjCV,MA0BE,oBAAmB,WAAY,SAAQ,WAGrC,QAAO,WAEL,KAAI,WAEF,GAAE;AAjCV,MAyBE,SAAQ,WAKN,QAAO,WACL,KAAI,WAEF,GAAE;AAjCV,MA0BE,oBAAmB,WAAY,SAAQ,WAIrC,QAAO,WACL,KAAI,WAEF,GAAE;EACA,8BAAA;;AAlCV,MAyBE,SAAQ,WAIN,QAAO,WAEL,KAAI,WAKF,GAAE;AApCV,MA0BE,oBAAmB,WAAY,SAAQ,WAGrC,QAAO,WAEL,KAAI,WAKF,GAAE;AApCV,MAyBE,SAAQ,WAKN,QAAO,WACL,KAAI,WAKF,GAAE;AApCV,MA0BE,oBAAmB,WAAY,SAAQ,WAIrC,QAAO,WACL,KAAI,WAKF,GAAE;AApCV,MAyBE,SAAQ,WAIN,QAAO,WAEL,KAAI,WAMF,GAAE;AArCV,MA0BE,oBAAmB,WAAY,SAAQ,WAGrC,QAAO,WAEL,KAAI,WAMF,GAAE;AArCV,MAyBE,SAAQ,WAKN,QAAO,WACL,KAAI,WAMF,GAAE;AArCV,MA0BE,oBAAmB,WAAY,SAAQ,WAIrC,QAAO,WACL,KAAI,WAMF,GAAE;EACA,+BAAA;;AAtCV,MA2CE,cAAc;AA3ChB,MA4CE,cAAc;EACZ,6BAAA;;AA7CJ,MA+CE,SAAS,QAAO,YAAa,KAAI,YAAa;AA/ChD,MAgDE,SAAS,QAAO,YAAa,KAAI,YAAa;EAC5C,aAAA;;AAjDJ,MAmDE;AAnDF,MAoDE,oBAAoB;EAClB,SAAA;;AArDJ,MAmDE,kBAGE,QAGE,KACE,KAAI;AA1DZ,MAoDE,oBAAoB,kBAElB,QAGE,KACE,KAAI;AA1DZ,MAmDE,kBAIE,QAEE,KACE,KAAI;AA1DZ,MAoDE,oBAAoB,kBAGlB,QAEE,KACE,KAAI;AA1DZ,MAmDE,kBAKE,QACE,KACE,KAAI;AA1DZ,MAoDE,oBAAoB,kBAIlB,QACE,KACE,KAAI;AA1DZ,MAmDE,kBAGE,QAGE,KAEE,KAAI;AA3DZ,MAoDE,oBAAoB,kBAElB,QAGE,KAEE,KAAI;AA3DZ,MAmDE,kBAIE,QAEE,KAEE,KAAI;AA3DZ,MAoDE,oBAAoB,kBAGlB,QAEE,KAEE,KAAI;AA3DZ,MAmDE,kBAKE,QACE,KAEE,KAAI;AA3DZ,MAoDE,oBAAoB,kBAIlB,QACE,KAEE,KAAI;EACF,cAAA;;AA5DV,MAmDE,kBAGE,QAGE,KAKE,KAAI;AA9DZ,MAoDE,oBAAoB,kBAElB,QAGE,KAKE,KAAI;AA9DZ,MAmDE,kBAIE,QAEE,KAKE,KAAI;AA9DZ,MAoDE,oBAAoB,kBAGlB,QAEE,KAKE,KAAI;AA9DZ,MAmDE,kBAKE,QACE,KAKE,KAAI;AA9DZ,MAoDE,oBAAoB,kBAIlB,QACE,KAKE,KAAI;AA9DZ,MAmDE,kBAGE,QAGE,KAME,KAAI;AA/DZ,MAoDE,oBAAoB,kBAElB,QAGE,KAME,KAAI;AA/DZ,MAmDE,kBAIE,QAEE,KAME,KAAI;AA/DZ,MAoDE,oBAAoB,kBAGlB,QAEE,KAME,KAAI;AA/DZ,MAmDE,kBAKE,QACE,KAME,KAAI;AA/DZ,MAoDE,oBAAoB,kBAIlB,QACE,KAME,KAAI;EACF,eAAA;;AAhEV,MAmDE,kBAiBE,QAEE,KAAI,YACF;AAvER,MAoDE,oBAAoB,kBAgBlB,QAEE,KAAI,YACF;AAvER,MAmDE,kBAkBE,QACE,KAAI,YACF;AAvER,MAoDE,oBAAoB,kBAiBlB,QACE,KAAI,YACF;AAvER,MAmDE,kBAiBE,QAEE,KAAI,YAEF;AAxER,MAoDE,oBAAoB,kBAgBlB,QAEE,KAAI,YAEF;AAxER,MAmDE,kBAkBE,QACE,KAAI,YAEF;AAxER,MAoDE,oBAAoB,kBAiBlB,QACE,KAAI,YAEF;EACE,gBAAA;;AAzEV,MAmDE,kBA0BE,QAEE,KAAI,WACF;AAhFR,MAoDE,oBAAoB,kBAyBlB,QAEE,KAAI,WACF;AAhFR,MAmDE,kBA2BE,QACE,KAAI,WACF;AAhFR,MAoDE,oBAAoB,kBA0BlB,QACE,KAAI,WACF;AAhFR,MAmDE,kBA0BE,QAEE,KAAI,WAEF;AAjFR,MAoDE,oBAAoB,kBAyBlB,QAEE,KAAI,WAEF;AAjFR,MAmDE,kBA2BE,QACE,KAAI,WAEF;AAjFR,MAoDE,oBAAoB,kBA0BlB,QACE,KAAI,WAEF;EACE,gBAAA;;AAlFV,MAuFE;EACE,SAAA;EACA,gBAAA;;AAUJ;EACE,mBAAA;;AADF,YAIE;EACE,gBAAA;EACA,kBAAA;EACA,gBAAA;;AAPJ,YAIE,OAIE;EACE,eAAA;;AATN,YAaE;EACE,gBAAA;;AAdJ,YAaE,eAEE,kBAAkB;EAChB,6BAAA;;AAhBN,YAmBE;EACE,aAAA;;AApBJ,YAmBE,cAEE,kBAAkB;EAChB,gCAAA;;AAON;E5BsLE,qBAAA;;AAEA,cAAE;EACA,cAAA;EACA,yBAAA;EACA,qBAAA;;AAHF,cAAE,iBAKA,kBAAkB;EAChB,yBAAA;;AAGJ,cAAE,gBACA,kBAAkB;EAChB,4BAAA;;A4BhMN;E5BmLE,qBAAA;;AAEA,cAAE;EACA,cAAA;EACA,yBAAA;EACA,qBAAA;;AAHF,cAAE,iBAKA,kBAAkB;EAChB,yBAAA;;AAGJ,cAAE,gBACA,kBAAkB;EAChB,4BAAA;;A4B7LN;E5BgLE,qBAAA;;AAEA,cAAE;EACA,cAAA;EACA,yBAAA;EACA,qBAAA;;AAHF,cAAE,iBAKA,kBAAkB;EAChB,yBAAA;;AAGJ,cAAE,gBACA,kBAAkB;EAChB,4BAAA;;A4B1LN;E5B6KE,qBAAA;;AAEA,WAAE;EACA,cAAA;EACA,yBAAA;EACA,qBAAA;;AAHF,WAAE,iBAKA,kBAAkB;EAChB,yBAAA;;AAGJ,WAAE,gBACA,kBAAkB;EAChB,4BAAA;;A4BvLN;E5B0KE,qBAAA;;AAEA,cAAE;EACA,cAAA;EACA,yBAAA;EACA,qBAAA;;AAHF,cAAE,iBAKA,kBAAkB;EAChB,yBAAA;;AAGJ,cAAE,gBACA,kBAAkB;EAChB,4BAAA;;A4BpLN;E5BuKE,qBAAA;;AAEA,aAAE;EACA,cAAA;EACA,yBAAA;EACA,qBAAA;;AAHF,aAAE,iBAKA,kBAAkB;EAChB,yBAAA;;AAGJ,aAAE,gBACA,kBAAkB;EAChB,4BAAA;;A6B5ZN;EACE,gBAAA;EACA,aAAA;EACA,mBAAA;EACA,yBAAA;EACA,yBAAA;EACA,kBAAA;E7B6GA,uDAAA;EACQ,+CAAA;;A6BpHV,KAQE;EACE,kBAAA;EACA,iCAAA;;AAKJ;EACE,aAAA;EACA,kBAAA;;AAEF;EACE,YAAA;EACA,kBAAA;;ACtBF;EACE,YAAA;EACA,eAAA;EACA,iBAAA;EACA,cAAA;EACA,cAAA;EACA,4BAAA;E9BkRA,YAAA;EAGA,yBAAA;;A8BlRA,MAAC;AACD,MAAC;EACC,cAAA;EACA,qBAAA;EACA,eAAA;E9B2QF,YAAA;EAGA,yBAAA;;A8BvQA,MAAM;EACJ,UAAA;EACA,eAAA;EACA,uBAAA;EACA,SAAA;EACA,wBAAA;;ACpBJ;EACE,gBAAA;;AAIF;EACE,aAAA;EACA,cAAA;EACA,kBAAA;EACA,eAAA;EACA,MAAA;EACA,QAAA;EACA,SAAA;EACA,OAAA;EACA,aAAA;EACA,iCAAA;EAIA,UAAA;;AAGA,MAAC,KAAM;E/BiIP,mBAAmB,kBAAnB;EACI,eAAe,kBAAf;EACI,WAAW,kBAAX;EApBR,mDAAA;EACG,6CAAA;EACE,yCAAA;EACG,mCAAA;;A+B9GR,MAAC,GAAI;E/B6HL,mBAAmB,eAAnB;EACI,eAAe,eAAf;EACI,WAAW,eAAX;;A+B3HV;EACE,kBAAA;EACA,WAAA;EACA,YAAA;;AAIF;EACE,kBAAA;EACA,yBAAA;EACA,yBAAA;EACA,oCAAA;EACA,kBAAA;E/BqEA,gDAAA;EACQ,wCAAA;E+BpER,4BAAA;EAEA,aAAA;;AAIF;EACE,eAAA;EACA,MAAA;EACA,QAAA;EACA,SAAA;EACA,OAAA;EACA,aAAA;EACA,yBAAA;;AAEA,eAAC;E/BwND,UAAA;EAGA,wBAAA;;A+B1NA,eAAC;E/BuND,YAAA;EAGA,yBAAA;;A+BrNF;EACE,aAAA;EACA,gCAAA;EACA,yBAAA;;AAGF,aAAc;EACZ,gBAAA;;AAIF;EACE,SAAA;EACA,uBAAA;;AAKF;EACE,kBAAA;EACA,aAAA;;AAIF;EACE,gBAAA;EACA,uBAAA;EACA,iBAAA;EACA,6BAAA;;AAJF,aAQE,KAAK;EACH,gBAAA;EACA,gBAAA;;AAVJ,aAaE,WAAW,KAAK;EACd,iBAAA;;AAdJ,aAiBE,WAAW;EACT,cAAA;;AAmBJ,QAdmC;EAEjC;IACE,YAAA;IACA,iBAAA;;EAEF;I/BPA,iDAAA;IACQ,yCAAA;;E+BWR;IAAY,YAAA;;;AAMd,QAHmC;EACjC;IAAY,YAAA;;;ACnId;EACE,kBAAA;EACA,aAAA;EACA,cAAA;EACA,mBAAA;EACA,eAAA;EACA,gBAAA;EhCiRA,UAAA;EAGA,wBAAA;;AgCjRA,QAAC;EhC8QD,YAAA;EAGA,yBAAA;;AgChRA,QAAC;EAAU,gBAAA;EAAmB,cAAA;;AAC9B,QAAC;EAAU,gBAAA;EAAmB,cAAA;;AAC9B,QAAC;EAAU,eAAA;EAAmB,cAAA;;AAC9B,QAAC;EAAU,iBAAA;EAAmB,cAAA;;AAIhC;EACE,gBAAA;EACA,gBAAA;EACA,cAAA;EACA,kBAAA;EACA,qBAAA;EACA,yBAAA;EACA,kBAAA;;AAIF;EACE,kBAAA;EACA,QAAA;EACA,SAAA;EACA,yBAAA;EACA,mBAAA;;AAGA,QAAC,IAAK;EACJ,SAAA;EACA,SAAA;EACA,iBAAA;EACA,uBAAA;EACA,yBAAA;;AAEF,QAAC,SAAU;EACT,SAAA;EACA,SAAA;EACA,uBAAA;EACA,yBAAA;;AAEF,QAAC,UAAW;EACV,SAAA;EACA,UAAA;EACA,uBAAA;EACA,yBAAA;;AAEF,QAAC,MAAO;EACN,QAAA;EACA,OAAA;EACA,gBAAA;EACA,2BAAA;EACA,2BAAA;;AAEF,QAAC,KAAM;EACL,QAAA;EACA,QAAA;EACA,gBAAA;EACA,2BAAA;EACA,0BAAA;;AAEF,QAAC,OAAQ;EACP,MAAA;EACA,SAAA;EACA,iBAAA;EACA,uBAAA;EACA,4BAAA;;AAEF,QAAC,YAAa;EACZ,MAAA;EACA,SAAA;EACA,uBAAA;EACA,4BAAA;;AAEF,QAAC,aAAc;EACb,MAAA;EACA,UAAA;EACA,uBAAA;EACA,4BAAA;;ACvFJ;EACE,kBAAA;EACA,MAAA;EACA,OAAA;EACA,aAAA;EACA,aAAA;EACA,gBAAA;EACA,YAAA;EACA,gBAAA;EACA,yBAAA;EACA,4BAAA;EACA,yBAAA;EACA,oCAAA;EACA,kBAAA;EjCuGA,iDAAA;EACQ,yCAAA;EiCpGR,mBAAA;;AAGA,QAAC;EAAW,iBAAA;;AACZ,QAAC;EAAW,iBAAA;;AACZ,QAAC;EAAW,gBAAA;;AACZ,QAAC;EAAW,kBAAA;;AAGd;EACE,SAAA;EACA,iBAAA;EACA,eAAA;EACA,mBAAA;EACA,iBAAA;EACA,yBAAA;EACA,gCAAA;EACA,0BAAA;;AAGF;EACE,iBAAA;;AAQA,QADO;AAEP,QAFO,SAEN;EACC,kBAAA;EACA,cAAA;EACA,QAAA;EACA,SAAA;EACA,yBAAA;EACA,mBAAA;;AAGJ,QAAS;EACP,kBAAA;;AAEF,QAAS,SAAQ;EACf,kBAAA;EACA,SAAS,EAAT;;AAIA,QAAC,IAAK;EACJ,SAAA;EACA,kBAAA;EACA,sBAAA;EACA,yBAAA;EACA,qCAAA;EACA,aAAA;;AACA,QAPD,IAAK,SAOH;EACC,SAAS,GAAT;EACA,WAAA;EACA,kBAAA;EACA,sBAAA;EACA,yBAAA;;AAGJ,QAAC,MAAO;EACN,QAAA;EACA,WAAA;EACA,iBAAA;EACA,oBAAA;EACA,2BAAA;EACA,uCAAA;;AACA,QAPD,MAAO,SAOL;EACC,SAAS,GAAT;EACA,SAAA;EACA,aAAA;EACA,oBAAA;EACA,2BAAA;;AAGJ,QAAC,OAAQ;EACP,SAAA;EACA,kBAAA;EACA,mBAAA;EACA,4BAAA;EACA,wCAAA;EACA,UAAA;;AACA,QAPD,OAAQ,SAON;EACC,SAAS,GAAT;EACA,QAAA;EACA,kBAAA;EACA,mBAAA;EACA,4BAAA;;AAIJ,QAAC,KAAM;EACL,QAAA;EACA,YAAA;EACA,iBAAA;EACA,qBAAA;EACA,0BAAA;EACA,sCAAA;;AACA,QAPD,KAAM,SAOJ;EACC,SAAS,GAAT;EACA,UAAA;EACA,qBAAA;EACA,0BAAA;EACA,aAAA;;A9B1HN;EACE,kBAAA;;AAGF;EACE,kBAAA;EACA,gBAAA;EACA,WAAA;;AAHF,eAKE;EACE,aAAA;EACA,kBAAA;EH8GF,yCAAA;EACQ,iCAAA;;AGtHV,eAKE,QAME;AAXJ,eAKE,QAOE,IAAI;EAEF,cAAA;;AAdN,eAkBE;AAlBF,eAmBE;AAnBF,eAoBE;EAAU,cAAA;;AApBZ,eAsBE;EACE,OAAA;;AAvBJ,eA0BE;AA1BF,eA2BE;EACE,kBAAA;EACA,MAAA;EACA,WAAA;;AA9BJ,eAiCE;EACE,UAAA;;AAlCJ,eAoCE;EACE,WAAA;;AArCJ,eAuCE,QAAO;AAvCT,eAwCE,QAAO;EACL,OAAA;;AAzCJ,eA4CE,UAAS;EACP,WAAA;;AA7CJ,eA+CE,UAAS;EACP,UAAA;;AAQJ;EACE,kBAAA;EACA,MAAA;EACA,OAAA;EACA,SAAA;EACA,UAAA;EHsNA,YAAA;EAGA,yBAAA;EGvNA,eAAA;EACA,cAAA;EACA,kBAAA;EACA,yCAAA;;AAKA,iBAAC;EH8NC,kBAAkB,8BAA8B,mCAAyC,uCAAzF;EACA,kBAAmB,4EAAnB;EACA,2BAAA;EACA,sHAAA;;AG9NF,iBAAC;EACC,UAAA;EACA,QAAA;EHyNA,kBAAkB,8BAA8B,sCAAyC,oCAAzF;EACA,kBAAmB,4EAAnB;EACA,2BAAA;EACA,sHAAA;;AGvNF,iBAAC;AACD,iBAAC;EACC,aAAA;EACA,cAAA;EACA,qBAAA;EH8LF,YAAA;EAGA,yBAAA;;AG9NF,iBAkCE;AAlCF,iBAmCE;AAnCF,iBAoCE;AApCF,iBAqCE;EACE,kBAAA;EACA,QAAA;EACA,UAAA;EACA,qBAAA;;AAzCJ,iBA2CE;AA3CF,iBA4CE;EACE,SAAA;;AA7CJ,iBA+CE;AA/CF,iBAgDE;EACE,UAAA;;AAjDJ,iBAmDE;AAnDF,iBAoDE;EACE,WAAA;EACA,YAAA;EACA,iBAAA;EACA,kBAAA;EACA,kBAAA;;AAIA,iBADF,WACG;EACC,SAAS,OAAT;;AAIF,iBADF,WACG;EACC,SAAS,OAAT;;AAUN;EACE,kBAAA;EACA,YAAA;EACA,SAAA;EACA,WAAA;EACA,UAAA;EACA,iBAAA;EACA,eAAA;EACA,gBAAA;EACA,kBAAA;;AATF,oBAWE;EACE,qBAAA;EACA,WAAA;EACA,YAAA;EACA,WAAA;EACA,mBAAA;EACA,yBAAA;EACA,mBAAA;EACA,eAAA;EAUA,yBAAA;EACA,kCAAA;;AA9BJ,oBAgCE;EACE,SAAA;EACA,WAAA;EACA,YAAA;EACA,yBAAA;;AAOJ;EACE,kBAAA;EACA,SAAA;EACA,UAAA;EACA,YAAA;EACA,WAAA;EACA,iBAAA;EACA,oBAAA;EACA,cAAA;EACA,kBAAA;EACA,yCAAA;;AACA,iBAAE;EACA,iBAAA;;AAkCJ,mBA5B8C;EAG5C,iBACE;EADF,iBAEE;EAFF,iBAGE;EAHF,iBAIE;IACE,WAAA;IACA,YAAA;IACA,iBAAA;IACA,kBAAA;IACA,eAAA;;EAKJ;IACE,SAAA;IACA,UAAA;IACA,oBAAA;;EAIF;IACE,YAAA;;;AHlNF,SAAC;AACD,SAAC;AMXH,UNUG;AMVH,UNWG;AMSH,gBNVG;AMUH,gBNTG;AMkBH,INnBG;AMmBH,INlBG;AQsXH,gBAoBE,YR3YC;AQuXH,gBAoBE,YR1YC;AUkBH,YVnBG;AUmBH,YVlBG;AU8HH,mBAWE,aV1IC;AU+HH,mBAWE,aVzIC;AeZH,IfWG;AeXH,IfYG;AgBVH,OhBSG;AgBTH,OhBUG;AgBUH,chBXG;AgBWH,chBVG;AgB6BH,gBhB9BG;AgB8BH,gBhB7BG;AoBfH,MpBcG;AoBdH,MpBeG;A4BLH,W5BIG;A4BJH,W5BKG;A+B+EH,a/BhFG;A+BgFH,a/B/EG;EACC,SAAS,GAAT;EACA,cAAA;;AAEF,SAAC;AMfH,UNeG;AMKH,gBNLG;AMcH,INdG;AQkXH,gBAoBE,YRtYC;AUcH,YVdG;AU0HH,mBAWE,aVrIC;AehBH,IfgBG;AgBdH,OhBcG;AgBMH,chBNG;AgByBH,gBhBzBG;AoBnBH,MpBmBG;A4BTH,W5BSG;A+B2EH,a/B3EG;EACC,WAAA;;AiBdJ;EjB6BE,cAAA;EACA,iBAAA;EACA,kBAAA;;AiB5BF;EACE,uBAAA;;AAEF;EACE,sBAAA;;AAQF;EACE,wBAAA;;AAEF;EACE,yBAAA;;AAEF;EACE,kBAAA;;AAEF;EjB8CE,WAAA;EACA,kBAAA;EACA,iBAAA;EACA,6BAAA;EACA,SAAA;;AiBzCF;EACE,wBAAA;EACA,6BAAA;;AAOF;EACE,eAAA;;AiBnCF;EACE,mBAAA;;AAKF;AACA;AACA;AACA;ElCylBE,wBAAA;;AkCjlBF,QAHqC;EAGrC;IlCykBE,yBAAA;;EACA,KAAK;IAAK,cAAA;;EACV,EAAE;IAAQ,kBAAA;;EACV,EAAE;EACF,EAAE;IAAQ,mBAAA;;;AkCxkBZ,QAHqC,uBAAgC;EAGrE;IlCokBE,yBAAA;;EACA,KAAK;IAAK,cAAA;;EACV,EAAE;IAAQ,kBAAA;;EACV,EAAE;EACF,EAAE;IAAQ,mBAAA;;;AkCnkBZ,QAHqC,uBAAgC;EAGrE;IlC+jBE,yBAAA;;EACA,KAAK;IAAK,cAAA;;EACV,EAAE;IAAQ,kBAAA;;EACV,EAAE;EACF,EAAE;IAAQ,mBAAA;;;AkC9jBZ,QAHqC;EAGrC;IlC0jBE,yBAAA;;EACA,KAAK;IAAK,cAAA;;EACV,EAAE;IAAQ,kBAAA;;EACV,EAAE;EACF,EAAE;IAAQ,mBAAA;;;AkCxjBZ,QAHqC;EAGrC;IlC4jBE,wBAAA;;;AkCvjBF,QAHqC,uBAAgC;EAGrE;IlCujBE,wBAAA;;;AkCljBF,QAHqC,uBAAgC;EAGrE;IlCkjBE,wBAAA;;;AkC7iBF,QAHqC;EAGrC;IlC6iBE,wBAAA;;;AkCtiBF;ElCsiBE,wBAAA;;AkChiBF;EAAA;IlCwhBE,yBAAA;;EACA,KAAK;IAAK,cAAA;;EACV,EAAE;IAAQ,kBAAA;;EACV,EAAE;EACF,EAAE;IAAQ,mBAAA;;;AkCthBZ;EAAA;IlC0hBE,wBAAA","sourcesContent":["/*! normalize.css v3.0.0 | MIT License | git.io/normalize */\n\n//\n// 1. Set default font family to sans-serif.\n// 2. Prevent iOS text size adjust after orientation change, without disabling\n// user zoom.\n//\n\nhtml {\n font-family: sans-serif; // 1\n -ms-text-size-adjust: 100%; // 2\n -webkit-text-size-adjust: 100%; // 2\n}\n\n//\n// Remove default margin.\n//\n\nbody {\n margin: 0;\n}\n\n// HTML5 display definitions\n// ==========================================================================\n\n//\n// Correct `block` display not defined in IE 8/9.\n//\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nnav,\nsection,\nsummary {\n display: block;\n}\n\n//\n// 1. Correct `inline-block` display not defined in IE 8/9.\n// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n//\n\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block; // 1\n vertical-align: baseline; // 2\n}\n\n//\n// Prevent modern browsers from displaying `audio` without controls.\n// Remove excess height in iOS 5 devices.\n//\n\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\n//\n// Address `[hidden]` styling not present in IE 8/9.\n// Hide the `template` element in IE, Safari, and Firefox < 22.\n//\n\n[hidden],\ntemplate {\n display: none;\n}\n\n// Links\n// ==========================================================================\n\n//\n// Remove the gray background color from active links in IE 10.\n//\n\na {\n background: transparent;\n}\n\n//\n// Improve readability when focused and also mouse hovered in all browsers.\n//\n\na:active,\na:hover {\n outline: 0;\n}\n\n// Text-level semantics\n// ==========================================================================\n\n//\n// Address styling not present in IE 8/9, Safari 5, and Chrome.\n//\n\nabbr[title] {\n border-bottom: 1px dotted;\n}\n\n//\n// Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome.\n//\n\nb,\nstrong {\n font-weight: bold;\n}\n\n//\n// Address styling not present in Safari 5 and Chrome.\n//\n\ndfn {\n font-style: italic;\n}\n\n//\n// Address variable `h1` font-size and margin within `section` and `article`\n// contexts in Firefox 4+, Safari 5, and Chrome.\n//\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n//\n// Address styling not present in IE 8/9.\n//\n\nmark {\n background: #ff0;\n color: #000;\n}\n\n//\n// Address inconsistent and variable font size in all browsers.\n//\n\nsmall {\n font-size: 80%;\n}\n\n//\n// Prevent `sub` and `sup` affecting `line-height` in all browsers.\n//\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsup {\n top: -0.5em;\n}\n\nsub {\n bottom: -0.25em;\n}\n\n// Embedded content\n// ==========================================================================\n\n//\n// Remove border when inside `a` element in IE 8/9.\n//\n\nimg {\n border: 0;\n}\n\n//\n// Correct overflow displayed oddly in IE 9.\n//\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\n// Grouping content\n// ==========================================================================\n\n//\n// Address margin not present in IE 8/9 and Safari 5.\n//\n\nfigure {\n margin: 1em 40px;\n}\n\n//\n// Address differences between Firefox and other browsers.\n//\n\nhr {\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n height: 0;\n}\n\n//\n// Contain overflow in all browsers.\n//\n\npre {\n overflow: auto;\n}\n\n//\n// Address odd `em`-unit font size rendering in all browsers.\n//\n\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\n// Forms\n// ==========================================================================\n\n//\n// Known limitation: by default, Chrome and Safari on OS X allow very limited\n// styling of `select`, unless a `border` property is set.\n//\n\n//\n// 1. Correct color not being inherited.\n// Known issue: affects color of disabled elements.\n// 2. Correct font properties not being inherited.\n// 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome.\n//\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit; // 1\n font: inherit; // 2\n margin: 0; // 3\n}\n\n//\n// Address `overflow` set to `hidden` in IE 8/9/10.\n//\n\nbutton {\n overflow: visible;\n}\n\n//\n// Address inconsistent `text-transform` inheritance for `button` and `select`.\n// All other form control elements do not inherit `text-transform` values.\n// Correct `button` style inheritance in Firefox, IE 8+, and Opera\n// Correct `select` style inheritance in Firefox.\n//\n\nbutton,\nselect {\n text-transform: none;\n}\n\n//\n// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n// and `video` controls.\n// 2. Correct inability to style clickable `input` types in iOS.\n// 3. Improve usability and consistency of cursor style between image-type\n// `input` and others.\n//\n\nbutton,\nhtml input[type=\"button\"], // 1\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button; // 2\n cursor: pointer; // 3\n}\n\n//\n// Re-set default cursor for disabled elements.\n//\n\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\n\n//\n// Remove inner padding and border in Firefox 4+.\n//\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\n\n//\n// Address Firefox 4+ setting `line-height` on `input` using `!important` in\n// the UA stylesheet.\n//\n\ninput {\n line-height: normal;\n}\n\n//\n// It's recommended that you don't attempt to style these elements.\n// Firefox's implementation doesn't respect box-sizing, padding, or width.\n//\n// 1. Address box sizing set to `content-box` in IE 8/9/10.\n// 2. Remove excess padding in IE 8/9/10.\n//\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box; // 1\n padding: 0; // 2\n}\n\n//\n// Fix the cursor style for Chrome's increment/decrement buttons. For certain\n// `font-size` values of the `input`, it causes the cursor style of the\n// decrement button to change from `default` to `text`.\n//\n\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n//\n// 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.\n// 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome\n// (include `-moz` to future-proof).\n//\n\ninput[type=\"search\"] {\n -webkit-appearance: textfield; // 1\n -moz-box-sizing: content-box;\n -webkit-box-sizing: content-box; // 2\n box-sizing: content-box;\n}\n\n//\n// Remove inner padding and search cancel button in Safari and Chrome on OS X.\n// Safari (but not Chrome) clips the cancel button when the search input has\n// padding (and `textfield` appearance).\n//\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n//\n// Define consistent border, margin, and padding.\n//\n\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\n\n//\n// 1. Correct `color` not being inherited in IE 8/9.\n// 2. Remove padding so people aren't caught out if they zero out fieldsets.\n//\n\nlegend {\n border: 0; // 1\n padding: 0; // 2\n}\n\n//\n// Remove default vertical scrollbar in IE 8/9.\n//\n\ntextarea {\n overflow: auto;\n}\n\n//\n// Don't inherit the `font-weight` (applied by a rule above).\n// NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n//\n\noptgroup {\n font-weight: bold;\n}\n\n// Tables\n// ==========================================================================\n\n//\n// Remove most spacing between table cells.\n//\n\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\ntd,\nth {\n padding: 0;\n}","//\n// Basic print styles\n// --------------------------------------------------\n// Source: https://github.com/h5bp/html5-boilerplate/blob/master/css/main.css\n\n@media print {\n\n * {\n text-shadow: none !important;\n color: #000 !important; // Black prints faster: h5bp.com/s\n background: transparent !important;\n box-shadow: none !important;\n }\n\n a,\n a:visited {\n text-decoration: underline;\n }\n\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n\n // Don't show links for images, or javascript/internal links\n a[href^=\"javascript:\"]:after,\n a[href^=\"#\"]:after {\n content: \"\";\n }\n\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n\n thead {\n display: table-header-group; // h5bp.com/t\n }\n\n tr,\n img {\n page-break-inside: avoid;\n }\n\n img {\n max-width: 100% !important;\n }\n\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n\n h2,\n h3 {\n page-break-after: avoid;\n }\n\n // Chrome (OSX) fix for https://github.com/twbs/bootstrap/issues/11245\n // Once fixed, we can just straight up remove this.\n select {\n background: #fff !important;\n }\n\n // Bootstrap components\n .navbar {\n display: none;\n }\n .table {\n td,\n th {\n background-color: #fff !important;\n }\n }\n .btn,\n .dropup > .btn {\n > .caret {\n border-top-color: #000 !important;\n }\n }\n .label {\n border: 1px solid #000;\n }\n\n .table {\n border-collapse: collapse !important;\n }\n .table-bordered {\n th,\n td {\n border: 1px solid #ddd !important;\n }\n }\n\n}\n","//\n// Scaffolding\n// --------------------------------------------------\n\n\n// Reset the box-sizing\n//\n// Heads up! This reset may cause conflicts with some third-party widgets.\n// For recommendations on resolving such conflicts, see\n// http://getbootstrap.com/getting-started/#third-box-sizing\n* {\n .box-sizing(border-box);\n}\n*:before,\n*:after {\n .box-sizing(border-box);\n}\n\n\n// Body reset\n\nhtml {\n font-size: 62.5%;\n -webkit-tap-highlight-color: rgba(0,0,0,0);\n}\n\nbody {\n font-family: @font-family-base;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @text-color;\n background-color: @body-bg;\n}\n\n// Reset fonts for relevant elements\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\n\n// Links\n\na {\n color: @link-color;\n text-decoration: none;\n\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: underline;\n }\n\n &:focus {\n .tab-focus();\n }\n}\n\n\n// Figures\n//\n// We reset this here because previously Normalize had no `figure` margins. This\n// ensures we don't break anyone's use of the element.\n\nfigure {\n margin: 0;\n}\n\n\n// Images\n\nimg {\n vertical-align: middle;\n}\n\n// Responsive images (ensure images don't scale beyond their parents)\n.img-responsive {\n .img-responsive();\n}\n\n// Rounded corners\n.img-rounded {\n border-radius: @border-radius-large;\n}\n\n// Image thumbnails\n//\n// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.\n.img-thumbnail {\n padding: @thumbnail-padding;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(all .2s ease-in-out);\n\n // Keep them at most 100% wide\n .img-responsive(inline-block);\n}\n\n// Perfect circle\n.img-circle {\n border-radius: 50%; // set radius in percents\n}\n\n\n// Horizontal rules\n\nhr {\n margin-top: @line-height-computed;\n margin-bottom: @line-height-computed;\n border: 0;\n border-top: 1px solid @hr-border;\n}\n\n\n// Only display content to screen readers\n//\n// See: http://a11yproject.com/posts/how-to-hide-content/\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0,0,0,0);\n border: 0;\n}\n","//\n// Mixins\n// --------------------------------------------------\n\n\n// Utilities\n// -------------------------\n\n// Clearfix\n// Source: http://nicolasgallagher.com/micro-clearfix-hack/\n//\n// For modern browsers\n// 1. The space content is one way to avoid an Opera bug when the\n// contenteditable attribute is included anywhere else in the document.\n// Otherwise it causes space to appear at the top and bottom of elements\n// that are clearfixed.\n// 2. The use of `table` rather than `block` is only necessary if using\n// `:before` to contain the top-margins of child elements.\n.clearfix() {\n &:before,\n &:after {\n content: \" \"; // 1\n display: table; // 2\n }\n &:after {\n clear: both;\n }\n}\n\n// WebKit-style focus\n.tab-focus() {\n // Default\n outline: thin dotted;\n // WebKit\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n\n// Center-align a block level element\n.center-block() {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n\n// Sizing shortcuts\n.size(@width; @height) {\n width: @width;\n height: @height;\n}\n.square(@size) {\n .size(@size; @size);\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n &::-moz-placeholder { color: @color; // Firefox\n opacity: 1; } // See https://github.com/twbs/bootstrap/pull/11526\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Text overflow\n// Requires inline-block or block for proper styling\n.text-overflow() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n// CSS image replacement\n//\n// Heads up! v3 launched with with only `.hide-text()`, but per our pattern for\n// mixins being reused as classes with the same name, this doesn't hold up. As\n// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`. Note\n// that we cannot chain the mixins together in Less, so they are repeated.\n//\n// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757\n\n// Deprecated as of v3.0.1 (will be removed in v4)\n.hide-text() {\n font: ~\"0/0\" a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n// New mixin to use as of v3.0.1\n.text-hide() {\n .hide-text();\n}\n\n\n\n// CSS3 PROPERTIES\n// --------------------------------------------------\n\n// Single side border-radius\n.border-top-radius(@radius) {\n border-top-right-radius: @radius;\n border-top-left-radius: @radius;\n}\n.border-right-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-top-right-radius: @radius;\n}\n.border-bottom-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-bottom-left-radius: @radius;\n}\n.border-left-radius(@radius) {\n border-bottom-left-radius: @radius;\n border-top-left-radius: @radius;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support the\n// standard `box-shadow` property.\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Transitions\n.transition(@transition) {\n -webkit-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n// Transformations\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n transform: rotate(@degrees);\n}\n.scale(@ratio; @ratio-y...) {\n -webkit-transform: scale(@ratio, @ratio-y);\n -ms-transform: scale(@ratio, @ratio-y); // IE9 only\n transform: scale(@ratio, @ratio-y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n transform: translate(@x, @y);\n}\n.skew(@x; @y) {\n -webkit-transform: skew(@x, @y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n transform: skew(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n.backface-visibility(@visibility){\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// User select\n// For selecting text on the page\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n\n// Resize anything\n.resizable(@direction) {\n resize: @direction; // Options: horizontal, vertical, both\n overflow: auto; // Safari fix\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Opacity\n.opacity(@opacity) {\n opacity: @opacity;\n // IE8 filter\n @opacity-ie: (@opacity * 100);\n filter: ~\"alpha(opacity=@{opacity-ie})\";\n}\n\n\n\n// GRADIENTS\n// --------------------------------------------------\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, color-stop(@start-color @start-percent), color-stop(@end-color @end-percent)); // Safari 5.1-6, Chrome 10+\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n\n// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n\n\n\n// Retina images\n//\n// Short retina mixin for setting background-image and -size\n\n.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {\n background-image: url(\"@{file-1x}\");\n\n @media\n only screen and (-webkit-min-device-pixel-ratio: 2),\n only screen and ( min--moz-device-pixel-ratio: 2),\n only screen and ( -o-min-device-pixel-ratio: 2/1),\n only screen and ( min-device-pixel-ratio: 2),\n only screen and ( min-resolution: 192dpi),\n only screen and ( min-resolution: 2dppx) {\n background-image: url(\"@{file-2x}\");\n background-size: @width-1x @height-1x;\n }\n}\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n\n.img-responsive(@display: block) {\n display: @display;\n max-width: 100%; // Part 1: Set a maximum relative to the parent\n height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching\n}\n\n\n// COMPONENT MIXINS\n// --------------------------------------------------\n\n// Horizontal dividers\n// -------------------------\n// Dividers (basically an hr) within dropdowns and nav lists\n.nav-divider(@color: #e5e5e5) {\n height: 1px;\n margin: ((@line-height-computed / 2) - 1) 0;\n overflow: hidden;\n background-color: @color;\n}\n\n// Panels\n// -------------------------\n.panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) {\n border-color: @border;\n\n & > .panel-heading {\n color: @heading-text-color;\n background-color: @heading-bg-color;\n border-color: @heading-border;\n\n + .panel-collapse .panel-body {\n border-top-color: @border;\n }\n }\n & > .panel-footer {\n + .panel-collapse .panel-body {\n border-bottom-color: @border;\n }\n }\n}\n\n// Alerts\n// -------------------------\n.alert-variant(@background; @border; @text-color) {\n background-color: @background;\n border-color: @border;\n color: @text-color;\n\n hr {\n border-top-color: darken(@border, 5%);\n }\n .alert-link {\n color: darken(@text-color, 10%);\n }\n}\n\n// Tables\n// -------------------------\n.table-row-variant(@state; @background) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table > thead > tr,\n .table > tbody > tr,\n .table > tfoot > tr {\n > td.@{state},\n > th.@{state},\n &.@{state} > td,\n &.@{state} > th {\n background-color: @background;\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover > tbody > tr {\n > td.@{state}:hover,\n > th.@{state}:hover,\n &.@{state}:hover > td,\n &.@{state}:hover > th {\n background-color: darken(@background, 5%);\n }\n }\n}\n\n// List Groups\n// -------------------------\n.list-group-item-variant(@state; @background; @color) {\n .list-group-item-@{state} {\n color: @color;\n background-color: @background;\n\n a& {\n color: @color;\n\n .list-group-item-heading { color: inherit; }\n\n &:hover,\n &:focus {\n color: @color;\n background-color: darken(@background, 5%);\n }\n &.active,\n &.active:hover,\n &.active:focus {\n color: #fff;\n background-color: @color;\n border-color: @color;\n }\n }\n }\n}\n\n// Button variants\n// -------------------------\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n.button-variant(@color; @background; @border) {\n color: @color;\n background-color: @background;\n border-color: @border;\n\n &:hover,\n &:focus,\n &:active,\n &.active,\n .open .dropdown-toggle& {\n color: @color;\n background-color: darken(@background, 8%);\n border-color: darken(@border, 12%);\n }\n &:active,\n &.active,\n .open .dropdown-toggle& {\n background-image: none;\n }\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &:active,\n &.active {\n background-color: @background;\n border-color: @border;\n }\n }\n\n .badge {\n color: @background;\n background-color: @color;\n }\n}\n\n// Button sizes\n// -------------------------\n.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n}\n\n// Pagination\n// -------------------------\n.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @border-radius) {\n > li {\n > a,\n > span {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n }\n &:first-child {\n > a,\n > span {\n .border-left-radius(@border-radius);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius);\n }\n }\n }\n}\n\n// Labels\n// -------------------------\n.label-variant(@color) {\n background-color: @color;\n &[href] {\n &:hover,\n &:focus {\n background-color: darken(@color, 10%);\n }\n }\n}\n\n// Contextual backgrounds\n// -------------------------\n.bg-variant(@color) {\n background-color: @color;\n a&:hover {\n background-color: darken(@color, 10%);\n }\n}\n\n// Typography\n// -------------------------\n.text-emphasis-variant(@color) {\n color: @color;\n a&:hover {\n color: darken(@color, 10%);\n }\n}\n\n// Navbar vertical align\n// -------------------------\n// Vertically center elements in the navbar.\n// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.\n.navbar-vertical-align(@element-height) {\n margin-top: ((@navbar-height - @element-height) / 2);\n margin-bottom: ((@navbar-height - @element-height) / 2);\n}\n\n// Progress bars\n// -------------------------\n.progress-bar-variant(@color) {\n background-color: @color;\n .progress-striped & {\n #gradient > .striped();\n }\n}\n\n// Responsive utilities\n// -------------------------\n// More easily include all the states for responsive-utilities.less.\n.responsive-visibility() {\n display: block !important;\n table& { display: table; }\n tr& { display: table-row !important; }\n th&,\n td& { display: table-cell !important; }\n}\n\n.responsive-invisibility() {\n display: none !important;\n}\n\n\n// Grid System\n// -----------\n\n// Centered container element\n.container-fixed() {\n margin-right: auto;\n margin-left: auto;\n padding-left: (@grid-gutter-width / 2);\n padding-right: (@grid-gutter-width / 2);\n &:extend(.clearfix all);\n}\n\n// Creates a wrapper for a series of columns\n.make-row(@gutter: @grid-gutter-width) {\n margin-left: (@gutter / -2);\n margin-right: (@gutter / -2);\n &:extend(.clearfix all);\n}\n\n// Generate the extra small columns\n.make-xs-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n float: left;\n width: percentage((@columns / @grid-columns));\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n}\n.make-xs-column-offset(@columns) {\n @media (min-width: @screen-xs-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-xs-column-push(@columns) {\n @media (min-width: @screen-xs-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-xs-column-pull(@columns) {\n @media (min-width: @screen-xs-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n\n// Generate the small columns\n.make-sm-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-sm-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-offset(@columns) {\n @media (min-width: @screen-sm-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-push(@columns) {\n @media (min-width: @screen-sm-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-pull(@columns) {\n @media (min-width: @screen-sm-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n\n// Generate the medium columns\n.make-md-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-md-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-offset(@columns) {\n @media (min-width: @screen-md-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-push(@columns) {\n @media (min-width: @screen-md-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-pull(@columns) {\n @media (min-width: @screen-md-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n\n// Generate the large columns\n.make-lg-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-lg-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-offset(@columns) {\n @media (min-width: @screen-lg-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-push(@columns) {\n @media (min-width: @screen-lg-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-pull(@columns) {\n @media (min-width: @screen-lg-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `@grid-columns`.\n\n.make-grid-columns() {\n // Common styles for all sizes of grid columns, widths 1-12\n .col(@index) when (@index = 1) { // initial\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general; \"=<\" isn't a typo\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n position: relative;\n // Prevent columns from collapsing when empty\n min-height: 1px;\n // Inner gutter via padding\n padding-left: (@grid-gutter-width / 2);\n padding-right: (@grid-gutter-width / 2);\n }\n }\n .col(1); // kickstart it\n}\n\n.float-grid-columns(@class) {\n .col(@index) when (@index = 1) { // initial\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n float: left;\n }\n }\n .col(1); // kickstart it\n}\n\n.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {\n .col-@{class}-@{index} {\n width: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) {\n .col-@{class}-push-@{index} {\n left: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) {\n .col-@{class}-pull-@{index} {\n right: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = offset) {\n .col-@{class}-offset-@{index} {\n margin-left: percentage((@index / @grid-columns));\n }\n}\n\n// Basic looping in LESS\n.loop-grid-columns(@index, @class, @type) when (@index >= 0) {\n .calc-grid-column(@index, @class, @type);\n // next iteration\n .loop-grid-columns((@index - 1), @class, @type);\n}\n\n// Create grid for specific class\n.make-grid(@class) {\n .float-grid-columns(@class);\n .loop-grid-columns(@grid-columns, @class, width);\n .loop-grid-columns(@grid-columns, @class, pull);\n .loop-grid-columns(@grid-columns, @class, push);\n .loop-grid-columns(@grid-columns, @class, offset);\n}\n\n// Form validation states\n//\n// Used in forms.less to generate the form validation CSS for warnings, errors,\n// and successes.\n\n.form-control-validation(@text-color: #555; @border-color: #ccc; @background-color: #f5f5f5) {\n // Color the label and help text\n .help-block,\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline {\n color: @text-color;\n }\n // Set the border and box shadow on specific inputs to match\n .form-control {\n border-color: @border-color;\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work\n &:focus {\n border-color: darken(@border-color, 10%);\n @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@border-color, 20%);\n .box-shadow(@shadow);\n }\n }\n // Set validation states also for addons\n .input-group-addon {\n color: @text-color;\n border-color: @border-color;\n background-color: @background-color;\n }\n // Optional feedback icon\n .form-control-feedback {\n color: @text-color;\n }\n}\n\n// Form control focus state\n//\n// Generate a customized focus state and for any input with the specified color,\n// which defaults to the `@input-focus-border` variable.\n//\n// We highly encourage you to not customize the default value, but instead use\n// this to tweak colors on an as-needed basis. This aesthetic change is based on\n// WebKit's default styles, but applicable to a wider range of browsers. Its\n// usability and accessibility should be taken into account with any change.\n//\n// Example usage: change the default blue border and shadow to white for better\n// contrast against a dark gray background.\n\n.form-control-focus(@color: @input-border-focus) {\n @color-rgba: rgba(red(@color), green(@color), blue(@color), .6);\n &:focus {\n border-color: @color;\n outline: 0;\n .box-shadow(~\"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px @{color-rgba}\");\n }\n}\n\n// Form control sizing\n//\n// Relative text size, padding, and border-radii changes for form controls. For\n// horizontal sizing, wrap controls in the predefined grid classes. `<select>`\n// element gets special love because it's special, and that's a fact!\n\n.input-size(@input-height; @padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n height: @input-height;\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n\n select& {\n height: @input-height;\n line-height: @input-height;\n }\n\n textarea&,\n select[multiple]& {\n height: auto;\n }\n}\n","//\n// Variables\n// --------------------------------------------------\n\n\n//== Colors\n//\n//## Gray and brand colors for use across Bootstrap.\n\n@gray-darker: lighten(#000, 13.5%); // #222\n@gray-dark: lighten(#000, 20%); // #333\n@gray: lighten(#000, 33.5%); // #555\n@gray-light: lighten(#000, 60%); // #999\n@gray-lighter: lighten(#000, 93.5%); // #eee\n\n@brand-primary: #428bca;\n@brand-success: #5cb85c;\n@brand-info: #5bc0de;\n@brand-warning: #f0ad4e;\n@brand-danger: #d9534f;\n\n\n//== Scaffolding\n//\n// ## Settings for some of the most global styles.\n\n//** Background color for `<body>`.\n@body-bg: #fff;\n//** Global text color on `<body>`.\n@text-color: @gray-dark;\n\n//** Global textual link color.\n@link-color: @brand-primary;\n//** Link hover color set via `darken()` function.\n@link-hover-color: darken(@link-color, 15%);\n\n\n//== Typography\n//\n//## Font, line-height, and color for body text, headings, and more.\n\n@font-family-sans-serif: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n@font-family-serif: Georgia, \"Times New Roman\", Times, serif;\n//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.\n@font-family-monospace: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n@font-family-base: @font-family-sans-serif;\n\n@font-size-base: 14px;\n@font-size-large: ceil((@font-size-base * 1.25)); // ~18px\n@font-size-small: ceil((@font-size-base * 0.85)); // ~12px\n\n@font-size-h1: floor((@font-size-base * 2.6)); // ~36px\n@font-size-h2: floor((@font-size-base * 2.15)); // ~30px\n@font-size-h3: ceil((@font-size-base * 1.7)); // ~24px\n@font-size-h4: ceil((@font-size-base * 1.25)); // ~18px\n@font-size-h5: @font-size-base;\n@font-size-h6: ceil((@font-size-base * 0.85)); // ~12px\n\n//** Unit-less `line-height` for use in components like buttons.\n@line-height-base: 1.428571429; // 20/14\n//** Computed \"line-height\" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.\n@line-height-computed: floor((@font-size-base * @line-height-base)); // ~20px\n\n//** By default, this inherits from the `<body>`.\n@headings-font-family: inherit;\n@headings-font-weight: 500;\n@headings-line-height: 1.1;\n@headings-color: inherit;\n\n\n//-- Iconography\n//\n//## Specify custom locations of the include Glyphicons icon font. Useful for those including Bootstrap via Bower.\n\n@icon-font-path: \"../fonts/\";\n@icon-font-name: \"glyphicons-halflings-regular\";\n@icon-font-svg-id: \"glyphicons_halflingsregular\";\n\n//== Components\n//\n//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).\n\n@padding-base-vertical: 6px;\n@padding-base-horizontal: 12px;\n\n@padding-large-vertical: 10px;\n@padding-large-horizontal: 16px;\n\n@padding-small-vertical: 5px;\n@padding-small-horizontal: 10px;\n\n@padding-xs-vertical: 1px;\n@padding-xs-horizontal: 5px;\n\n@line-height-large: 1.33;\n@line-height-small: 1.5;\n\n@border-radius-base: 4px;\n@border-radius-large: 6px;\n@border-radius-small: 3px;\n\n//** Global color for active items (e.g., navs or dropdowns).\n@component-active-color: #fff;\n//** Global background color for active items (e.g., navs or dropdowns).\n@component-active-bg: @brand-primary;\n\n//** Width of the `border` for generating carets that indicator dropdowns.\n@caret-width-base: 4px;\n//** Carets increase slightly in size for larger components.\n@caret-width-large: 5px;\n\n\n//== Tables\n//\n//## Customizes the `.table` component with basic values, each used across all table variations.\n\n//** Padding for `<th>`s and `<td>`s.\n@table-cell-padding: 8px;\n//** Padding for cells in `.table-condensed`.\n@table-condensed-cell-padding: 5px;\n\n//** Default background color used for all tables.\n@table-bg: transparent;\n//** Background color used for `.table-striped`.\n@table-bg-accent: #f9f9f9;\n//** Background color used for `.table-hover`.\n@table-bg-hover: #f5f5f5;\n@table-bg-active: @table-bg-hover;\n\n//** Border color for table and cell borders.\n@table-border-color: #ddd;\n\n\n//== Buttons\n//\n//## For each of Bootstrap's buttons, define text, background and border color.\n\n@btn-font-weight: normal;\n\n@btn-default-color: #333;\n@btn-default-bg: #fff;\n@btn-default-border: #ccc;\n\n@btn-primary-color: #fff;\n@btn-primary-bg: @brand-primary;\n@btn-primary-border: darken(@btn-primary-bg, 5%);\n\n@btn-success-color: #fff;\n@btn-success-bg: @brand-success;\n@btn-success-border: darken(@btn-success-bg, 5%);\n\n@btn-info-color: #fff;\n@btn-info-bg: @brand-info;\n@btn-info-border: darken(@btn-info-bg, 5%);\n\n@btn-warning-color: #fff;\n@btn-warning-bg: @brand-warning;\n@btn-warning-border: darken(@btn-warning-bg, 5%);\n\n@btn-danger-color: #fff;\n@btn-danger-bg: @brand-danger;\n@btn-danger-border: darken(@btn-danger-bg, 5%);\n\n@btn-link-disabled-color: @gray-light;\n\n\n//== Forms\n//\n//##\n\n//** `<input>` background color\n@input-bg: #fff;\n//** `<input disabled>` background color\n@input-bg-disabled: @gray-lighter;\n\n//** Text color for `<input>`s\n@input-color: @gray;\n//** `<input>` border color\n@input-border: #ccc;\n//** `<input>` border radius\n@input-border-radius: @border-radius-base;\n//** Border color for inputs on focus\n@input-border-focus: #66afe9;\n\n//** Placeholder text color\n@input-color-placeholder: @gray-light;\n\n//** Default `.form-control` height\n@input-height-base: (@line-height-computed + (@padding-base-vertical * 2) + 2);\n//** Large `.form-control` height\n@input-height-large: (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);\n//** Small `.form-control` height\n@input-height-small: (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);\n\n@legend-color: @gray-dark;\n@legend-border-color: #e5e5e5;\n\n//** Background color for textual input addons\n@input-group-addon-bg: @gray-lighter;\n//** Border color for textual input addons\n@input-group-addon-border-color: @input-border;\n\n\n//== Dropdowns\n//\n//## Dropdown menu container and contents.\n\n//** Background for the dropdown menu.\n@dropdown-bg: #fff;\n//** Dropdown menu `border-color`.\n@dropdown-border: rgba(0,0,0,.15);\n//** Dropdown menu `border-color` **for IE8**.\n@dropdown-fallback-border: #ccc;\n//** Divider color for between dropdown items.\n@dropdown-divider-bg: #e5e5e5;\n\n//** Dropdown link text color.\n@dropdown-link-color: @gray-dark;\n//** Hover color for dropdown links.\n@dropdown-link-hover-color: darken(@gray-dark, 5%);\n//** Hover background for dropdown links.\n@dropdown-link-hover-bg: #f5f5f5;\n\n//** Active dropdown menu item text color.\n@dropdown-link-active-color: @component-active-color;\n//** Active dropdown menu item background color.\n@dropdown-link-active-bg: @component-active-bg;\n\n//** Disabled dropdown menu item background color.\n@dropdown-link-disabled-color: @gray-light;\n\n//** Text color for headers within dropdown menus.\n@dropdown-header-color: @gray-light;\n\n// Note: Deprecated @dropdown-caret-color as of v3.1.0\n@dropdown-caret-color: #000;\n\n\n//-- Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n//\n// Note: These variables are not generated into the Customizer.\n\n@zindex-navbar: 1000;\n@zindex-dropdown: 1000;\n@zindex-popover: 1010;\n@zindex-tooltip: 1030;\n@zindex-navbar-fixed: 1030;\n@zindex-modal-background: 1040;\n@zindex-modal: 1050;\n\n\n//== Media queries breakpoints\n//\n//## Define the breakpoints at which your layout will change, adapting to different screen sizes.\n\n// Extra small screen / phone\n// Note: Deprecated @screen-xs and @screen-phone as of v3.0.1\n@screen-xs: 480px;\n@screen-xs-min: @screen-xs;\n@screen-phone: @screen-xs-min;\n\n// Small screen / tablet\n// Note: Deprecated @screen-sm and @screen-tablet as of v3.0.1\n@screen-sm: 768px;\n@screen-sm-min: @screen-sm;\n@screen-tablet: @screen-sm-min;\n\n// Medium screen / desktop\n// Note: Deprecated @screen-md and @screen-desktop as of v3.0.1\n@screen-md: 992px;\n@screen-md-min: @screen-md;\n@screen-desktop: @screen-md-min;\n\n// Large screen / wide desktop\n// Note: Deprecated @screen-lg and @screen-lg-desktop as of v3.0.1\n@screen-lg: 1200px;\n@screen-lg-min: @screen-lg;\n@screen-lg-desktop: @screen-lg-min;\n\n// So media queries don't overlap when required, provide a maximum\n@screen-xs-max: (@screen-sm-min - 1);\n@screen-sm-max: (@screen-md-min - 1);\n@screen-md-max: (@screen-lg-min - 1);\n\n\n//== Grid system\n//\n//## Define your custom responsive grid.\n\n//** Number of columns in the grid.\n@grid-columns: 12;\n//** Padding between columns. Gets divided in half for the left and right.\n@grid-gutter-width: 30px;\n// Navbar collapse\n//** Point at which the navbar becomes uncollapsed.\n@grid-float-breakpoint: @screen-sm-min;\n//** Point at which the navbar begins collapsing.\n@grid-float-breakpoint-max: (@grid-float-breakpoint - 1);\n\n\n//== Container sizes\n//\n//## Define the maximum width of `.container` for different screen sizes.\n\n// Small screen / tablet\n@container-tablet: ((720px + @grid-gutter-width));\n//** For `@screen-sm-min` and up.\n@container-sm: @container-tablet;\n\n// Medium screen / desktop\n@container-desktop: ((940px + @grid-gutter-width));\n//** For `@screen-md-min` and up.\n@container-md: @container-desktop;\n\n// Large screen / wide desktop\n@container-large-desktop: ((1140px + @grid-gutter-width));\n//** For `@screen-lg-min` and up.\n@container-lg: @container-large-desktop;\n\n\n//== Navbar\n//\n//##\n\n// Basics of a navbar\n@navbar-height: 50px;\n@navbar-margin-bottom: @line-height-computed;\n@navbar-border-radius: @border-radius-base;\n@navbar-padding-horizontal: floor((@grid-gutter-width / 2));\n@navbar-padding-vertical: ((@navbar-height - @line-height-computed) / 2);\n@navbar-collapse-max-height: 340px;\n\n@navbar-default-color: #777;\n@navbar-default-bg: #f8f8f8;\n@navbar-default-border: darken(@navbar-default-bg, 6.5%);\n\n// Navbar links\n@navbar-default-link-color: #777;\n@navbar-default-link-hover-color: #333;\n@navbar-default-link-hover-bg: transparent;\n@navbar-default-link-active-color: #555;\n@navbar-default-link-active-bg: darken(@navbar-default-bg, 6.5%);\n@navbar-default-link-disabled-color: #ccc;\n@navbar-default-link-disabled-bg: transparent;\n\n// Navbar brand label\n@navbar-default-brand-color: @navbar-default-link-color;\n@navbar-default-brand-hover-color: darken(@navbar-default-brand-color, 10%);\n@navbar-default-brand-hover-bg: transparent;\n\n// Navbar toggle\n@navbar-default-toggle-hover-bg: #ddd;\n@navbar-default-toggle-icon-bar-bg: #888;\n@navbar-default-toggle-border-color: #ddd;\n\n\n// Inverted navbar\n// Reset inverted navbar basics\n@navbar-inverse-color: @gray-light;\n@navbar-inverse-bg: #222;\n@navbar-inverse-border: darken(@navbar-inverse-bg, 10%);\n\n// Inverted navbar links\n@navbar-inverse-link-color: @gray-light;\n@navbar-inverse-link-hover-color: #fff;\n@navbar-inverse-link-hover-bg: transparent;\n@navbar-inverse-link-active-color: @navbar-inverse-link-hover-color;\n@navbar-inverse-link-active-bg: darken(@navbar-inverse-bg, 10%);\n@navbar-inverse-link-disabled-color: #444;\n@navbar-inverse-link-disabled-bg: transparent;\n\n// Inverted navbar brand label\n@navbar-inverse-brand-color: @navbar-inverse-link-color;\n@navbar-inverse-brand-hover-color: #fff;\n@navbar-inverse-brand-hover-bg: transparent;\n\n// Inverted navbar toggle\n@navbar-inverse-toggle-hover-bg: #333;\n@navbar-inverse-toggle-icon-bar-bg: #fff;\n@navbar-inverse-toggle-border-color: #333;\n\n\n//== Navs\n//\n//##\n\n//=== Shared nav styles\n@nav-link-padding: 10px 15px;\n@nav-link-hover-bg: @gray-lighter;\n\n@nav-disabled-link-color: @gray-light;\n@nav-disabled-link-hover-color: @gray-light;\n\n@nav-open-link-hover-color: #fff;\n\n//== Tabs\n@nav-tabs-border-color: #ddd;\n\n@nav-tabs-link-hover-border-color: @gray-lighter;\n\n@nav-tabs-active-link-hover-bg: @body-bg;\n@nav-tabs-active-link-hover-color: @gray;\n@nav-tabs-active-link-hover-border-color: #ddd;\n\n@nav-tabs-justified-link-border-color: #ddd;\n@nav-tabs-justified-active-link-border-color: @body-bg;\n\n//== Pills\n@nav-pills-border-radius: @border-radius-base;\n@nav-pills-active-link-hover-bg: @component-active-bg;\n@nav-pills-active-link-hover-color: @component-active-color;\n\n\n//== Pagination\n//\n//##\n\n@pagination-color: @link-color;\n@pagination-bg: #fff;\n@pagination-border: #ddd;\n\n@pagination-hover-color: @link-hover-color;\n@pagination-hover-bg: @gray-lighter;\n@pagination-hover-border: #ddd;\n\n@pagination-active-color: #fff;\n@pagination-active-bg: @brand-primary;\n@pagination-active-border: @brand-primary;\n\n@pagination-disabled-color: @gray-light;\n@pagination-disabled-bg: #fff;\n@pagination-disabled-border: #ddd;\n\n\n//== Pager\n//\n//##\n\n@pager-bg: @pagination-bg;\n@pager-border: @pagination-border;\n@pager-border-radius: 15px;\n\n@pager-hover-bg: @pagination-hover-bg;\n\n@pager-active-bg: @pagination-active-bg;\n@pager-active-color: @pagination-active-color;\n\n@pager-disabled-color: @pagination-disabled-color;\n\n\n//== Jumbotron\n//\n//##\n\n@jumbotron-padding: 30px;\n@jumbotron-color: inherit;\n@jumbotron-bg: @gray-lighter;\n@jumbotron-heading-color: inherit;\n@jumbotron-font-size: ceil((@font-size-base * 1.5));\n\n\n//== Form states and alerts\n//\n//## Define colors for form feedback states and, by default, alerts.\n\n@state-success-text: #3c763d;\n@state-success-bg: #dff0d8;\n@state-success-border: darken(spin(@state-success-bg, -10), 5%);\n\n@state-info-text: #31708f;\n@state-info-bg: #d9edf7;\n@state-info-border: darken(spin(@state-info-bg, -10), 7%);\n\n@state-warning-text: #8a6d3b;\n@state-warning-bg: #fcf8e3;\n@state-warning-border: darken(spin(@state-warning-bg, -10), 5%);\n\n@state-danger-text: #a94442;\n@state-danger-bg: #f2dede;\n@state-danger-border: darken(spin(@state-danger-bg, -10), 5%);\n\n\n//== Tooltips\n//\n//##\n\n//** Tooltip max width\n@tooltip-max-width: 200px;\n//** Tooltip text color\n@tooltip-color: #fff;\n//** Tooltip background color\n@tooltip-bg: #000;\n@tooltip-opacity: .9;\n\n//** Tooltip arrow width\n@tooltip-arrow-width: 5px;\n//** Tooltip arrow color\n@tooltip-arrow-color: @tooltip-bg;\n\n\n//== Popovers\n//\n//##\n\n//** Popover body background color\n@popover-bg: #fff;\n//** Popover maximum width\n@popover-max-width: 276px;\n//** Popover border color\n@popover-border-color: rgba(0,0,0,.2);\n//** Popover fallback border color\n@popover-fallback-border-color: #ccc;\n\n//** Popover title background color\n@popover-title-bg: darken(@popover-bg, 3%);\n\n//** Popover arrow width\n@popover-arrow-width: 10px;\n//** Popover arrow color\n@popover-arrow-color: #fff;\n\n//** Popover outer arrow width\n@popover-arrow-outer-width: (@popover-arrow-width + 1);\n//** Popover outer arrow color\n@popover-arrow-outer-color: fadein(@popover-border-color, 5%);\n//** Popover outer arrow fallback color\n@popover-arrow-outer-fallback-color: darken(@popover-fallback-border-color, 20%);\n\n\n//== Labels\n//\n//##\n\n//** Default label background color\n@label-default-bg: @gray-light;\n//** Primary label background color\n@label-primary-bg: @brand-primary;\n//** Success label background color\n@label-success-bg: @brand-success;\n//** Info label background color\n@label-info-bg: @brand-info;\n//** Warning label background color\n@label-warning-bg: @brand-warning;\n//** Danger label background color\n@label-danger-bg: @brand-danger;\n\n//** Default label text color\n@label-color: #fff;\n//** Default text color of a linked label\n@label-link-hover-color: #fff;\n\n\n//== Modals\n//\n//##\n\n//** Padding applied to the modal body\n@modal-inner-padding: 20px;\n\n//** Padding applied to the modal title\n@modal-title-padding: 15px;\n//** Modal title line-height\n@modal-title-line-height: @line-height-base;\n\n//** Background color of modal content area\n@modal-content-bg: #fff;\n//** Modal content border color\n@modal-content-border-color: rgba(0,0,0,.2);\n//** Modal content border color **for IE8**\n@modal-content-fallback-border-color: #999;\n\n//** Modal backdrop background color\n@modal-backdrop-bg: #000;\n//** Modal backdrop opacity\n@modal-backdrop-opacity: .5;\n//** Modal header border color\n@modal-header-border-color: #e5e5e5;\n//** Modal footer border color\n@modal-footer-border-color: @modal-header-border-color;\n\n@modal-lg: 900px;\n@modal-md: 600px;\n@modal-sm: 300px;\n\n\n//== Alerts\n//\n//## Define alert colors, border radius, and padding.\n\n@alert-padding: 15px;\n@alert-border-radius: @border-radius-base;\n@alert-link-font-weight: bold;\n\n@alert-success-bg: @state-success-bg;\n@alert-success-text: @state-success-text;\n@alert-success-border: @state-success-border;\n\n@alert-info-bg: @state-info-bg;\n@alert-info-text: @state-info-text;\n@alert-info-border: @state-info-border;\n\n@alert-warning-bg: @state-warning-bg;\n@alert-warning-text: @state-warning-text;\n@alert-warning-border: @state-warning-border;\n\n@alert-danger-bg: @state-danger-bg;\n@alert-danger-text: @state-danger-text;\n@alert-danger-border: @state-danger-border;\n\n\n//== Progress bars\n//\n//##\n\n//** Background color of the whole progress component\n@progress-bg: #f5f5f5;\n//** Progress bar text color\n@progress-bar-color: #fff;\n\n//** Default progress bar color\n@progress-bar-bg: @brand-primary;\n//** Success progress bar color\n@progress-bar-success-bg: @brand-success;\n//** Warning progress bar color\n@progress-bar-warning-bg: @brand-warning;\n//** Danger progress bar color\n@progress-bar-danger-bg: @brand-danger;\n//** Info progress bar color\n@progress-bar-info-bg: @brand-info;\n\n\n//== List group\n//\n//##\n\n//** Background color on `.list-group-item`\n@list-group-bg: #fff;\n//** `.list-group-item` border color\n@list-group-border: #ddd;\n//** List group border radius\n@list-group-border-radius: @border-radius-base;\n\n//** Background color of single list elements on hover\n@list-group-hover-bg: #f5f5f5;\n//** Text color of active list elements\n@list-group-active-color: @component-active-color;\n//** Background color of active list elements\n@list-group-active-bg: @component-active-bg;\n//** Border color of active list elements\n@list-group-active-border: @list-group-active-bg;\n@list-group-active-text-color: lighten(@list-group-active-bg, 40%);\n\n@list-group-link-color: #555;\n@list-group-link-heading-color: #333;\n\n\n//== Panels\n//\n//##\n\n@panel-bg: #fff;\n@panel-body-padding: 15px;\n@panel-border-radius: @border-radius-base;\n\n//** Border color for elements within panels\n@panel-inner-border: #ddd;\n@panel-footer-bg: #f5f5f5;\n\n@panel-default-text: @gray-dark;\n@panel-default-border: #ddd;\n@panel-default-heading-bg: #f5f5f5;\n\n@panel-primary-text: #fff;\n@panel-primary-border: @brand-primary;\n@panel-primary-heading-bg: @brand-primary;\n\n@panel-success-text: @state-success-text;\n@panel-success-border: @state-success-border;\n@panel-success-heading-bg: @state-success-bg;\n\n@panel-info-text: @state-info-text;\n@panel-info-border: @state-info-border;\n@panel-info-heading-bg: @state-info-bg;\n\n@panel-warning-text: @state-warning-text;\n@panel-warning-border: @state-warning-border;\n@panel-warning-heading-bg: @state-warning-bg;\n\n@panel-danger-text: @state-danger-text;\n@panel-danger-border: @state-danger-border;\n@panel-danger-heading-bg: @state-danger-bg;\n\n\n//== Thumbnails\n//\n//##\n\n//** Padding around the thumbnail image\n@thumbnail-padding: 4px;\n//** Thumbnail background color\n@thumbnail-bg: @body-bg;\n//** Thumbnail border color\n@thumbnail-border: #ddd;\n//** Thumbnail border radius\n@thumbnail-border-radius: @border-radius-base;\n\n//** Custom text color for thumbnail captions\n@thumbnail-caption-color: @text-color;\n//** Padding around the thumbnail caption\n@thumbnail-caption-padding: 9px;\n\n\n//== Wells\n//\n//##\n\n@well-bg: #f5f5f5;\n@well-border: darken(@well-bg, 7%);\n\n\n//== Badges\n//\n//##\n\n@badge-color: #fff;\n//** Linked badge text color on hover\n@badge-link-hover-color: #fff;\n@badge-bg: @gray-light;\n\n//** Badge text color in active nav link\n@badge-active-color: @link-color;\n//** Badge background color in active nav link\n@badge-active-bg: #fff;\n\n@badge-font-weight: bold;\n@badge-line-height: 1;\n@badge-border-radius: 10px;\n\n\n//== Breadcrumbs\n//\n//##\n\n@breadcrumb-padding-vertical: 8px;\n@breadcrumb-padding-horizontal: 15px;\n//** Breadcrumb background color\n@breadcrumb-bg: #f5f5f5;\n//** Breadcrumb text color\n@breadcrumb-color: #ccc;\n//** Text color of current page in the breadcrumb\n@breadcrumb-active-color: @gray-light;\n//** Textual separator for between breadcrumb elements\n@breadcrumb-separator: \"/\";\n\n\n//== Carousel\n//\n//##\n\n@carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6);\n\n@carousel-control-color: #fff;\n@carousel-control-width: 15%;\n@carousel-control-opacity: .5;\n@carousel-control-font-size: 20px;\n\n@carousel-indicator-active-bg: #fff;\n@carousel-indicator-border-color: #fff;\n\n@carousel-caption-color: #fff;\n\n\n//== Close\n//\n//##\n\n@close-font-weight: bold;\n@close-color: #000;\n@close-text-shadow: 0 1px 0 #fff;\n\n\n//== Code\n//\n//##\n\n@code-color: #c7254e;\n@code-bg: #f9f2f4;\n\n@kbd-color: #fff;\n@kbd-bg: #333;\n\n@pre-bg: #f5f5f5;\n@pre-color: @gray-dark;\n@pre-border-color: #ccc;\n@pre-scrollable-max-height: 340px;\n\n\n//== Type\n//\n//##\n\n//** Text muted color\n@text-muted: @gray-light;\n//** Abbreviations and acronyms border color\n@abbr-border-color: @gray-light;\n//** Headings small color\n@headings-small-color: @gray-light;\n//** Blockquote small color\n@blockquote-small-color: @gray-light;\n//** Blockquote font size\n@blockquote-font-size: (@font-size-base * 1.25);\n//** Blockquote border color\n@blockquote-border-color: @gray-lighter;\n//** Page header border color\n@page-header-border-color: @gray-lighter;\n\n\n//== Miscellaneous\n//\n//##\n\n//** Horizontal line color.\n@hr-border: @gray-lighter;\n\n//** Horizontal offset for forms and lists.\n@component-offset-horizontal: 180px;\n","//\n// Thumbnails\n// --------------------------------------------------\n\n\n// Mixin and adjust the regular image class\n.thumbnail {\n display: block;\n padding: @thumbnail-padding;\n margin-bottom: @line-height-computed;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(all .2s ease-in-out);\n\n > img,\n a > img {\n &:extend(.img-responsive);\n margin-left: auto;\n margin-right: auto;\n }\n\n // Add a hover state for linked versions only\n a&:hover,\n a&:focus,\n a&.active {\n border-color: @link-color;\n }\n\n // Image captions\n .caption {\n padding: @thumbnail-caption-padding;\n color: @thumbnail-caption-color;\n }\n}\n","//\n// Carousel\n// --------------------------------------------------\n\n\n// Wrapper for the slide container and indicators\n.carousel {\n position: relative;\n}\n\n.carousel-inner {\n position: relative;\n overflow: hidden;\n width: 100%;\n\n > .item {\n display: none;\n position: relative;\n .transition(.6s ease-in-out left);\n\n // Account for jankitude on images\n > img,\n > a > img {\n &:extend(.img-responsive);\n line-height: 1;\n }\n }\n\n > .active,\n > .next,\n > .prev { display: block; }\n\n > .active {\n left: 0;\n }\n\n > .next,\n > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n }\n\n > .next {\n left: 100%;\n }\n > .prev {\n left: -100%;\n }\n > .next.left,\n > .prev.right {\n left: 0;\n }\n\n > .active.left {\n left: -100%;\n }\n > .active.right {\n left: 100%;\n }\n\n}\n\n// Left/right controls for nav\n// ---------------------------\n\n.carousel-control {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: @carousel-control-width;\n .opacity(@carousel-control-opacity);\n font-size: @carousel-control-font-size;\n color: @carousel-control-color;\n text-align: center;\n text-shadow: @carousel-text-shadow;\n // We can't have this transition here because WebKit cancels the carousel\n // animation if you trip this while in the middle of another animation.\n\n // Set gradients for backgrounds\n &.left {\n #gradient > .horizontal(@start-color: rgba(0,0,0,.5); @end-color: rgba(0,0,0,.0001));\n }\n &.right {\n left: auto;\n right: 0;\n #gradient > .horizontal(@start-color: rgba(0,0,0,.0001); @end-color: rgba(0,0,0,.5));\n }\n\n // Hover/focus state\n &:hover,\n &:focus {\n outline: none;\n color: @carousel-control-color;\n text-decoration: none;\n .opacity(.9);\n }\n\n // Toggles\n .icon-prev,\n .icon-next,\n .glyphicon-chevron-left,\n .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n z-index: 5;\n display: inline-block;\n }\n .icon-prev,\n .glyphicon-chevron-left {\n left: 50%;\n }\n .icon-next,\n .glyphicon-chevron-right {\n right: 50%;\n }\n .icon-prev,\n .icon-next {\n width: 20px;\n height: 20px;\n margin-top: -10px;\n margin-left: -10px;\n font-family: serif;\n }\n\n .icon-prev {\n &:before {\n content: '\\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)\n }\n }\n .icon-next {\n &:before {\n content: '\\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)\n }\n }\n}\n\n// Optional indicator pips\n//\n// Add an unordered list with the following class and add a list item for each\n// slide your carousel holds.\n\n.carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n margin-left: -30%;\n padding-left: 0;\n list-style: none;\n text-align: center;\n\n li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n border: 1px solid @carousel-indicator-border-color;\n border-radius: 10px;\n cursor: pointer;\n\n // IE8-9 hack for event handling\n //\n // Internet Explorer 8-9 does not support clicks on elements without a set\n // `background-color`. We cannot use `filter` since that's not viewed as a\n // background color by the browser. Thus, a hack is needed.\n //\n // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we\n // set alpha transparency for the best results possible.\n background-color: #000 \\9; // IE8\n background-color: rgba(0,0,0,0); // IE9\n }\n .active {\n margin: 0;\n width: 12px;\n height: 12px;\n background-color: @carousel-indicator-active-bg;\n }\n}\n\n// Optional captions\n// -----------------------------\n// Hidden by default for smaller viewports\n.carousel-caption {\n position: absolute;\n left: 15%;\n right: 15%;\n bottom: 20px;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: @carousel-caption-color;\n text-align: center;\n text-shadow: @carousel-text-shadow;\n & .btn {\n text-shadow: none; // No shadow for button elements in carousel-caption\n }\n}\n\n\n// Scale up controls for tablets and up\n@media screen and (min-width: @screen-sm-min) {\n\n // Scale up the controls a smidge\n .carousel-control {\n .glyphicon-chevron-left,\n .glyphicon-chevron-right,\n .icon-prev,\n .icon-next {\n width: 30px;\n height: 30px;\n margin-top: -15px;\n margin-left: -15px;\n font-size: 30px;\n }\n }\n\n // Show and left align the captions\n .carousel-caption {\n left: 20%;\n right: 20%;\n padding-bottom: 30px;\n }\n\n // Move up the indicators\n .carousel-indicators {\n bottom: 20px;\n }\n}\n","//\n// Typography\n// --------------------------------------------------\n\n\n// Headings\n// -------------------------\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n font-family: @headings-font-family;\n font-weight: @headings-font-weight;\n line-height: @headings-line-height;\n color: @headings-color;\n\n small,\n .small {\n font-weight: normal;\n line-height: 1;\n color: @headings-small-color;\n }\n}\n\nh1, .h1,\nh2, .h2,\nh3, .h3 {\n margin-top: @line-height-computed;\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 65%;\n }\n}\nh4, .h4,\nh5, .h5,\nh6, .h6 {\n margin-top: (@line-height-computed / 2);\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 75%;\n }\n}\n\nh1, .h1 { font-size: @font-size-h1; }\nh2, .h2 { font-size: @font-size-h2; }\nh3, .h3 { font-size: @font-size-h3; }\nh4, .h4 { font-size: @font-size-h4; }\nh5, .h5 { font-size: @font-size-h5; }\nh6, .h6 { font-size: @font-size-h6; }\n\n\n// Body text\n// -------------------------\n\np {\n margin: 0 0 (@line-height-computed / 2);\n}\n\n.lead {\n margin-bottom: @line-height-computed;\n font-size: floor((@font-size-base * 1.15));\n font-weight: 200;\n line-height: 1.4;\n\n @media (min-width: @screen-sm-min) {\n font-size: (@font-size-base * 1.5);\n }\n}\n\n\n// Emphasis & misc\n// -------------------------\n\n// Ex: 14px base font * 85% = about 12px\nsmall,\n.small { font-size: 85%; }\n\n// Undo browser default styling\ncite { font-style: normal; }\n\n// Alignment\n.text-left { text-align: left; }\n.text-right { text-align: right; }\n.text-center { text-align: center; }\n.text-justify { text-align: justify; }\n\n// Contextual colors\n.text-muted {\n color: @text-muted;\n}\n.text-primary {\n .text-emphasis-variant(@brand-primary);\n}\n.text-success {\n .text-emphasis-variant(@state-success-text);\n}\n.text-info {\n .text-emphasis-variant(@state-info-text);\n}\n.text-warning {\n .text-emphasis-variant(@state-warning-text);\n}\n.text-danger {\n .text-emphasis-variant(@state-danger-text);\n}\n\n// Contextual backgrounds\n// For now we'll leave these alongside the text classes until v4 when we can\n// safely shift things around (per SemVer rules).\n.bg-primary {\n // Given the contrast here, this is the only class to have its color inverted\n // automatically.\n color: #fff;\n .bg-variant(@brand-primary);\n}\n.bg-success {\n .bg-variant(@state-success-bg);\n}\n.bg-info {\n .bg-variant(@state-info-bg);\n}\n.bg-warning {\n .bg-variant(@state-warning-bg);\n}\n.bg-danger {\n .bg-variant(@state-danger-bg);\n}\n\n\n// Page header\n// -------------------------\n\n.page-header {\n padding-bottom: ((@line-height-computed / 2) - 1);\n margin: (@line-height-computed * 2) 0 @line-height-computed;\n border-bottom: 1px solid @page-header-border-color;\n}\n\n\n// Lists\n// --------------------------------------------------\n\n// Unordered and Ordered lists\nul,\nol {\n margin-top: 0;\n margin-bottom: (@line-height-computed / 2);\n ul,\n ol {\n margin-bottom: 0;\n }\n}\n\n// List options\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n .list-unstyled();\n margin-left: -5px;\n\n > li {\n display: inline-block;\n padding-left: 5px;\n padding-right: 5px;\n }\n}\n\n// Description Lists\ndl {\n margin-top: 0; // Remove browser default\n margin-bottom: @line-height-computed;\n}\ndt,\ndd {\n line-height: @line-height-base;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0; // Undo browser default\n}\n\n// Horizontal description lists\n//\n// Defaults to being stacked without any of the below styles applied, until the\n// grid breakpoint is reached (default of ~768px).\n\n@media (min-width: @grid-float-breakpoint) {\n .dl-horizontal {\n dt {\n float: left;\n width: (@component-offset-horizontal - 20);\n clear: left;\n text-align: right;\n .text-overflow();\n }\n dd {\n margin-left: @component-offset-horizontal;\n &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present\n }\n }\n}\n\n// MISC\n// ----\n\n// Abbreviations and acronyms\nabbr[title],\n// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted @abbr-border-color;\n}\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\n\n// Blockquotes\nblockquote {\n padding: (@line-height-computed / 2) @line-height-computed;\n margin: 0 0 @line-height-computed;\n font-size: @blockquote-font-size;\n border-left: 5px solid @blockquote-border-color;\n\n p,\n ul,\n ol {\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n // Note: Deprecated small and .small as of v3.1.0\n // Context: https://github.com/twbs/bootstrap/issues/11660\n footer,\n small,\n .small {\n display: block;\n font-size: 80%; // back to default font-size\n line-height: @line-height-base;\n color: @blockquote-small-color;\n\n &:before {\n content: '\\2014 \\00A0'; // em dash, nbsp\n }\n }\n}\n\n// Opposite alignment of blockquote\n//\n// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0.\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n border-right: 5px solid @blockquote-border-color;\n border-left: 0;\n text-align: right;\n\n // Account for citation\n footer,\n small,\n .small {\n &:before { content: ''; }\n &:after {\n content: '\\00A0 \\2014'; // nbsp, em dash\n }\n }\n}\n\n// Quotes\nblockquote:before,\nblockquote:after {\n content: \"\";\n}\n\n// Addresses\naddress {\n margin-bottom: @line-height-computed;\n font-style: normal;\n line-height: @line-height-base;\n}\n","//\n// Code (inline and block)\n// --------------------------------------------------\n\n\n// Inline and block code styles\ncode,\nkbd,\npre,\nsamp {\n font-family: @font-family-monospace;\n}\n\n// Inline code\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: @code-color;\n background-color: @code-bg;\n white-space: nowrap;\n border-radius: @border-radius-base;\n}\n\n// User input typically entered via keyboard\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: @kbd-color;\n background-color: @kbd-bg;\n border-radius: @border-radius-small;\n box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);\n}\n\n// Blocks of code\npre {\n display: block;\n padding: ((@line-height-computed - 1) / 2);\n margin: 0 0 (@line-height-computed / 2);\n font-size: (@font-size-base - 1); // 14px to 13px\n line-height: @line-height-base;\n word-break: break-all;\n word-wrap: break-word;\n color: @pre-color;\n background-color: @pre-bg;\n border: 1px solid @pre-border-color;\n border-radius: @border-radius-base;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n max-height: @pre-scrollable-max-height;\n overflow-y: scroll;\n}\n","//\n// Grid system\n// --------------------------------------------------\n\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n.container {\n .container-fixed();\n\n @media (min-width: @screen-sm-min) {\n width: @container-sm;\n }\n @media (min-width: @screen-md-min) {\n width: @container-md;\n }\n @media (min-width: @screen-lg-min) {\n width: @container-lg;\n }\n}\n\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but without any defined\n// width for fluid, full width layouts.\n\n.container-fluid {\n .container-fixed();\n}\n\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n.row {\n .make-row();\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n.make-grid-columns();\n\n\n// Extra small grid\n//\n// Columns, offsets, pushes, and pulls for extra small devices like\n// smartphones.\n\n.make-grid(xs);\n\n\n// Small grid\n//\n// Columns, offsets, pushes, and pulls for the small device range, from phones\n// to tablets.\n\n@media (min-width: @screen-sm-min) {\n .make-grid(sm);\n}\n\n\n// Medium grid\n//\n// Columns, offsets, pushes, and pulls for the desktop device range.\n\n@media (min-width: @screen-md-min) {\n .make-grid(md);\n}\n\n\n// Large grid\n//\n// Columns, offsets, pushes, and pulls for the large desktop device range.\n\n@media (min-width: @screen-lg-min) {\n .make-grid(lg);\n}\n","//\n// Tables\n// --------------------------------------------------\n\n\ntable {\n max-width: 100%;\n background-color: @table-bg;\n}\nth {\n text-align: left;\n}\n\n\n// Baseline styles\n\n.table {\n width: 100%;\n margin-bottom: @line-height-computed;\n // Cells\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-cell-padding;\n line-height: @line-height-base;\n vertical-align: top;\n border-top: 1px solid @table-border-color;\n }\n }\n }\n // Bottom align for column headings\n > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid @table-border-color;\n }\n // Remove top border from thead by default\n > caption + thead,\n > colgroup + thead,\n > thead:first-child {\n > tr:first-child {\n > th,\n > td {\n border-top: 0;\n }\n }\n }\n // Account for multiple tbody instances\n > tbody + tbody {\n border-top: 2px solid @table-border-color;\n }\n\n // Nesting\n .table {\n background-color: @body-bg;\n }\n}\n\n\n// Condensed table w/ half padding\n\n.table-condensed {\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-condensed-cell-padding;\n }\n }\n }\n}\n\n\n// Bordered version\n//\n// Add borders all around the table and between all the columns.\n\n.table-bordered {\n border: 1px solid @table-border-color;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n border: 1px solid @table-border-color;\n }\n }\n }\n > thead > tr {\n > th,\n > td {\n border-bottom-width: 2px;\n }\n }\n}\n\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n > tbody > tr:nth-child(odd) {\n > td,\n > th {\n background-color: @table-bg-accent;\n }\n }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n > tbody > tr:hover {\n > td,\n > th {\n background-color: @table-bg-hover;\n }\n }\n}\n\n\n// Table cell sizing\n//\n// Reset default table behavior\n\ntable col[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9/10 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-column;\n}\ntable {\n td,\n th {\n &[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9/10 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-cell;\n }\n }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n// Generate the contextual variants\n.table-row-variant(active; @table-bg-active);\n.table-row-variant(success; @state-success-bg);\n.table-row-variant(info; @state-info-bg);\n.table-row-variant(warning; @state-warning-bg);\n.table-row-variant(danger; @state-danger-bg);\n\n\n// Responsive tables\n//\n// Wrap your tables in `.table-responsive` and we'll make them mobile friendly\n// by enabling horizontal scrolling. Only applies <768px. Everything above that\n// will display normally.\n\n@media (max-width: @screen-xs-max) {\n .table-responsive {\n width: 100%;\n margin-bottom: (@line-height-computed * 0.75);\n overflow-y: hidden;\n overflow-x: scroll;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid @table-border-color;\n -webkit-overflow-scrolling: touch;\n\n // Tighten up spacing\n > .table {\n margin-bottom: 0;\n\n // Ensure the content doesn't wrap\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n white-space: nowrap;\n }\n }\n }\n }\n\n // Special overrides for the bordered tables\n > .table-bordered {\n border: 0;\n\n // Nuke the appropriate borders so that the parent can handle them\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-left: 0;\n }\n > th:last-child,\n > td:last-child {\n border-right: 0;\n }\n }\n }\n\n // Only nuke the last row's bottom-border in `tbody` and `tfoot` since\n // chances are there will be only one `tr` in a `thead` and that would\n // remove the border altogether.\n > tbody,\n > tfoot {\n > tr:last-child {\n > th,\n > td {\n border-bottom: 0;\n }\n }\n }\n\n }\n }\n}\n","//\n// Forms\n// --------------------------------------------------\n\n\n// Normalize non-controls\n//\n// Restyle and baseline non-control form elements.\n\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n // Chrome and Firefox set a `min-width: -webkit-min-content;` on fieldsets,\n // so we reset that to ensure it behaves more like a standard block element.\n // See https://github.com/twbs/bootstrap/issues/12359.\n min-width: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: @line-height-computed;\n font-size: (@font-size-base * 1.5);\n line-height: inherit;\n color: @legend-color;\n border: 0;\n border-bottom: 1px solid @legend-border-color;\n}\n\nlabel {\n display: inline-block;\n margin-bottom: 5px;\n font-weight: bold;\n}\n\n\n// Normalize form controls\n//\n// While most of our form styles require extra classes, some basic normalization\n// is required to ensure optimum display with or without those classes to better\n// address browser inconsistencies.\n\n// Override content-box in Normalize (* isn't specific enough)\ninput[type=\"search\"] {\n .box-sizing(border-box);\n}\n\n// Position radios and checkboxes better\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9; /* IE8-9 */\n line-height: normal;\n}\n\n// Set the height of file controls to match text inputs\ninput[type=\"file\"] {\n display: block;\n}\n\n// Make range inputs behave like textual form controls\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\n\n// Make multiple select elements height not fixed\nselect[multiple],\nselect[size] {\n height: auto;\n}\n\n// Focus for file, radio, and checkbox\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n .tab-focus();\n}\n\n// Adjust output element\noutput {\n display: block;\n padding-top: (@padding-base-vertical + 1);\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n}\n\n\n// Common form controls\n//\n// Shared size and type resets for form controls. Apply `.form-control` to any\n// of the following form controls:\n//\n// select\n// textarea\n// input[type=\"text\"]\n// input[type=\"password\"]\n// input[type=\"datetime\"]\n// input[type=\"datetime-local\"]\n// input[type=\"date\"]\n// input[type=\"month\"]\n// input[type=\"time\"]\n// input[type=\"week\"]\n// input[type=\"number\"]\n// input[type=\"email\"]\n// input[type=\"url\"]\n// input[type=\"search\"]\n// input[type=\"tel\"]\n// input[type=\"color\"]\n\n.form-control {\n display: block;\n width: 100%;\n height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n background-color: @input-bg;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid @input-border;\n border-radius: @input-border-radius;\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));\n .transition(~\"border-color ease-in-out .15s, box-shadow ease-in-out .15s\");\n\n // Customize the `:focus` state to imitate native WebKit styles.\n .form-control-focus();\n\n // Placeholder\n .placeholder();\n\n // Disabled and read-only inputs\n //\n // HTML5 says that controls under a fieldset > legend:first-child won't be\n // disabled if the fieldset is disabled. Due to implementation difficulty, we\n // don't honor that edge case; we style them as disabled anyway.\n &[disabled],\n &[readonly],\n fieldset[disabled] & {\n cursor: not-allowed;\n background-color: @input-bg-disabled;\n opacity: 1; // iOS fix for unreadable disabled content\n }\n\n // Reset height for `textarea`s\n textarea& {\n height: auto;\n }\n}\n\n\n// Search inputs in iOS\n//\n// This overrides the extra rounded corners on search inputs in iOS so that our\n// `.form-control` class can properly style them. Note that this cannot simply\n// be added to `.form-control` as it's not specific enough. For details, see\n// https://github.com/twbs/bootstrap/issues/11586.\n\ninput[type=\"search\"] {\n -webkit-appearance: none;\n}\n\n\n// Special styles for iOS date input\n//\n// In Mobile Safari, date inputs require a pixel line-height that matches the\n// given height of the input.\n\ninput[type=\"date\"] {\n line-height: @input-height-base;\n}\n\n\n// Form groups\n//\n// Designed to help with the organization and spacing of vertical forms. For\n// horizontal forms, use the predefined grid classes.\n\n.form-group {\n margin-bottom: 15px;\n}\n\n\n// Checkboxes and radios\n//\n// Indent the labels to position radios/checkboxes as hanging controls.\n\n.radio,\n.checkbox {\n display: block;\n min-height: @line-height-computed; // clear the floating input if there is no label text\n margin-top: 10px;\n margin-bottom: 10px;\n padding-left: 20px;\n label {\n display: inline;\n font-weight: normal;\n cursor: pointer;\n }\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n float: left;\n margin-left: -20px;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing\n}\n\n// Radios and checkboxes on same line\n.radio-inline,\n.checkbox-inline {\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n vertical-align: middle;\n font-weight: normal;\n cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px; // space out consecutive inline controls\n}\n\n// Apply same disabled cursor tweak as for inputs\n//\n// Note: Neither radios nor checkboxes can be readonly.\ninput[type=\"radio\"],\ninput[type=\"checkbox\"],\n.radio,\n.radio-inline,\n.checkbox,\n.checkbox-inline {\n &[disabled],\n fieldset[disabled] & {\n cursor: not-allowed;\n }\n}\n\n\n// Form control sizing\n//\n// Build on `.form-control` with modifier classes to decrease or increase the\n// height and font-size of form controls.\n\n.input-sm {\n .input-size(@input-height-small; @padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n\n.input-lg {\n .input-size(@input-height-large; @padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);\n}\n\n\n// Form control feedback states\n//\n// Apply contextual and semantic states to individual form controls.\n\n.has-feedback {\n // Enable absolute positioning\n position: relative;\n\n // Ensure icons don't overlap text\n .form-control {\n padding-right: (@input-height-base * 1.25);\n }\n\n // Feedback icon (requires .glyphicon classes)\n .form-control-feedback {\n position: absolute;\n top: (@line-height-computed + 5); // Height of the `label` and its margin\n right: 0;\n display: block;\n width: @input-height-base;\n height: @input-height-base;\n line-height: @input-height-base;\n text-align: center;\n }\n}\n\n// Feedback states\n.has-success {\n .form-control-validation(@state-success-text; @state-success-text; @state-success-bg);\n}\n.has-warning {\n .form-control-validation(@state-warning-text; @state-warning-text; @state-warning-bg);\n}\n.has-error {\n .form-control-validation(@state-danger-text; @state-danger-text; @state-danger-bg);\n}\n\n\n// Static form control text\n//\n// Apply class to a `p` element to make any string of text align with labels in\n// a horizontal form layout.\n\n.form-control-static {\n margin-bottom: 0; // Remove default margin from `p`\n}\n\n\n// Help text\n//\n// Apply to any element you wish to create light text for placement immediately\n// below a form control. Use for general help, formatting, or instructional text.\n\n.help-block {\n display: block; // account for any element using help-block\n margin-top: 5px;\n margin-bottom: 10px;\n color: lighten(@text-color, 25%); // lighten the text some for contrast\n}\n\n\n\n// Inline forms\n//\n// Make forms appear inline(-block) by adding the `.form-inline` class. Inline\n// forms begin stacked on extra small (mobile) devices and then go inline when\n// viewports reach <768px.\n//\n// Requires wrapping inputs and labels with `.form-group` for proper display of\n// default HTML form controls and our custom form controls (e.g., input groups).\n//\n// Heads up! This is mixin-ed into `.navbar-form` in navbars.less.\n\n.form-inline {\n\n // Kick in the inline\n @media (min-width: @screen-sm-min) {\n // Inline-block all the things for \"inline\"\n .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n\n // In navbar-form, allow folks to *not* use `.form-group`\n .form-control {\n display: inline-block;\n width: auto; // Prevent labels from stacking above inputs in `.form-group`\n vertical-align: middle;\n }\n // Input groups need that 100% width though\n .input-group > .form-control {\n width: 100%;\n }\n\n .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n\n // Remove default margin on radios/checkboxes that were used for stacking, and\n // then undo the floating of radios and checkboxes to match (which also avoids\n // a bug in WebKit: https://github.com/twbs/bootstrap/issues/1969).\n .radio,\n .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n padding-left: 0;\n vertical-align: middle;\n }\n .radio input[type=\"radio\"],\n .checkbox input[type=\"checkbox\"] {\n float: none;\n margin-left: 0;\n }\n\n // Validation states\n //\n // Reposition the icon because it's now within a grid column and columns have\n // `position: relative;` on them. Also accounts for the grid gutter padding.\n .has-feedback .form-control-feedback {\n top: 0;\n }\n }\n}\n\n\n// Horizontal forms\n//\n// Horizontal forms are built on grid classes and allow you to create forms with\n// labels on the left and inputs on the right.\n\n.form-horizontal {\n\n // Consistent vertical alignment of labels, radios, and checkboxes\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline {\n margin-top: 0;\n margin-bottom: 0;\n padding-top: (@padding-base-vertical + 1); // Default padding plus a border\n }\n // Account for padding we're adding to ensure the alignment and of help text\n // and other content below items\n .radio,\n .checkbox {\n min-height: (@line-height-computed + (@padding-base-vertical + 1));\n }\n\n // Make form groups behave like rows\n .form-group {\n .make-row();\n }\n\n .form-control-static {\n padding-top: (@padding-base-vertical + 1);\n }\n\n // Only right align form labels here when the columns stop stacking\n @media (min-width: @screen-sm-min) {\n .control-label {\n text-align: right;\n }\n }\n\n // Validation states\n //\n // Reposition the icon because it's now within a grid column and columns have\n // `position: relative;` on them. Also accounts for the grid gutter padding.\n .has-feedback .form-control-feedback {\n top: 0;\n right: (@grid-gutter-width / 2);\n }\n}\n","//\n// Buttons\n// --------------------------------------------------\n\n\n// Base styles\n// --------------------------------------------------\n\n.btn {\n display: inline-block;\n margin-bottom: 0; // For input.btn\n font-weight: @btn-font-weight;\n text-align: center;\n vertical-align: middle;\n cursor: pointer;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n white-space: nowrap;\n .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @border-radius-base);\n .user-select(none);\n\n &,\n &:active,\n &.active {\n &:focus {\n .tab-focus();\n }\n }\n\n &:hover,\n &:focus {\n color: @btn-default-color;\n text-decoration: none;\n }\n\n &:active,\n &.active {\n outline: 0;\n background-image: none;\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n cursor: not-allowed;\n pointer-events: none; // Future-proof disabling of clicks\n .opacity(.65);\n .box-shadow(none);\n }\n}\n\n\n// Alternate buttons\n// --------------------------------------------------\n\n.btn-default {\n .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border);\n}\n.btn-primary {\n .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border);\n}\n// Success appears as green\n.btn-success {\n .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border);\n}\n// Info appears as blue-green\n.btn-info {\n .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border);\n}\n// Warning appears as orange\n.btn-warning {\n .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border);\n}\n// Danger and error appear as red\n.btn-danger {\n .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border);\n}\n\n\n// Link buttons\n// -------------------------\n\n// Make a button look and behave like a link\n.btn-link {\n color: @link-color;\n font-weight: normal;\n cursor: pointer;\n border-radius: 0;\n\n &,\n &:active,\n &[disabled],\n fieldset[disabled] & {\n background-color: transparent;\n .box-shadow(none);\n }\n &,\n &:hover,\n &:focus,\n &:active {\n border-color: transparent;\n }\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: underline;\n background-color: transparent;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @btn-link-disabled-color;\n text-decoration: none;\n }\n }\n}\n\n\n// Button Sizes\n// --------------------------------------------------\n\n.btn-lg {\n // line-height: ensure even-numbered height of button next to large input\n .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);\n}\n.btn-sm {\n // line-height: ensure proper height of button next to small input\n .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n.btn-xs {\n .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n\n\n// Block button\n// --------------------------------------------------\n\n.btn-block {\n display: block;\n width: 100%;\n padding-left: 0;\n padding-right: 0;\n}\n\n// Vertically space out multiple block buttons\n.btn-block + .btn-block {\n margin-top: 5px;\n}\n\n// Specificity overrides\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"] {\n &.btn-block {\n width: 100%;\n }\n}\n","//\n// Button groups\n// --------------------------------------------------\n\n// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle; // match .btn alignment given font-size hack above\n > .btn {\n position: relative;\n float: left;\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active,\n &.active {\n z-index: 2;\n }\n &:focus {\n // Remove focus outline when dropdown JS adds it after closing the menu\n outline: none;\n }\n }\n}\n\n// Prevent double borders when buttons are next to each other\n.btn-group {\n .btn + .btn,\n .btn + .btn-group,\n .btn-group + .btn,\n .btn-group + .btn-group {\n margin-left: -1px;\n }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n margin-left: -5px; // Offset the first child's margin\n &:extend(.clearfix all);\n\n .btn-group,\n .input-group {\n float: left;\n }\n > .btn,\n > .btn-group,\n > .input-group {\n margin-left: 5px;\n }\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n\n// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match\n.btn-group > .btn:first-child {\n margin-left: 0;\n &:not(:last-child):not(.dropdown-toggle) {\n .border-right-radius(0);\n }\n}\n// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n .border-left-radius(0);\n}\n\n// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-right-radius(0);\n }\n}\n.btn-group > .btn-group:last-child > .btn:first-child {\n .border-left-radius(0);\n}\n\n// On active and open, don't show outline\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-xs > .btn { &:extend(.btn-xs); }\n.btn-group-sm > .btn { &:extend(.btn-sm); }\n.btn-group-lg > .btn { &:extend(.btn-lg); }\n\n\n// Split button dropdowns\n// ----------------------\n\n// Give the line between buttons some depth\n.btn-group > .btn + .dropdown-toggle {\n padding-left: 8px;\n padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-left: 12px;\n padding-right: 12px;\n}\n\n// The clickable button for toggling the menu\n// Remove the gradient and set the same inset shadow as the :active state\n.btn-group.open .dropdown-toggle {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n\n // Show no shadow for `.btn-link` since it has no other button styles.\n &.btn-link {\n .box-shadow(none);\n }\n}\n\n\n// Reposition the caret\n.btn .caret {\n margin-left: 0;\n}\n// Carets in other button sizes\n.btn-lg .caret {\n border-width: @caret-width-large @caret-width-large 0;\n border-bottom-width: 0;\n}\n// Upside down carets for .dropup\n.dropup .btn-lg .caret {\n border-width: 0 @caret-width-large @caret-width-large;\n}\n\n\n// Vertical button groups\n// ----------------------\n\n.btn-group-vertical {\n > .btn,\n > .btn-group,\n > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n }\n\n // Clear floats so dropdown menus can be properly placed\n > .btn-group {\n &:extend(.clearfix all);\n > .btn {\n float: none;\n }\n }\n\n > .btn + .btn,\n > .btn + .btn-group,\n > .btn-group + .btn,\n > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n }\n}\n\n.btn-group-vertical > .btn {\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n &:first-child:not(:last-child) {\n border-top-right-radius: @border-radius-base;\n .border-bottom-radius(0);\n }\n &:last-child:not(:first-child) {\n border-bottom-left-radius: @border-radius-base;\n .border-top-radius(0);\n }\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-bottom-radius(0);\n }\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n .border-top-radius(0);\n}\n\n\n\n// Justified button groups\n// ----------------------\n\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n > .btn,\n > .btn-group {\n float: none;\n display: table-cell;\n width: 1%;\n }\n > .btn-group .btn {\n width: 100%;\n }\n}\n\n\n// Checkbox and radio options\n[data-toggle=\"buttons\"] > .btn > input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn > input[type=\"checkbox\"] {\n display: none;\n}\n","//\n// Component animations\n// --------------------------------------------------\n\n// Heads up!\n//\n// We don't use the `.opacity()` mixin here since it causes a bug with text\n// fields in IE7-8. Source: https://github.com/twitter/bootstrap/pull/3552.\n\n.fade {\n opacity: 0;\n .transition(opacity .15s linear);\n &.in {\n opacity: 1;\n }\n}\n\n.collapse {\n display: none;\n &.in {\n display: block;\n }\n}\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n .transition(height .35s ease);\n}\n","//\n// Glyphicons for Bootstrap\n//\n// Since icons are fonts, they can be placed anywhere text is placed and are\n// thus automatically sized to match the surrounding child. To use, create an\n// inline element with the appropriate classes, like so:\n//\n// <a href=\"#\"><span class=\"glyphicon glyphicon-star\"></span> Star</a>\n\n// Import the fonts\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: ~\"url('@{icon-font-path}@{icon-font-name}.eot')\";\n src: ~\"url('@{icon-font-path}@{icon-font-name}.eot?#iefix') format('embedded-opentype')\",\n ~\"url('@{icon-font-path}@{icon-font-name}.woff') format('woff')\",\n ~\"url('@{icon-font-path}@{icon-font-name}.ttf') format('truetype')\",\n ~\"url('@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}') format('svg')\";\n}\n\n// Catchall baseclass\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n// Individual icons\n.glyphicon-asterisk { &:before { content: \"\\2a\"; } }\n.glyphicon-plus { &:before { content: \"\\2b\"; } }\n.glyphicon-euro { &:before { content: \"\\20ac\"; } }\n.glyphicon-minus { &:before { content: \"\\2212\"; } }\n.glyphicon-cloud { &:before { content: \"\\2601\"; } }\n.glyphicon-envelope { &:before { content: \"\\2709\"; } }\n.glyphicon-pencil { &:before { content: \"\\270f\"; } }\n.glyphicon-glass { &:before { content: \"\\e001\"; } }\n.glyphicon-music { &:before { content: \"\\e002\"; } }\n.glyphicon-search { &:before { content: \"\\e003\"; } }\n.glyphicon-heart { &:before { content: \"\\e005\"; } }\n.glyphicon-star { &:before { content: \"\\e006\"; } }\n.glyphicon-star-empty { &:before { content: \"\\e007\"; } }\n.glyphicon-user { &:before { content: \"\\e008\"; } }\n.glyphicon-film { &:before { content: \"\\e009\"; } }\n.glyphicon-th-large { &:before { content: \"\\e010\"; } }\n.glyphicon-th { &:before { content: \"\\e011\"; } }\n.glyphicon-th-list { &:before { content: \"\\e012\"; } }\n.glyphicon-ok { &:before { content: \"\\e013\"; } }\n.glyphicon-remove { &:before { content: \"\\e014\"; } }\n.glyphicon-zoom-in { &:before { content: \"\\e015\"; } }\n.glyphicon-zoom-out { &:before { content: \"\\e016\"; } }\n.glyphicon-off { &:before { content: \"\\e017\"; } }\n.glyphicon-signal { &:before { content: \"\\e018\"; } }\n.glyphicon-cog { &:before { content: \"\\e019\"; } }\n.glyphicon-trash { &:before { content: \"\\e020\"; } }\n.glyphicon-home { &:before { content: \"\\e021\"; } }\n.glyphicon-file { &:before { content: \"\\e022\"; } }\n.glyphicon-time { &:before { content: \"\\e023\"; } }\n.glyphicon-road { &:before { content: \"\\e024\"; } }\n.glyphicon-download-alt { &:before { content: \"\\e025\"; } }\n.glyphicon-download { &:before { content: \"\\e026\"; } }\n.glyphicon-upload { &:before { content: \"\\e027\"; } }\n.glyphicon-inbox { &:before { content: \"\\e028\"; } }\n.glyphicon-play-circle { &:before { content: \"\\e029\"; } }\n.glyphicon-repeat { &:before { content: \"\\e030\"; } }\n.glyphicon-refresh { &:before { content: \"\\e031\"; } }\n.glyphicon-list-alt { &:before { content: \"\\e032\"; } }\n.glyphicon-lock { &:before { content: \"\\e033\"; } }\n.glyphicon-flag { &:before { content: \"\\e034\"; } }\n.glyphicon-headphones { &:before { content: \"\\e035\"; } }\n.glyphicon-volume-off { &:before { content: \"\\e036\"; } }\n.glyphicon-volume-down { &:before { content: \"\\e037\"; } }\n.glyphicon-volume-up { &:before { content: \"\\e038\"; } }\n.glyphicon-qrcode { &:before { content: \"\\e039\"; } }\n.glyphicon-barcode { &:before { content: \"\\e040\"; } }\n.glyphicon-tag { &:before { content: \"\\e041\"; } }\n.glyphicon-tags { &:before { content: \"\\e042\"; } }\n.glyphicon-book { &:before { content: \"\\e043\"; } }\n.glyphicon-bookmark { &:before { content: \"\\e044\"; } }\n.glyphicon-print { &:before { content: \"\\e045\"; } }\n.glyphicon-camera { &:before { content: \"\\e046\"; } }\n.glyphicon-font { &:before { content: \"\\e047\"; } }\n.glyphicon-bold { &:before { content: \"\\e048\"; } }\n.glyphicon-italic { &:before { content: \"\\e049\"; } }\n.glyphicon-text-height { &:before { content: \"\\e050\"; } }\n.glyphicon-text-width { &:before { content: \"\\e051\"; } }\n.glyphicon-align-left { &:before { content: \"\\e052\"; } }\n.glyphicon-align-center { &:before { content: \"\\e053\"; } }\n.glyphicon-align-right { &:before { content: \"\\e054\"; } }\n.glyphicon-align-justify { &:before { content: \"\\e055\"; } }\n.glyphicon-list { &:before { content: \"\\e056\"; } }\n.glyphicon-indent-left { &:before { content: \"\\e057\"; } }\n.glyphicon-indent-right { &:before { content: \"\\e058\"; } }\n.glyphicon-facetime-video { &:before { content: \"\\e059\"; } }\n.glyphicon-picture { &:before { content: \"\\e060\"; } }\n.glyphicon-map-marker { &:before { content: \"\\e062\"; } }\n.glyphicon-adjust { &:before { content: \"\\e063\"; } }\n.glyphicon-tint { &:before { content: \"\\e064\"; } }\n.glyphicon-edit { &:before { content: \"\\e065\"; } }\n.glyphicon-share { &:before { content: \"\\e066\"; } }\n.glyphicon-check { &:before { content: \"\\e067\"; } }\n.glyphicon-move { &:before { content: \"\\e068\"; } }\n.glyphicon-step-backward { &:before { content: \"\\e069\"; } }\n.glyphicon-fast-backward { &:before { content: \"\\e070\"; } }\n.glyphicon-backward { &:before { content: \"\\e071\"; } }\n.glyphicon-play { &:before { content: \"\\e072\"; } }\n.glyphicon-pause { &:before { content: \"\\e073\"; } }\n.glyphicon-stop { &:before { content: \"\\e074\"; } }\n.glyphicon-forward { &:before { content: \"\\e075\"; } }\n.glyphicon-fast-forward { &:before { content: \"\\e076\"; } }\n.glyphicon-step-forward { &:before { content: \"\\e077\"; } }\n.glyphicon-eject { &:before { content: \"\\e078\"; } }\n.glyphicon-chevron-left { &:before { content: \"\\e079\"; } }\n.glyphicon-chevron-right { &:before { content: \"\\e080\"; } }\n.glyphicon-plus-sign { &:before { content: \"\\e081\"; } }\n.glyphicon-minus-sign { &:before { content: \"\\e082\"; } }\n.glyphicon-remove-sign { &:before { content: \"\\e083\"; } }\n.glyphicon-ok-sign { &:before { content: \"\\e084\"; } }\n.glyphicon-question-sign { &:before { content: \"\\e085\"; } }\n.glyphicon-info-sign { &:before { content: \"\\e086\"; } }\n.glyphicon-screenshot { &:before { content: \"\\e087\"; } }\n.glyphicon-remove-circle { &:before { content: \"\\e088\"; } }\n.glyphicon-ok-circle { &:before { content: \"\\e089\"; } }\n.glyphicon-ban-circle { &:before { content: \"\\e090\"; } }\n.glyphicon-arrow-left { &:before { content: \"\\e091\"; } }\n.glyphicon-arrow-right { &:before { content: \"\\e092\"; } }\n.glyphicon-arrow-up { &:before { content: \"\\e093\"; } }\n.glyphicon-arrow-down { &:before { content: \"\\e094\"; } }\n.glyphicon-share-alt { &:before { content: \"\\e095\"; } }\n.glyphicon-resize-full { &:before { content: \"\\e096\"; } }\n.glyphicon-resize-small { &:before { content: \"\\e097\"; } }\n.glyphicon-exclamation-sign { &:before { content: \"\\e101\"; } }\n.glyphicon-gift { &:before { content: \"\\e102\"; } }\n.glyphicon-leaf { &:before { content: \"\\e103\"; } }\n.glyphicon-fire { &:before { content: \"\\e104\"; } }\n.glyphicon-eye-open { &:before { content: \"\\e105\"; } }\n.glyphicon-eye-close { &:before { content: \"\\e106\"; } }\n.glyphicon-warning-sign { &:before { content: \"\\e107\"; } }\n.glyphicon-plane { &:before { content: \"\\e108\"; } }\n.glyphicon-calendar { &:before { content: \"\\e109\"; } }\n.glyphicon-random { &:before { content: \"\\e110\"; } }\n.glyphicon-comment { &:before { content: \"\\e111\"; } }\n.glyphicon-magnet { &:before { content: \"\\e112\"; } }\n.glyphicon-chevron-up { &:before { content: \"\\e113\"; } }\n.glyphicon-chevron-down { &:before { content: \"\\e114\"; } }\n.glyphicon-retweet { &:before { content: \"\\e115\"; } }\n.glyphicon-shopping-cart { &:before { content: \"\\e116\"; } }\n.glyphicon-folder-close { &:before { content: \"\\e117\"; } }\n.glyphicon-folder-open { &:before { content: \"\\e118\"; } }\n.glyphicon-resize-vertical { &:before { content: \"\\e119\"; } }\n.glyphicon-resize-horizontal { &:before { content: \"\\e120\"; } }\n.glyphicon-hdd { &:before { content: \"\\e121\"; } }\n.glyphicon-bullhorn { &:before { content: \"\\e122\"; } }\n.glyphicon-bell { &:before { content: \"\\e123\"; } }\n.glyphicon-certificate { &:before { content: \"\\e124\"; } }\n.glyphicon-thumbs-up { &:before { content: \"\\e125\"; } }\n.glyphicon-thumbs-down { &:before { content: \"\\e126\"; } }\n.glyphicon-hand-right { &:before { content: \"\\e127\"; } }\n.glyphicon-hand-left { &:before { content: \"\\e128\"; } }\n.glyphicon-hand-up { &:before { content: \"\\e129\"; } }\n.glyphicon-hand-down { &:before { content: \"\\e130\"; } }\n.glyphicon-circle-arrow-right { &:before { content: \"\\e131\"; } }\n.glyphicon-circle-arrow-left { &:before { content: \"\\e132\"; } }\n.glyphicon-circle-arrow-up { &:before { content: \"\\e133\"; } }\n.glyphicon-circle-arrow-down { &:before { content: \"\\e134\"; } }\n.glyphicon-globe { &:before { content: \"\\e135\"; } }\n.glyphicon-wrench { &:before { content: \"\\e136\"; } }\n.glyphicon-tasks { &:before { content: \"\\e137\"; } }\n.glyphicon-filter { &:before { content: \"\\e138\"; } }\n.glyphicon-briefcase { &:before { content: \"\\e139\"; } }\n.glyphicon-fullscreen { &:before { content: \"\\e140\"; } }\n.glyphicon-dashboard { &:before { content: \"\\e141\"; } }\n.glyphicon-paperclip { &:before { content: \"\\e142\"; } }\n.glyphicon-heart-empty { &:before { content: \"\\e143\"; } }\n.glyphicon-link { &:before { content: \"\\e144\"; } }\n.glyphicon-phone { &:before { content: \"\\e145\"; } }\n.glyphicon-pushpin { &:before { content: \"\\e146\"; } }\n.glyphicon-usd { &:before { content: \"\\e148\"; } }\n.glyphicon-gbp { &:before { content: \"\\e149\"; } }\n.glyphicon-sort { &:before { content: \"\\e150\"; } }\n.glyphicon-sort-by-alphabet { &:before { content: \"\\e151\"; } }\n.glyphicon-sort-by-alphabet-alt { &:before { content: \"\\e152\"; } }\n.glyphicon-sort-by-order { &:before { content: \"\\e153\"; } }\n.glyphicon-sort-by-order-alt { &:before { content: \"\\e154\"; } }\n.glyphicon-sort-by-attributes { &:before { content: \"\\e155\"; } }\n.glyphicon-sort-by-attributes-alt { &:before { content: \"\\e156\"; } }\n.glyphicon-unchecked { &:before { content: \"\\e157\"; } }\n.glyphicon-expand { &:before { content: \"\\e158\"; } }\n.glyphicon-collapse-down { &:before { content: \"\\e159\"; } }\n.glyphicon-collapse-up { &:before { content: \"\\e160\"; } }\n.glyphicon-log-in { &:before { content: \"\\e161\"; } }\n.glyphicon-flash { &:before { content: \"\\e162\"; } }\n.glyphicon-log-out { &:before { content: \"\\e163\"; } }\n.glyphicon-new-window { &:before { content: \"\\e164\"; } }\n.glyphicon-record { &:before { content: \"\\e165\"; } }\n.glyphicon-save { &:before { content: \"\\e166\"; } }\n.glyphicon-open { &:before { content: \"\\e167\"; } }\n.glyphicon-saved { &:before { content: \"\\e168\"; } }\n.glyphicon-import { &:before { content: \"\\e169\"; } }\n.glyphicon-export { &:before { content: \"\\e170\"; } }\n.glyphicon-send { &:before { content: \"\\e171\"; } }\n.glyphicon-floppy-disk { &:before { content: \"\\e172\"; } }\n.glyphicon-floppy-saved { &:before { content: \"\\e173\"; } }\n.glyphicon-floppy-remove { &:before { content: \"\\e174\"; } }\n.glyphicon-floppy-save { &:before { content: \"\\e175\"; } }\n.glyphicon-floppy-open { &:before { content: \"\\e176\"; } }\n.glyphicon-credit-card { &:before { content: \"\\e177\"; } }\n.glyphicon-transfer { &:before { content: \"\\e178\"; } }\n.glyphicon-cutlery { &:before { content: \"\\e179\"; } }\n.glyphicon-header { &:before { content: \"\\e180\"; } }\n.glyphicon-compressed { &:before { content: \"\\e181\"; } }\n.glyphicon-earphone { &:before { content: \"\\e182\"; } }\n.glyphicon-phone-alt { &:before { content: \"\\e183\"; } }\n.glyphicon-tower { &:before { content: \"\\e184\"; } }\n.glyphicon-stats { &:before { content: \"\\e185\"; } }\n.glyphicon-sd-video { &:before { content: \"\\e186\"; } }\n.glyphicon-hd-video { &:before { content: \"\\e187\"; } }\n.glyphicon-subtitles { &:before { content: \"\\e188\"; } }\n.glyphicon-sound-stereo { &:before { content: \"\\e189\"; } }\n.glyphicon-sound-dolby { &:before { content: \"\\e190\"; } }\n.glyphicon-sound-5-1 { &:before { content: \"\\e191\"; } }\n.glyphicon-sound-6-1 { &:before { content: \"\\e192\"; } }\n.glyphicon-sound-7-1 { &:before { content: \"\\e193\"; } }\n.glyphicon-copyright-mark { &:before { content: \"\\e194\"; } }\n.glyphicon-registration-mark { &:before { content: \"\\e195\"; } }\n.glyphicon-cloud-download { &:before { content: \"\\e197\"; } }\n.glyphicon-cloud-upload { &:before { content: \"\\e198\"; } }\n.glyphicon-tree-conifer { &:before { content: \"\\e199\"; } }\n.glyphicon-tree-deciduous { &:before { content: \"\\e200\"; } }\n","//\n// Dropdown menus\n// --------------------------------------------------\n\n\n// Dropdown arrow/caret\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: @caret-width-base solid;\n border-right: @caret-width-base solid transparent;\n border-left: @caret-width-base solid transparent;\n}\n\n// The dropdown wrapper (div)\n.dropdown {\n position: relative;\n}\n\n// Prevent the focus on the dropdown toggle when closing dropdowns\n.dropdown-toggle:focus {\n outline: 0;\n}\n\n// The dropdown menu (ul)\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: @zindex-dropdown;\n display: none; // none by default, but block on \"open\" of the menu\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0; // override default ul\n list-style: none;\n font-size: @font-size-base;\n background-color: @dropdown-bg;\n border: 1px solid @dropdown-fallback-border; // IE8 fallback\n border: 1px solid @dropdown-border;\n border-radius: @border-radius-base;\n .box-shadow(0 6px 12px rgba(0,0,0,.175));\n background-clip: padding-box;\n\n // Aligns the dropdown menu to right\n //\n // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]`\n &.pull-right {\n right: 0;\n left: auto;\n }\n\n // Dividers (basically an hr) within the dropdown\n .divider {\n .nav-divider(@dropdown-divider-bg);\n }\n\n // Links within the dropdown menu\n > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: @line-height-base;\n color: @dropdown-link-color;\n white-space: nowrap; // prevent links from randomly breaking onto new lines\n }\n}\n\n// Hover/Focus state\n.dropdown-menu > li > a {\n &:hover,\n &:focus {\n text-decoration: none;\n color: @dropdown-link-hover-color;\n background-color: @dropdown-link-hover-bg;\n }\n}\n\n// Active state\n.dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-active-color;\n text-decoration: none;\n outline: 0;\n background-color: @dropdown-link-active-bg;\n }\n}\n\n// Disabled state\n//\n// Gray out text and ensure the hover/focus state remains gray\n\n.dropdown-menu > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-disabled-color;\n }\n}\n// Nuke hover/focus effects\n.dropdown-menu > .disabled > a {\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: transparent;\n background-image: none; // Remove CSS gradient\n .reset-filter();\n cursor: not-allowed;\n }\n}\n\n// Open state for the dropdown\n.open {\n // Show the menu\n > .dropdown-menu {\n display: block;\n }\n\n // Remove the outline when :focus is triggered\n > a {\n outline: 0;\n }\n}\n\n// Menu positioning\n//\n// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown\n// menu with the parent.\n.dropdown-menu-right {\n left: auto; // Reset the default from `.dropdown-menu`\n right: 0;\n}\n// With v3, we enabled auto-flipping if you have a dropdown within a right\n// aligned nav component. To enable the undoing of that, we provide an override\n// to restore the default dropdown menu alignment.\n//\n// This is only for left-aligning a dropdown menu within a `.navbar-right` or\n// `.pull-right` nav component.\n.dropdown-menu-left {\n left: 0;\n right: auto;\n}\n\n// Dropdown section headers\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: @font-size-small;\n line-height: @line-height-base;\n color: @dropdown-header-color;\n}\n\n// Backdrop to catch body clicks on mobile, etc.\n.dropdown-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: (@zindex-dropdown - 10);\n}\n\n// Right aligned dropdowns\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n//\n// Just add .dropup after the standard .dropdown class and you're set, bro.\n// TODO: abstract this so that the navbar fixed styles are not placed here?\n\n.dropup,\n.navbar-fixed-bottom .dropdown {\n // Reverse the caret\n .caret {\n border-top: 0;\n border-bottom: @caret-width-base solid;\n content: \"\";\n }\n // Different positioning for bottom up menu\n .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 1px;\n }\n}\n\n\n// Component alignment\n//\n// Reiterate per navbar.less and the modified component alignment there.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-right {\n .dropdown-menu {\n .dropdown-menu-right();\n }\n // Necessary for overrides of the default right aligned menu.\n // Will remove come v4 in all likelihood.\n .dropdown-menu-left {\n .dropdown-menu-left();\n }\n }\n}\n\n","//\n// Input groups\n// --------------------------------------------------\n\n// Base styles\n// -------------------------\n.input-group {\n position: relative; // For dropdowns\n display: table;\n border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table\n\n // Undo padding and float of grid classes\n &[class*=\"col-\"] {\n float: none;\n padding-left: 0;\n padding-right: 0;\n }\n\n .form-control {\n // Ensure that the input is always above the *appended* addon button for\n // proper border colors.\n position: relative;\n z-index: 2;\n\n // IE9 fubars the placeholder attribute in text inputs and the arrows on\n // select elements in input groups. To fix it, we float the input. Details:\n // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855\n float: left;\n\n width: 100%;\n margin-bottom: 0;\n }\n}\n\n// Sizing options\n//\n// Remix the default form control sizing classes into new ones for easier\n// manipulation.\n\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn { .input-lg(); }\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn { .input-sm(); }\n\n\n// Display as table-cell\n// -------------------------\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n}\n// Addon and addon wrapper for buttons\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle; // Match the inputs\n}\n\n// Text input groups\n// -------------------------\n.input-group-addon {\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n font-weight: normal;\n line-height: 1;\n color: @input-color;\n text-align: center;\n background-color: @input-group-addon-bg;\n border: 1px solid @input-group-addon-border-color;\n border-radius: @border-radius-base;\n\n // Sizing\n &.input-sm {\n padding: @padding-small-vertical @padding-small-horizontal;\n font-size: @font-size-small;\n border-radius: @border-radius-small;\n }\n &.input-lg {\n padding: @padding-large-vertical @padding-large-horizontal;\n font-size: @font-size-large;\n border-radius: @border-radius-large;\n }\n\n // Nuke default margins from checkboxes and radios to vertically center within.\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n margin-top: 0;\n }\n}\n\n// Reset rounded corners\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n .border-right-radius(0);\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n .border-left-radius(0);\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n\n// Button input groups\n// -------------------------\n.input-group-btn {\n position: relative;\n // Jankily prevent input button groups from wrapping with `white-space` and\n // `font-size` in combination with `inline-block` on buttons.\n font-size: 0;\n white-space: nowrap;\n\n // Negative margin for spacing, position for bringing hovered/focused/actived\n // element above the siblings.\n > .btn {\n position: relative;\n + .btn {\n margin-left: -1px;\n }\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active {\n z-index: 2;\n }\n }\n\n // Negative margin to only have a 1px border between the two\n &:first-child {\n > .btn,\n > .btn-group {\n margin-right: -1px;\n }\n }\n &:last-child {\n > .btn,\n > .btn-group {\n margin-left: -1px;\n }\n }\n}\n","//\n// Navs\n// --------------------------------------------------\n\n\n// Base class\n// --------------------------------------------------\n\n.nav {\n margin-bottom: 0;\n padding-left: 0; // Override default ul/ol\n list-style: none;\n &:extend(.clearfix all);\n\n > li {\n position: relative;\n display: block;\n\n > a {\n position: relative;\n display: block;\n padding: @nav-link-padding;\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: @nav-link-hover-bg;\n }\n }\n\n // Disabled state sets text to gray and nukes hover/tab effects\n &.disabled > a {\n color: @nav-disabled-link-color;\n\n &:hover,\n &:focus {\n color: @nav-disabled-link-hover-color;\n text-decoration: none;\n background-color: transparent;\n cursor: not-allowed;\n }\n }\n }\n\n // Open dropdowns\n .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @nav-link-hover-bg;\n border-color: @link-color;\n }\n }\n\n // Nav dividers (deprecated with v3.0.1)\n //\n // This should have been removed in v3 with the dropping of `.nav-list`, but\n // we missed it. We don't currently support this anywhere, but in the interest\n // of maintaining backward compatibility in case you use it, it's deprecated.\n .nav-divider {\n .nav-divider();\n }\n\n // Prevent IE8 from misplacing imgs\n //\n // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989\n > li > a > img {\n max-width: none;\n }\n}\n\n\n// Tabs\n// -------------------------\n\n// Give the tabs something to sit on\n.nav-tabs {\n border-bottom: 1px solid @nav-tabs-border-color;\n > li {\n float: left;\n // Make the list-items overlay the bottom border\n margin-bottom: -1px;\n\n // Actual tabs (as links)\n > a {\n margin-right: 2px;\n line-height: @line-height-base;\n border: 1px solid transparent;\n border-radius: @border-radius-base @border-radius-base 0 0;\n &:hover {\n border-color: @nav-tabs-link-hover-border-color @nav-tabs-link-hover-border-color @nav-tabs-border-color;\n }\n }\n\n // Active state, and its :hover to override normal :hover\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-tabs-active-link-hover-color;\n background-color: @nav-tabs-active-link-hover-bg;\n border: 1px solid @nav-tabs-active-link-hover-border-color;\n border-bottom-color: transparent;\n cursor: default;\n }\n }\n }\n // pulling this in mainly for less shorthand\n &.nav-justified {\n .nav-justified();\n .nav-tabs-justified();\n }\n}\n\n\n// Pills\n// -------------------------\n.nav-pills {\n > li {\n float: left;\n\n // Links rendered as pills\n > a {\n border-radius: @nav-pills-border-radius;\n }\n + li {\n margin-left: 2px;\n }\n\n // Active state\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-pills-active-link-hover-color;\n background-color: @nav-pills-active-link-hover-bg;\n }\n }\n }\n}\n\n\n// Stacked pills\n.nav-stacked {\n > li {\n float: none;\n + li {\n margin-top: 2px;\n margin-left: 0; // no need for this gap between nav items\n }\n }\n}\n\n\n// Nav variations\n// --------------------------------------------------\n\n// Justified nav links\n// -------------------------\n\n.nav-justified {\n width: 100%;\n\n > li {\n float: none;\n > a {\n text-align: center;\n margin-bottom: 5px;\n }\n }\n\n > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n }\n\n @media (min-width: @screen-sm-min) {\n > li {\n display: table-cell;\n width: 1%;\n > a {\n margin-bottom: 0;\n }\n }\n }\n}\n\n// Move borders to anchors instead of bottom of list\n//\n// Mixin for adding on top the shared `.nav-justified` styles for our tabs\n.nav-tabs-justified {\n border-bottom: 0;\n\n > li > a {\n // Override margin from .nav-tabs\n margin-right: 0;\n border-radius: @border-radius-base;\n }\n\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border: 1px solid @nav-tabs-justified-link-border-color;\n }\n\n @media (min-width: @screen-sm-min) {\n > li > a {\n border-bottom: 1px solid @nav-tabs-justified-link-border-color;\n border-radius: @border-radius-base @border-radius-base 0 0;\n }\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border-bottom-color: @nav-tabs-justified-active-link-border-color;\n }\n }\n}\n\n\n// Tabbable tabs\n// -------------------------\n\n// Hide tabbable panes to start, show them when `.active`\n.tab-content {\n > .tab-pane {\n display: none;\n }\n > .active {\n display: block;\n }\n}\n\n\n// Dropdowns\n// -------------------------\n\n// Specific dropdowns\n.nav-tabs .dropdown-menu {\n // make dropdown border overlap tab border\n margin-top: -1px;\n // Remove the top rounded corners here since there is a hard edge above the menu\n .border-top-radius(0);\n}\n","//\n// Navbars\n// --------------------------------------------------\n\n\n// Wrapper and base class\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations.\n\n.navbar {\n position: relative;\n min-height: @navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)\n margin-bottom: @navbar-margin-bottom;\n border: 1px solid transparent;\n\n // Prevent floats from breaking the navbar\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: @navbar-border-radius;\n }\n}\n\n\n// Navbar heading\n//\n// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy\n// styling of responsive aspects.\n\n.navbar-header {\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n }\n}\n\n\n// Navbar collapse (body)\n//\n// Group your navbar content into this for easy collapsing and expanding across\n// various device sizes. By default, this content is collapsed when <768px, but\n// will expand past that for a horizontal display.\n//\n// To start (on mobile devices) the navbar links, forms, and buttons are stacked\n// vertically and include a `max-height` to overflow in case you have too much\n// content for the user's viewport.\n\n.navbar-collapse {\n max-height: @navbar-collapse-max-height;\n overflow-x: visible;\n padding-right: @navbar-padding-horizontal;\n padding-left: @navbar-padding-horizontal;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255,255,255,.1);\n &:extend(.clearfix all);\n -webkit-overflow-scrolling: touch;\n\n &.in {\n overflow-y: auto;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n border-top: 0;\n box-shadow: none;\n\n &.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0; // Override default setting\n overflow: visible !important;\n }\n\n &.in {\n overflow-y: visible;\n }\n\n // Undo the collapse side padding for navbars with containers to ensure\n // alignment of right-aligned contents.\n .navbar-fixed-top &,\n .navbar-static-top &,\n .navbar-fixed-bottom & {\n padding-left: 0;\n padding-right: 0;\n }\n }\n}\n\n\n// Both navbar header and collapse\n//\n// When a container is present, change the behavior of the header and collapse.\n\n.container,\n.container-fluid {\n > .navbar-header,\n > .navbar-collapse {\n margin-right: -@navbar-padding-horizontal;\n margin-left: -@navbar-padding-horizontal;\n\n @media (min-width: @grid-float-breakpoint) {\n margin-right: 0;\n margin-left: 0;\n }\n }\n}\n\n\n//\n// Navbar alignment options\n//\n// Display the navbar across the entirety of the page or fixed it to the top or\n// bottom of the page.\n\n// Static top (unfixed, but 100% wide) navbar\n.navbar-static-top {\n z-index: @zindex-navbar;\n border-width: 0 0 1px;\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n\n// Fix the top/bottom navbars when screen real estate supports it\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: @zindex-navbar-fixed;\n\n // Undo the rounded corners\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0; // override .navbar defaults\n border-width: 1px 0 0;\n}\n\n\n// Brand/project name\n\n.navbar-brand {\n float: left;\n padding: @navbar-padding-vertical @navbar-padding-horizontal;\n font-size: @font-size-large;\n line-height: @line-height-computed;\n height: @navbar-height;\n\n &:hover,\n &:focus {\n text-decoration: none;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n .navbar > .container &,\n .navbar > .container-fluid & {\n margin-left: -@navbar-padding-horizontal;\n }\n }\n}\n\n\n// Navbar toggle\n//\n// Custom button for toggling the `.navbar-collapse`, powered by the collapse\n// JavaScript plugin.\n\n.navbar-toggle {\n position: relative;\n float: right;\n margin-right: @navbar-padding-horizontal;\n padding: 9px 10px;\n .navbar-vertical-align(34px);\n background-color: transparent;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n border-radius: @border-radius-base;\n\n // We remove the `outline` here, but later compensate by attaching `:hover`\n // styles to `:focus`.\n &:focus {\n outline: none;\n }\n\n // Bars\n .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n }\n .icon-bar + .icon-bar {\n margin-top: 4px;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n display: none;\n }\n}\n\n\n// Navbar nav links\n//\n// Builds on top of the `.nav` components with its own modifier class to make\n// the nav the full height of the horizontal nav (above 768px).\n\n.navbar-nav {\n margin: (@navbar-padding-vertical / 2) -@navbar-padding-horizontal;\n\n > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: @line-height-computed;\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n > li > a,\n .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n > li > a {\n line-height: @line-height-computed;\n &:hover,\n &:focus {\n background-image: none;\n }\n }\n }\n }\n\n // Uncollapse the nav\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin: 0;\n\n > li {\n float: left;\n > a {\n padding-top: @navbar-padding-vertical;\n padding-bottom: @navbar-padding-vertical;\n }\n }\n\n &.navbar-right:last-child {\n margin-right: -@navbar-padding-horizontal;\n }\n }\n}\n\n\n// Component alignment\n//\n// Repurpose the pull utilities as their own navbar utilities to avoid specificity\n// issues with parents and chaining. Only do this when the navbar is uncollapsed\n// though so that navbar contents properly stack and align in mobile.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-left { .pull-left(); }\n .navbar-right { .pull-right(); }\n}\n\n\n// Navbar form\n//\n// Extension of the `.form-inline` with some extra flavor for optimum display in\n// our navbars.\n\n.navbar-form {\n margin-left: -@navbar-padding-horizontal;\n margin-right: -@navbar-padding-horizontal;\n padding: 10px @navbar-padding-horizontal;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n @shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n\n // Mixin behavior for optimum display\n .form-inline();\n\n .form-group {\n @media (max-width: @grid-float-breakpoint-max) {\n margin-bottom: 5px;\n }\n }\n\n // Vertically center in expanded, horizontal navbar\n .navbar-vertical-align(@input-height-base);\n\n // Undo 100% width for pull classes\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n border: 0;\n margin-left: 0;\n margin-right: 0;\n padding-top: 0;\n padding-bottom: 0;\n .box-shadow(none);\n\n // Outdent the form if last child to line up with content down the page\n &.navbar-right:last-child {\n margin-right: -@navbar-padding-horizontal;\n }\n }\n}\n\n\n// Dropdown menus\n\n// Menu position and menu carets\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n .border-top-radius(0);\n}\n// Menu position and menu caret support for dropups via extra dropup class\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n .border-bottom-radius(0);\n}\n\n\n// Buttons in navbars\n//\n// Vertically center a button within a navbar (when *not* in a form).\n\n.navbar-btn {\n .navbar-vertical-align(@input-height-base);\n\n &.btn-sm {\n .navbar-vertical-align(@input-height-small);\n }\n &.btn-xs {\n .navbar-vertical-align(22);\n }\n}\n\n\n// Text in navbars\n//\n// Add a class to make any element properly align itself vertically within the navbars.\n\n.navbar-text {\n .navbar-vertical-align(@line-height-computed);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin-left: @navbar-padding-horizontal;\n margin-right: @navbar-padding-horizontal;\n\n // Outdent the form if last child to line up with content down the page\n &.navbar-right:last-child {\n margin-right: 0;\n }\n }\n}\n\n// Alternate navbars\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n background-color: @navbar-default-bg;\n border-color: @navbar-default-border;\n\n .navbar-brand {\n color: @navbar-default-brand-color;\n &:hover,\n &:focus {\n color: @navbar-default-brand-hover-color;\n background-color: @navbar-default-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-default-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-default-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n }\n\n .navbar-toggle {\n border-color: @navbar-default-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-default-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-default-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: @navbar-default-border;\n }\n\n // Dropdown menu items\n .navbar-nav {\n // Remove background color from open dropdown\n > .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @navbar-default-link-active-bg;\n color: @navbar-default-link-active-color;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n > li > a {\n color: @navbar-default-link-color;\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n }\n }\n }\n\n\n // Links in navbars\n //\n // Add a class to ensure links outside the navbar nav are colored correctly.\n\n .navbar-link {\n color: @navbar-default-link-color;\n &:hover {\n color: @navbar-default-link-hover-color;\n }\n }\n\n}\n\n// Inverse navbar\n\n.navbar-inverse {\n background-color: @navbar-inverse-bg;\n border-color: @navbar-inverse-border;\n\n .navbar-brand {\n color: @navbar-inverse-brand-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-brand-hover-color;\n background-color: @navbar-inverse-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-inverse-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-inverse-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n }\n\n // Darken the responsive nav toggle\n .navbar-toggle {\n border-color: @navbar-inverse-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-inverse-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-inverse-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: darken(@navbar-inverse-bg, 7%);\n }\n\n // Dropdowns\n .navbar-nav {\n > .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @navbar-inverse-link-active-bg;\n color: @navbar-inverse-link-active-color;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display\n .open .dropdown-menu {\n > .dropdown-header {\n border-color: @navbar-inverse-border;\n }\n .divider {\n background-color: @navbar-inverse-border;\n }\n > li > a {\n color: @navbar-inverse-link-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n }\n }\n }\n\n .navbar-link {\n color: @navbar-inverse-link-color;\n &:hover {\n color: @navbar-inverse-link-hover-color;\n }\n }\n\n}\n","//\n// Utility classes\n// --------------------------------------------------\n\n\n// Floats\n// -------------------------\n\n.clearfix {\n .clearfix();\n}\n.center-block {\n .center-block();\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n\n\n// Toggling content\n// -------------------------\n\n// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n .text-hide();\n}\n\n\n// Hide from screenreaders and browsers\n//\n// Credit: HTML5 Boilerplate\n\n.hidden {\n display: none !important;\n visibility: hidden !important;\n}\n\n\n// For Affix plugin\n// -------------------------\n\n.affix {\n position: fixed;\n}\n","//\n// Breadcrumbs\n// --------------------------------------------------\n\n\n.breadcrumb {\n padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal;\n margin-bottom: @line-height-computed;\n list-style: none;\n background-color: @breadcrumb-bg;\n border-radius: @border-radius-base;\n\n > li {\n display: inline-block;\n\n + li:before {\n content: \"@{breadcrumb-separator}\\00a0\"; // Unicode space added since inline-block means non-collapsing white-space\n padding: 0 5px;\n color: @breadcrumb-color;\n }\n }\n\n > .active {\n color: @breadcrumb-active-color;\n }\n}\n","//\n// Pagination (multiple pages)\n// --------------------------------------------------\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: @line-height-computed 0;\n border-radius: @border-radius-base;\n\n > li {\n display: inline; // Remove list-style and block-level defaults\n > a,\n > span {\n position: relative;\n float: left; // Collapse white-space\n padding: @padding-base-vertical @padding-base-horizontal;\n line-height: @line-height-base;\n text-decoration: none;\n color: @pagination-color;\n background-color: @pagination-bg;\n border: 1px solid @pagination-border;\n margin-left: -1px;\n }\n &:first-child {\n > a,\n > span {\n margin-left: 0;\n .border-left-radius(@border-radius-base);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius-base);\n }\n }\n }\n\n > li > a,\n > li > span {\n &:hover,\n &:focus {\n color: @pagination-hover-color;\n background-color: @pagination-hover-bg;\n border-color: @pagination-hover-border;\n }\n }\n\n > .active > a,\n > .active > span {\n &,\n &:hover,\n &:focus {\n z-index: 2;\n color: @pagination-active-color;\n background-color: @pagination-active-bg;\n border-color: @pagination-active-border;\n cursor: default;\n }\n }\n\n > .disabled {\n > span,\n > span:hover,\n > span:focus,\n > a,\n > a:hover,\n > a:focus {\n color: @pagination-disabled-color;\n background-color: @pagination-disabled-bg;\n border-color: @pagination-disabled-border;\n cursor: not-allowed;\n }\n }\n}\n\n// Sizing\n// --------------------------------------------------\n\n// Large\n.pagination-lg {\n .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @border-radius-large);\n}\n\n// Small\n.pagination-sm {\n .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @border-radius-small);\n}\n","//\n// Pager pagination\n// --------------------------------------------------\n\n\n.pager {\n padding-left: 0;\n margin: @line-height-computed 0;\n list-style: none;\n text-align: center;\n &:extend(.clearfix all);\n li {\n display: inline;\n > a,\n > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: @pager-bg;\n border: 1px solid @pager-border;\n border-radius: @pager-border-radius;\n }\n\n > a:hover,\n > a:focus {\n text-decoration: none;\n background-color: @pager-hover-bg;\n }\n }\n\n .next {\n > a,\n > span {\n float: right;\n }\n }\n\n .previous {\n > a,\n > span {\n float: left;\n }\n }\n\n .disabled {\n > a,\n > a:hover,\n > a:focus,\n > span {\n color: @pager-disabled-color;\n background-color: @pager-bg;\n cursor: not-allowed;\n }\n }\n\n}\n","//\n// Labels\n// --------------------------------------------------\n\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: @label-color;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n\n // Add hover effects, but only for links\n &[href] {\n &:hover,\n &:focus {\n color: @label-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n // Empty labels collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for labels in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n}\n\n// Colors\n// Contextual variations (linked labels get darker on :hover)\n\n.label-default {\n .label-variant(@label-default-bg);\n}\n\n.label-primary {\n .label-variant(@label-primary-bg);\n}\n\n.label-success {\n .label-variant(@label-success-bg);\n}\n\n.label-info {\n .label-variant(@label-info-bg);\n}\n\n.label-warning {\n .label-variant(@label-warning-bg);\n}\n\n.label-danger {\n .label-variant(@label-danger-bg);\n}\n","//\n// Badges\n// --------------------------------------------------\n\n\n// Base classes\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: @font-size-small;\n font-weight: @badge-font-weight;\n color: @badge-color;\n line-height: @badge-line-height;\n vertical-align: baseline;\n white-space: nowrap;\n text-align: center;\n background-color: @badge-bg;\n border-radius: @badge-border-radius;\n\n // Empty badges collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for badges in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n .btn-xs & {\n top: 0;\n padding: 1px 5px;\n }\n}\n\n// Hover state, but only for links\na.badge {\n &:hover,\n &:focus {\n color: @badge-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n}\n\n// Account for counters in navs\na.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n color: @badge-active-color;\n background-color: @badge-active-bg;\n}\n.nav-pills > li > a > .badge {\n margin-left: 3px;\n}\n","//\n// Jumbotron\n// --------------------------------------------------\n\n\n.jumbotron {\n padding: @jumbotron-padding;\n margin-bottom: @jumbotron-padding;\n color: @jumbotron-color;\n background-color: @jumbotron-bg;\n\n h1,\n .h1 {\n color: @jumbotron-heading-color;\n }\n p {\n margin-bottom: (@jumbotron-padding / 2);\n font-size: @jumbotron-font-size;\n font-weight: 200;\n }\n\n .container & {\n border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container\n }\n\n .container {\n max-width: 100%;\n }\n\n @media screen and (min-width: @screen-sm-min) {\n padding-top: (@jumbotron-padding * 1.6);\n padding-bottom: (@jumbotron-padding * 1.6);\n\n .container & {\n padding-left: (@jumbotron-padding * 2);\n padding-right: (@jumbotron-padding * 2);\n }\n\n h1,\n .h1 {\n font-size: (@font-size-base * 4.5);\n }\n }\n}\n","//\n// Alerts\n// --------------------------------------------------\n\n\n// Base styles\n// -------------------------\n\n.alert {\n padding: @alert-padding;\n margin-bottom: @line-height-computed;\n border: 1px solid transparent;\n border-radius: @alert-border-radius;\n\n // Headings for larger alerts\n h4 {\n margin-top: 0;\n // Specified for the h4 to prevent conflicts of changing @headings-color\n color: inherit;\n }\n // Provide class for links that match alerts\n .alert-link {\n font-weight: @alert-link-font-weight;\n }\n\n // Improve alignment and spacing of inner content\n > p,\n > ul {\n margin-bottom: 0;\n }\n > p + p {\n margin-top: 5px;\n }\n}\n\n// Dismissable alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n.alert-dismissable {\n padding-right: (@alert-padding + 20);\n\n // Adjust close link position\n .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n }\n}\n\n// Alternate styles\n//\n// Generate contextual modifier classes for colorizing the alert.\n\n.alert-success {\n .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text);\n}\n.alert-info {\n .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text);\n}\n.alert-warning {\n .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text);\n}\n.alert-danger {\n .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text);\n}\n","//\n// Progress bars\n// --------------------------------------------------\n\n\n// Bar animations\n// -------------------------\n\n// WebKit\n@-webkit-keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n// Spec and IE10+\n@keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n\n\n// Bar itself\n// -------------------------\n\n// Outer container\n.progress {\n overflow: hidden;\n height: @line-height-computed;\n margin-bottom: @line-height-computed;\n background-color: @progress-bg;\n border-radius: @border-radius-base;\n .box-shadow(inset 0 1px 2px rgba(0,0,0,.1));\n}\n\n// Bar of progress\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: @font-size-small;\n line-height: @line-height-computed;\n color: @progress-bar-color;\n text-align: center;\n background-color: @progress-bar-bg;\n .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));\n .transition(width .6s ease);\n}\n\n// Striped bars\n.progress-striped .progress-bar {\n #gradient > .striped();\n background-size: 40px 40px;\n}\n\n// Call animation for the active one\n.progress.active .progress-bar {\n .animation(progress-bar-stripes 2s linear infinite);\n}\n\n\n\n// Variations\n// -------------------------\n\n.progress-bar-success {\n .progress-bar-variant(@progress-bar-success-bg);\n}\n\n.progress-bar-info {\n .progress-bar-variant(@progress-bar-info-bg);\n}\n\n.progress-bar-warning {\n .progress-bar-variant(@progress-bar-warning-bg);\n}\n\n.progress-bar-danger {\n .progress-bar-variant(@progress-bar-danger-bg);\n}\n","// Media objects\n// Source: http://stubbornella.org/content/?p=497\n// --------------------------------------------------\n\n\n// Common styles\n// -------------------------\n\n// Clear the floats\n.media,\n.media-body {\n overflow: hidden;\n zoom: 1;\n}\n\n// Proper spacing between instances of .media\n.media,\n.media .media {\n margin-top: 15px;\n}\n.media:first-child {\n margin-top: 0;\n}\n\n// For images and videos, set to block\n.media-object {\n display: block;\n}\n\n// Reset margins on headings for tighter default spacing\n.media-heading {\n margin: 0 0 5px;\n}\n\n\n// Media image alignment\n// -------------------------\n\n.media {\n > .pull-left {\n margin-right: 10px;\n }\n > .pull-right {\n margin-left: 10px;\n }\n}\n\n\n// Media list variation\n// -------------------------\n\n// Undo default ul/ol styles\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n","//\n// List groups\n// --------------------------------------------------\n\n\n// Base class\n//\n// Easily usable on <ul>, <ol>, or <div>.\n\n.list-group {\n // No need to set list-style: none; since .list-group-item is block level\n margin-bottom: 20px;\n padding-left: 0; // reset padding because ul and ol\n}\n\n\n// Individual list items\n//\n// Use on `li`s or `div`s within the `.list-group` parent.\n\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n // Place the border on the list items and negative margin up for better styling\n margin-bottom: -1px;\n background-color: @list-group-bg;\n border: 1px solid @list-group-border;\n\n // Round the first and last items\n &:first-child {\n .border-top-radius(@list-group-border-radius);\n }\n &:last-child {\n margin-bottom: 0;\n .border-bottom-radius(@list-group-border-radius);\n }\n\n // Align badges within list items\n > .badge {\n float: right;\n }\n > .badge + .badge {\n margin-right: 5px;\n }\n}\n\n\n// Linked list items\n//\n// Use anchor elements instead of `li`s or `div`s to create linked list items.\n// Includes an extra `.active` modifier class for showing selected items.\n\na.list-group-item {\n color: @list-group-link-color;\n\n .list-group-item-heading {\n color: @list-group-link-heading-color;\n }\n\n // Hover state\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: @list-group-hover-bg;\n }\n\n // Active class on item itself, not parent\n &.active,\n &.active:hover,\n &.active:focus {\n z-index: 2; // Place active items above their siblings for proper border styling\n color: @list-group-active-color;\n background-color: @list-group-active-bg;\n border-color: @list-group-active-border;\n\n // Force color to inherit for custom content\n .list-group-item-heading {\n color: inherit;\n }\n .list-group-item-text {\n color: @list-group-active-text-color;\n }\n }\n}\n\n\n// Contextual variants\n//\n// Add modifier classes to change text and background color on individual items.\n// Organizationally, this must come after the `:hover` states.\n\n.list-group-item-variant(success; @state-success-bg; @state-success-text);\n.list-group-item-variant(info; @state-info-bg; @state-info-text);\n.list-group-item-variant(warning; @state-warning-bg; @state-warning-text);\n.list-group-item-variant(danger; @state-danger-bg; @state-danger-text);\n\n\n// Custom content options\n//\n// Extra classes for creating well-formatted content within `.list-group-item`s.\n\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n","//\n// Panels\n// --------------------------------------------------\n\n\n// Base class\n.panel {\n margin-bottom: @line-height-computed;\n background-color: @panel-bg;\n border: 1px solid transparent;\n border-radius: @panel-border-radius;\n .box-shadow(0 1px 1px rgba(0,0,0,.05));\n}\n\n// Panel contents\n.panel-body {\n padding: @panel-body-padding;\n &:extend(.clearfix all);\n}\n\n// Optional heading\n.panel-heading {\n padding: 10px 15px;\n border-bottom: 1px solid transparent;\n .border-top-radius((@panel-border-radius - 1));\n\n > .dropdown .dropdown-toggle {\n color: inherit;\n }\n}\n\n// Within heading, strip any `h*` tag of its default margins for spacing.\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: ceil((@font-size-base * 1.125));\n color: inherit;\n\n > a {\n color: inherit;\n }\n}\n\n// Optional footer (stays gray in every modifier class)\n.panel-footer {\n padding: 10px 15px;\n background-color: @panel-footer-bg;\n border-top: 1px solid @panel-inner-border;\n .border-bottom-radius((@panel-border-radius - 1));\n}\n\n\n// List groups in panels\n//\n// By default, space out list group content from panel headings to account for\n// any kind of custom content between the two.\n\n.panel {\n > .list-group {\n margin-bottom: 0;\n\n .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n }\n\n // Add border top radius for first one\n &:first-child {\n .list-group-item:first-child {\n border-top: 0;\n .border-top-radius((@panel-border-radius - 1));\n }\n }\n // Add border bottom radius for last one\n &:last-child {\n .list-group-item:last-child {\n border-bottom: 0;\n .border-bottom-radius((@panel-border-radius - 1));\n }\n }\n }\n}\n// Collapse space between when there's no additional content.\n.panel-heading + .list-group {\n .list-group-item:first-child {\n border-top-width: 0;\n }\n}\n\n\n// Tables in panels\n//\n// Place a non-bordered `.table` within a panel (not within a `.panel-body`) and\n// watch it go full width.\n\n.panel {\n > .table,\n > .table-responsive > .table {\n margin-bottom: 0;\n }\n // Add border top radius for first one\n > .table:first-child,\n > .table-responsive:first-child > .table:first-child {\n .border-top-radius((@panel-border-radius - 1));\n\n > thead:first-child,\n > tbody:first-child {\n > tr:first-child {\n td:first-child,\n th:first-child {\n border-top-left-radius: (@panel-border-radius - 1);\n }\n td:last-child,\n th:last-child {\n border-top-right-radius: (@panel-border-radius - 1);\n }\n }\n }\n }\n // Add border bottom radius for last one\n > .table:last-child,\n > .table-responsive:last-child > .table:last-child {\n .border-bottom-radius((@panel-border-radius - 1));\n\n > tbody:last-child,\n > tfoot:last-child {\n > tr:last-child {\n td:first-child,\n th:first-child {\n border-bottom-left-radius: (@panel-border-radius - 1);\n }\n td:last-child,\n th:last-child {\n border-bottom-right-radius: (@panel-border-radius - 1);\n }\n }\n }\n }\n > .panel-body + .table,\n > .panel-body + .table-responsive {\n border-top: 1px solid @table-border-color;\n }\n > .table > tbody:first-child > tr:first-child th,\n > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n }\n > .table-bordered,\n > .table-responsive > .table-bordered {\n border: 0;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-left: 0;\n }\n > th:last-child,\n > td:last-child {\n border-right: 0;\n }\n }\n }\n > thead,\n > tbody {\n > tr:first-child {\n > td,\n > th {\n border-bottom: 0;\n }\n }\n }\n > tbody,\n > tfoot {\n > tr:last-child {\n > td,\n > th {\n border-bottom: 0;\n }\n }\n }\n }\n > .table-responsive {\n border: 0;\n margin-bottom: 0;\n }\n}\n\n\n// Collapsable panels (aka, accordion)\n//\n// Wrap a series of panels in `.panel-group` to turn them into an accordion with\n// the help of our collapse JavaScript plugin.\n\n.panel-group {\n margin-bottom: @line-height-computed;\n\n // Tighten up margin so it's only between panels\n .panel {\n margin-bottom: 0;\n border-radius: @panel-border-radius;\n overflow: hidden; // crop contents when collapsed\n + .panel {\n margin-top: 5px;\n }\n }\n\n .panel-heading {\n border-bottom: 0;\n + .panel-collapse .panel-body {\n border-top: 1px solid @panel-inner-border;\n }\n }\n .panel-footer {\n border-top: 0;\n + .panel-collapse .panel-body {\n border-bottom: 1px solid @panel-inner-border;\n }\n }\n}\n\n\n// Contextual variations\n.panel-default {\n .panel-variant(@panel-default-border; @panel-default-text; @panel-default-heading-bg; @panel-default-border);\n}\n.panel-primary {\n .panel-variant(@panel-primary-border; @panel-primary-text; @panel-primary-heading-bg; @panel-primary-border);\n}\n.panel-success {\n .panel-variant(@panel-success-border; @panel-success-text; @panel-success-heading-bg; @panel-success-border);\n}\n.panel-info {\n .panel-variant(@panel-info-border; @panel-info-text; @panel-info-heading-bg; @panel-info-border);\n}\n.panel-warning {\n .panel-variant(@panel-warning-border; @panel-warning-text; @panel-warning-heading-bg; @panel-warning-border);\n}\n.panel-danger {\n .panel-variant(@panel-danger-border; @panel-danger-text; @panel-danger-heading-bg; @panel-danger-border);\n}\n","//\n// Wells\n// --------------------------------------------------\n\n\n// Base class\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: @well-bg;\n border: 1px solid @well-border;\n border-radius: @border-radius-base;\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.05));\n blockquote {\n border-color: #ddd;\n border-color: rgba(0,0,0,.15);\n }\n}\n\n// Sizes\n.well-lg {\n padding: 24px;\n border-radius: @border-radius-large;\n}\n.well-sm {\n padding: 9px;\n border-radius: @border-radius-small;\n}\n","//\n// Close icons\n// --------------------------------------------------\n\n\n.close {\n float: right;\n font-size: (@font-size-base * 1.5);\n font-weight: @close-font-weight;\n line-height: 1;\n color: @close-color;\n text-shadow: @close-text-shadow;\n .opacity(.2);\n\n &:hover,\n &:focus {\n color: @close-color;\n text-decoration: none;\n cursor: pointer;\n .opacity(.5);\n }\n\n // Additional properties for button version\n // iOS requires the button element instead of an anchor tag.\n // If you want the anchor version, it requires `href=\"#\"`.\n button& {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n }\n}\n","//\n// Modals\n// --------------------------------------------------\n\n// .modal-open - body class for killing the scroll\n// .modal - container to scroll within\n// .modal-dialog - positioning shell for the actual modal\n// .modal-content - actual modal w/ bg and corners and shit\n\n// Kill the scroll on the body\n.modal-open {\n overflow: hidden;\n}\n\n// Container that the modal scrolls within\n.modal {\n display: none;\n overflow: auto;\n overflow-y: scroll;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: @zindex-modal;\n -webkit-overflow-scrolling: touch;\n\n // Prevent Chrome on Windows from adding a focus outline. For details, see\n // https://github.com/twbs/bootstrap/pull/10951.\n outline: 0;\n\n // When fading in the modal, animate it to slide down\n &.fade .modal-dialog {\n .translate(0, -25%);\n .transition-transform(~\"0.3s ease-out\");\n }\n &.in .modal-dialog { .translate(0, 0)}\n}\n\n// Shell div to position the modal with bottom padding\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n\n// Actual modal\n.modal-content {\n position: relative;\n background-color: @modal-content-bg;\n border: 1px solid @modal-content-fallback-border-color; //old browsers fallback (ie8 etc)\n border: 1px solid @modal-content-border-color;\n border-radius: @border-radius-large;\n .box-shadow(0 3px 9px rgba(0,0,0,.5));\n background-clip: padding-box;\n // Remove focus outline from opened modal\n outline: none;\n}\n\n// Modal background\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: @zindex-modal-background;\n background-color: @modal-backdrop-bg;\n // Fade for backdrop\n &.fade { .opacity(0); }\n &.in { .opacity(@modal-backdrop-opacity); }\n}\n\n// Modal header\n// Top section of the modal w/ title and dismiss\n.modal-header {\n padding: @modal-title-padding;\n border-bottom: 1px solid @modal-header-border-color;\n min-height: (@modal-title-padding + @modal-title-line-height);\n}\n// Close icon\n.modal-header .close {\n margin-top: -2px;\n}\n\n// Title text within header\n.modal-title {\n margin: 0;\n line-height: @modal-title-line-height;\n}\n\n// Modal body\n// Where all modal content resides (sibling of .modal-header and .modal-footer)\n.modal-body {\n position: relative;\n padding: @modal-inner-padding;\n}\n\n// Footer (for actions)\n.modal-footer {\n margin-top: 15px;\n padding: (@modal-inner-padding - 1) @modal-inner-padding @modal-inner-padding;\n text-align: right; // right align buttons\n border-top: 1px solid @modal-footer-border-color;\n &:extend(.clearfix all); // clear it in case folks use .pull-* classes on buttons\n\n // Properly space out buttons\n .btn + .btn {\n margin-left: 5px;\n margin-bottom: 0; // account for input[type=\"submit\"] which gets the bottom margin like all other inputs\n }\n // but override that for button groups\n .btn-group .btn + .btn {\n margin-left: -1px;\n }\n // and override it for block buttons as well\n .btn-block + .btn-block {\n margin-left: 0;\n }\n}\n\n// Scale up the modal\n@media (min-width: @screen-sm-min) {\n // Automatically set modal's width for larger viewports\n .modal-dialog {\n width: @modal-md;\n margin: 30px auto;\n }\n .modal-content {\n .box-shadow(0 5px 15px rgba(0,0,0,.5));\n }\n\n // Modal sizes\n .modal-sm { width: @modal-sm; }\n}\n\n@media (min-width: @screen-md-min) {\n .modal-lg { width: @modal-lg; }\n}\n","//\n// Tooltips\n// --------------------------------------------------\n\n\n// Base class\n.tooltip {\n position: absolute;\n z-index: @zindex-tooltip;\n display: block;\n visibility: visible;\n font-size: @font-size-small;\n line-height: 1.4;\n .opacity(0);\n\n &.in { .opacity(@tooltip-opacity); }\n &.top { margin-top: -3px; padding: @tooltip-arrow-width 0; }\n &.right { margin-left: 3px; padding: 0 @tooltip-arrow-width; }\n &.bottom { margin-top: 3px; padding: @tooltip-arrow-width 0; }\n &.left { margin-left: -3px; padding: 0 @tooltip-arrow-width; }\n}\n\n// Wrapper for the tooltip content\n.tooltip-inner {\n max-width: @tooltip-max-width;\n padding: 3px 8px;\n color: @tooltip-color;\n text-align: center;\n text-decoration: none;\n background-color: @tooltip-bg;\n border-radius: @border-radius-base;\n}\n\n// Arrows\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.tooltip {\n &.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.top-left .tooltip-arrow {\n bottom: 0;\n left: @tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.top-right .tooltip-arrow {\n bottom: 0;\n right: @tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width @tooltip-arrow-width 0;\n border-right-color: @tooltip-arrow-color;\n }\n &.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-left-color: @tooltip-arrow-color;\n }\n &.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -@tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n &.bottom-left .tooltip-arrow {\n top: 0;\n left: @tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n &.bottom-right .tooltip-arrow {\n top: 0;\n right: @tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n}\n","//\n// Popovers\n// --------------------------------------------------\n\n\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: @zindex-popover;\n display: none;\n max-width: @popover-max-width;\n padding: 1px;\n text-align: left; // Reset given new insertion method\n background-color: @popover-bg;\n background-clip: padding-box;\n border: 1px solid @popover-fallback-border-color;\n border: 1px solid @popover-border-color;\n border-radius: @border-radius-large;\n .box-shadow(0 5px 10px rgba(0,0,0,.2));\n\n // Overrides for proper insertion\n white-space: normal;\n\n // Offset the popover to account for the popover arrow\n &.top { margin-top: -@popover-arrow-width; }\n &.right { margin-left: @popover-arrow-width; }\n &.bottom { margin-top: @popover-arrow-width; }\n &.left { margin-left: -@popover-arrow-width; }\n}\n\n.popover-title {\n margin: 0; // reset heading margin\n padding: 8px 14px;\n font-size: @font-size-base;\n font-weight: normal;\n line-height: 18px;\n background-color: @popover-title-bg;\n border-bottom: 1px solid darken(@popover-title-bg, 5%);\n border-radius: 5px 5px 0 0;\n}\n\n.popover-content {\n padding: 9px 14px;\n}\n\n// Arrows\n//\n// .arrow is outer, .arrow:after is inner\n\n.popover > .arrow {\n &,\n &:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n }\n}\n.popover > .arrow {\n border-width: @popover-arrow-outer-width;\n}\n.popover > .arrow:after {\n border-width: @popover-arrow-width;\n content: \"\";\n}\n\n.popover {\n &.top > .arrow {\n left: 50%;\n margin-left: -@popover-arrow-outer-width;\n border-bottom-width: 0;\n border-top-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-top-color: @popover-arrow-outer-color;\n bottom: -@popover-arrow-outer-width;\n &:after {\n content: \" \";\n bottom: 1px;\n margin-left: -@popover-arrow-width;\n border-bottom-width: 0;\n border-top-color: @popover-arrow-color;\n }\n }\n &.right > .arrow {\n top: 50%;\n left: -@popover-arrow-outer-width;\n margin-top: -@popover-arrow-outer-width;\n border-left-width: 0;\n border-right-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-right-color: @popover-arrow-outer-color;\n &:after {\n content: \" \";\n left: 1px;\n bottom: -@popover-arrow-width;\n border-left-width: 0;\n border-right-color: @popover-arrow-color;\n }\n }\n &.bottom > .arrow {\n left: 50%;\n margin-left: -@popover-arrow-outer-width;\n border-top-width: 0;\n border-bottom-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-bottom-color: @popover-arrow-outer-color;\n top: -@popover-arrow-outer-width;\n &:after {\n content: \" \";\n top: 1px;\n margin-left: -@popover-arrow-width;\n border-top-width: 0;\n border-bottom-color: @popover-arrow-color;\n }\n }\n\n &.left > .arrow {\n top: 50%;\n right: -@popover-arrow-outer-width;\n margin-top: -@popover-arrow-outer-width;\n border-right-width: 0;\n border-left-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-left-color: @popover-arrow-outer-color;\n &:after {\n content: \" \";\n right: 1px;\n border-right-width: 0;\n border-left-color: @popover-arrow-color;\n bottom: -@popover-arrow-width;\n }\n }\n\n}\n","//\n// Responsive: Utility classes\n// --------------------------------------------------\n\n\n// IE10 in Windows (Phone) 8\n//\n// Support for responsive views via media queries is kind of borked in IE10, for\n// Surface/desktop in split view and for Windows Phone 8. This particular fix\n// must be accompanied by a snippet of JavaScript to sniff the user agent and\n// apply some conditional CSS to *only* the Surface/desktop Windows 8. Look at\n// our Getting Started page for more information on this bug.\n//\n// For more information, see the following:\n//\n// Issue: https://github.com/twbs/bootstrap/issues/10497\n// Docs: http://getbootstrap.com/getting-started/#browsers\n// Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/\n\n@-ms-viewport {\n width: device-width;\n}\n\n\n// Visibility utilities\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n .responsive-invisibility();\n}\n\n.visible-xs {\n @media (max-width: @screen-xs-max) {\n .responsive-visibility();\n }\n}\n.visible-sm {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n .responsive-visibility();\n }\n}\n.visible-md {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n .responsive-visibility();\n }\n}\n.visible-lg {\n @media (min-width: @screen-lg-min) {\n .responsive-visibility();\n }\n}\n\n.hidden-xs {\n @media (max-width: @screen-xs-max) {\n .responsive-invisibility();\n }\n}\n.hidden-sm {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n .responsive-invisibility();\n }\n}\n.hidden-md {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n .responsive-invisibility();\n }\n}\n.hidden-lg {\n @media (min-width: @screen-lg-min) {\n .responsive-invisibility();\n }\n}\n\n\n// Print utilities\n//\n// Media queries are placed on the inside to be mixin-friendly.\n\n.visible-print {\n .responsive-invisibility();\n\n @media print {\n .responsive-visibility();\n }\n}\n\n.hidden-print {\n @media print {\n .responsive-invisibility();\n }\n}\n"]} \ No newline at end of file
diff --git a/Back/jinwei.me/mobile/css/bootstrap.min.css b/Back/jinwei.me/mobile/css/bootstrap.min.css
new file mode 100644
index 0000000..679272d
--- /dev/null
+++ b/Back/jinwei.me/mobile/css/bootstrap.min.css
@@ -0,0 +1,7 @@
1/*!
2 * Bootstrap v3.1.1 (http://getbootstrap.com)
3 * Copyright 2011-2014 Twitter, Inc.
4 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5 */
6
7/*! normalize.css v3.0.0 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:0 0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}@media print{*{text-shadow:none!important;color:#000!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:before,:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:400;line-height:1;color:#999}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}cite{font-style:normal}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-muted{color:#999}.text-primary{color:#428bca}a.text-primary:hover{color:#3071a9}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#428bca}a.bg-primary:hover{background-color:#3071a9}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#999}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}blockquote:before,blockquote:after{content:""}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;white-space:nowrap;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:0}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:0}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:0}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:0}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:0}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:0}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:0}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:0}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{max-width:100%;background-color:transparent}th{text-align:left}.table{width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*=col-]{position:static;float:none;display:table-column}table td[class*=col-],table th[class*=col-]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}@media (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;overflow-x:scroll;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd;-webkit-overflow-scrolling:touch}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=radio],input[type=checkbox]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=radio]:focus,input[type=checkbox]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}input[type=date]{line-height:34px}.form-group{margin-bottom:15px}.radio,.checkbox{display:block;min-height:20px;margin-top:10px;margin-bottom:10px;padding-left:20px}.radio label,.checkbox label{display:inline;font-weight:400;cursor:pointer}.radio input[type=radio],.radio-inline input[type=radio],.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox]{float:left;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:400;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type=radio][disabled],input[type=checkbox][disabled],.radio[disabled],.radio-inline[disabled],.checkbox[disabled],.checkbox-inline[disabled],fieldset[disabled] input[type=radio],fieldset[disabled] input[type=checkbox],fieldset[disabled] .radio,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg,select[multiple].input-lg{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.has-feedback .form-control-feedback{position:absolute;top:25px;right:0;display:block;width:34px;height:34px;line-height:34px;text-align:center}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.form-control-static{margin-bottom:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.form-inline .radio input[type=radio],.form-inline .checkbox input[type=checkbox]{float:none;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .control-label,.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.form-horizontal .has-feedback .form-control-feedback{top:0;right:15px}.btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{color:#333;background-color:#ebebeb;border-color:#adadad}.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-primary .badge{color:#428bca;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#428bca;font-weight:400;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%;padding-left:0;padding-right:0}.btn-block+.btn-block{margin-top:5px}input[type=submit].btn-block,input[type=reset].btn-block,input[type=button].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#428bca}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#999}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}[data-toggle=buttons]>.btn>input[type=radio],[data-toggle=buttons]>.btn>input[type=checkbox]{display:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=radio],.input-group-addon input[type=checkbox]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{max-height:340px;overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin-top:8px;margin-bottom:8px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.navbar-form .radio input[type=radio],.navbar-form .checkbox input[type=checkbox]{float:none;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#999}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .navbar-nav>li>a{color:#999}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#080808;color:#fff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#999}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857143;text-decoration:none;color:#428bca;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#2a6496;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label[href]:hover,.label[href]:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#999}.label-default[href]:hover,.label-default[href]:focus{background-color:gray}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#999;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.container .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#428bca}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;background-color:#f5f5f5}a.list-group-item.active,a.list-group-item.active:hover,a.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}a.list-group-item.active .list-group-item-heading,a.list-group-item.active:hover .list-group-item-heading,a.list-group-item.active:focus .list-group-item-heading{color:inherit}a.list-group-item.active .list-group-item-text,a.list-group-item.active:hover .list-group-item-text,a.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px;overflow:hidden}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:auto;overflow-y:scroll;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857143px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{margin-top:15px;padding:19px 20px 20px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1030;display:block;visibility:visible;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;right:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:.5;filter:alpha(opacity=50);font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.5) 0),color-stop(rgba(0,0,0,.0001) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.0001) 0),color-stop(rgba(0,0,0,.5) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}}@media print{.hidden-print{display:none!important}} \ No newline at end of file
diff --git a/Back/jinwei.me/mobile/css/navbar.less b/Back/jinwei.me/mobile/css/navbar.less
new file mode 100644
index 0000000..8c4c210
--- /dev/null
+++ b/Back/jinwei.me/mobile/css/navbar.less
@@ -0,0 +1,616 @@
1//
2// Navbars
3// --------------------------------------------------
4
5
6// Wrapper and base class
7//
8// Provide a static navbar from which we expand to create full-width, fixed, and
9// other navbar variations.
10
11.navbar {
12 position: relative;
13 min-height: @navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)
14 margin-bottom: @navbar-margin-bottom;
15 border: 1px solid transparent;
16
17 // Prevent floats from breaking the navbar
18 &:extend(.clearfix all);
19
20 @media (min-width: @grid-float-breakpoint) {
21 border-radius: @navbar-border-radius;
22 }
23}
24
25
26// Navbar heading
27//
28// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy
29// styling of responsive aspects.
30
31.navbar-header {
32 &:extend(.clearfix all);
33
34 @media (min-width: @grid-float-breakpoint) {
35 float: left;
36 }
37}
38
39
40// Navbar collapse (body)
41//
42// Group your navbar content into this for easy collapsing and expanding across
43// various device sizes. By default, this content is collapsed when <768px, but
44// will expand past that for a horizontal display.
45//
46// To start (on mobile devices) the navbar links, forms, and buttons are stacked
47// vertically and include a `max-height` to overflow in case you have too much
48// content for the user's viewport.
49
50.navbar-collapse {
51 max-height: @navbar-collapse-max-height;
52 overflow-x: visible;
53 padding-right: @navbar-padding-horizontal;
54 padding-left: @navbar-padding-horizontal;
55 border-top: 1px solid transparent;
56 box-shadow: inset 0 1px 0 rgba(255,255,255,.1);
57 &:extend(.clearfix all);
58 -webkit-overflow-scrolling: touch;
59
60 &.in {
61 overflow-y: auto;
62 }
63
64 @media (min-width: @grid-float-breakpoint) {
65 width: auto;
66 border-top: 0;
67 box-shadow: none;
68
69 &.collapse {
70 display: block !important;
71 height: auto !important;
72 padding-bottom: 0; // Override default setting
73 overflow: visible !important;
74 }
75
76 &.in {
77 overflow-y: visible;
78 }
79
80 // Undo the collapse side padding for navbars with containers to ensure
81 // alignment of right-aligned contents.
82 .navbar-fixed-top &,
83 .navbar-static-top &,
84 .navbar-fixed-bottom & {
85 padding-left: 0;
86 padding-right: 0;
87 }
88 }
89}
90
91
92// Both navbar header and collapse
93//
94// When a container is present, change the behavior of the header and collapse.
95
96.container,
97.container-fluid {
98 > .navbar-header,
99 > .navbar-collapse {
100 margin-right: -@navbar-padding-horizontal;
101 margin-left: -@navbar-padding-horizontal;
102
103 @media (min-width: @grid-float-breakpoint) {
104 margin-right: 0;
105 margin-left: 0;
106 }
107 }
108}
109
110
111//
112// Navbar alignment options
113//
114// Display the navbar across the entirety of the page or fixed it to the top or
115// bottom of the page.
116
117// Static top (unfixed, but 100% wide) navbar
118.navbar-static-top {
119 z-index: @zindex-navbar;
120 border-width: 0 0 1px;
121
122 @media (min-width: @grid-float-breakpoint) {
123 border-radius: 0;
124 }
125}
126
127// Fix the top/bottom navbars when screen real estate supports it
128.navbar-fixed-top,
129.navbar-fixed-bottom {
130 position: fixed;
131 right: 0;
132 left: 0;
133 z-index: @zindex-navbar-fixed;
134
135 // Undo the rounded corners
136 @media (min-width: @grid-float-breakpoint) {
137 border-radius: 0;
138 }
139}
140.navbar-fixed-top {
141 top: 0;
142 border-width: 0 0 1px;
143}
144.navbar-fixed-bottom {
145 bottom: 0;
146 margin-bottom: 0; // override .navbar defaults
147 border-width: 1px 0 0;
148}
149
150
151// Brand/project name
152
153.navbar-brand {
154 float: left;
155 padding: @navbar-padding-vertical @navbar-padding-horizontal;
156 font-size: @font-size-large;
157 line-height: @line-height-computed;
158 height: @navbar-height;
159
160 &:hover,
161 &:focus {
162 text-decoration: none;
163 }
164
165 @media (min-width: @grid-float-breakpoint) {
166 .navbar > .container &,
167 .navbar > .container-fluid & {
168 margin-left: -@navbar-padding-horizontal;
169 }
170 }
171}
172
173
174// Navbar toggle
175//
176// Custom button for toggling the `.navbar-collapse`, powered by the collapse
177// JavaScript plugin.
178
179.navbar-toggle {
180 position: relative;
181 float: right;
182 margin-right: @navbar-padding-horizontal;
183 padding: 9px 10px;
184 .navbar-vertical-align(34px);
185 background-color: transparent;
186 background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
187 border: 1px solid transparent;
188 border-radius: @border-radius-base;
189
190 // We remove the `outline` here, but later compensate by attaching `:hover`
191 // styles to `:focus`.
192 &:focus {
193 outline: none;
194 }
195
196 // Bars
197 .icon-bar {
198 display: block;
199 width: 22px;
200 height: 2px;
201 border-radius: 1px;
202 }
203 .icon-bar + .icon-bar {
204 margin-top: 4px;
205 }
206
207 @media (min-width: @grid-float-breakpoint) {
208 display: none;
209 }
210}
211
212
213// Navbar nav links
214//
215// Builds on top of the `.nav` components with its own modifier class to make
216// the nav the full height of the horizontal nav (above 768px).
217
218.navbar-nav {
219 margin: (@navbar-padding-vertical / 2) -@navbar-padding-horizontal;
220
221 > li > a {
222 padding-top: 10px;
223 padding-bottom: 10px;
224 line-height: @line-height-computed;
225 }
226
227 @media (max-width: @grid-float-breakpoint-max) {
228 // Dropdowns get custom display when collapsed
229 .open .dropdown-menu {
230 position: static;
231 float: none;
232 width: auto;
233 margin-top: 0;
234 background-color: transparent;
235 border: 0;
236 box-shadow: none;
237 > li > a,
238 .dropdown-header {
239 padding: 5px 15px 5px 25px;
240 }
241 > li > a {
242 line-height: @line-height-computed;
243 &:hover,
244 &:focus {
245 background-image: none;
246 }
247 }
248 }
249 }
250
251 // Uncollapse the nav
252 @media (min-width: @grid-float-breakpoint) {
253 float: left;
254 margin: 0;
255
256 > li {
257 float: left;
258 > a {
259 padding-top: @navbar-padding-vertical;
260 padding-bottom: @navbar-padding-vertical;
261 }
262 }
263
264 &.navbar-right:last-child {
265 margin-right: -@navbar-padding-horizontal;
266 }
267 }
268}
269
270
271// Component alignment
272//
273// Repurpose the pull utilities as their own navbar utilities to avoid specificity
274// issues with parents and chaining. Only do this when the navbar is uncollapsed
275// though so that navbar contents properly stack and align in mobile.
276
277@media (min-width: @grid-float-breakpoint) {
278 .navbar-left { .pull-left(); }
279 .navbar-right { .pull-right(); }
280}
281
282
283// Navbar form
284//
285// Extension of the `.form-inline` with some extra flavor for optimum display in
286// our navbars.
287
288.navbar-form {
289 margin-left: -@navbar-padding-horizontal;
290 margin-right: -@navbar-padding-horizontal;
291 padding: 10px @navbar-padding-horizontal;
292 border-top: 1px solid transparent;
293 border-bottom: 1px solid transparent;
294 @shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);
295 .box-shadow(@shadow);
296
297 // Mixin behavior for optimum display
298 .form-inline();
299
300 .form-group {
301 @media (max-width: @grid-float-breakpoint-max) {
302 margin-bottom: 5px;
303 }
304 }
305
306 // Vertically center in expanded, horizontal navbar
307 .navbar-vertical-align(@input-height-base);
308
309 // Undo 100% width for pull classes
310 @media (min-width: @grid-float-breakpoint) {
311 width: auto;
312 border: 0;
313 margin-left: 0;
314 margin-right: 0;
315 padding-top: 0;
316 padding-bottom: 0;
317 .box-shadow(none);
318
319 // Outdent the form if last child to line up with content down the page
320 &.navbar-right:last-child {
321 margin-right: -@navbar-padding-horizontal;
322 }
323 }
324}
325
326
327// Dropdown menus
328
329// Menu position and menu carets
330.navbar-nav > li > .dropdown-menu {
331 margin-top: 0;
332 .border-top-radius(0);
333}
334// Menu position and menu caret support for dropups via extra dropup class
335.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
336 .border-bottom-radius(0);
337}
338
339
340// Buttons in navbars
341//
342// Vertically center a button within a navbar (when *not* in a form).
343
344.navbar-btn {
345 .navbar-vertical-align(@input-height-base);
346
347 &.btn-sm {
348 .navbar-vertical-align(@input-height-small);
349 }
350 &.btn-xs {
351 .navbar-vertical-align(22);
352 }
353}
354
355
356// Text in navbars
357//
358// Add a class to make any element properly align itself vertically within the navbars.
359
360.navbar-text {
361 .navbar-vertical-align(@line-height-computed);
362
363 @media (min-width: @grid-float-breakpoint) {
364 float: left;
365 margin-left: @navbar-padding-horizontal;
366 margin-right: @navbar-padding-horizontal;
367
368 // Outdent the form if last child to line up with content down the page
369 &.navbar-right:last-child {
370 margin-right: 0;
371 }
372 }
373}
374
375// Alternate navbars
376// --------------------------------------------------
377
378// Default navbar
379.navbar-default {
380 background-color: @navbar-default-bg;
381 border-color: @navbar-default-border;
382
383 .navbar-brand {
384 color: @navbar-default-brand-color;
385 &:hover,
386 &:focus {
387 color: @navbar-default-brand-hover-color;
388 background-color: @navbar-default-brand-hover-bg;
389 }
390 }
391
392 .navbar-text {
393 color: @navbar-default-color;
394 }
395
396 .navbar-nav {
397 > li > a {
398 color: @navbar-default-link-color;
399
400 &:hover,
401 &:focus {
402 color: @navbar-default-link-hover-color;
403 background-color: @navbar-default-link-hover-bg;
404 }
405 }
406 > .active > a {
407 &,
408 &:hover,
409 &:focus {
410 color: @navbar-default-link-active-color;
411 background-color: @navbar-default-link-active-bg;
412 }
413 }
414 > .disabled > a {
415 &,
416 &:hover,
417 &:focus {
418 color: @navbar-default-link-disabled-color;
419 background-color: @navbar-default-link-disabled-bg;
420 }
421 }
422 }
423
424 .navbar-toggle {
425 border-color: @navbar-default-toggle-border-color;
426 &:hover,
427 &:focus {
428 background-color: @navbar-default-toggle-hover-bg;
429 }
430 .icon-bar {
431 background-color: @navbar-default-toggle-icon-bar-bg;
432 }
433 }
434
435 .navbar-collapse,
436 .navbar-form {
437 border-color: @navbar-default-border;
438 }
439
440 // Dropdown menu items
441 .navbar-nav {
442 // Remove background color from open dropdown
443 > .open > a {
444 &,
445 &:hover,
446 &:focus {
447 background-color: @navbar-default-link-active-bg;
448 color: @navbar-default-link-active-color;
449 }
450 }
451
452 @media (max-width: @grid-float-breakpoint-max) {
453 // Dropdowns get custom display when collapsed
454 .open .dropdown-menu {
455 > li > a {
456 color: @navbar-default-link-color;
457 &:hover,
458 &:focus {
459 color: @navbar-default-link-hover-color;
460 background-color: @navbar-default-link-hover-bg;
461 }
462 }
463 > .active > a {
464 &,
465 &:hover,
466 &:focus {
467 color: @navbar-default-link-active-color;
468 background-color: @navbar-default-link-active-bg;
469 }
470 }
471 > .disabled > a {
472 &,
473 &:hover,
474 &:focus {
475 color: @navbar-default-link-disabled-color;
476 background-color: @navbar-default-link-disabled-bg;
477 }
478 }
479 }
480 }
481 }
482
483
484 // Links in navbars
485 //
486 // Add a class to ensure links outside the navbar nav are colored correctly.
487
488 .navbar-link {
489 color: @navbar-default-link-color;
490 &:hover {
491 color: @navbar-default-link-hover-color;
492 }
493 }
494
495}
496
497// Inverse navbar
498
499.navbar-inverse {
500 background-color: @navbar-inverse-bg;
501 border-color: @navbar-inverse-border;
502
503 .navbar-brand {
504 color: @navbar-inverse-brand-color;
505 &:hover,
506 &:focus {
507 color: @navbar-inverse-brand-hover-color;
508 background-color: @navbar-inverse-brand-hover-bg;
509 }
510 }
511
512 .navbar-text {
513 color: @navbar-inverse-color;
514 }
515
516 .navbar-nav {
517 > li > a {
518 color: @navbar-inverse-link-color;
519
520 &:hover,
521 &:focus {
522 color: @navbar-inverse-link-hover-color;
523 background-color: @navbar-inverse-link-hover-bg;
524 }
525 }
526 > .active > a {
527 &,
528 &:hover,
529 &:focus {
530 color: @navbar-inverse-link-active-color;
531 background-color: @navbar-inverse-link-active-bg;
532 }
533 }
534 > .disabled > a {
535 &,
536 &:hover,
537 &:focus {
538 color: @navbar-inverse-link-disabled-color;
539 background-color: @navbar-inverse-link-disabled-bg;
540 }
541 }
542 }
543
544 // Darken the responsive nav toggle
545 .navbar-toggle {
546 border-color: @navbar-inverse-toggle-border-color;
547 &:hover,
548 &:focus {
549 background-color: @navbar-inverse-toggle-hover-bg;
550 }
551 .icon-bar {
552 background-color: @navbar-inverse-toggle-icon-bar-bg;
553 }
554 }
555
556 .navbar-collapse,
557 .navbar-form {
558 border-color: darken(@navbar-inverse-bg, 7%);
559 }
560
561 // Dropdowns
562 .navbar-nav {
563 > .open > a {
564 &,
565 &:hover,
566 &:focus {
567 background-color: @navbar-inverse-link-active-bg;
568 color: @navbar-inverse-link-active-color;
569 }
570 }
571
572 @media (max-width: @grid-float-breakpoint-max) {
573 // Dropdowns get custom display
574 .open .dropdown-menu {
575 > .dropdown-header {
576 border-color: @navbar-inverse-border;
577 }
578 .divider {
579 background-color: @navbar-inverse-border;
580 }
581 > li > a {
582 color: @navbar-inverse-link-color;
583 &:hover,
584 &:focus {
585 color: @navbar-inverse-link-hover-color;
586 background-color: @navbar-inverse-link-hover-bg;
587 }
588 }
589 > .active > a {
590 &,
591 &:hover,
592 &:focus {
593 color: @navbar-inverse-link-active-color;
594 background-color: @navbar-inverse-link-active-bg;
595 }
596 }
597 > .disabled > a {
598 &,
599 &:hover,
600 &:focus {
601 color: @navbar-inverse-link-disabled-color;
602 background-color: @navbar-inverse-link-disabled-bg;
603 }
604 }
605 }
606 }
607 }
608
609 .navbar-link {
610 color: @navbar-inverse-link-color;
611 &:hover {
612 color: @navbar-inverse-link-hover-color;
613 }
614 }
615
616}
diff --git a/Back/jinwei.me/mobile/fonts/glyphicons-halflings-regular.eot b/Back/jinwei.me/mobile/fonts/glyphicons-halflings-regular.eot
new file mode 100644
index 0000000..4a4ca86
--- /dev/null
+++ b/Back/jinwei.me/mobile/fonts/glyphicons-halflings-regular.eot
Binary files differ
diff --git a/Back/jinwei.me/mobile/fonts/glyphicons-halflings-regular.svg b/Back/jinwei.me/mobile/fonts/glyphicons-halflings-regular.svg
new file mode 100644
index 0000000..e3e2dc7
--- /dev/null
+++ b/Back/jinwei.me/mobile/fonts/glyphicons-halflings-regular.svg
@@ -0,0 +1,229 @@
1<?xml version="1.0" standalone="no"?>
2<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
3<svg xmlns="http://www.w3.org/2000/svg">
4<metadata></metadata>
5<defs>
6<font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
7<font-face units-per-em="1200" ascent="960" descent="-240" />
8<missing-glyph horiz-adv-x="500" />
9<glyph />
10<glyph />
11<glyph unicode="&#xd;" />
12<glyph unicode=" " />
13<glyph unicode="*" d="M100 500v200h259l-183 183l141 141l183 -183v259h200v-259l183 183l141 -141l-183 -183h259v-200h-259l183 -183l-141 -141l-183 183v-259h-200v259l-183 -183l-141 141l183 183h-259z" />
14<glyph unicode="+" d="M0 400v300h400v400h300v-400h400v-300h-400v-400h-300v400h-400z" />
15<glyph unicode="&#xa0;" />
16<glyph unicode="&#x2000;" horiz-adv-x="652" />
17<glyph unicode="&#x2001;" horiz-adv-x="1304" />
18<glyph unicode="&#x2002;" horiz-adv-x="652" />
19<glyph unicode="&#x2003;" horiz-adv-x="1304" />
20<glyph unicode="&#x2004;" horiz-adv-x="434" />
21<glyph unicode="&#x2005;" horiz-adv-x="326" />
22<glyph unicode="&#x2006;" horiz-adv-x="217" />
23<glyph unicode="&#x2007;" horiz-adv-x="217" />
24<glyph unicode="&#x2008;" horiz-adv-x="163" />
25<glyph unicode="&#x2009;" horiz-adv-x="260" />
26<glyph unicode="&#x200a;" horiz-adv-x="72" />
27<glyph unicode="&#x202f;" horiz-adv-x="260" />
28<glyph unicode="&#x205f;" horiz-adv-x="326" />
29<glyph unicode="&#x20ac;" d="M100 500l100 100h113q0 47 5 100h-218l100 100h135q37 167 112 257q117 141 297 141q242 0 354 -189q60 -103 66 -209h-181q0 55 -25.5 99t-63.5 68t-75 36.5t-67 12.5q-24 0 -52.5 -10t-62.5 -32t-65.5 -67t-50.5 -107h379l-100 -100h-300q-6 -46 -6 -100h406l-100 -100 h-300q9 -74 33 -132t52.5 -91t62 -54.5t59 -29t46.5 -7.5q29 0 66 13t75 37t63.5 67.5t25.5 96.5h174q-31 -172 -128 -278q-107 -117 -274 -117q-205 0 -324 158q-36 46 -69 131.5t-45 205.5h-217z" />
30<glyph unicode="&#x2212;" d="M200 400h900v300h-900v-300z" />
31<glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" />
32<glyph unicode="&#x2601;" d="M-14 494q0 -80 56.5 -137t135.5 -57h750q120 0 205 86.5t85 207.5t-85 207t-205 86q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5z" />
33<glyph unicode="&#x2709;" d="M0 100l400 400l200 -200l200 200l400 -400h-1200zM0 300v600l300 -300zM0 1100l600 -603l600 603h-1200zM900 600l300 300v-600z" />
34<glyph unicode="&#x270f;" d="M-13 -13l333 112l-223 223zM187 403l214 -214l614 614l-214 214zM887 1103l214 -214l99 92q13 13 13 32.5t-13 33.5l-153 153q-15 13 -33 13t-33 -13z" />
35<glyph unicode="&#xe001;" d="M0 1200h1200l-500 -550v-550h300v-100h-800v100h300v550z" />
36<glyph unicode="&#xe002;" d="M14 84q18 -55 86 -75.5t147 5.5q65 21 109 69t44 90v606l600 155v-521q-64 16 -138 -7q-79 -26 -122.5 -83t-25.5 -111q18 -55 86 -75.5t147 4.5q70 23 111.5 63.5t41.5 95.5v881q0 10 -7 15.5t-17 2.5l-752 -193q-10 -3 -17 -12.5t-7 -19.5v-689q-64 17 -138 -7 q-79 -25 -122.5 -82t-25.5 -112z" />
37<glyph unicode="&#xe003;" d="M23 693q0 200 142 342t342 142t342 -142t142 -342q0 -142 -78 -261l300 -300q7 -8 7 -18t-7 -18l-109 -109q-8 -7 -18 -7t-18 7l-300 300q-119 -78 -261 -78q-200 0 -342 142t-142 342zM176 693q0 -136 97 -233t234 -97t233.5 96.5t96.5 233.5t-96.5 233.5t-233.5 96.5 t-234 -97t-97 -233z" />
38<glyph unicode="&#xe005;" d="M100 784q0 64 28 123t73 100.5t104.5 64t119 20.5t120 -38.5t104.5 -104.5q48 69 109.5 105t121.5 38t118.5 -20.5t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-149.5 152.5t-126.5 127.5 t-94 124.5t-33.5 117.5z" />
39<glyph unicode="&#xe006;" d="M-72 800h479l146 400h2l146 -400h472l-382 -278l145 -449l-384 275l-382 -275l146 447zM168 71l2 1z" />
40<glyph unicode="&#xe007;" d="M-72 800h479l146 400h2l146 -400h472l-382 -278l145 -449l-384 275l-382 -275l146 447zM168 71l2 1zM237 700l196 -142l-73 -226l192 140l195 -141l-74 229l193 140h-235l-77 211l-78 -211h-239z" />
41<glyph unicode="&#xe008;" d="M0 0v143l400 257v100q-37 0 -68.5 74.5t-31.5 125.5v200q0 124 88 212t212 88t212 -88t88 -212v-200q0 -51 -31.5 -125.5t-68.5 -74.5v-100l400 -257v-143h-1200z" />
42<glyph unicode="&#xe009;" d="M0 0v1100h1200v-1100h-1200zM100 100h100v100h-100v-100zM100 300h100v100h-100v-100zM100 500h100v100h-100v-100zM100 700h100v100h-100v-100zM100 900h100v100h-100v-100zM300 100h600v400h-600v-400zM300 600h600v400h-600v-400zM1000 100h100v100h-100v-100z M1000 300h100v100h-100v-100zM1000 500h100v100h-100v-100zM1000 700h100v100h-100v-100zM1000 900h100v100h-100v-100z" />
43<glyph unicode="&#xe010;" d="M0 50v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5zM0 650v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5zM600 50v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5zM600 650v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5z" />
44<glyph unicode="&#xe011;" d="M0 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM0 450v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5zM0 850v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5 t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 450v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 850v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5 v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM800 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM800 450v200q0 21 14.5 35.5t35.5 14.5h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM800 850v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5z" />
45<glyph unicode="&#xe012;" d="M0 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM0 450q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v200q0 21 -14.5 35.5t-35.5 14.5h-200q-21 0 -35.5 -14.5 t-14.5 -35.5v-200zM0 850v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 50v200q0 21 14.5 35.5t35.5 14.5h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5 t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5zM400 450v200q0 21 14.5 35.5t35.5 14.5h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5zM400 850v200q0 21 14.5 35.5t35.5 14.5h700q21 0 35.5 -14.5t14.5 -35.5 v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5z" />
46<glyph unicode="&#xe013;" d="M29 454l419 -420l818 820l-212 212l-607 -607l-206 207z" />
47<glyph unicode="&#xe014;" d="M106 318l282 282l-282 282l212 212l282 -282l282 282l212 -212l-282 -282l282 -282l-212 -212l-282 282l-282 -282z" />
48<glyph unicode="&#xe015;" d="M23 693q0 200 142 342t342 142t342 -142t142 -342q0 -142 -78 -261l300 -300q7 -8 7 -18t-7 -18l-109 -109q-8 -7 -18 -7t-18 7l-300 300q-119 -78 -261 -78q-200 0 -342 142t-142 342zM176 693q0 -136 97 -233t234 -97t233.5 96.5t96.5 233.5t-96.5 233.5t-233.5 96.5 t-234 -97t-97 -233zM300 600v200h100v100h200v-100h100v-200h-100v-100h-200v100h-100z" />
49<glyph unicode="&#xe016;" d="M23 694q0 200 142 342t342 142t342 -142t142 -342q0 -141 -78 -262l300 -299q7 -7 7 -18t-7 -18l-109 -109q-8 -8 -18 -8t-18 8l-300 300q-119 -78 -261 -78q-200 0 -342 142t-142 342zM176 694q0 -136 97 -233t234 -97t233.5 97t96.5 233t-96.5 233t-233.5 97t-234 -97 t-97 -233zM300 601h400v200h-400v-200z" />
50<glyph unicode="&#xe017;" d="M23 600q0 183 105 331t272 210v-166q-103 -55 -165 -155t-62 -220q0 -177 125 -302t302 -125t302 125t125 302q0 120 -62 220t-165 155v166q167 -62 272 -210t105 -331q0 -118 -45.5 -224.5t-123 -184t-184 -123t-224.5 -45.5t-224.5 45.5t-184 123t-123 184t-45.5 224.5 zM500 750q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v400q0 21 -14.5 35.5t-35.5 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-400z" />
51<glyph unicode="&#xe018;" d="M100 1h200v300h-200v-300zM400 1v500h200v-500h-200zM700 1v800h200v-800h-200zM1000 1v1200h200v-1200h-200z" />
52<glyph unicode="&#xe019;" d="M26 601q0 -33 6 -74l151 -38l2 -6q14 -49 38 -93l3 -5l-80 -134q45 -59 105 -105l133 81l5 -3q45 -26 94 -39l5 -2l38 -151q40 -5 74 -5q27 0 74 5l38 151l6 2q46 13 93 39l5 3l134 -81q56 44 104 105l-80 134l3 5q24 44 39 93l1 6l152 38q5 40 5 74q0 28 -5 73l-152 38 l-1 6q-16 51 -39 93l-3 5l80 134q-44 58 -104 105l-134 -81l-5 3q-45 25 -93 39l-6 1l-38 152q-40 5 -74 5q-27 0 -74 -5l-38 -152l-5 -1q-50 -14 -94 -39l-5 -3l-133 81q-59 -47 -105 -105l80 -134l-3 -5q-25 -47 -38 -93l-2 -6l-151 -38q-6 -48 -6 -73zM385 601 q0 88 63 151t152 63t152 -63t63 -151q0 -89 -63 -152t-152 -63t-152 63t-63 152z" />
53<glyph unicode="&#xe020;" d="M100 1025v50q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-50q0 -11 -7 -18t-18 -7h-1050q-11 0 -18 7t-7 18zM200 100v800h900v-800q0 -41 -29.5 -71t-70.5 -30h-700q-41 0 -70.5 30 t-29.5 71zM300 100h100v700h-100v-700zM500 100h100v700h-100v-700zM500 1100h300v100h-300v-100zM700 100h100v700h-100v-700zM900 100h100v700h-100v-700z" />
54<glyph unicode="&#xe021;" d="M1 601l656 644l644 -644h-200v-600h-300v400h-300v-400h-300v600h-200z" />
55<glyph unicode="&#xe022;" d="M100 25v1150q0 11 7 18t18 7h475v-500h400v-675q0 -11 -7 -18t-18 -7h-850q-11 0 -18 7t-7 18zM700 800v300l300 -300h-300z" />
56<glyph unicode="&#xe023;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM500 500v400h100 v-300h200v-100h-300z" />
57<glyph unicode="&#xe024;" d="M-100 0l431 1200h209l-21 -300h162l-20 300h208l431 -1200h-538l-41 400h-242l-40 -400h-539zM488 500h224l-27 300h-170z" />
58<glyph unicode="&#xe025;" d="M0 0v400h490l-290 300h200v500h300v-500h200l-290 -300h490v-400h-1100zM813 200h175v100h-175v-100z" />
59<glyph unicode="&#xe026;" d="M1 600q0 122 47.5 233t127.5 191t191 127.5t233 47.5t233 -47.5t191 -127.5t127.5 -191t47.5 -233t-47.5 -233t-127.5 -191t-191 -127.5t-233 -47.5t-233 47.5t-191 127.5t-127.5 191t-47.5 233zM188 600q0 -170 121 -291t291 -121t291 121t121 291t-121 291t-291 121 t-291 -121t-121 -291zM350 600h150v300h200v-300h150l-250 -300z" />
60<glyph unicode="&#xe027;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM350 600l250 300 l250 -300h-150v-300h-200v300h-150z" />
61<glyph unicode="&#xe028;" d="M0 25v475l200 700h800l199 -700l1 -475q0 -11 -7 -18t-18 -7h-1150q-11 0 -18 7t-7 18zM200 500h200l50 -200h300l50 200h200l-97 500h-606z" />
62<glyph unicode="&#xe029;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -172 121.5 -293t292.5 -121t292.5 121t121.5 293q0 171 -121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM500 397v401 l297 -200z" />
63<glyph unicode="&#xe030;" d="M23 600q0 -118 45.5 -224.5t123 -184t184 -123t224.5 -45.5t224.5 45.5t184 123t123 184t45.5 224.5h-150q0 -177 -125 -302t-302 -125t-302 125t-125 302t125 302t302 125q136 0 246 -81l-146 -146h400v400l-145 -145q-157 122 -355 122q-118 0 -224.5 -45.5t-184 -123 t-123 -184t-45.5 -224.5z" />
64<glyph unicode="&#xe031;" d="M23 600q0 118 45.5 224.5t123 184t184 123t224.5 45.5q198 0 355 -122l145 145v-400h-400l147 147q-112 80 -247 80q-177 0 -302 -125t-125 -302h-150zM100 0v400h400l-147 -147q112 -80 247 -80q177 0 302 125t125 302h150q0 -118 -45.5 -224.5t-123 -184t-184 -123 t-224.5 -45.5q-198 0 -355 122z" />
65<glyph unicode="&#xe032;" d="M100 0h1100v1200h-1100v-1200zM200 100v900h900v-900h-900zM300 200v100h100v-100h-100zM300 400v100h100v-100h-100zM300 600v100h100v-100h-100zM300 800v100h100v-100h-100zM500 200h500v100h-500v-100zM500 400v100h500v-100h-500zM500 600v100h500v-100h-500z M500 800v100h500v-100h-500z" />
66<glyph unicode="&#xe033;" d="M0 100v600q0 41 29.5 70.5t70.5 29.5h100v200q0 82 59 141t141 59h300q82 0 141 -59t59 -141v-200h100q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-900q-41 0 -70.5 29.5t-29.5 70.5zM400 800h300v150q0 21 -14.5 35.5t-35.5 14.5h-200 q-21 0 -35.5 -14.5t-14.5 -35.5v-150z" />
67<glyph unicode="&#xe034;" d="M100 0v1100h100v-1100h-100zM300 400q60 60 127.5 84t127.5 17.5t122 -23t119 -30t110 -11t103 42t91 120.5v500q-40 -81 -101.5 -115.5t-127.5 -29.5t-138 25t-139.5 40t-125.5 25t-103 -29.5t-65 -115.5v-500z" />
68<glyph unicode="&#xe035;" d="M0 275q0 -11 7 -18t18 -7h50q11 0 18 7t7 18v300q0 127 70.5 231.5t184.5 161.5t245 57t245 -57t184.5 -161.5t70.5 -231.5v-300q0 -11 7 -18t18 -7h50q11 0 18 7t7 18v300q0 116 -49.5 227t-131 192.5t-192.5 131t-227 49.5t-227 -49.5t-192.5 -131t-131 -192.5 t-49.5 -227v-300zM200 20v460q0 8 6 14t14 6h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14zM800 20v460q0 8 6 14t14 6h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14z" />
69<glyph unicode="&#xe036;" d="M0 400h300l300 -200v800l-300 -200h-300v-400zM688 459l141 141l-141 141l71 71l141 -141l141 141l71 -71l-141 -141l141 -141l-71 -71l-141 141l-141 -141z" />
70<glyph unicode="&#xe037;" d="M0 400h300l300 -200v800l-300 -200h-300v-400zM700 857l69 53q111 -135 111 -310q0 -169 -106 -302l-67 54q86 110 86 248q0 146 -93 257z" />
71<glyph unicode="&#xe038;" d="M0 401v400h300l300 200v-800l-300 200h-300zM702 858l69 53q111 -135 111 -310q0 -170 -106 -303l-67 55q86 110 86 248q0 145 -93 257zM889 951l7 -8q123 -151 123 -344q0 -189 -119 -339l-7 -8l81 -66l6 8q142 178 142 405q0 230 -144 408l-6 8z" />
72<glyph unicode="&#xe039;" d="M0 0h500v500h-200v100h-100v-100h-200v-500zM0 600h100v100h400v100h100v100h-100v300h-500v-600zM100 100v300h300v-300h-300zM100 800v300h300v-300h-300zM200 200v100h100v-100h-100zM200 900h100v100h-100v-100zM500 500v100h300v-300h200v-100h-100v-100h-200v100 h-100v100h100v200h-200zM600 0v100h100v-100h-100zM600 1000h100v-300h200v-300h300v200h-200v100h200v500h-600v-200zM800 800v300h300v-300h-300zM900 0v100h300v-100h-300zM900 900v100h100v-100h-100zM1100 200v100h100v-100h-100z" />
73<glyph unicode="&#xe040;" d="M0 200h100v1000h-100v-1000zM100 0v100h300v-100h-300zM200 200v1000h100v-1000h-100zM500 0v91h100v-91h-100zM500 200v1000h200v-1000h-200zM700 0v91h100v-91h-100zM800 200v1000h100v-1000h-100zM900 0v91h200v-91h-200zM1000 200v1000h200v-1000h-200z" />
74<glyph unicode="&#xe041;" d="M0 700l1 475q0 10 7.5 17.5t17.5 7.5h474l700 -700l-500 -500zM148 953q0 -42 29 -71q30 -30 71.5 -30t71.5 30q29 29 29 71t-29 71q-30 30 -71.5 30t-71.5 -30q-29 -29 -29 -71z" />
75<glyph unicode="&#xe042;" d="M1 700l1 475q0 11 7 18t18 7h474l700 -700l-500 -500zM148 953q0 -42 30 -71q29 -30 71 -30t71 30q30 29 30 71t-30 71q-29 30 -71 30t-71 -30q-30 -29 -30 -71zM701 1200h100l700 -700l-500 -500l-50 50l450 450z" />
76<glyph unicode="&#xe043;" d="M100 0v1025l175 175h925v-1000l-100 -100v1000h-750l-100 -100h750v-1000h-900z" />
77<glyph unicode="&#xe044;" d="M200 0l450 444l450 -443v1150q0 20 -14.5 35t-35.5 15h-800q-21 0 -35.5 -15t-14.5 -35v-1151z" />
78<glyph unicode="&#xe045;" d="M0 100v700h200l100 -200h600l100 200h200v-700h-200v200h-800v-200h-200zM253 829l40 -124h592l62 124l-94 346q-2 11 -10 18t-18 7h-450q-10 0 -18 -7t-10 -18zM281 24l38 152q2 10 11.5 17t19.5 7h500q10 0 19.5 -7t11.5 -17l38 -152q2 -10 -3.5 -17t-15.5 -7h-600 q-10 0 -15.5 7t-3.5 17z" />
79<glyph unicode="&#xe046;" d="M0 200q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-150q-4 8 -11.5 21.5t-33 48t-53 61t-69 48t-83.5 21.5h-200q-41 0 -82 -20.5t-70 -50t-52 -59t-34 -50.5l-12 -20h-150q-41 0 -70.5 -29.5t-29.5 -70.5v-600z M356 500q0 100 72 172t172 72t172 -72t72 -172t-72 -172t-172 -72t-172 72t-72 172zM494 500q0 -44 31 -75t75 -31t75 31t31 75t-31 75t-75 31t-75 -31t-31 -75zM900 700v100h100v-100h-100z" />
80<glyph unicode="&#xe047;" d="M53 0h365v66q-41 0 -72 11t-49 38t1 71l92 234h391l82 -222q16 -45 -5.5 -88.5t-74.5 -43.5v-66h417v66q-34 1 -74 43q-18 19 -33 42t-21 37l-6 13l-385 998h-93l-399 -1006q-24 -48 -52 -75q-12 -12 -33 -25t-36 -20l-15 -7v-66zM416 521l178 457l46 -140l116 -317h-340 z" />
81<glyph unicode="&#xe048;" d="M100 0v89q41 7 70.5 32.5t29.5 65.5v827q0 28 -1 39.5t-5.5 26t-15.5 21t-29 14t-49 14.5v71l471 -1q120 0 213 -88t93 -228q0 -55 -11.5 -101.5t-28 -74t-33.5 -47.5t-28 -28l-12 -7q8 -3 21.5 -9t48 -31.5t60.5 -58t47.5 -91.5t21.5 -129q0 -84 -59 -156.5t-142 -111 t-162 -38.5h-500zM400 200h161q89 0 153 48.5t64 132.5q0 90 -62.5 154.5t-156.5 64.5h-159v-400zM400 700h139q76 0 130 61.5t54 138.5q0 82 -84 130.5t-239 48.5v-379z" />
82<glyph unicode="&#xe049;" d="M200 0v57q77 7 134.5 40.5t65.5 80.5l173 849q10 56 -10 74t-91 37q-6 1 -10.5 2.5t-9.5 2.5v57h425l2 -57q-33 -8 -62 -25.5t-46 -37t-29.5 -38t-17.5 -30.5l-5 -12l-128 -825q-10 -52 14 -82t95 -36v-57h-500z" />
83<glyph unicode="&#xe050;" d="M-75 200h75v800h-75l125 167l125 -167h-75v-800h75l-125 -167zM300 900v300h150h700h150v-300h-50q0 29 -8 48.5t-18.5 30t-33.5 15t-39.5 5.5t-50.5 1h-200v-850l100 -50v-100h-400v100l100 50v850h-200q-34 0 -50.5 -1t-40 -5.5t-33.5 -15t-18.5 -30t-8.5 -48.5h-49z " />
84<glyph unicode="&#xe051;" d="M33 51l167 125v-75h800v75l167 -125l-167 -125v75h-800v-75zM100 901v300h150h700h150v-300h-50q0 29 -8 48.5t-18 30t-33.5 15t-40 5.5t-50.5 1h-200v-650l100 -50v-100h-400v100l100 50v650h-200q-34 0 -50.5 -1t-39.5 -5.5t-33.5 -15t-18.5 -30t-8 -48.5h-50z" />
85<glyph unicode="&#xe052;" d="M0 50q0 -20 14.5 -35t35.5 -15h1100q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM0 350q0 -20 14.5 -35t35.5 -15h800q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-800q-21 0 -35.5 -14.5t-14.5 -35.5 v-100zM0 650q0 -20 14.5 -35t35.5 -15h1000q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1000q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM0 950q0 -20 14.5 -35t35.5 -15h600q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-600q-21 0 -35.5 -14.5 t-14.5 -35.5v-100z" />
86<glyph unicode="&#xe053;" d="M0 50q0 -20 14.5 -35t35.5 -15h1100q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM0 650q0 -20 14.5 -35t35.5 -15h1100q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5 v-100zM200 350q0 -20 14.5 -35t35.5 -15h700q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-700q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM200 950q0 -20 14.5 -35t35.5 -15h700q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-700q-21 0 -35.5 -14.5 t-14.5 -35.5v-100z" />
87<glyph unicode="&#xe054;" d="M0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1000q-21 0 -35.5 15 t-14.5 35zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15t-14.5 35zM500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-600 q-21 0 -35.5 15t-14.5 35z" />
88<glyph unicode="&#xe055;" d="M0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM0 350v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15 t-14.5 35zM0 650v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM0 950v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100 q-21 0 -35.5 15t-14.5 35z" />
89<glyph unicode="&#xe056;" d="M0 50v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM0 350v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15 t-14.5 35zM0 650v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM0 950v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15 t-14.5 35zM300 50v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15t-14.5 35zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800 q-21 0 -35.5 15t-14.5 35zM300 650v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15t-14.5 35zM300 950v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15 h-800q-21 0 -35.5 15t-14.5 35z" />
90<glyph unicode="&#xe057;" d="M-101 500v100h201v75l166 -125l-166 -125v75h-201zM300 0h100v1100h-100v-1100zM500 50q0 -20 14.5 -35t35.5 -15h600q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-600q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM500 350q0 -20 14.5 -35t35.5 -15h300q20 0 35 15t15 35 v100q0 21 -15 35.5t-35 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM500 650q0 -20 14.5 -35t35.5 -15h500q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM500 950q0 -20 14.5 -35t35.5 -15h100q20 0 35 15t15 35v100 q0 21 -15 35.5t-35 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-100z" />
91<glyph unicode="&#xe058;" d="M1 50q0 -20 14.5 -35t35.5 -15h600q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-600q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM1 350q0 -20 14.5 -35t35.5 -15h300q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM1 650 q0 -20 14.5 -35t35.5 -15h500q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM1 950q0 -20 14.5 -35t35.5 -15h100q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM801 0v1100h100v-1100 h-100zM934 550l167 -125v75h200v100h-200v75z" />
92<glyph unicode="&#xe059;" d="M0 275v650q0 31 22 53t53 22h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53zM900 600l300 300v-600z" />
93<glyph unicode="&#xe060;" d="M0 44v1012q0 18 13 31t31 13h1112q19 0 31.5 -13t12.5 -31v-1012q0 -18 -12.5 -31t-31.5 -13h-1112q-18 0 -31 13t-13 31zM100 263l247 182l298 -131l-74 156l293 318l236 -288v500h-1000v-737zM208 750q0 56 39 95t95 39t95 -39t39 -95t-39 -95t-95 -39t-95 39t-39 95z " />
94<glyph unicode="&#xe062;" d="M148 745q0 124 60.5 231.5t165 172t226.5 64.5q123 0 227 -63t164.5 -169.5t60.5 -229.5t-73 -272q-73 -114 -166.5 -237t-150.5 -189l-57 -66q-10 9 -27 26t-66.5 70.5t-96 109t-104 135.5t-100.5 155q-63 139 -63 262zM342 772q0 -107 75.5 -182.5t181.5 -75.5 q107 0 182.5 75.5t75.5 182.5t-75.5 182t-182.5 75t-182 -75.5t-75 -181.5z" />
95<glyph unicode="&#xe063;" d="M1 600q0 122 47.5 233t127.5 191t191 127.5t233 47.5t233 -47.5t191 -127.5t127.5 -191t47.5 -233t-47.5 -233t-127.5 -191t-191 -127.5t-233 -47.5t-233 47.5t-191 127.5t-127.5 191t-47.5 233zM173 600q0 -177 125.5 -302t301.5 -125v854q-176 0 -301.5 -125 t-125.5 -302z" />
96<glyph unicode="&#xe064;" d="M117 406q0 94 34 186t88.5 172.5t112 159t115 177t87.5 194.5q21 -71 57.5 -142.5t76 -130.5t83 -118.5t82 -117t70 -116t50 -125.5t18.5 -136q0 -89 -39 -165.5t-102 -126.5t-140 -79.5t-156 -33.5q-114 6 -211.5 53t-161.5 139t-64 210zM243 414q14 -82 59.5 -136 t136.5 -80l16 98q-7 6 -18 17t-34 48t-33 77q-15 73 -14 143.5t10 122.5l9 51q-92 -110 -119.5 -185t-12.5 -156z" />
97<glyph unicode="&#xe065;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5q366 -6 397 -14l-186 -186h-311q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v125l200 200v-225q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5 t-117.5 282.5zM436 341l161 50l412 412l-114 113l-405 -405zM995 1015l113 -113l113 113l-21 85l-92 28z" />
98<glyph unicode="&#xe066;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h261l2 -80q-133 -32 -218 -120h-145q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-53q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5 zM423 524q30 38 81.5 64t103 35.5t99 14t77.5 3.5l29 -1v-209l360 324l-359 318v-216q-7 0 -19 -1t-48 -8t-69.5 -18.5t-76.5 -37t-76.5 -59t-62 -88t-39.5 -121.5z" />
99<glyph unicode="&#xe067;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h300q61 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-169q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5 t-117.5 282.5zM342 632l283 -284l567 567l-137 137l-430 -431l-146 147z" />
100<glyph unicode="&#xe068;" d="M0 603l300 296v-198h200v200h-200l300 300l295 -300h-195v-200h200v198l300 -296l-300 -300v198h-200v-200h195l-295 -300l-300 300h200v200h-200v-198z" />
101<glyph unicode="&#xe069;" d="M200 50v1000q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-437l500 487v-1100l-500 488v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5z" />
102<glyph unicode="&#xe070;" d="M0 50v1000q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-437l500 487v-487l500 487v-1100l-500 488v-488l-500 488v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5z" />
103<glyph unicode="&#xe071;" d="M136 550l564 550v-487l500 487v-1100l-500 488v-488z" />
104<glyph unicode="&#xe072;" d="M200 0l900 550l-900 550v-1100z" />
105<glyph unicode="&#xe073;" d="M200 150q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v800q0 21 -14.5 35.5t-35.5 14.5h-200q-21 0 -35.5 -14.5t-14.5 -35.5v-800zM600 150q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v800q0 21 -14.5 35.5t-35.5 14.5h-200 q-21 0 -35.5 -14.5t-14.5 -35.5v-800z" />
106<glyph unicode="&#xe074;" d="M200 150q0 -20 14.5 -35t35.5 -15h800q21 0 35.5 15t14.5 35v800q0 21 -14.5 35.5t-35.5 14.5h-800q-21 0 -35.5 -14.5t-14.5 -35.5v-800z" />
107<glyph unicode="&#xe075;" d="M0 0v1100l500 -487v487l564 -550l-564 -550v488z" />
108<glyph unicode="&#xe076;" d="M0 0v1100l500 -487v487l500 -487v437q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-500 -488v488z" />
109<glyph unicode="&#xe077;" d="M300 0v1100l500 -487v437q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438z" />
110<glyph unicode="&#xe078;" d="M100 250v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5zM100 500h1100l-550 564z" />
111<glyph unicode="&#xe079;" d="M185 599l592 -592l240 240l-353 353l353 353l-240 240z" />
112<glyph unicode="&#xe080;" d="M272 194l353 353l-353 353l241 240l572 -571l21 -22l-1 -1v-1l-592 -591z" />
113<glyph unicode="&#xe081;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM300 500h200v-200h200v200h200v200h-200v200h-200v-200h-200v-200z" />
114<glyph unicode="&#xe082;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM300 500h600v200h-600v-200z" />
115<glyph unicode="&#xe083;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM246 459l213 -213l141 142l141 -142l213 213l-142 141l142 141l-213 212l-141 -141l-141 142l-212 -213l141 -141 z" />
116<glyph unicode="&#xe084;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM270 551l276 -277l411 411l-175 174l-236 -236l-102 102z" />
117<glyph unicode="&#xe085;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM364 700h143q4 0 11.5 -1t11 -1t6.5 3t3 9t1 11t3.5 8.5t3.5 6t5.5 4t6.5 2.5t9 1.5t9 0.5h11.5h12.5 q19 0 30 -10t11 -26q0 -22 -4 -28t-27 -22q-5 -1 -12.5 -3t-27 -13.5t-34 -27t-26.5 -46t-11 -68.5h200q5 3 14 8t31.5 25.5t39.5 45.5t31 69t14 94q0 51 -17.5 89t-42 58t-58.5 32t-58.5 15t-51.5 3q-50 0 -90.5 -12t-75 -38.5t-53.5 -74.5t-19 -114zM500 300h200v100h-200 v-100z" />
118<glyph unicode="&#xe086;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM400 300h400v100h-100v300h-300v-100h100v-200h-100v-100zM500 800h200v100h-200v-100z" />
119<glyph unicode="&#xe087;" d="M0 500v200h195q31 125 98.5 199.5t206.5 100.5v200h200v-200q54 -20 113 -60t112.5 -105.5t71.5 -134.5h203v-200h-203q-25 -102 -116.5 -186t-180.5 -117v-197h-200v197q-140 27 -208 102.5t-98 200.5h-194zM290 500q24 -73 79.5 -127.5t130.5 -78.5v206h200v-206 q149 48 201 206h-201v200h200q-25 74 -75.5 127t-124.5 77v-204h-200v203q-75 -23 -130 -77t-79 -126h209v-200h-210z" />
120<glyph unicode="&#xe088;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM356 465l135 135 l-135 135l109 109l135 -135l135 135l109 -109l-135 -135l135 -135l-109 -109l-135 135l-135 -135z" />
121<glyph unicode="&#xe089;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM322 537l141 141 l87 -87l204 205l142 -142l-346 -345z" />
122<glyph unicode="&#xe090;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -115 62 -215l568 567q-100 62 -216 62q-171 0 -292.5 -121.5t-121.5 -292.5zM391 245q97 -59 209 -59q171 0 292.5 121.5t121.5 292.5 q0 112 -59 209z" />
123<glyph unicode="&#xe091;" d="M0 547l600 453v-300h600v-300h-600v-301z" />
124<glyph unicode="&#xe092;" d="M0 400v300h600v300l600 -453l-600 -448v301h-600z" />
125<glyph unicode="&#xe093;" d="M204 600l450 600l444 -600h-298v-600h-300v600h-296z" />
126<glyph unicode="&#xe094;" d="M104 600h296v600h300v-600h298l-449 -600z" />
127<glyph unicode="&#xe095;" d="M0 200q6 132 41 238.5t103.5 193t184 138t271.5 59.5v271l600 -453l-600 -448v301q-95 -2 -183 -20t-170 -52t-147 -92.5t-100 -135.5z" />
128<glyph unicode="&#xe096;" d="M0 0v400l129 -129l294 294l142 -142l-294 -294l129 -129h-400zM635 777l142 -142l294 294l129 -129v400h-400l129 -129z" />
129<glyph unicode="&#xe097;" d="M34 176l295 295l-129 129h400v-400l-129 130l-295 -295zM600 600v400l129 -129l295 295l142 -141l-295 -295l129 -130h-400z" />
130<glyph unicode="&#xe101;" d="M23 600q0 118 45.5 224.5t123 184t184 123t224.5 45.5t224.5 -45.5t184 -123t123 -184t45.5 -224.5t-45.5 -224.5t-123 -184t-184 -123t-224.5 -45.5t-224.5 45.5t-184 123t-123 184t-45.5 224.5zM456 851l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5 t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5h-207q-21 0 -33 -14.5t-8 -34.5zM500 300h200v100h-200v-100z" />
131<glyph unicode="&#xe102;" d="M0 800h100v-200h400v300h200v-300h400v200h100v100h-111q1 1 1 6.5t-1.5 15t-3.5 17.5l-34 172q-11 39 -41.5 63t-69.5 24q-32 0 -61 -17l-239 -144q-22 -13 -40 -35q-19 24 -40 36l-238 144q-33 18 -62 18q-39 0 -69.5 -23t-40.5 -61l-35 -177q-2 -8 -3 -18t-1 -15v-6 h-111v-100zM100 0h400v400h-400v-400zM200 900q-3 0 14 48t36 96l18 47l213 -191h-281zM700 0v400h400v-400h-400zM731 900l202 197q5 -12 12 -32.5t23 -64t25 -72t7 -28.5h-269z" />
132<glyph unicode="&#xe103;" d="M0 -22v143l216 193q-9 53 -13 83t-5.5 94t9 113t38.5 114t74 124q47 60 99.5 102.5t103 68t127.5 48t145.5 37.5t184.5 43.5t220 58.5q0 -189 -22 -343t-59 -258t-89 -181.5t-108.5 -120t-122 -68t-125.5 -30t-121.5 -1.5t-107.5 12.5t-87.5 17t-56.5 7.5l-99 -55z M238.5 300.5q19.5 -6.5 86.5 76.5q55 66 367 234q70 38 118.5 69.5t102 79t99 111.5t86.5 148q22 50 24 60t-6 19q-7 5 -17 5t-26.5 -14.5t-33.5 -39.5q-35 -51 -113.5 -108.5t-139.5 -89.5l-61 -32q-369 -197 -458 -401q-48 -111 -28.5 -117.5z" />
133<glyph unicode="&#xe104;" d="M111 408q0 -33 5 -63q9 -56 44 -119.5t105 -108.5q31 -21 64 -16t62 23.5t57 49.5t48 61.5t35 60.5q32 66 39 184.5t-13 157.5q79 -80 122 -164t26 -184q-5 -33 -20.5 -69.5t-37.5 -80.5q-10 -19 -14.5 -29t-12 -26t-9 -23.5t-3 -19t2.5 -15.5t11 -9.5t19.5 -5t30.5 2.5 t42 8q57 20 91 34t87.5 44.5t87 64t65.5 88.5t47 122q38 172 -44.5 341.5t-246.5 278.5q22 -44 43 -129q39 -159 -32 -154q-15 2 -33 9q-79 33 -120.5 100t-44 175.5t48.5 257.5q-13 -8 -34 -23.5t-72.5 -66.5t-88.5 -105.5t-60 -138t-8 -166.5q2 -12 8 -41.5t8 -43t6 -39.5 t3.5 -39.5t-1 -33.5t-6 -31.5t-13.5 -24t-21 -20.5t-31 -12q-38 -10 -67 13t-40.5 61.5t-15 81.5t10.5 75q-52 -46 -83.5 -101t-39 -107t-7.5 -85z" />
134<glyph unicode="&#xe105;" d="M-61 600l26 40q6 10 20 30t49 63.5t74.5 85.5t97 90t116.5 83.5t132.5 59t145.5 23.5t145.5 -23.5t132.5 -59t116.5 -83.5t97 -90t74.5 -85.5t49 -63.5t20 -30l26 -40l-26 -40q-6 -10 -20 -30t-49 -63.5t-74.5 -85.5t-97 -90t-116.5 -83.5t-132.5 -59t-145.5 -23.5 t-145.5 23.5t-132.5 59t-116.5 83.5t-97 90t-74.5 85.5t-49 63.5t-20 30zM120 600q7 -10 40.5 -58t56 -78.5t68 -77.5t87.5 -75t103 -49.5t125 -21.5t123.5 20t100.5 45.5t85.5 71.5t66.5 75.5t58 81.5t47 66q-1 1 -28.5 37.5t-42 55t-43.5 53t-57.5 63.5t-58.5 54 q49 -74 49 -163q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 85 46 158q-102 -87 -226 -258zM377 656q49 -124 154 -191l105 105q-37 24 -75 72t-57 84l-20 36z" />
135<glyph unicode="&#xe106;" d="M-61 600l26 40q6 10 20 30t49 63.5t74.5 85.5t97 90t116.5 83.5t132.5 59t145.5 23.5q61 0 121 -17l37 142h148l-314 -1200h-148l37 143q-82 21 -165 71.5t-140 102t-109.5 112t-72 88.5t-29.5 43zM120 600q210 -282 393 -336l37 141q-107 18 -178.5 101.5t-71.5 193.5 q0 85 46 158q-102 -87 -226 -258zM377 656q49 -124 154 -191l47 47l23 87q-30 28 -59 69t-44 68l-14 26zM780 161l38 145q22 15 44.5 34t46 44t40.5 44t41 50.5t33.5 43.5t33 44t24.5 34q-97 127 -140 175l39 146q67 -54 131.5 -125.5t87.5 -103.5t36 -52l26 -40l-26 -40 q-7 -12 -25.5 -38t-63.5 -79.5t-95.5 -102.5t-124 -100t-146.5 -79z" />
136<glyph unicode="&#xe107;" d="M-97.5 34q13.5 -34 50.5 -34h1294q37 0 50.5 35.5t-7.5 67.5l-642 1056q-20 34 -48 36.5t-48 -29.5l-642 -1066q-21 -32 -7.5 -66zM155 200l445 723l445 -723h-345v100h-200v-100h-345zM500 600l100 -300l100 300v100h-200v-100z" />
137<glyph unicode="&#xe108;" d="M100 262v41q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44t106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -91 100 -113v-64q0 -20 -13 -28.5t-32 0.5l-94 78h-222l-94 -78q-19 -9 -32 -0.5t-13 28.5 v64q0 22 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5z" />
138<glyph unicode="&#xe109;" d="M0 50q0 -20 14.5 -35t35.5 -15h1000q21 0 35.5 15t14.5 35v750h-1100v-750zM0 900h1100v150q0 21 -14.5 35.5t-35.5 14.5h-150v100h-100v-100h-500v100h-100v-100h-150q-21 0 -35.5 -14.5t-14.5 -35.5v-150zM100 100v100h100v-100h-100zM100 300v100h100v-100h-100z M100 500v100h100v-100h-100zM300 100v100h100v-100h-100zM300 300v100h100v-100h-100zM300 500v100h100v-100h-100zM500 100v100h100v-100h-100zM500 300v100h100v-100h-100zM500 500v100h100v-100h-100zM700 100v100h100v-100h-100zM700 300v100h100v-100h-100zM700 500 v100h100v-100h-100zM900 100v100h100v-100h-100zM900 300v100h100v-100h-100zM900 500v100h100v-100h-100z" />
139<glyph unicode="&#xe110;" d="M0 200v200h259l600 600h241v198l300 -295l-300 -300v197h-159l-600 -600h-341zM0 800h259l122 -122l141 142l-181 180h-341v-200zM678 381l141 142l122 -123h159v198l300 -295l-300 -300v197h-241z" />
140<glyph unicode="&#xe111;" d="M0 400v600q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5z" />
141<glyph unicode="&#xe112;" d="M100 600v200h300v-250q0 -113 6 -145q17 -92 102 -117q39 -11 92 -11q37 0 66.5 5.5t50 15.5t36 24t24 31.5t14 37.5t7 42t2.5 45t0 47v25v250h300v-200q0 -42 -3 -83t-15 -104t-31.5 -116t-58 -109.5t-89 -96.5t-129 -65.5t-174.5 -25.5t-174.5 25.5t-129 65.5t-89 96.5 t-58 109.5t-31.5 116t-15 104t-3 83zM100 900v300h300v-300h-300zM800 900v300h300v-300h-300z" />
142<glyph unicode="&#xe113;" d="M-30 411l227 -227l352 353l353 -353l226 227l-578 579z" />
143<glyph unicode="&#xe114;" d="M70 797l580 -579l578 579l-226 227l-353 -353l-352 353z" />
144<glyph unicode="&#xe115;" d="M-198 700l299 283l300 -283h-203v-400h385l215 -200h-800v600h-196zM402 1000l215 -200h381v-400h-198l299 -283l299 283h-200v600h-796z" />
145<glyph unicode="&#xe116;" d="M18 939q-5 24 10 42q14 19 39 19h896l38 162q5 17 18.5 27.5t30.5 10.5h94q20 0 35 -14.5t15 -35.5t-15 -35.5t-35 -14.5h-54l-201 -961q-2 -4 -6 -10.5t-19 -17.5t-33 -11h-31v-50q0 -20 -14.5 -35t-35.5 -15t-35.5 15t-14.5 35v50h-300v-50q0 -20 -14.5 -35t-35.5 -15 t-35.5 15t-14.5 35v50h-50q-21 0 -35.5 15t-14.5 35q0 21 14.5 35.5t35.5 14.5h535l48 200h-633q-32 0 -54.5 21t-27.5 43z" />
146<glyph unicode="&#xe117;" d="M0 0v800h1200v-800h-1200zM0 900v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500v-100h-1200z" />
147<glyph unicode="&#xe118;" d="M1 0l300 700h1200l-300 -700h-1200zM1 400v600h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500v-200h-1000z" />
148<glyph unicode="&#xe119;" d="M302 300h198v600h-198l298 300l298 -300h-198v-600h198l-298 -300z" />
149<glyph unicode="&#xe120;" d="M0 600l300 298v-198h600v198l300 -298l-300 -297v197h-600v-197z" />
150<glyph unicode="&#xe121;" d="M0 100v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM31 400l172 739q5 22 23 41.5t38 19.5h672q19 0 37.5 -22.5t23.5 -45.5l172 -732h-1138zM800 100h100v100h-100v-100z M1000 100h100v100h-100v-100z" />
151<glyph unicode="&#xe122;" d="M-101 600v50q0 24 25 49t50 38l25 13v-250l-11 5.5t-24 14t-30 21.5t-24 27.5t-11 31.5zM100 500v250v8v8v7t0.5 7t1.5 5.5t2 5t3 4t4.5 3.5t6 1.5t7.5 0.5h200l675 250v-850l-675 200h-38l47 -276q2 -12 -3 -17.5t-11 -6t-21 -0.5h-8h-83q-20 0 -34.5 14t-18.5 35 q-55 337 -55 351zM1100 200v850q0 21 14.5 35.5t35.5 14.5q20 0 35 -14.5t15 -35.5v-850q0 -20 -15 -35t-35 -15q-21 0 -35.5 15t-14.5 35z" />
152<glyph unicode="&#xe123;" d="M74 350q0 21 13.5 35.5t33.5 14.5h18l117 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3 32t29 13h94q20 0 29 -10.5t3 -29.5q-18 -36 -18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q20 0 33.5 -14.5t13.5 -35.5q0 -20 -13 -40t-31 -27q-8 -3 -23 -8.5 t-65 -20t-103 -25t-132.5 -19.5t-158.5 -9q-125 0 -245.5 20.5t-178.5 40.5l-58 20q-18 7 -31 27.5t-13 40.5zM497 110q12 -49 40 -79.5t63 -30.5t63 30.5t39 79.5q-48 -6 -102 -6t-103 6z" />
153<glyph unicode="&#xe124;" d="M21 445l233 -45l-78 -224l224 78l45 -233l155 179l155 -179l45 233l224 -78l-78 224l234 45l-180 155l180 156l-234 44l78 225l-224 -78l-45 233l-155 -180l-155 180l-45 -233l-224 78l78 -225l-233 -44l179 -156z" />
154<glyph unicode="&#xe125;" d="M0 200h200v600h-200v-600zM300 275q0 -75 100 -75h61q124 -100 139 -100h250q46 0 83 57l238 344q29 31 29 74v100q0 44 -30.5 84.5t-69.5 40.5h-328q28 118 28 125v150q0 44 -30.5 84.5t-69.5 40.5h-50q-27 0 -51 -20t-38 -48l-96 -198l-145 -196q-20 -26 -20 -63v-400z M400 300v375l150 213l100 212h50v-175l-50 -225h450v-125l-250 -375h-214l-136 100h-100z" />
155<glyph unicode="&#xe126;" d="M0 400v600h200v-600h-200zM300 525v400q0 75 100 75h61q124 100 139 100h250q46 0 83 -57l238 -344q29 -31 29 -74v-100q0 -44 -30.5 -84.5t-69.5 -40.5h-328q28 -118 28 -125v-150q0 -44 -30.5 -84.5t-69.5 -40.5h-50q-27 0 -51 20t-38 48l-96 198l-145 196 q-20 26 -20 63zM400 525l150 -212l100 -213h50v175l-50 225h450v125l-250 375h-214l-136 -100h-100v-375z" />
156<glyph unicode="&#xe127;" d="M8 200v600h200v-600h-200zM308 275v525q0 17 14 35.5t28 28.5l14 9l362 230q14 6 25 6q17 0 29 -12l109 -112q14 -14 14 -34q0 -18 -11 -32l-85 -121h302q85 0 138.5 -38t53.5 -110t-54.5 -111t-138.5 -39h-107l-130 -339q-7 -22 -20.5 -41.5t-28.5 -19.5h-341 q-7 0 -90 81t-83 94zM408 289l100 -89h293l131 339q6 21 19.5 41t28.5 20h203q16 0 25 15t9 36q0 20 -9 34.5t-25 14.5h-457h-6.5h-7.5t-6.5 0.5t-6 1t-5 1.5t-5.5 2.5t-4 4t-4 5.5q-5 12 -5 20q0 14 10 27l147 183l-86 83l-339 -236v-503z" />
157<glyph unicode="&#xe128;" d="M-101 651q0 72 54 110t139 38l302 -1l-85 121q-11 16 -11 32q0 21 14 34l109 113q13 12 29 12q11 0 25 -6l365 -230q7 -4 17 -10.5t26.5 -26t16.5 -36.5v-526q0 -13 -86 -93.5t-94 -80.5h-341q-16 0 -29.5 20t-19.5 41l-130 339h-107q-84 0 -139 39t-55 111zM-1 601h222 q15 0 28.5 -20.5t19.5 -40.5l131 -339h293l107 89v502l-343 237l-87 -83l145 -184q10 -11 10 -26q0 -11 -5 -20q-1 -3 -3.5 -5.5l-4 -4t-5 -2.5t-5.5 -1.5t-6.5 -1t-6.5 -0.5h-7.5h-6.5h-476v-100zM1000 201v600h200v-600h-200z" />
158<glyph unicode="&#xe129;" d="M97 719l230 -363q4 -6 10.5 -15.5t26 -25t36.5 -15.5h525q13 0 94 83t81 90v342q0 15 -20 28.5t-41 19.5l-339 131v106q0 84 -39 139t-111 55t-110 -53.5t-38 -138.5v-302l-121 84q-15 12 -33.5 11.5t-32.5 -13.5l-112 -110q-22 -22 -6 -53zM172 739l83 86l183 -146 q22 -18 47 -5q3 1 5.5 3.5l4 4t2.5 5t1.5 5.5t1 6.5t0.5 6.5v7.5v6.5v456q0 22 25 31t50 -0.5t25 -30.5v-202q0 -16 20 -29.5t41 -19.5l339 -130v-294l-89 -100h-503zM400 0v200h600v-200h-600z" />
159<glyph unicode="&#xe130;" d="M2 585q-16 -31 6 -53l112 -110q13 -13 32 -13.5t34 10.5l121 85q0 -51 -0.5 -153.5t-0.5 -148.5q0 -84 38.5 -138t110.5 -54t111 55t39 139v106l339 131q20 6 40.5 19.5t20.5 28.5v342q0 7 -81 90t-94 83h-525q-17 0 -35.5 -14t-28.5 -28l-10 -15zM77 565l236 339h503 l89 -100v-294l-340 -130q-20 -6 -40 -20t-20 -29v-202q0 -22 -25 -31t-50 0t-25 31v456v14.5t-1.5 11.5t-5 12t-9.5 7q-24 13 -46 -5l-184 -146zM305 1104v200h600v-200h-600z" />
160<glyph unicode="&#xe131;" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q162 0 299.5 -80t217.5 -218t80 -300t-80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM298 701l2 -201h300l-2 -194l402 294l-402 298v-197h-300z" />
161<glyph unicode="&#xe132;" d="M0 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t231.5 47.5q122 0 232.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-218 -217.5t-300 -80t-299.5 80t-217.5 217.5t-80 299.5zM200 600l402 -294l-2 194h300l2 201h-300v197z" />
162<glyph unicode="&#xe133;" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q162 0 299.5 -80t217.5 -218t80 -300t-80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM300 600h200v-300h200v300h200l-300 400z" />
163<glyph unicode="&#xe134;" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q162 0 299.5 -80t217.5 -218t80 -300t-80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM300 600l300 -400l300 400h-200v300h-200v-300h-200z" />
164<glyph unicode="&#xe135;" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q121 0 231.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM254 780q-8 -33 5.5 -92.5t7.5 -87.5q0 -9 17 -44t16 -60 q12 0 23 -5.5t23 -15t20 -13.5q24 -12 108 -42q22 -8 53 -31.5t59.5 -38.5t57.5 -11q8 -18 -15 -55t-20 -57q42 -71 87 -80q0 -6 -3 -15.5t-3.5 -14.5t4.5 -17q104 -3 221 112q30 29 47 47t34.5 49t20.5 62q-14 9 -37 9.5t-36 7.5q-14 7 -49 15t-52 19q-9 0 -39.5 -0.5 t-46.5 -1.5t-39 -6.5t-39 -16.5q-50 -35 -66 -12q-4 2 -3.5 25.5t0.5 25.5q-6 13 -26.5 17t-24.5 7q2 22 -2 41t-16.5 28t-38.5 -20q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q12 -19 32 -37.5t34 -27.5l14 -8q0 3 9.5 39.5t5.5 57.5 q-4 23 14.5 44.5t22.5 31.5q5 14 10 35t8.5 31t15.5 22.5t34 21.5q-6 18 10 37q8 0 23.5 -1.5t24.5 -1.5t20.5 4.5t20.5 15.5q-10 23 -30.5 42.5t-38 30t-49 26.5t-43.5 23q11 39 2 44q31 -13 58 -14.5t39 3.5l11 4q7 36 -16.5 53.5t-64.5 28.5t-56 23q-19 -3 -37 0 q-15 -12 -36.5 -21t-34.5 -12t-44 -8t-39 -6q-15 -3 -45.5 0.5t-45.5 -2.5q-21 -7 -52 -26.5t-34 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -90.5t-29.5 -79.5zM518 916q3 12 16 30t16 25q10 -10 18.5 -10t14 6t14.5 14.5t16 12.5q0 -24 17 -66.5t17 -43.5 q-9 2 -31 5t-36 5t-32 8t-30 14zM692 1003h1h-1z" />
165<glyph unicode="&#xe136;" d="M0 164.5q0 21.5 15 37.5l600 599q-33 101 6 201.5t135 154.5q164 92 306 -9l-259 -138l145 -232l251 126q13 -175 -151 -267q-123 -70 -253 -23l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5z" />
166<glyph unicode="&#xe137;" horiz-adv-x="1220" d="M0 196v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM0 596v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5zM0 996v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM600 596h500v100h-500v-100zM800 196h300v100h-300v-100zM900 996h200v100h-200v-100z" />
167<glyph unicode="&#xe138;" d="M100 1100v100h1000v-100h-1000zM150 1000h900l-350 -500v-300l-200 -200v500z" />
168<glyph unicode="&#xe139;" d="M0 200v200h1200v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM0 500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500z M500 1000h200v100h-200v-100z" />
169<glyph unicode="&#xe140;" d="M0 0v400l129 -129l200 200l142 -142l-200 -200l129 -129h-400zM0 800l129 129l200 -200l142 142l-200 200l129 129h-400v-400zM729 329l142 142l200 -200l129 129v-400h-400l129 129zM729 871l200 200l-129 129h400v-400l-129 129l-200 -200z" />
170<glyph unicode="&#xe141;" d="M0 596q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM182 596q0 -172 121.5 -293t292.5 -121t292.5 121t121.5 293q0 171 -121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM291 655 q0 23 15.5 38.5t38.5 15.5t39 -16t16 -38q0 -23 -16 -39t-39 -16q-22 0 -38 16t-16 39zM400 850q0 22 16 38.5t39 16.5q22 0 38 -16t16 -39t-16 -39t-38 -16q-23 0 -39 16.5t-16 38.5zM514 609q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 22 16 38.5t39 16.5 q22 0 38 -16t16 -39t-16 -39t-38 -16q-14 0 -29 10l-55 -145q17 -22 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5zM800 655q0 22 16 38t39 16t38.5 -15.5t15.5 -38.5t-16 -39t-38 -16q-23 0 -39 16t-16 39z" />
171<glyph unicode="&#xe142;" d="M-40 375q-13 -95 35 -173q35 -57 94 -89t129 -32q63 0 119 28q33 16 65 40.5t52.5 45.5t59.5 64q40 44 57 61l394 394q35 35 47 84t-3 96q-27 87 -117 104q-20 2 -29 2q-46 0 -78.5 -16.5t-67.5 -51.5l-389 -396l-7 -7l69 -67l377 373q20 22 39 38q23 23 50 23 q38 0 53 -36q16 -39 -20 -75l-547 -547q-52 -52 -125 -52q-55 0 -100 33t-54 96q-5 35 2.5 66t31.5 63t42 50t56 54q24 21 44 41l348 348q52 52 82.5 79.5t84 54t107.5 26.5q25 0 48 -4q95 -17 154 -94.5t51 -175.5q-7 -101 -98 -192l-252 -249l-253 -256l7 -7l69 -60 l517 511q67 67 95 157t11 183q-16 87 -67 154t-130 103q-69 33 -152 33q-107 0 -197 -55q-40 -24 -111 -95l-512 -512q-68 -68 -81 -163z" />
172<glyph unicode="&#xe143;" d="M80 784q0 131 98.5 229.5t230.5 98.5q143 0 241 -129q103 129 246 129q129 0 226 -98.5t97 -229.5q0 -46 -17.5 -91t-61 -99t-77 -89.5t-104.5 -105.5q-197 -191 -293 -322l-17 -23l-16 23q-43 58 -100 122.5t-92 99.5t-101 100q-71 70 -104.5 105.5t-77 89.5t-61 99 t-17.5 91zM250 784q0 -27 30.5 -70t61.5 -75.5t95 -94.5l22 -22q93 -90 190 -201q82 92 195 203l12 12q64 62 97.5 97t64.5 79t31 72q0 71 -48 119.5t-105 48.5q-74 0 -132 -83l-118 -171l-114 174q-51 80 -123 80q-60 0 -109.5 -49.5t-49.5 -118.5z" />
173<glyph unicode="&#xe144;" d="M57 353q0 -95 66 -159l141 -142q68 -66 159 -66q93 0 159 66l283 283q66 66 66 159t-66 159l-141 141q-8 9 -19 17l-105 -105l212 -212l-389 -389l-247 248l95 95l-18 18q-46 45 -75 101l-55 -55q-66 -66 -66 -159zM269 706q0 -93 66 -159l141 -141q7 -7 19 -17l105 105 l-212 212l389 389l247 -247l-95 -96l18 -17q47 -49 77 -100l29 29q35 35 62.5 88t27.5 96q0 93 -66 159l-141 141q-66 66 -159 66q-95 0 -159 -66l-283 -283q-66 -64 -66 -159z" />
174<glyph unicode="&#xe145;" d="M200 100v953q0 21 30 46t81 48t129 38t163 15t162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5zM300 300h600v700h-600v-700zM496 150q0 -43 30.5 -73.5t73.5 -30.5t73.5 30.5t30.5 73.5t-30.5 73.5t-73.5 30.5 t-73.5 -30.5t-30.5 -73.5z" />
175<glyph unicode="&#xe146;" d="M0 0l303 380l207 208l-210 212h300l267 279l-35 36q-15 14 -15 35t15 35q14 15 35 15t35 -15l283 -282q15 -15 15 -36t-15 -35q-14 -15 -35 -15t-35 15l-36 35l-279 -267v-300l-212 210l-208 -207z" />
176<glyph unicode="&#xe148;" d="M295 433h139q5 -77 48.5 -126.5t117.5 -64.5v335q-6 1 -15.5 4t-11.5 3q-46 14 -79 26.5t-72 36t-62.5 52t-40 72.5t-16.5 99q0 92 44 159.5t109 101t144 40.5v78h100v-79q38 -4 72.5 -13.5t75.5 -31.5t71 -53.5t51.5 -84t24.5 -118.5h-159q-8 72 -35 109.5t-101 50.5 v-307l64 -14q34 -7 64 -16.5t70 -31.5t67.5 -52t47.5 -80.5t20 -112.5q0 -139 -89 -224t-244 -96v-77h-100v78q-152 17 -237 104q-40 40 -52.5 93.5t-15.5 139.5zM466 889q0 -29 8 -51t16.5 -34t29.5 -22.5t31 -13.5t38 -10q7 -2 11 -3v274q-61 -8 -97.5 -37.5t-36.5 -102.5 zM700 237q170 18 170 151q0 64 -44 99.5t-126 60.5v-311z" />
177<glyph unicode="&#xe149;" d="M100 600v100h166q-24 49 -44 104q-10 26 -14.5 55.5t-3 72.5t25 90t68.5 87q97 88 263 88q129 0 230 -89t101 -208h-153q0 52 -34 89.5t-74 51.5t-76 14q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -28 16.5 -69.5t28 -62.5t41.5 -72h241v-100h-197q8 -50 -2.5 -115 t-31.5 -94q-41 -59 -99 -113q35 11 84 18t70 7q33 1 103 -16t103 -17q76 0 136 30l50 -147q-41 -25 -80.5 -36.5t-59 -13t-61.5 -1.5q-23 0 -128 33t-155 29q-39 -4 -82 -17t-66 -25l-24 -11l-55 145l16.5 11t15.5 10t13.5 9.5t14.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221z" />
178<glyph unicode="&#xe150;" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM602 900l298 300l298 -300h-198v-900h-200v900h-198z" />
179<glyph unicode="&#xe151;" d="M2 300h198v900h200v-900h198l-298 -300zM700 0v200h100v-100h200v-100h-300zM700 400v100h300v-200h-99v-100h-100v100h99v100h-200zM700 700v500h300v-500h-100v100h-100v-100h-100zM801 900h100v200h-100v-200z" />
180<glyph unicode="&#xe152;" d="M2 300h198v900h200v-900h198l-298 -300zM700 0v500h300v-500h-100v100h-100v-100h-100zM700 700v200h100v-100h200v-100h-300zM700 1100v100h300v-200h-99v-100h-100v100h99v100h-200zM801 200h100v200h-100v-200z" />
181<glyph unicode="&#xe153;" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM800 100v400h300v-500h-100v100h-200zM800 1100v100h200v-500h-100v400h-100zM901 200h100v200h-100v-200z" />
182<glyph unicode="&#xe154;" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM800 400v100h200v-500h-100v400h-100zM800 800v400h300v-500h-100v100h-200zM901 900h100v200h-100v-200z" />
183<glyph unicode="&#xe155;" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM700 100v200h500v-200h-500zM700 400v200h400v-200h-400zM700 700v200h300v-200h-300zM700 1000v200h200v-200h-200z" />
184<glyph unicode="&#xe156;" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM700 100v200h200v-200h-200zM700 400v200h300v-200h-300zM700 700v200h400v-200h-400zM700 1000v200h500v-200h-500z" />
185<glyph unicode="&#xe157;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h300q162 0 281 -118.5t119 -281.5v-300q0 -165 -118.5 -282.5t-281.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500z" />
186<glyph unicode="&#xe158;" d="M0 400v300q0 163 119 281.5t281 118.5h300q165 0 282.5 -117.5t117.5 -282.5v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-163 0 -281.5 117.5t-118.5 282.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM400 300l333 250l-333 250v-500z" />
187<glyph unicode="&#xe159;" d="M0 400v300q0 163 117.5 281.5t282.5 118.5h300q163 0 281.5 -119t118.5 -281v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM300 700l250 -333l250 333h-500z" />
188<glyph unicode="&#xe160;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h300q165 0 282.5 -117.5t117.5 -282.5v-300q0 -162 -118.5 -281t-281.5 -119h-300q-165 0 -282.5 118.5t-117.5 281.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM300 400h500l-250 333z" />
189<glyph unicode="&#xe161;" d="M0 400v300h300v200l400 -350l-400 -350v200h-300zM500 0v200h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-500v200h400q165 0 282.5 -117.5t117.5 -282.5v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-400z" />
190<glyph unicode="&#xe162;" d="M217 519q8 -19 31 -19h302q-155 -438 -160 -458q-5 -21 4 -32l9 -8h9q14 0 26 15q11 13 274.5 321.5t264.5 308.5q14 19 5 36q-8 17 -31 17l-301 -1q1 4 78 219.5t79 227.5q2 15 -5 27l-9 9h-9q-15 0 -25 -16q-4 -6 -98 -111.5t-228.5 -257t-209.5 -237.5q-16 -19 -6 -41 z" />
191<glyph unicode="&#xe163;" d="M0 400q0 -165 117.5 -282.5t282.5 -117.5h300q47 0 100 15v185h-500q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5h500v185q-14 4 -114 7.5t-193 5.5l-93 2q-165 0 -282.5 -117.5t-117.5 -282.5v-300zM600 400v300h300v200l400 -350l-400 -350v200h-300z " />
192<glyph unicode="&#xe164;" d="M0 400q0 -165 117.5 -282.5t282.5 -117.5h300q163 0 281.5 117.5t118.5 282.5v98l-78 73l-122 -123v-148q0 -41 -29.5 -70.5t-70.5 -29.5h-500q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5h156l118 122l-74 78h-100q-165 0 -282.5 -117.5t-117.5 -282.5 v-300zM496 709l353 342l-149 149h500v-500l-149 149l-342 -353z" />
193<glyph unicode="&#xe165;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM406 600 q0 80 57 137t137 57t137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137z" />
194<glyph unicode="&#xe166;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 800l445 -500l450 500h-295v400h-300v-400h-300zM900 150h100v50h-100v-50z" />
195<glyph unicode="&#xe167;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 700h300v-300h300v300h295l-445 500zM900 150h100v50h-100v-50z" />
196<glyph unicode="&#xe168;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 705l305 -305l596 596l-154 155l-442 -442l-150 151zM900 150h100v50h-100v-50z" />
197<glyph unicode="&#xe169;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 988l97 -98l212 213l-97 97zM200 400l697 1l3 699l-250 -239l-149 149l-212 -212l149 -149zM900 150h100v50h-100v-50z" />
198<glyph unicode="&#xe170;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM200 612l212 -212l98 97l-213 212zM300 1200l239 -250l-149 -149l212 -212l149 148l249 -237l-1 697zM900 150h100v50h-100v-50z" />
199<glyph unicode="&#xe171;" d="M23 415l1177 784v-1079l-475 272l-310 -393v416h-392zM494 210l672 938l-672 -712v-226z" />
200<glyph unicode="&#xe172;" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-850q0 -21 -15 -35.5t-35 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 1000h100v200h-100v-200z" />
201<glyph unicode="&#xe173;" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-218l-276 -275l-120 120l-126 -127h-378v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM581 306l123 123l120 -120l353 352l123 -123l-475 -476zM600 1000h100v200h-100v-200z" />
202<glyph unicode="&#xe174;" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-269l-103 -103l-170 170l-298 -298h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 1000h100v200h-100v-200zM700 133l170 170l-170 170l127 127l170 -170l170 170l127 -128l-170 -169l170 -170 l-127 -127l-170 170l-170 -170z" />
203<glyph unicode="&#xe175;" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-300h-400v-200h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 300l300 -300l300 300h-200v300h-200v-300h-200zM600 1000v200h100v-200h-100z" />
204<glyph unicode="&#xe176;" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-402l-200 200l-298 -298h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 300h200v-300h200v300h200l-300 300zM600 1000v200h100v-200h-100z" />
205<glyph unicode="&#xe177;" d="M0 250q0 -21 14.5 -35.5t35.5 -14.5h1100q21 0 35.5 14.5t14.5 35.5v550h-1200v-550zM0 900h1200v150q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-150zM100 300v200h400v-200h-400z" />
206<glyph unicode="&#xe178;" d="M0 400l300 298v-198h400v-200h-400v-198zM100 800v200h100v-200h-100zM300 800v200h100v-200h-100zM500 800v200h400v198l300 -298l-300 -298v198h-400zM800 300v200h100v-200h-100zM1000 300h100v200h-100v-200z" />
207<glyph unicode="&#xe179;" d="M100 700v400l50 100l50 -100v-300h100v300l50 100l50 -100v-300h100v300l50 100l50 -100v-400l-100 -203v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447zM800 597q0 -29 10.5 -55.5t25 -43t29 -28.5t25.5 -18l10 -5v-397q0 -21 14.5 -35.5 t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v1106q0 31 -18 40.5t-44 -7.5l-276 -116q-25 -17 -43.5 -51.5t-18.5 -65.5v-359z" />
208<glyph unicode="&#xe180;" d="M100 0h400v56q-75 0 -87.5 6t-12.5 44v394h500v-394q0 -38 -12.5 -44t-87.5 -6v-56h400v56q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v888q0 22 25 34.5t50 13.5l25 2v56h-400v-56q75 0 87.5 -6t12.5 -44v-394h-500v394q0 38 12.5 44t87.5 6v56h-400v-56q4 0 11 -0.5 t24 -3t30 -7t24 -15t11 -24.5v-888q0 -22 -25 -34.5t-50 -13.5l-25 -2v-56z" />
209<glyph unicode="&#xe181;" d="M0 300q0 -41 29.5 -70.5t70.5 -29.5h300q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-300q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM100 100h400l200 200h105l295 98v-298h-425l-100 -100h-375zM100 300v200h300v-200h-300zM100 600v200h300v-200h-300z M100 1000h400l200 -200v-98l295 98h105v200h-425l-100 100h-375zM700 402v163l400 133v-163z" />
210<glyph unicode="&#xe182;" d="M16.5 974.5q0.5 -21.5 16 -90t46.5 -140t104 -177.5t175 -208q103 -103 207.5 -176t180 -103.5t137 -47t92.5 -16.5l31 1l163 162q17 18 13.5 41t-22.5 37l-192 136q-19 14 -45 12t-42 -19l-118 -118q-142 101 -268 227t-227 268l118 118q17 17 20 41.5t-11 44.5 l-139 194q-14 19 -36.5 22t-40.5 -14l-162 -162q-1 -11 -0.5 -32.5z" />
211<glyph unicode="&#xe183;" d="M0 50v212q0 20 10.5 45.5t24.5 39.5l365 303v50q0 4 1 10.5t12 22.5t30 28.5t60 23t97 10.5t97 -10t60 -23.5t30 -27.5t12 -24l1 -10v-50l365 -303q14 -14 24.5 -39.5t10.5 -45.5v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-20 0 -35 14.5t-15 35.5zM0 712 q0 -21 14.5 -33.5t34.5 -8.5l202 33q20 4 34.5 21t14.5 38v146q141 24 300 24t300 -24v-146q0 -21 14.5 -38t34.5 -21l202 -33q20 -4 34.5 8.5t14.5 33.5v200q-6 8 -19 20.5t-63 45t-112 57t-171 45t-235 20.5q-92 0 -175 -10.5t-141.5 -27t-108.5 -36.5t-81.5 -40 t-53.5 -36.5t-31 -27.5l-9 -10v-200z" />
212<glyph unicode="&#xe184;" d="M100 0v100h1100v-100h-1100zM175 200h950l-125 150v250l100 100v400h-100v-200h-100v200h-200v-200h-100v200h-200v-200h-100v200h-100v-400l100 -100v-250z" />
213<glyph unicode="&#xe185;" d="M100 0h300v400q0 41 -29.5 70.5t-70.5 29.5h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-400zM500 0v1000q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-1000h-300zM900 0v700q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-700h-300z" />
214<glyph unicode="&#xe186;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v300h-200v100h200v100h-300v-300h200v-100h-200v-100zM600 300h200v100h100v300h-100v100h-200v-500 zM700 400v300h100v-300h-100z" />
215<glyph unicode="&#xe187;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h100v200h100v-200h100v500h-100v-200h-100v200h-100v-500zM600 300h200v100h100v300h-100v100h-200v-500 zM700 400v300h100v-300h-100z" />
216<glyph unicode="&#xe188;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v100h-200v300h200v100h-300v-500zM600 300h300v100h-200v300h200v100h-300v-500z" />
217<glyph unicode="&#xe189;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 550l300 -150v300zM600 400l300 150l-300 150v-300z" />
218<glyph unicode="&#xe190;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300v500h700v-500h-700zM300 400h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130v-300zM575 549 q0 -65 27 -107t68 -42h130v300h-130q-38 0 -66.5 -43t-28.5 -108z" />
219<glyph unicode="&#xe191;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v300h-200v100h200v100h-300v-300h200v-100h-200v-100zM601 300h100v100h-100v-100zM700 700h100 v-400h100v500h-200v-100z" />
220<glyph unicode="&#xe192;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v400h-200v100h-100v-500zM301 400v200h100v-200h-100zM601 300h100v100h-100v-100zM700 700h100 v-400h100v500h-200v-100z" />
221<glyph unicode="&#xe193;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 700v100h300v-300h-99v-100h-100v100h99v200h-200zM201 300v100h100v-100h-100zM601 300v100h100v-100h-100z M700 700v100h200v-500h-100v400h-100z" />
222<glyph unicode="&#xe194;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM400 500v200 l100 100h300v-100h-300v-200h300v-100h-300z" />
223<glyph unicode="&#xe195;" d="M0 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM182 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM400 400v400h300 l100 -100v-100h-100v100h-200v-100h200v-100h-200v-100h-100zM700 400v100h100v-100h-100z" />
224<glyph unicode="&#xe197;" d="M-14 494q0 -80 56.5 -137t135.5 -57h222v300h400v-300h128q120 0 205 86.5t85 207.5t-85 207t-205 86q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5zM300 200h200v300h200v-300h200 l-300 -300z" />
225<glyph unicode="&#xe198;" d="M-14 494q0 -80 56.5 -137t135.5 -57h8l414 414l403 -403q94 26 154.5 104.5t60.5 178.5q0 120 -85 206.5t-205 86.5q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5zM300 200l300 300 l300 -300h-200v-300h-200v300h-200z" />
226<glyph unicode="&#xe199;" d="M100 200h400v-155l-75 -45h350l-75 45v155h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170z" />
227<glyph unicode="&#xe200;" d="M121 700q0 -53 28.5 -97t75.5 -65q-4 -16 -4 -38q0 -74 52.5 -126.5t126.5 -52.5q56 0 100 30v-306l-75 -45h350l-75 45v306q46 -30 100 -30q74 0 126.5 52.5t52.5 126.5q0 24 -9 55q50 32 79.5 83t29.5 112q0 90 -61.5 155.5t-150.5 71.5q-26 89 -99.5 145.5 t-167.5 56.5q-116 0 -197.5 -81.5t-81.5 -197.5q0 -4 1 -11.5t1 -11.5q-14 2 -23 2q-74 0 -126.5 -52.5t-52.5 -126.5z" />
228</font>
229</defs></svg> \ No newline at end of file
diff --git a/Back/jinwei.me/mobile/fonts/glyphicons-halflings-regular.ttf b/Back/jinwei.me/mobile/fonts/glyphicons-halflings-regular.ttf
new file mode 100644
index 0000000..67fa00b
--- /dev/null
+++ b/Back/jinwei.me/mobile/fonts/glyphicons-halflings-regular.ttf
Binary files differ
diff --git a/Back/jinwei.me/mobile/fonts/glyphicons-halflings-regular.woff b/Back/jinwei.me/mobile/fonts/glyphicons-halflings-regular.woff
new file mode 100644
index 0000000..8c54182
--- /dev/null
+++ b/Back/jinwei.me/mobile/fonts/glyphicons-halflings-regular.woff
Binary files differ
diff --git a/Back/jinwei.me/mobile/index - backup.html b/Back/jinwei.me/mobile/index - backup.html
new file mode 100644
index 0000000..d659a7b
--- /dev/null
+++ b/Back/jinwei.me/mobile/index - backup.html
@@ -0,0 +1,173 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4 <meta charset="UTF-8" />
5 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
6 <title>Jinwei的小站</title>
7 <meta name="viewport" content="width=device-width, initial-scale=1.0">
8 <link href="favicon.ico" type="image/x-icon" rel=icon>
9 <link rel="stylesheet" type="text/css" href="css/demo.css" />
10 <link rel="stylesheet" type="text/css" href="css/style2.css" />
11 <link href='css/css.css' rel='stylesheet' type='text/css'>
12 <script type="text/javascript" src="js/modernizr.custom.79639.js"></script>
13 <script type="text/javascript">
14 function browserRedirect() {
15 var sUserAgent = navigator.userAgent.toLowerCase();
16 var bIsIpad = sUserAgent.match(/ipad/i) == "ipad";
17 var bIsIphoneOs = sUserAgent.match(/iphone os/i) == "iphone os";
18 var bIsMidp = sUserAgent.match(/midp/i) == "midp";
19 var bIsUc7 = sUserAgent.match(/rv:1.2.3.4/i) == "rv:1.2.3.4";
20 var bIsUc = sUserAgent.match(/ucweb/i) == "ucweb";
21 var bIsAndroid = sUserAgent.match(/android/i) == "android";
22 var bIsCE = sUserAgent.match(/windows ce/i) == "windows ce";
23 var bIsWM = sUserAgent.match(/windows mobile/i) == "windows mobile";
24 if ((bIsIpad || bIsIphoneOs || bIsMidp || bIsUc7 || bIsUc || bIsAndroid || bIsCE || bIsWM) ){
25 window.location.href="mobile/index.html";
26 }
27 }
28 browserRedirect(); </script>
29 <!--[if lte IE 8]>
30 <style>.main{display:none;} .support-note .note-ie{display:block;}</style>
31 <![endif]-->
32</head>
33<body>
34 <div class="container">
35 <header>
36 <h1>
37 <span>Jinwei的小站</span>
38 </h1>
39 <h2>一生放荡不羁只敲自己喜欢的代码</h2>
40 <h2>95后,大二了,爱搞搞图像处理编程,伪文青,宅,爱折腾,爱技术,爱有技术会设计的妹子</h2>
41 <div class="support-note">
42 <!-- let's check browser support with modernizr -->
43 <!--span class="no-cssanimations">CSS animations are not supported in your browser</span-->
44 <span class="no-csstransforms">都什么年代了还用这么渣的浏览器!不让看!</span>
45 <!--span class="no-csstransforms3d">CSS 3D transforms are not supported in your browser</span-->
46 <span class="no-csstransitions">都什么年代了还用这么渣的浏览器!不让看!</span>
47 <span class="note-ie">我和所有用IE的都绝交了你造吗?</span>
48 </div>
49</header>
50<section class="main">
51 <div id="sb-container" class="sb-container">
52 <div>
53 <span class="sb-icon icon-cog"></span>
54 <h4>
55 <span>City</span>
56 </h4>
57 </div>
58 <div>
59 <span class="sb-icon icon-flight"></span>
60 <h4>
61 <span>This</span>
62 </h4>
63 </div>
64 <div>
65 <span class="sb-icon icon-eye"></span>
66 <h4>
67 <span>With</span>
68 </h4>
69 </div>
70 <div>
71 <span class="sb-icon icon-install"></span>
72 <h4>
73 <span>Love</span>
74 </h4>
75 </div>
76 <div>
77 <span class="sb-icon icon-bag"></span>
78 <h4>
79 <span>In</span>
80 </h4>
81 </div>
82 <div>
83 <span class="sb-icon icon-globe"></span>
84 <h4>
85 <span>Fell</span>
86 </h4>
87 </div>
88 <div>
89 <span class="sb-icon icon-picture"></span>
90 <h4>
91 <span>I</span>
92 </h4>
93 </div>
94 <div>
95 <span class="sb-icon icon-video"></span>
96 <h4>
97 <span>Why</span>
98 </h4>
99 </div>
100 <div>
101 <span class="sb-icon icon-download"></span>
102 <h4>
103 <span>Reason</span>
104 </h4>
105 </div>
106 <div>
107 <span class="sb-icon icon-mobile"></span>
108 <h4>
109 <span>The</span>
110 </h4>
111 </div>
112 <div>
113 <span class="sb-icon icon-camera"></span>
114 <h4>
115 <span>Are</span>
116 </h4>
117 </div>
118 <div>
119 <h4>
120 <span>You</span>
121 </h4>
122 <span class="sb-toggle">Click to open/close</span>
123 <h5>
124 <span>
125 <a href="http://www.cnblogs.com/jinweiclarkchao/" target="_blank">My &hearts; blog</a>
126 </span>
127 </h5>
128 </div>
129 </div>
130 <!-- sb-container -->
131 <h5>
132 © 2014. All rights reserved. View on
133 <a href="https://github.com/JinweiClarkChao/jinweiclarkchao.github.com" target="_blank">Github</a>
134 </h5>
135</section>
136
137</div>
138
139<script type="text/javascript" src="js/jquery.min.js"></script>
140<script type="text/javascript" src="js/jquery.swatchbook.js"></script>
141<script type="text/javascript">
142 $(function() {
143 $( '#sb-container' ).swatchbook( {
144 // number of degrees that is between each item
145 angleInc : -10,
146 // amount in degrees for the opened item's next sibling
147 proximity : -45,
148 neighbor : -4,
149 // index of the element that when clicked, triggers the open/close function
150 // by default there is no such element
151 closeIdx : 11
152 } );
153 });
154 </script>
155<script>
156 (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
157 (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
158 m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
159 })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
160 ga('create', 'UA-46099659-1', 'jinwei.me');
161 ga('send', 'pageview');
162 </script>
163<script type="text/javascript">
164 var x=12;
165 window.addEventListener("mousewheel",function(event){
166 event.preventDefault();
167 if (event.wheelDelta >= 120&&x>0)
168 $("#sb-container div")[x-1].click();
169 else if (event.wheelDelta <= -120&&x<12)
170 $("#sb-container div")[x+1].click();
171 },false);
172 </script></body>
173</html>
diff --git a/Back/jinwei.me/mobile/index.html b/Back/jinwei.me/mobile/index.html
new file mode 100644
index 0000000..2e89a36
--- /dev/null
+++ b/Back/jinwei.me/mobile/index.html
@@ -0,0 +1,100 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4 <meta charset="utf-8">
5 <meta http-equiv="X-UA-Compatible" content="IE=edge">
6 <meta name="viewport" content="width=device-width, initial-scale=1">
7 <script src="js/less.js" type="text/javascript"></script>
8
9 <title>Jinwei的小站</title>
10
11 <!-- Bootstrap core CSS -->
12 <link href="css/bootstrap.min.css" rel="stylesheet">
13 <link rel="stylesheet/less" type="text/css" href="css/navbar.less"></head>
14
15<body>
16
17 <div class="container">
18
19 <!-- Static navbar -->
20 <div class="navbar navbar-default" role="navigation">
21 <div class="container-fluid">
22 <div class="navbar-header">
23 <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
24 <span class="sr-only">Toggle navigation</span>
25 <span class="icon-bar"></span>
26 <span class="icon-bar"></span>
27 <span class="icon-bar"></span>
28 </button>
29 <a class="navbar-brand" href="#">jinwei.me</a>
30 </div>
31 <div class="navbar-collapse collapse">
32 <ul class="nav navbar-nav">
33 <li class="active">
34 <a href="http://jinwei-me.lofter.com">Blog</a>
35 </li>
36 <li class="dropdown">
37 <a href="#" class="dropdown-toggle" data-toggle="dropdown">
38 About me <b class="caret"></b>
39 </a>
40 <ul class="dropdown-menu">
41 <li class="dropdown-header">Tags</li>
42 <li>
43 <a href="#">95后</a>
44 </li>
45 <li>
46 <a href="#">大一</a>
47 </li>
48 <li>
49 <a href="#">Go语言爱好者</a>
50 </li>
51 <li>
52 <a href="#">伪文青</a>
53 </li>
54 <li>
55 <a href="#">宅</a>
56 </li>
57 <li>
58 <a href="#">爱折腾</a>
59 </li>
60 <li>
61 <a href="#">爱技术</a>
62 </li>
63 <li>
64 <a href="#">爱有技术会设计的妹子</a>
65 </li>
66 </ul>
67 </li>
68 </ul>
69 <ul class="nav navbar-nav navbar-right">
70 <li>
71 <a href="https://github.com/JinweiClarkChao/jinweiclarkchao.github.com" target="_blank">View it on Github</a>
72 </li>
73 </ul>
74 </div>
75 <!--/.nav-collapse --> </div>
76 <!--/.container-fluid --> </div>
77
78 <!-- Main component for a primary marketing message or call to action -->
79 <div class="jumbotron">
80 <h1>Jinwei的小站</h1>
81 <p>如果你是Android用户,下载下面的App</p>
82 <p>
83 <a class="btn btn-lg btn-primary" href="http://jinwei-me.lofter.com/app" target= "_blank" role="button">Download App</a>
84 </p>
85 <p>如果你是iPhone, iPad, Windows Phone, Blackberry等用户......</p>
86 <p>
87 <a class="btn btn-lg btn-primary" href="#" role="button">Wait for me</a>
88 </p>
89 </div>
90
91 </div>
92 <!-- /container -->
93
94 <!-- Bootstrap core JavaScript
95 ================================================== -->
96 <!-- Placed at the end of the document so the pages load faster -->
97 <script src="js/jquery.min.js"></script>
98 <script src="js/bootstrap.min.js"></script>
99</body>
100</html> \ No newline at end of file
diff --git a/Back/jinwei.me/mobile/js/bootstrap.js b/Back/jinwei.me/mobile/js/bootstrap.js
new file mode 100644
index 0000000..1019e52
--- /dev/null
+++ b/Back/jinwei.me/mobile/js/bootstrap.js
@@ -0,0 +1,1988 @@
1/*!
2 * Bootstrap v3.1.1 (http://getbootstrap.com)
3 * Copyright 2011-2014 Twitter, Inc.
4 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5 */
6
7if (typeof jQuery === 'undefined') {
8 throw new Error('Bootstrap\'s JavaScript requires jQuery')
9}
10
11/* ========================================================================
12 * Bootstrap: transition.js v3.1.1
13 * http://getbootstrap.com/javascript/#transitions
14 * ========================================================================
15 * Copyright 2011-2014 Twitter, Inc.
16 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
17 * ======================================================================== */
18
19
20+ function($) {
21 'use strict';
22
23 // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
24 // ============================================================
25
26 function transitionEnd() {
27 var el = document.createElement('bootstrap')
28
29 var transEndEventNames = {
30 'WebkitTransition': 'webkitTransitionEnd',
31 'MozTransition': 'transitionend',
32 'OTransition': 'oTransitionEnd otransitionend',
33 'transition': 'transitionend'
34 }
35
36 for (var name in transEndEventNames) {
37 if (el.style[name] !== undefined) {
38 return {
39 end: transEndEventNames[name]
40 }
41 }
42 }
43
44 return false // explicit for ie8 ( ._.)
45 }
46
47 // http://blog.alexmaccaw.com/css-transitions
48 $.fn.emulateTransitionEnd = function(duration) {
49 var called = false,
50 $el = this
51 $(this).one($.support.transition.end, function() {
52 called = true
53 })
54 var callback = function() {
55 if (!called) $($el).trigger($.support.transition.end)
56 }
57 setTimeout(callback, duration)
58 return this
59 }
60
61 $(function() {
62 $.support.transition = transitionEnd()
63 })
64
65}(jQuery);
66
67/* ========================================================================
68 * Bootstrap: alert.js v3.1.1
69 * http://getbootstrap.com/javascript/#alerts
70 * ========================================================================
71 * Copyright 2011-2014 Twitter, Inc.
72 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
73 * ======================================================================== */
74
75
76+ function($) {
77 'use strict';
78
79 // ALERT CLASS DEFINITION
80 // ======================
81
82 var dismiss = '[data-dismiss="alert"]'
83 var Alert = function(el) {
84 $(el).on('click', dismiss, this.close)
85 }
86
87 Alert.prototype.close = function(e) {
88 var $this = $(this)
89 var selector = $this.attr('data-target')
90
91 if (!selector) {
92 selector = $this.attr('href')
93 selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
94 }
95
96 var $parent = $(selector)
97
98 if (e) e.preventDefault()
99
100 if (!$parent.length) {
101 $parent = $this.hasClass('alert') ? $this : $this.parent()
102 }
103
104 $parent.trigger(e = $.Event('close.bs.alert'))
105
106 if (e.isDefaultPrevented()) return
107
108 $parent.removeClass('in')
109
110 function removeElement() {
111 $parent.trigger('closed.bs.alert').remove()
112 }
113
114 $.support.transition && $parent.hasClass('fade') ?
115 $parent
116 .one($.support.transition.end, removeElement)
117 .emulateTransitionEnd(150) :
118 removeElement()
119 }
120
121
122 // ALERT PLUGIN DEFINITION
123 // =======================
124
125 var old = $.fn.alert
126
127 $.fn.alert = function(option) {
128 return this.each(function() {
129 var $this = $(this)
130 var data = $this.data('bs.alert')
131
132 if (!data) $this.data('bs.alert', (data = new Alert(this)))
133 if (typeof option == 'string') data[option].call($this)
134 })
135 }
136
137 $.fn.alert.Constructor = Alert
138
139
140 // ALERT NO CONFLICT
141 // =================
142
143 $.fn.alert.noConflict = function() {
144 $.fn.alert = old
145 return this
146 }
147
148
149 // ALERT DATA-API
150 // ==============
151
152 $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)
153
154}(jQuery);
155
156/* ========================================================================
157 * Bootstrap: button.js v3.1.1
158 * http://getbootstrap.com/javascript/#buttons
159 * ========================================================================
160 * Copyright 2011-2014 Twitter, Inc.
161 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
162 * ======================================================================== */
163
164
165+ function($) {
166 'use strict';
167
168 // BUTTON PUBLIC CLASS DEFINITION
169 // ==============================
170
171 var Button = function(element, options) {
172 this.$element = $(element)
173 this.options = $.extend({}, Button.DEFAULTS, options)
174 this.isLoading = false
175 }
176
177 Button.DEFAULTS = {
178 loadingText: 'loading...'
179 }
180
181 Button.prototype.setState = function(state) {
182 var d = 'disabled'
183 var $el = this.$element
184 var val = $el.is('input') ? 'val' : 'html'
185 var data = $el.data()
186
187 state = state + 'Text'
188
189 if (!data.resetText) $el.data('resetText', $el[val]())
190
191 $el[val](data[state] || this.options[state])
192
193 // push to event loop to allow forms to submit
194 setTimeout($.proxy(function() {
195 if (state == 'loadingText') {
196 this.isLoading = true
197 $el.addClass(d).attr(d, d)
198 } else if (this.isLoading) {
199 this.isLoading = false
200 $el.removeClass(d).removeAttr(d)
201 }
202 }, this), 0)
203 }
204
205 Button.prototype.toggle = function() {
206 var changed = true
207 var $parent = this.$element.closest('[data-toggle="buttons"]')
208
209 if ($parent.length) {
210 var $input = this.$element.find('input')
211 if ($input.prop('type') == 'radio') {
212 if ($input.prop('checked') && this.$element.hasClass('active')) changed = false
213 else $parent.find('.active').removeClass('active')
214 }
215 if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change')
216 }
217
218 if (changed) this.$element.toggleClass('active')
219 }
220
221
222 // BUTTON PLUGIN DEFINITION
223 // ========================
224
225 var old = $.fn.button
226
227 $.fn.button = function(option) {
228 return this.each(function() {
229 var $this = $(this)
230 var data = $this.data('bs.button')
231 var options = typeof option == 'object' && option
232
233 if (!data) $this.data('bs.button', (data = new Button(this, options)))
234
235 if (option == 'toggle') data.toggle()
236 else if (option) data.setState(option)
237 })
238 }
239
240 $.fn.button.Constructor = Button
241
242
243 // BUTTON NO CONFLICT
244 // ==================
245
246 $.fn.button.noConflict = function() {
247 $.fn.button = old
248 return this
249 }
250
251
252 // BUTTON DATA-API
253 // ===============
254
255 $(document).on('click.bs.button.data-api', '[data-toggle^=button]', function(e) {
256 var $btn = $(e.target)
257 if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
258 $btn.button('toggle')
259 e.preventDefault()
260 })
261
262}(jQuery);
263
264/* ========================================================================
265 * Bootstrap: carousel.js v3.1.1
266 * http://getbootstrap.com/javascript/#carousel
267 * ========================================================================
268 * Copyright 2011-2014 Twitter, Inc.
269 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
270 * ======================================================================== */
271
272
273+ function($) {
274 'use strict';
275
276 // CAROUSEL CLASS DEFINITION
277 // =========================
278
279 var Carousel = function(element, options) {
280 this.$element = $(element)
281 this.$indicators = this.$element.find('.carousel-indicators')
282 this.options = options
283 this.paused =
284 this.sliding =
285 this.interval =
286 this.$active =
287 this.$items = null
288
289 this.options.pause == 'hover' && this.$element
290 .on('mouseenter', $.proxy(this.pause, this))
291 .on('mouseleave', $.proxy(this.cycle, this))
292 }
293
294 Carousel.DEFAULTS = {
295 interval: 5000,
296 pause: 'hover',
297 wrap: true
298 }
299
300 Carousel.prototype.cycle = function(e) {
301 e || (this.paused = false)
302
303 this.interval && clearInterval(this.interval)
304
305 this.options.interval && !this.paused && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
306
307 return this
308 }
309
310 Carousel.prototype.getActiveIndex = function() {
311 this.$active = this.$element.find('.item.active')
312 this.$items = this.$active.parent().children()
313
314 return this.$items.index(this.$active)
315 }
316
317 Carousel.prototype.to = function(pos) {
318 var that = this
319 var activeIndex = this.getActiveIndex()
320
321 if (pos > (this.$items.length - 1) || pos < 0) return
322
323 if (this.sliding) return this.$element.one('slid.bs.carousel', function() {
324 that.to(pos)
325 })
326 if (activeIndex == pos) return this.pause().cycle()
327
328 return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))
329 }
330
331 Carousel.prototype.pause = function(e) {
332 e || (this.paused = true)
333
334 if (this.$element.find('.next, .prev').length && $.support.transition) {
335 this.$element.trigger($.support.transition.end)
336 this.cycle(true)
337 }
338
339 this.interval = clearInterval(this.interval)
340
341 return this
342 }
343
344 Carousel.prototype.next = function() {
345 if (this.sliding) return
346 return this.slide('next')
347 }
348
349 Carousel.prototype.prev = function() {
350 if (this.sliding) return
351 return this.slide('prev')
352 }
353
354 Carousel.prototype.slide = function(type, next) {
355 var $active = this.$element.find('.item.active')
356 var $next = next || $active[type]()
357 var isCycling = this.interval
358 var direction = type == 'next' ? 'left' : 'right'
359 var fallback = type == 'next' ? 'first' : 'last'
360 var that = this
361
362 if (!$next.length) {
363 if (!this.options.wrap) return
364 $next = this.$element.find('.item')[fallback]()
365 }
366
367 if ($next.hasClass('active')) return this.sliding = false
368
369 var e = $.Event('slide.bs.carousel', {
370 relatedTarget: $next[0],
371 direction: direction
372 })
373 this.$element.trigger(e)
374 if (e.isDefaultPrevented()) return
375
376 this.sliding = true
377
378 isCycling && this.pause()
379
380 if (this.$indicators.length) {
381 this.$indicators.find('.active').removeClass('active')
382 this.$element.one('slid.bs.carousel', function() {
383 var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()])
384 $nextIndicator && $nextIndicator.addClass('active')
385 })
386 }
387
388 if ($.support.transition && this.$element.hasClass('slide')) {
389 $next.addClass(type)
390 $next[0].offsetWidth // force reflow
391 $active.addClass(direction)
392 $next.addClass(direction)
393 $active
394 .one($.support.transition.end, function() {
395 $next.removeClass([type, direction].join(' ')).addClass('active')
396 $active.removeClass(['active', direction].join(' '))
397 that.sliding = false
398 setTimeout(function() {
399 that.$element.trigger('slid.bs.carousel')
400 }, 0)
401 })
402 .emulateTransitionEnd($active.css('transition-duration').slice(0, -1) * 1000)
403 } else {
404 $active.removeClass('active')
405 $next.addClass('active')
406 this.sliding = false
407 this.$element.trigger('slid.bs.carousel')
408 }
409
410 isCycling && this.cycle()
411
412 return this
413 }
414
415
416 // CAROUSEL PLUGIN DEFINITION
417 // ==========================
418
419 var old = $.fn.carousel
420
421 $.fn.carousel = function(option) {
422 return this.each(function() {
423 var $this = $(this)
424 var data = $this.data('bs.carousel')
425 var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
426 var action = typeof option == 'string' ? option : options.slide
427
428 if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
429 if (typeof option == 'number') data.to(option)
430 else if (action) data[action]()
431 else if (options.interval) data.pause().cycle()
432 })
433 }
434
435 $.fn.carousel.Constructor = Carousel
436
437
438 // CAROUSEL NO CONFLICT
439 // ====================
440
441 $.fn.carousel.noConflict = function() {
442 $.fn.carousel = old
443 return this
444 }
445
446
447 // CAROUSEL DATA-API
448 // =================
449
450 $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function(e) {
451 var $this = $(this),
452 href
453 var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
454 var options = $.extend({}, $target.data(), $this.data())
455 var slideIndex = $this.attr('data-slide-to')
456 if (slideIndex) options.interval = false
457
458 $target.carousel(options)
459
460 if (slideIndex = $this.attr('data-slide-to')) {
461 $target.data('bs.carousel').to(slideIndex)
462 }
463
464 e.preventDefault()
465 })
466
467 $(window).on('load', function() {
468 $('[data-ride="carousel"]').each(function() {
469 var $carousel = $(this)
470 $carousel.carousel($carousel.data())
471 })
472 })
473
474}(jQuery);
475
476/* ========================================================================
477 * Bootstrap: collapse.js v3.1.1
478 * http://getbootstrap.com/javascript/#collapse
479 * ========================================================================
480 * Copyright 2011-2014 Twitter, Inc.
481 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
482 * ======================================================================== */
483
484
485+ function($) {
486 'use strict';
487
488 // COLLAPSE PUBLIC CLASS DEFINITION
489 // ================================
490
491 var Collapse = function(element, options) {
492 this.$element = $(element)
493 this.options = $.extend({}, Collapse.DEFAULTS, options)
494 this.transitioning = null
495
496 if (this.options.parent) this.$parent = $(this.options.parent)
497 if (this.options.toggle) this.toggle()
498 }
499
500 Collapse.DEFAULTS = {
501 toggle: true
502 }
503
504 Collapse.prototype.dimension = function() {
505 var hasWidth = this.$element.hasClass('width')
506 return hasWidth ? 'width' : 'height'
507 }
508
509 Collapse.prototype.show = function() {
510 if (this.transitioning || this.$element.hasClass('in')) return
511
512 var startEvent = $.Event('show.bs.collapse')
513 this.$element.trigger(startEvent)
514 if (startEvent.isDefaultPrevented()) return
515
516 var actives = this.$parent && this.$parent.find('> .panel > .in')
517
518 if (actives && actives.length) {
519 var hasData = actives.data('bs.collapse')
520 if (hasData && hasData.transitioning) return
521 actives.collapse('hide')
522 hasData || actives.data('bs.collapse', null)
523 }
524
525 var dimension = this.dimension()
526
527 this.$element
528 .removeClass('collapse')
529 .addClass('collapsing')[dimension](0)
530
531 this.transitioning = 1
532
533 var complete = function() {
534 this.$element
535 .removeClass('collapsing')
536 .addClass('collapse in')[dimension]('auto')
537 this.transitioning = 0
538 this.$element.trigger('shown.bs.collapse')
539 }
540
541 if (!$.support.transition) return complete.call(this)
542
543 var scrollSize = $.camelCase(['scroll', dimension].join('-'))
544
545 this.$element
546 .one($.support.transition.end, $.proxy(complete, this))
547 .emulateTransitionEnd(350)[dimension](this.$element[0][scrollSize])
548 }
549
550 Collapse.prototype.hide = function() {
551 if (this.transitioning || !this.$element.hasClass('in')) return
552
553 var startEvent = $.Event('hide.bs.collapse')
554 this.$element.trigger(startEvent)
555 if (startEvent.isDefaultPrevented()) return
556
557 var dimension = this.dimension()
558
559 this.$element[dimension](this.$element[dimension]())[0].offsetHeight
560
561 this.$element
562 .addClass('collapsing')
563 .removeClass('collapse')
564 .removeClass('in')
565
566 this.transitioning = 1
567
568 var complete = function() {
569 this.transitioning = 0
570 this.$element
571 .trigger('hidden.bs.collapse')
572 .removeClass('collapsing')
573 .addClass('collapse')
574 }
575
576 if (!$.support.transition) return complete.call(this)
577
578 this.$element[dimension](0)
579 .one($.support.transition.end, $.proxy(complete, this))
580 .emulateTransitionEnd(350)
581 }
582
583 Collapse.prototype.toggle = function() {
584 this[this.$element.hasClass('in') ? 'hide' : 'show']()
585 }
586
587
588 // COLLAPSE PLUGIN DEFINITION
589 // ==========================
590
591 var old = $.fn.collapse
592
593 $.fn.collapse = function(option) {
594 return this.each(function() {
595 var $this = $(this)
596 var data = $this.data('bs.collapse')
597 var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
598
599 if (!data && options.toggle && option == 'show') option = !option
600 if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
601 if (typeof option == 'string') data[option]()
602 })
603 }
604
605 $.fn.collapse.Constructor = Collapse
606
607
608 // COLLAPSE NO CONFLICT
609 // ====================
610
611 $.fn.collapse.noConflict = function() {
612 $.fn.collapse = old
613 return this
614 }
615
616
617 // COLLAPSE DATA-API
618 // =================
619
620 $(document).on('click.bs.collapse.data-api', '[data-toggle=collapse]', function(e) {
621 var $this = $(this),
622 href
623 var target = $this.attr('data-target') || e.preventDefault() || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
624 var $target = $(target)
625 var data = $target.data('bs.collapse')
626 var option = data ? 'toggle' : $this.data()
627 var parent = $this.attr('data-parent')
628 var $parent = parent && $(parent)
629
630 if (!data || !data.transitioning) {
631 if ($parent) $parent.find('[data-toggle=collapse][data-parent="' + parent + '"]').not($this).addClass('collapsed')
632 $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed')
633 }
634
635 $target.collapse(option)
636 })
637
638}(jQuery);
639
640/* ========================================================================
641 * Bootstrap: dropdown.js v3.1.1
642 * http://getbootstrap.com/javascript/#dropdowns
643 * ========================================================================
644 * Copyright 2011-2014 Twitter, Inc.
645 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
646 * ======================================================================== */
647
648
649+ function($) {
650 'use strict';
651
652 // DROPDOWN CLASS DEFINITION
653 // =========================
654
655 var backdrop = '.dropdown-backdrop'
656 var toggle = '[data-toggle=dropdown]'
657 var Dropdown = function(element) {
658 $(element).on('click.bs.dropdown', this.toggle)
659 }
660
661 Dropdown.prototype.toggle = function(e) {
662 var $this = $(this)
663
664 if ($this.is('.disabled, :disabled')) return
665
666 var $parent = getParent($this)
667 var isActive = $parent.hasClass('open')
668
669 clearMenus()
670
671 if (!isActive) {
672 if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
673 // if mobile we use a backdrop because click events don't delegate
674 $('<div class="dropdown-backdrop"/>').insertAfter($(this)).on('click', clearMenus)
675 }
676
677 var relatedTarget = {
678 relatedTarget: this
679 }
680 $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))
681
682 if (e.isDefaultPrevented()) return
683
684 $parent
685 .toggleClass('open')
686 .trigger('shown.bs.dropdown', relatedTarget)
687
688 $this.focus()
689 }
690
691 return false
692 }
693
694 Dropdown.prototype.keydown = function(e) {
695 if (!/(38|40|27)/.test(e.keyCode)) return
696
697 var $this = $(this)
698
699 e.preventDefault()
700 e.stopPropagation()
701
702 if ($this.is('.disabled, :disabled')) return
703
704 var $parent = getParent($this)
705 var isActive = $parent.hasClass('open')
706
707 if (!isActive || (isActive && e.keyCode == 27)) {
708 if (e.which == 27) $parent.find(toggle).focus()
709 return $this.click()
710 }
711
712 var desc = ' li:not(.divider):visible a'
713 var $items = $parent.find('[role=menu]' + desc + ', [role=listbox]' + desc)
714
715 if (!$items.length) return
716
717 var index = $items.index($items.filter(':focus'))
718
719 if (e.keyCode == 38 && index > 0) index-- // up
720 if (e.keyCode == 40 && index < $items.length - 1) index++ // down
721 if (!~index) index = 0
722
723 $items.eq(index).focus()
724 }
725
726 function clearMenus(e) {
727 $(backdrop).remove()
728 $(toggle).each(function() {
729 var $parent = getParent($(this))
730 var relatedTarget = {
731 relatedTarget: this
732 }
733 if (!$parent.hasClass('open')) return
734 $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
735 if (e.isDefaultPrevented()) return
736 $parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget)
737 })
738 }
739
740 function getParent($this) {
741 var selector = $this.attr('data-target')
742
743 if (!selector) {
744 selector = $this.attr('href')
745 selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
746 }
747
748 var $parent = selector && $(selector)
749
750 return $parent && $parent.length ? $parent : $this.parent()
751 }
752
753
754 // DROPDOWN PLUGIN DEFINITION
755 // ==========================
756
757 var old = $.fn.dropdown
758
759 $.fn.dropdown = function(option) {
760 return this.each(function() {
761 var $this = $(this)
762 var data = $this.data('bs.dropdown')
763
764 if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))
765 if (typeof option == 'string') data[option].call($this)
766 })
767 }
768
769 $.fn.dropdown.Constructor = Dropdown
770
771
772 // DROPDOWN NO CONFLICT
773 // ====================
774
775 $.fn.dropdown.noConflict = function() {
776 $.fn.dropdown = old
777 return this
778 }
779
780
781 // APPLY TO STANDARD DROPDOWN ELEMENTS
782 // ===================================
783
784 $(document)
785 .on('click.bs.dropdown.data-api', clearMenus)
786 .on('click.bs.dropdown.data-api', '.dropdown form', function(e) {
787 e.stopPropagation()
788 })
789 .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
790 .on('keydown.bs.dropdown.data-api', toggle + ', [role=menu], [role=listbox]', Dropdown.prototype.keydown)
791
792}(jQuery);
793
794/* ========================================================================
795 * Bootstrap: modal.js v3.1.1
796 * http://getbootstrap.com/javascript/#modals
797 * ========================================================================
798 * Copyright 2011-2014 Twitter, Inc.
799 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
800 * ======================================================================== */
801
802
803+ function($) {
804 'use strict';
805
806 // MODAL CLASS DEFINITION
807 // ======================
808
809 var Modal = function(element, options) {
810 this.options = options
811 this.$element = $(element)
812 this.$backdrop =
813 this.isShown = null
814
815 if (this.options.remote) {
816 this.$element
817 .find('.modal-content')
818 .load(this.options.remote, $.proxy(function() {
819 this.$element.trigger('loaded.bs.modal')
820 }, this))
821 }
822 }
823
824 Modal.DEFAULTS = {
825 backdrop: true,
826 keyboard: true,
827 show: true
828 }
829
830 Modal.prototype.toggle = function(_relatedTarget) {
831 return this[!this.isShown ? 'show' : 'hide'](_relatedTarget)
832 }
833
834 Modal.prototype.show = function(_relatedTarget) {
835 var that = this
836 var e = $.Event('show.bs.modal', {
837 relatedTarget: _relatedTarget
838 })
839
840 this.$element.trigger(e)
841
842 if (this.isShown || e.isDefaultPrevented()) return
843
844 this.isShown = true
845
846 this.escape()
847
848 this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
849
850 this.backdrop(function() {
851 var transition = $.support.transition && that.$element.hasClass('fade')
852
853 if (!that.$element.parent().length) {
854 that.$element.appendTo(document.body) // don't move modals dom position
855 }
856
857 that.$element
858 .show()
859 .scrollTop(0)
860
861 if (transition) {
862 that.$element[0].offsetWidth // force reflow
863 }
864
865 that.$element
866 .addClass('in')
867 .attr('aria-hidden', false)
868
869 that.enforceFocus()
870
871 var e = $.Event('shown.bs.modal', {
872 relatedTarget: _relatedTarget
873 })
874
875 transition ?
876 that.$element.find('.modal-dialog') // wait for modal to slide in
877 .one($.support.transition.end, function() {
878 that.$element.focus().trigger(e)
879 })
880 .emulateTransitionEnd(300) :
881 that.$element.focus().trigger(e)
882 })
883 }
884
885 Modal.prototype.hide = function(e) {
886 if (e) e.preventDefault()
887
888 e = $.Event('hide.bs.modal')
889
890 this.$element.trigger(e)
891
892 if (!this.isShown || e.isDefaultPrevented()) return
893
894 this.isShown = false
895
896 this.escape()
897
898 $(document).off('focusin.bs.modal')
899
900 this.$element
901 .removeClass('in')
902 .attr('aria-hidden', true)
903 .off('click.dismiss.bs.modal')
904
905 $.support.transition && this.$element.hasClass('fade') ?
906 this.$element
907 .one($.support.transition.end, $.proxy(this.hideModal, this))
908 .emulateTransitionEnd(300) :
909 this.hideModal()
910 }
911
912 Modal.prototype.enforceFocus = function() {
913 $(document)
914 .off('focusin.bs.modal') // guard against infinite focus loop
915 .on('focusin.bs.modal', $.proxy(function(e) {
916 if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {
917 this.$element.focus()
918 }
919 }, this))
920 }
921
922 Modal.prototype.escape = function() {
923 if (this.isShown && this.options.keyboard) {
924 this.$element.on('keyup.dismiss.bs.modal', $.proxy(function(e) {
925 e.which == 27 && this.hide()
926 }, this))
927 } else if (!this.isShown) {
928 this.$element.off('keyup.dismiss.bs.modal')
929 }
930 }
931
932 Modal.prototype.hideModal = function() {
933 var that = this
934 this.$element.hide()
935 this.backdrop(function() {
936 that.removeBackdrop()
937 that.$element.trigger('hidden.bs.modal')
938 })
939 }
940
941 Modal.prototype.removeBackdrop = function() {
942 this.$backdrop && this.$backdrop.remove()
943 this.$backdrop = null
944 }
945
946 Modal.prototype.backdrop = function(callback) {
947 var animate = this.$element.hasClass('fade') ? 'fade' : ''
948
949 if (this.isShown && this.options.backdrop) {
950 var doAnimate = $.support.transition && animate
951
952 this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
953 .appendTo(document.body)
954
955 this.$element.on('click.dismiss.bs.modal', $.proxy(function(e) {
956 if (e.target !== e.currentTarget) return
957 this.options.backdrop == 'static' ? this.$element[0].focus.call(this.$element[0]) : this.hide.call(this)
958 }, this))
959
960 if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
961
962 this.$backdrop.addClass('in')
963
964 if (!callback) return
965
966 doAnimate ?
967 this.$backdrop
968 .one($.support.transition.end, callback)
969 .emulateTransitionEnd(150) :
970 callback()
971
972 } else if (!this.isShown && this.$backdrop) {
973 this.$backdrop.removeClass('in')
974
975 $.support.transition && this.$element.hasClass('fade') ?
976 this.$backdrop
977 .one($.support.transition.end, callback)
978 .emulateTransitionEnd(150) :
979 callback()
980
981 } else if (callback) {
982 callback()
983 }
984 }
985
986
987 // MODAL PLUGIN DEFINITION
988 // =======================
989
990 var old = $.fn.modal
991
992 $.fn.modal = function(option, _relatedTarget) {
993 return this.each(function() {
994 var $this = $(this)
995 var data = $this.data('bs.modal')
996 var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
997
998 if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
999 if (typeof option == 'string') data[option](_relatedTarget)
1000 else if (options.show) data.show(_relatedTarget)
1001 })
1002 }
1003
1004 $.fn.modal.Constructor = Modal
1005
1006
1007 // MODAL NO CONFLICT
1008 // =================
1009
1010 $.fn.modal.noConflict = function() {
1011 $.fn.modal = old
1012 return this
1013 }
1014
1015
1016 // MODAL DATA-API
1017 // ==============
1018
1019 $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function(e) {
1020 var $this = $(this)
1021 var href = $this.attr('href')
1022 var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7
1023 var option = $target.data('bs.modal') ? 'toggle' : $.extend({
1024 remote: !/#/.test(href) && href
1025 }, $target.data(), $this.data())
1026
1027 if ($this.is('a')) e.preventDefault()
1028
1029 $target
1030 .modal(option, this)
1031 .one('hide', function() {
1032 $this.is(':visible') && $this.focus()
1033 })
1034 })
1035
1036 $(document)
1037 .on('show.bs.modal', '.modal', function() {
1038 $(document.body).addClass('modal-open')
1039 })
1040 .on('hidden.bs.modal', '.modal', function() {
1041 $(document.body).removeClass('modal-open')
1042 })
1043
1044}(jQuery);
1045
1046/* ========================================================================
1047 * Bootstrap: tooltip.js v3.1.1
1048 * http://getbootstrap.com/javascript/#tooltip
1049 * Inspired by the original jQuery.tipsy by Jason Frame
1050 * ========================================================================
1051 * Copyright 2011-2014 Twitter, Inc.
1052 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
1053 * ======================================================================== */
1054
1055
1056+ function($) {
1057 'use strict';
1058
1059 // TOOLTIP PUBLIC CLASS DEFINITION
1060 // ===============================
1061
1062 var Tooltip = function(element, options) {
1063 this.type =
1064 this.options =
1065 this.enabled =
1066 this.timeout =
1067 this.hoverState =
1068 this.$element = null
1069
1070 this.init('tooltip', element, options)
1071 }
1072
1073 Tooltip.DEFAULTS = {
1074 animation: true,
1075 placement: 'top',
1076 selector: false,
1077 template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
1078 trigger: 'hover focus',
1079 title: '',
1080 delay: 0,
1081 html: false,
1082 container: false
1083 }
1084
1085 Tooltip.prototype.init = function(type, element, options) {
1086 this.enabled = true
1087 this.type = type
1088 this.$element = $(element)
1089 this.options = this.getOptions(options)
1090
1091 var triggers = this.options.trigger.split(' ')
1092
1093 for (var i = triggers.length; i--;) {
1094 var trigger = triggers[i]
1095
1096 if (trigger == 'click') {
1097 this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
1098 } else if (trigger != 'manual') {
1099 var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin'
1100 var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'
1101
1102 this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
1103 this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
1104 }
1105 }
1106
1107 this.options.selector ?
1108 (this._options = $.extend({}, this.options, {
1109 trigger: 'manual',
1110 selector: ''
1111 })) :
1112 this.fixTitle()
1113 }
1114
1115 Tooltip.prototype.getDefaults = function() {
1116 return Tooltip.DEFAULTS
1117 }
1118
1119 Tooltip.prototype.getOptions = function(options) {
1120 options = $.extend({}, this.getDefaults(), this.$element.data(), options)
1121
1122 if (options.delay && typeof options.delay == 'number') {
1123 options.delay = {
1124 show: options.delay,
1125 hide: options.delay
1126 }
1127 }
1128
1129 return options
1130 }
1131
1132 Tooltip.prototype.getDelegateOptions = function() {
1133 var options = {}
1134 var defaults = this.getDefaults()
1135
1136 this._options && $.each(this._options, function(key, value) {
1137 if (defaults[key] != value) options[key] = value
1138 })
1139
1140 return options
1141 }
1142
1143 Tooltip.prototype.enter = function(obj) {
1144 var self = obj instanceof this.constructor ?
1145 obj : $(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type)
1146
1147 clearTimeout(self.timeout)
1148
1149 self.hoverState = 'in'
1150
1151 if (!self.options.delay || !self.options.delay.show) return self.show()
1152
1153 self.timeout = setTimeout(function() {
1154 if (self.hoverState == 'in') self.show()
1155 }, self.options.delay.show)
1156 }
1157
1158 Tooltip.prototype.leave = function(obj) {
1159 var self = obj instanceof this.constructor ?
1160 obj : $(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type)
1161
1162 clearTimeout(self.timeout)
1163
1164 self.hoverState = 'out'
1165
1166 if (!self.options.delay || !self.options.delay.hide) return self.hide()
1167
1168 self.timeout = setTimeout(function() {
1169 if (self.hoverState == 'out') self.hide()
1170 }, self.options.delay.hide)
1171 }
1172
1173 Tooltip.prototype.show = function() {
1174 var e = $.Event('show.bs.' + this.type)
1175
1176 if (this.hasContent() && this.enabled) {
1177 this.$element.trigger(e)
1178
1179 if (e.isDefaultPrevented()) return
1180 var that = this;
1181
1182 var $tip = this.tip()
1183
1184 this.setContent()
1185
1186 if (this.options.animation) $tip.addClass('fade')
1187
1188 var placement = typeof this.options.placement == 'function' ?
1189 this.options.placement.call(this, $tip[0], this.$element[0]) :
1190 this.options.placement
1191
1192 var autoToken = /\s?auto?\s?/i
1193 var autoPlace = autoToken.test(placement)
1194 if (autoPlace) placement = placement.replace(autoToken, '') || 'top'
1195
1196 $tip
1197 .detach()
1198 .css({
1199 top: 0,
1200 left: 0,
1201 display: 'block'
1202 })
1203 .addClass(placement)
1204
1205 this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
1206
1207 var pos = this.getPosition()
1208 var actualWidth = $tip[0].offsetWidth
1209 var actualHeight = $tip[0].offsetHeight
1210
1211 if (autoPlace) {
1212 var $parent = this.$element.parent()
1213
1214 var orgPlacement = placement
1215 var docScroll = document.documentElement.scrollTop || document.body.scrollTop
1216 var parentWidth = this.options.container == 'body' ? window.innerWidth : $parent.outerWidth()
1217 var parentHeight = this.options.container == 'body' ? window.innerHeight : $parent.outerHeight()
1218 var parentLeft = this.options.container == 'body' ? 0 : $parent.offset().left
1219
1220 placement = placement == 'bottom' && pos.top + pos.height + actualHeight - docScroll > parentHeight ? 'top' :
1221 placement == 'top' && pos.top - docScroll - actualHeight < 0 ? 'bottom' :
1222 placement == 'right' && pos.right + actualWidth > parentWidth ? 'left' :
1223 placement == 'left' && pos.left - actualWidth < parentLeft ? 'right' :
1224 placement
1225
1226 $tip
1227 .removeClass(orgPlacement)
1228 .addClass(placement)
1229 }
1230
1231 var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)
1232
1233 this.applyPlacement(calculatedOffset, placement)
1234 this.hoverState = null
1235
1236 var complete = function() {
1237 that.$element.trigger('shown.bs.' + that.type)
1238 }
1239
1240 $.support.transition && this.$tip.hasClass('fade') ?
1241 $tip
1242 .one($.support.transition.end, complete)
1243 .emulateTransitionEnd(150) :
1244 complete()
1245 }
1246 }
1247
1248 Tooltip.prototype.applyPlacement = function(offset, placement) {
1249 var replace
1250 var $tip = this.tip()
1251 var width = $tip[0].offsetWidth
1252 var height = $tip[0].offsetHeight
1253
1254 // manually read margins because getBoundingClientRect includes difference
1255 var marginTop = parseInt($tip.css('margin-top'), 10)
1256 var marginLeft = parseInt($tip.css('margin-left'), 10)
1257
1258 // we must check for NaN for ie 8/9
1259 if (isNaN(marginTop)) marginTop = 0
1260 if (isNaN(marginLeft)) marginLeft = 0
1261
1262 offset.top = offset.top + marginTop
1263 offset.left = offset.left + marginLeft
1264
1265 // $.fn.offset doesn't round pixel values
1266 // so we use setOffset directly with our own function B-0
1267 $.offset.setOffset($tip[0], $.extend({
1268 using: function(props) {
1269 $tip.css({
1270 top: Math.round(props.top),
1271 left: Math.round(props.left)
1272 })
1273 }
1274 }, offset), 0)
1275
1276 $tip.addClass('in')
1277
1278 // check to see if placing tip in new offset caused the tip to resize itself
1279 var actualWidth = $tip[0].offsetWidth
1280 var actualHeight = $tip[0].offsetHeight
1281
1282 if (placement == 'top' && actualHeight != height) {
1283 replace = true
1284 offset.top = offset.top + height - actualHeight
1285 }
1286
1287 if (/bottom|top/.test(placement)) {
1288 var delta = 0
1289
1290 if (offset.left < 0) {
1291 delta = offset.left * -2
1292 offset.left = 0
1293
1294 $tip.offset(offset)
1295
1296 actualWidth = $tip[0].offsetWidth
1297 actualHeight = $tip[0].offsetHeight
1298 }
1299
1300 this.replaceArrow(delta - width + actualWidth, actualWidth, 'left')
1301 } else {
1302 this.replaceArrow(actualHeight - height, actualHeight, 'top')
1303 }
1304
1305 if (replace) $tip.offset(offset)
1306 }
1307
1308 Tooltip.prototype.replaceArrow = function(delta, dimension, position) {
1309 this.arrow().css(position, delta ? (50 * (1 - delta / dimension) + '%') : '')
1310 }
1311
1312 Tooltip.prototype.setContent = function() {
1313 var $tip = this.tip()
1314 var title = this.getTitle()
1315
1316 $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
1317 $tip.removeClass('fade in top bottom left right')
1318 }
1319
1320 Tooltip.prototype.hide = function() {
1321 var that = this
1322 var $tip = this.tip()
1323 var e = $.Event('hide.bs.' + this.type)
1324
1325 function complete() {
1326 if (that.hoverState != 'in') $tip.detach()
1327 that.$element.trigger('hidden.bs.' + that.type)
1328 }
1329
1330 this.$element.trigger(e)
1331
1332 if (e.isDefaultPrevented()) return
1333
1334 $tip.removeClass('in')
1335
1336 $.support.transition && this.$tip.hasClass('fade') ?
1337 $tip
1338 .one($.support.transition.end, complete)
1339 .emulateTransitionEnd(150) :
1340 complete()
1341
1342 this.hoverState = null
1343
1344 return this
1345 }
1346
1347 Tooltip.prototype.fixTitle = function() {
1348 var $e = this.$element
1349 if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
1350 $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
1351 }
1352 }
1353
1354 Tooltip.prototype.hasContent = function() {
1355 return this.getTitle()
1356 }
1357
1358 Tooltip.prototype.getPosition = function() {
1359 var el = this.$element[0]
1360 return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : {
1361 width: el.offsetWidth,
1362 height: el.offsetHeight
1363 }, this.$element.offset())
1364 }
1365
1366 Tooltip.prototype.getCalculatedOffset = function(placement, pos, actualWidth, actualHeight) {
1367 return placement == 'bottom' ? {
1368 top: pos.top + pos.height,
1369 left: pos.left + pos.width / 2 - actualWidth / 2
1370 } :
1371 placement == 'top' ? {
1372 top: pos.top - actualHeight,
1373 left: pos.left + pos.width / 2 - actualWidth / 2
1374 } :
1375 placement == 'left' ? {
1376 top: pos.top + pos.height / 2 - actualHeight / 2,
1377 left: pos.left - actualWidth
1378 } :
1379 /* placement == 'right' */
1380 {
1381 top: pos.top + pos.height / 2 - actualHeight / 2,
1382 left: pos.left + pos.width
1383 }
1384 }
1385
1386 Tooltip.prototype.getTitle = function() {
1387 var title
1388 var $e = this.$element
1389 var o = this.options
1390
1391 title = $e.attr('data-original-title') || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)
1392
1393 return title
1394 }
1395
1396 Tooltip.prototype.tip = function() {
1397 return this.$tip = this.$tip || $(this.options.template)
1398 }
1399
1400 Tooltip.prototype.arrow = function() {
1401 return this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')
1402 }
1403
1404 Tooltip.prototype.validate = function() {
1405 if (!this.$element[0].parentNode) {
1406 this.hide()
1407 this.$element = null
1408 this.options = null
1409 }
1410 }
1411
1412 Tooltip.prototype.enable = function() {
1413 this.enabled = true
1414 }
1415
1416 Tooltip.prototype.disable = function() {
1417 this.enabled = false
1418 }
1419
1420 Tooltip.prototype.toggleEnabled = function() {
1421 this.enabled = !this.enabled
1422 }
1423
1424 Tooltip.prototype.toggle = function(e) {
1425 var self = e ? $(e.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type) : this
1426 self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
1427 }
1428
1429 Tooltip.prototype.destroy = function() {
1430 clearTimeout(this.timeout)
1431 this.hide().$element.off('.' + this.type).removeData('bs.' + this.type)
1432 }
1433
1434
1435 // TOOLTIP PLUGIN DEFINITION
1436 // =========================
1437
1438 var old = $.fn.tooltip
1439
1440 $.fn.tooltip = function(option) {
1441 return this.each(function() {
1442 var $this = $(this)
1443 var data = $this.data('bs.tooltip')
1444 var options = typeof option == 'object' && option
1445
1446 if (!data && option == 'destroy') return
1447 if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
1448 if (typeof option == 'string') data[option]()
1449 })
1450 }
1451
1452 $.fn.tooltip.Constructor = Tooltip
1453
1454
1455 // TOOLTIP NO CONFLICT
1456 // ===================
1457
1458 $.fn.tooltip.noConflict = function() {
1459 $.fn.tooltip = old
1460 return this
1461 }
1462
1463}(jQuery);
1464
1465/* ========================================================================
1466 * Bootstrap: popover.js v3.1.1
1467 * http://getbootstrap.com/javascript/#popovers
1468 * ========================================================================
1469 * Copyright 2011-2014 Twitter, Inc.
1470 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
1471 * ======================================================================== */
1472
1473
1474+ function($) {
1475 'use strict';
1476
1477 // POPOVER PUBLIC CLASS DEFINITION
1478 // ===============================
1479
1480 var Popover = function(element, options) {
1481 this.init('popover', element, options)
1482 }
1483
1484 if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
1485
1486 Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
1487 placement: 'right',
1488 trigger: 'click',
1489 content: '',
1490 template: '<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
1491 })
1492
1493
1494 // NOTE: POPOVER EXTENDS tooltip.js
1495 // ================================
1496
1497 Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)
1498
1499 Popover.prototype.constructor = Popover
1500
1501 Popover.prototype.getDefaults = function() {
1502 return Popover.DEFAULTS
1503 }
1504
1505 Popover.prototype.setContent = function() {
1506 var $tip = this.tip()
1507 var title = this.getTitle()
1508 var content = this.getContent()
1509
1510 $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
1511 $tip.find('.popover-content')[ // we use append for html objects to maintain js events
1512 this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'
1513 ](content)
1514
1515 $tip.removeClass('fade top bottom left right in')
1516
1517 // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
1518 // this manually by checking the contents.
1519 if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()
1520 }
1521
1522 Popover.prototype.hasContent = function() {
1523 return this.getTitle() || this.getContent()
1524 }
1525
1526 Popover.prototype.getContent = function() {
1527 var $e = this.$element
1528 var o = this.options
1529
1530 return $e.attr('data-content') || (typeof o.content == 'function' ?
1531 o.content.call($e[0]) :
1532 o.content)
1533 }
1534
1535 Popover.prototype.arrow = function() {
1536 return this.$arrow = this.$arrow || this.tip().find('.arrow')
1537 }
1538
1539 Popover.prototype.tip = function() {
1540 if (!this.$tip) this.$tip = $(this.options.template)
1541 return this.$tip
1542 }
1543
1544
1545 // POPOVER PLUGIN DEFINITION
1546 // =========================
1547
1548 var old = $.fn.popover
1549
1550 $.fn.popover = function(option) {
1551 return this.each(function() {
1552 var $this = $(this)
1553 var data = $this.data('bs.popover')
1554 var options = typeof option == 'object' && option
1555
1556 if (!data && option == 'destroy') return
1557 if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
1558 if (typeof option == 'string') data[option]()
1559 })
1560 }
1561
1562 $.fn.popover.Constructor = Popover
1563
1564
1565 // POPOVER NO CONFLICT
1566 // ===================
1567
1568 $.fn.popover.noConflict = function() {
1569 $.fn.popover = old
1570 return this
1571 }
1572
1573}(jQuery);
1574
1575/* ========================================================================
1576 * Bootstrap: scrollspy.js v3.1.1
1577 * http://getbootstrap.com/javascript/#scrollspy
1578 * ========================================================================
1579 * Copyright 2011-2014 Twitter, Inc.
1580 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
1581 * ======================================================================== */
1582
1583
1584+ function($) {
1585 'use strict';
1586
1587 // SCROLLSPY CLASS DEFINITION
1588 // ==========================
1589
1590 function ScrollSpy(element, options) {
1591 var href
1592 var process = $.proxy(this.process, this)
1593
1594 this.$element = $(element).is('body') ? $(window) : $(element)
1595 this.$body = $('body')
1596 this.$scrollElement = this.$element.on('scroll.bs.scroll-spy.data-api', process)
1597 this.options = $.extend({}, ScrollSpy.DEFAULTS, options)
1598 this.selector = (this.options.target || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
1599 || '') + ' .nav li > a'
1600 this.offsets = $([])
1601 this.targets = $([])
1602 this.activeTarget = null
1603
1604 this.refresh()
1605 this.process()
1606 }
1607
1608 ScrollSpy.DEFAULTS = {
1609 offset: 10
1610 }
1611
1612 ScrollSpy.prototype.refresh = function() {
1613 var offsetMethod = this.$element[0] == window ? 'offset' : 'position'
1614
1615 this.offsets = $([])
1616 this.targets = $([])
1617
1618 var self = this
1619 var $targets = this.$body
1620 .find(this.selector)
1621 .map(function() {
1622 var $el = $(this)
1623 var href = $el.data('target') || $el.attr('href')
1624 var $href = /^#./.test(href) && $(href)
1625
1626 return ($href && $href.length && $href.is(':visible') && [
1627 [$href[offsetMethod]().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href]
1628 ]) || null
1629 })
1630 .sort(function(a, b) {
1631 return a[0] - b[0]
1632 })
1633 .each(function() {
1634 self.offsets.push(this[0])
1635 self.targets.push(this[1])
1636 })
1637 }
1638
1639 ScrollSpy.prototype.process = function() {
1640 var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
1641 var scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight
1642 var maxScroll = scrollHeight - this.$scrollElement.height()
1643 var offsets = this.offsets
1644 var targets = this.targets
1645 var activeTarget = this.activeTarget
1646 var i
1647
1648 if (scrollTop >= maxScroll) {
1649 return activeTarget != (i = targets.last()[0]) && this.activate(i)
1650 }
1651
1652 if (activeTarget && scrollTop <= offsets[0]) {
1653 return activeTarget != (i = targets[0]) && this.activate(i)
1654 }
1655
1656 for (i = offsets.length; i--;) {
1657 activeTarget != targets[i] && scrollTop >= offsets[i] && (!offsets[i + 1] || scrollTop <= offsets[i + 1]) && this.activate(targets[i])
1658 }
1659 }
1660
1661 ScrollSpy.prototype.activate = function(target) {
1662 this.activeTarget = target
1663
1664 $(this.selector)
1665 .parentsUntil(this.options.target, '.active')
1666 .removeClass('active')
1667
1668 var selector = this.selector +
1669 '[data-target="' + target + '"],' +
1670 this.selector + '[href="' + target + '"]'
1671
1672 var active = $(selector)
1673 .parents('li')
1674 .addClass('active')
1675
1676 if (active.parent('.dropdown-menu').length) {
1677 active = active
1678 .closest('li.dropdown')
1679 .addClass('active')
1680 }
1681
1682 active.trigger('activate.bs.scrollspy')
1683 }
1684
1685
1686 // SCROLLSPY PLUGIN DEFINITION
1687 // ===========================
1688
1689 var old = $.fn.scrollspy
1690
1691 $.fn.scrollspy = function(option) {
1692 return this.each(function() {
1693 var $this = $(this)
1694 var data = $this.data('bs.scrollspy')
1695 var options = typeof option == 'object' && option
1696
1697 if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))
1698 if (typeof option == 'string') data[option]()
1699 })
1700 }
1701
1702 $.fn.scrollspy.Constructor = ScrollSpy
1703
1704
1705 // SCROLLSPY NO CONFLICT
1706 // =====================
1707
1708 $.fn.scrollspy.noConflict = function() {
1709 $.fn.scrollspy = old
1710 return this
1711 }
1712
1713
1714 // SCROLLSPY DATA-API
1715 // ==================
1716
1717 $(window).on('load', function() {
1718 $('[data-spy="scroll"]').each(function() {
1719 var $spy = $(this)
1720 $spy.scrollspy($spy.data())
1721 })
1722 })
1723
1724}(jQuery);
1725
1726/* ========================================================================
1727 * Bootstrap: tab.js v3.1.1
1728 * http://getbootstrap.com/javascript/#tabs
1729 * ========================================================================
1730 * Copyright 2011-2014 Twitter, Inc.
1731 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
1732 * ======================================================================== */
1733
1734
1735+ function($) {
1736 'use strict';
1737
1738 // TAB CLASS DEFINITION
1739 // ====================
1740
1741 var Tab = function(element) {
1742 this.element = $(element)
1743 }
1744
1745 Tab.prototype.show = function() {
1746 var $this = this.element
1747 var $ul = $this.closest('ul:not(.dropdown-menu)')
1748 var selector = $this.data('target')
1749
1750 if (!selector) {
1751 selector = $this.attr('href')
1752 selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
1753 }
1754
1755 if ($this.parent('li').hasClass('active')) return
1756
1757 var previous = $ul.find('.active:last a')[0]
1758 var e = $.Event('show.bs.tab', {
1759 relatedTarget: previous
1760 })
1761
1762 $this.trigger(e)
1763
1764 if (e.isDefaultPrevented()) return
1765
1766 var $target = $(selector)
1767
1768 this.activate($this.parent('li'), $ul)
1769 this.activate($target, $target.parent(), function() {
1770 $this.trigger({
1771 type: 'shown.bs.tab',
1772 relatedTarget: previous
1773 })
1774 })
1775 }
1776
1777 Tab.prototype.activate = function(element, container, callback) {
1778 var $active = container.find('> .active')
1779 var transition = callback && $.support.transition && $active.hasClass('fade')
1780
1781 function next() {
1782 $active
1783 .removeClass('active')
1784 .find('> .dropdown-menu > .active')
1785 .removeClass('active')
1786
1787 element.addClass('active')
1788
1789 if (transition) {
1790 element[0].offsetWidth // reflow for transition
1791 element.addClass('in')
1792 } else {
1793 element.removeClass('fade')
1794 }
1795
1796 if (element.parent('.dropdown-menu')) {
1797 element.closest('li.dropdown').addClass('active')
1798 }
1799
1800 callback && callback()
1801 }
1802
1803 transition ?
1804 $active
1805 .one($.support.transition.end, next)
1806 .emulateTransitionEnd(150) :
1807 next()
1808
1809 $active.removeClass('in')
1810 }
1811
1812
1813 // TAB PLUGIN DEFINITION
1814 // =====================
1815
1816 var old = $.fn.tab
1817
1818 $.fn.tab = function(option) {
1819 return this.each(function() {
1820 var $this = $(this)
1821 var data = $this.data('bs.tab')
1822
1823 if (!data) $this.data('bs.tab', (data = new Tab(this)))
1824 if (typeof option == 'string') data[option]()
1825 })
1826 }
1827
1828 $.fn.tab.Constructor = Tab
1829
1830
1831 // TAB NO CONFLICT
1832 // ===============
1833
1834 $.fn.tab.noConflict = function() {
1835 $.fn.tab = old
1836 return this
1837 }
1838
1839
1840 // TAB DATA-API
1841 // ============
1842
1843 $(document).on('click.bs.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function(e) {
1844 e.preventDefault()
1845 $(this).tab('show')
1846 })
1847
1848}(jQuery);
1849
1850/* ========================================================================
1851 * Bootstrap: affix.js v3.1.1
1852 * http://getbootstrap.com/javascript/#affix
1853 * ========================================================================
1854 * Copyright 2011-2014 Twitter, Inc.
1855 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
1856 * ======================================================================== */
1857
1858
1859+ function($) {
1860 'use strict';
1861
1862 // AFFIX CLASS DEFINITION
1863 // ======================
1864
1865 var Affix = function(element, options) {
1866 this.options = $.extend({}, Affix.DEFAULTS, options)
1867 this.$window = $(window)
1868 .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
1869 .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))
1870
1871 this.$element = $(element)
1872 this.affixed =
1873 this.unpin =
1874 this.pinnedOffset = null
1875
1876 this.checkPosition()
1877 }
1878
1879 Affix.RESET = 'affix affix-top affix-bottom'
1880
1881 Affix.DEFAULTS = {
1882 offset: 0
1883 }
1884
1885 Affix.prototype.getPinnedOffset = function() {
1886 if (this.pinnedOffset) return this.pinnedOffset
1887 this.$element.removeClass(Affix.RESET).addClass('affix')
1888 var scrollTop = this.$window.scrollTop()
1889 var position = this.$element.offset()
1890 return (this.pinnedOffset = position.top - scrollTop)
1891 }
1892
1893 Affix.prototype.checkPositionWithEventLoop = function() {
1894 setTimeout($.proxy(this.checkPosition, this), 1)
1895 }
1896
1897 Affix.prototype.checkPosition = function() {
1898 if (!this.$element.is(':visible')) return
1899
1900 var scrollHeight = $(document).height()
1901 var scrollTop = this.$window.scrollTop()
1902 var position = this.$element.offset()
1903 var offset = this.options.offset
1904 var offsetTop = offset.top
1905 var offsetBottom = offset.bottom
1906
1907 if (this.affixed == 'top') position.top += scrollTop
1908
1909 if (typeof offset != 'object') offsetBottom = offsetTop = offset
1910 if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)
1911 if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)
1912
1913 var affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ? false :
1914 offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ? 'bottom' :
1915 offsetTop != null && (scrollTop <= offsetTop) ? 'top' : false
1916
1917 if (this.affixed === affix) return
1918 if (this.unpin) this.$element.css('top', '')
1919
1920 var affixType = 'affix' + (affix ? '-' + affix : '')
1921 var e = $.Event(affixType + '.bs.affix')
1922
1923 this.$element.trigger(e)
1924
1925 if (e.isDefaultPrevented()) return
1926
1927 this.affixed = affix
1928 this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null
1929
1930 this.$element
1931 .removeClass(Affix.RESET)
1932 .addClass(affixType)
1933 .trigger($.Event(affixType.replace('affix', 'affixed')))
1934
1935 if (affix == 'bottom') {
1936 this.$element.offset({
1937 top: scrollHeight - offsetBottom - this.$element.height()
1938 })
1939 }
1940 }
1941
1942
1943 // AFFIX PLUGIN DEFINITION
1944 // =======================
1945
1946 var old = $.fn.affix
1947
1948 $.fn.affix = function(option) {
1949 return this.each(function() {
1950 var $this = $(this)
1951 var data = $this.data('bs.affix')
1952 var options = typeof option == 'object' && option
1953
1954 if (!data) $this.data('bs.affix', (data = new Affix(this, options)))
1955 if (typeof option == 'string') data[option]()
1956 })
1957 }
1958
1959 $.fn.affix.Constructor = Affix
1960
1961
1962 // AFFIX NO CONFLICT
1963 // =================
1964
1965 $.fn.affix.noConflict = function() {
1966 $.fn.affix = old
1967 return this
1968 }
1969
1970
1971 // AFFIX DATA-API
1972 // ==============
1973
1974 $(window).on('load', function() {
1975 $('[data-spy="affix"]').each(function() {
1976 var $spy = $(this)
1977 var data = $spy.data()
1978
1979 data.offset = data.offset || {}
1980
1981 if (data.offsetBottom) data.offset.bottom = data.offsetBottom
1982 if (data.offsetTop) data.offset.top = data.offsetTop
1983
1984 $spy.affix(data)
1985 })
1986 })
1987
1988}(jQuery); \ No newline at end of file
diff --git a/Back/jinwei.me/mobile/js/bootstrap.min.js b/Back/jinwei.me/mobile/js/bootstrap.min.js
new file mode 100644
index 0000000..42eb86f
--- /dev/null
+++ b/Back/jinwei.me/mobile/js/bootstrap.min.js
@@ -0,0 +1,759 @@
1/*!
2 * Bootstrap v3.1.1 (http://getbootstrap.com)
3 * Copyright 2011-2014 Twitter, Inc.
4 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5 */
6if ("undefined" == typeof jQuery) throw new Error("Bootstrap's JavaScript requires jQuery"); + function(a) {
7 "use strict";
8
9 function b() {
10 var a = document.createElement("bootstrap"),
11 b = {
12 WebkitTransition: "webkitTransitionEnd",
13 MozTransition: "transitionend",
14 OTransition: "oTransitionEnd otransitionend",
15 transition: "transitionend"
16 };
17 for (var c in b)
18 if (void 0 !== a.style[c]) return {
19 end: b[c]
20 };
21 return !1
22 }
23 a.fn.emulateTransitionEnd = function(b) {
24 var c = !1,
25 d = this;
26 a(this).one(a.support.transition.end, function() {
27 c = !0
28 });
29 var e = function() {
30 c || a(d).trigger(a.support.transition.end)
31 };
32 return setTimeout(e, b), this
33 }, a(function() {
34 a.support.transition = b()
35 })
36}(jQuery), + function(a) {
37 "use strict";
38 var b = '[data-dismiss="alert"]',
39 c = function(c) {
40 a(c).on("click", b, this.close)
41 };
42 c.prototype.close = function(b) {
43 function c() {
44 f.trigger("closed.bs.alert").remove()
45 }
46 var d = a(this),
47 e = d.attr("data-target");
48 e || (e = d.attr("href"), e = e && e.replace(/.*(?=#[^\s]*$)/, ""));
49 var f = a(e);
50 b && b.preventDefault(), f.length || (f = d.hasClass("alert") ? d : d.parent()), f.trigger(b = a.Event("close.bs.alert")), b.isDefaultPrevented() || (f.removeClass("in"), a.support.transition && f.hasClass("fade") ? f.one(a.support.transition.end, c).emulateTransitionEnd(150) : c())
51 };
52 var d = a.fn.alert;
53 a.fn.alert = function(b) {
54 return this.each(function() {
55 var d = a(this),
56 e = d.data("bs.alert");
57 e || d.data("bs.alert", e = new c(this)), "string" == typeof b && e[b].call(d)
58 })
59 }, a.fn.alert.Constructor = c, a.fn.alert.noConflict = function() {
60 return a.fn.alert = d, this
61 }, a(document).on("click.bs.alert.data-api", b, c.prototype.close)
62}(jQuery), + function(a) {
63 "use strict";
64 var b = function(c, d) {
65 this.$element = a(c), this.options = a.extend({}, b.DEFAULTS, d), this.isLoading = !1
66 };
67 b.DEFAULTS = {
68 loadingText: "loading..."
69 }, b.prototype.setState = function(b) {
70 var c = "disabled",
71 d = this.$element,
72 e = d.is("input") ? "val" : "html",
73 f = d.data();
74 b += "Text", f.resetText || d.data("resetText", d[e]()), d[e](f[b] || this.options[b]), setTimeout(a.proxy(function() {
75 "loadingText" == b ? (this.isLoading = !0, d.addClass(c).attr(c, c)) : this.isLoading && (this.isLoading = !1, d.removeClass(c).removeAttr(c))
76 }, this), 0)
77 }, b.prototype.toggle = function() {
78 var a = !0,
79 b = this.$element.closest('[data-toggle="buttons"]');
80 if (b.length) {
81 var c = this.$element.find("input");
82 "radio" == c.prop("type") && (c.prop("checked") && this.$element.hasClass("active") ? a = !1 : b.find(".active").removeClass("active")), a && c.prop("checked", !this.$element.hasClass("active")).trigger("change")
83 }
84 a && this.$element.toggleClass("active")
85 };
86 var c = a.fn.button;
87 a.fn.button = function(c) {
88 return this.each(function() {
89 var d = a(this),
90 e = d.data("bs.button"),
91 f = "object" == typeof c && c;
92 e || d.data("bs.button", e = new b(this, f)), "toggle" == c ? e.toggle() : c && e.setState(c)
93 })
94 }, a.fn.button.Constructor = b, a.fn.button.noConflict = function() {
95 return a.fn.button = c, this
96 }, a(document).on("click.bs.button.data-api", "[data-toggle^=button]", function(b) {
97 var c = a(b.target);
98 c.hasClass("btn") || (c = c.closest(".btn")), c.button("toggle"), b.preventDefault()
99 })
100}(jQuery), + function(a) {
101 "use strict";
102 var b = function(b, c) {
103 this.$element = a(b), this.$indicators = this.$element.find(".carousel-indicators"), this.options = c, this.paused = this.sliding = this.interval = this.$active = this.$items = null, "hover" == this.options.pause && this.$element.on("mouseenter", a.proxy(this.pause, this)).on("mouseleave", a.proxy(this.cycle, this))
104 };
105 b.DEFAULTS = {
106 interval: 5e3,
107 pause: "hover",
108 wrap: !0
109 }, b.prototype.cycle = function(b) {
110 return b || (this.paused = !1), this.interval && clearInterval(this.interval), this.options.interval && !this.paused && (this.interval = setInterval(a.proxy(this.next, this), this.options.interval)), this
111 }, b.prototype.getActiveIndex = function() {
112 return this.$active = this.$element.find(".item.active"), this.$items = this.$active.parent().children(), this.$items.index(this.$active)
113 }, b.prototype.to = function(b) {
114 var c = this,
115 d = this.getActiveIndex();
116 return b > this.$items.length - 1 || 0 > b ? void 0 : this.sliding ? this.$element.one("slid.bs.carousel", function() {
117 c.to(b)
118 }) : d == b ? this.pause().cycle() : this.slide(b > d ? "next" : "prev", a(this.$items[b]))
119 }, b.prototype.pause = function(b) {
120 return b || (this.paused = !0), this.$element.find(".next, .prev").length && a.support.transition && (this.$element.trigger(a.support.transition.end), this.cycle(!0)), this.interval = clearInterval(this.interval), this
121 }, b.prototype.next = function() {
122 return this.sliding ? void 0 : this.slide("next")
123 }, b.prototype.prev = function() {
124 return this.sliding ? void 0 : this.slide("prev")
125 }, b.prototype.slide = function(b, c) {
126 var d = this.$element.find(".item.active"),
127 e = c || d[b](),
128 f = this.interval,
129 g = "next" == b ? "left" : "right",
130 h = "next" == b ? "first" : "last",
131 i = this;
132 if (!e.length) {
133 if (!this.options.wrap) return;
134 e = this.$element.find(".item")[h]()
135 }
136 if (e.hasClass("active")) return this.sliding = !1;
137 var j = a.Event("slide.bs.carousel", {
138 relatedTarget: e[0],
139 direction: g
140 });
141 return this.$element.trigger(j), j.isDefaultPrevented() ? void 0 : (this.sliding = !0, f && this.pause(), this.$indicators.length && (this.$indicators.find(".active").removeClass("active"), this.$element.one("slid.bs.carousel", function() {
142 var b = a(i.$indicators.children()[i.getActiveIndex()]);
143 b && b.addClass("active")
144 })), a.support.transition && this.$element.hasClass("slide") ? (e.addClass(b), e[0].offsetWidth, d.addClass(g), e.addClass(g), d.one(a.support.transition.end, function() {
145 e.removeClass([b, g].join(" ")).addClass("active"), d.removeClass(["active", g].join(" ")), i.sliding = !1, setTimeout(function() {
146 i.$element.trigger("slid.bs.carousel")
147 }, 0)
148 }).emulateTransitionEnd(1e3 * d.css("transition-duration").slice(0, -1))) : (d.removeClass("active"), e.addClass("active"), this.sliding = !1, this.$element.trigger("slid.bs.carousel")), f && this.cycle(), this)
149 };
150 var c = a.fn.carousel;
151 a.fn.carousel = function(c) {
152 return this.each(function() {
153 var d = a(this),
154 e = d.data("bs.carousel"),
155 f = a.extend({}, b.DEFAULTS, d.data(), "object" == typeof c && c),
156 g = "string" == typeof c ? c : f.slide;
157 e || d.data("bs.carousel", e = new b(this, f)), "number" == typeof c ? e.to(c) : g ? e[g]() : f.interval && e.pause().cycle()
158 })
159 }, a.fn.carousel.Constructor = b, a.fn.carousel.noConflict = function() {
160 return a.fn.carousel = c, this
161 }, a(document).on("click.bs.carousel.data-api", "[data-slide], [data-slide-to]", function(b) {
162 var c, d = a(this),
163 e = a(d.attr("data-target") || (c = d.attr("href")) && c.replace(/.*(?=#[^\s]+$)/, "")),
164 f = a.extend({}, e.data(), d.data()),
165 g = d.attr("data-slide-to");
166 g && (f.interval = !1), e.carousel(f), (g = d.attr("data-slide-to")) && e.data("bs.carousel").to(g), b.preventDefault()
167 }), a(window).on("load", function() {
168 a('[data-ride="carousel"]').each(function() {
169 var b = a(this);
170 b.carousel(b.data())
171 })
172 })
173}(jQuery), + function(a) {
174 "use strict";
175 var b = function(c, d) {
176 this.$element = a(c), this.options = a.extend({}, b.DEFAULTS, d), this.transitioning = null, this.options.parent && (this.$parent = a(this.options.parent)), this.options.toggle && this.toggle()
177 };
178 b.DEFAULTS = {
179 toggle: !0
180 }, b.prototype.dimension = function() {
181 var a = this.$element.hasClass("width");
182 return a ? "width" : "height"
183 }, b.prototype.show = function() {
184 if (!this.transitioning && !this.$element.hasClass("in")) {
185 var b = a.Event("show.bs.collapse");
186 if (this.$element.trigger(b), !b.isDefaultPrevented()) {
187 var c = this.$parent && this.$parent.find("> .panel > .in");
188 if (c && c.length) {
189 var d = c.data("bs.collapse");
190 if (d && d.transitioning) return;
191 c.collapse("hide"), d || c.data("bs.collapse", null)
192 }
193 var e = this.dimension();
194 this.$element.removeClass("collapse").addClass("collapsing")[e](0), this.transitioning = 1;
195 var f = function() {
196 this.$element.removeClass("collapsing").addClass("collapse in")[e]("auto"), this.transitioning = 0, this.$element.trigger("shown.bs.collapse")
197 };
198 if (!a.support.transition) return f.call(this);
199 var g = a.camelCase(["scroll", e].join("-"));
200 this.$element.one(a.support.transition.end, a.proxy(f, this)).emulateTransitionEnd(350)[e](this.$element[0][g])
201 }
202 }
203 }, b.prototype.hide = function() {
204 if (!this.transitioning && this.$element.hasClass("in")) {
205 var b = a.Event("hide.bs.collapse");
206 if (this.$element.trigger(b), !b.isDefaultPrevented()) {
207 var c = this.dimension();
208 this.$element[c](this.$element[c]())[0].offsetHeight, this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"), this.transitioning = 1;
209 var d = function() {
210 this.transitioning = 0, this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")
211 };
212 return a.support.transition ? void this.$element[c](0).one(a.support.transition.end, a.proxy(d, this)).emulateTransitionEnd(350) : d.call(this)
213 }
214 }
215 }, b.prototype.toggle = function() {
216 this[this.$element.hasClass("in") ? "hide" : "show"]()
217 };
218 var c = a.fn.collapse;
219 a.fn.collapse = function(c) {
220 return this.each(function() {
221 var d = a(this),
222 e = d.data("bs.collapse"),
223 f = a.extend({}, b.DEFAULTS, d.data(), "object" == typeof c && c);
224 !e && f.toggle && "show" == c && (c = !c), e || d.data("bs.collapse", e = new b(this, f)), "string" == typeof c && e[c]()
225 })
226 }, a.fn.collapse.Constructor = b, a.fn.collapse.noConflict = function() {
227 return a.fn.collapse = c, this
228 }, a(document).on("click.bs.collapse.data-api", "[data-toggle=collapse]", function(b) {
229 var c, d = a(this),
230 e = d.attr("data-target") || b.preventDefault() || (c = d.attr("href")) && c.replace(/.*(?=#[^\s]+$)/, ""),
231 f = a(e),
232 g = f.data("bs.collapse"),
233 h = g ? "toggle" : d.data(),
234 i = d.attr("data-parent"),
235 j = i && a(i);
236 g && g.transitioning || (j && j.find('[data-toggle=collapse][data-parent="' + i + '"]').not(d).addClass("collapsed"), d[f.hasClass("in") ? "addClass" : "removeClass"]("collapsed")), f.collapse(h)
237 })
238}(jQuery), + function(a) {
239 "use strict";
240
241 function b(b) {
242 a(d).remove(), a(e).each(function() {
243 var d = c(a(this)),
244 e = {
245 relatedTarget: this
246 };
247 d.hasClass("open") && (d.trigger(b = a.Event("hide.bs.dropdown", e)), b.isDefaultPrevented() || d.removeClass("open").trigger("hidden.bs.dropdown", e))
248 })
249 }
250
251 function c(b) {
252 var c = b.attr("data-target");
253 c || (c = b.attr("href"), c = c && /#[A-Za-z]/.test(c) && c.replace(/.*(?=#[^\s]*$)/, ""));
254 var d = c && a(c);
255 return d && d.length ? d : b.parent()
256 }
257 var d = ".dropdown-backdrop",
258 e = "[data-toggle=dropdown]",
259 f = function(b) {
260 a(b).on("click.bs.dropdown", this.toggle)
261 };
262 f.prototype.toggle = function(d) {
263 var e = a(this);
264 if (!e.is(".disabled, :disabled")) {
265 var f = c(e),
266 g = f.hasClass("open");
267 if (b(), !g) {
268 "ontouchstart" in document.documentElement && !f.closest(".navbar-nav").length && a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click", b);
269 var h = {
270 relatedTarget: this
271 };
272 if (f.trigger(d = a.Event("show.bs.dropdown", h)), d.isDefaultPrevented()) return;
273 f.toggleClass("open").trigger("shown.bs.dropdown", h), e.focus()
274 }
275 return !1
276 }
277 }, f.prototype.keydown = function(b) {
278 if (/(38|40|27)/.test(b.keyCode)) {
279 var d = a(this);
280 if (b.preventDefault(), b.stopPropagation(), !d.is(".disabled, :disabled")) {
281 var f = c(d),
282 g = f.hasClass("open");
283 if (!g || g && 27 == b.keyCode) return 27 == b.which && f.find(e).focus(), d.click();
284 var h = " li:not(.divider):visible a",
285 i = f.find("[role=menu]" + h + ", [role=listbox]" + h);
286 if (i.length) {
287 var j = i.index(i.filter(":focus"));
288 38 == b.keyCode && j > 0 && j--, 40 == b.keyCode && j < i.length - 1 && j++, ~j || (j = 0), i.eq(j).focus()
289 }
290 }
291 }
292 };
293 var g = a.fn.dropdown;
294 a.fn.dropdown = function(b) {
295 return this.each(function() {
296 var c = a(this),
297 d = c.data("bs.dropdown");
298 d || c.data("bs.dropdown", d = new f(this)), "string" == typeof b && d[b].call(c)
299 })
300 }, a.fn.dropdown.Constructor = f, a.fn.dropdown.noConflict = function() {
301 return a.fn.dropdown = g, this
302 }, a(document).on("click.bs.dropdown.data-api", b).on("click.bs.dropdown.data-api", ".dropdown form", function(a) {
303 a.stopPropagation()
304 }).on("click.bs.dropdown.data-api", e, f.prototype.toggle).on("keydown.bs.dropdown.data-api", e + ", [role=menu], [role=listbox]", f.prototype.keydown)
305}(jQuery), + function(a) {
306 "use strict";
307 var b = function(b, c) {
308 this.options = c, this.$element = a(b), this.$backdrop = this.isShown = null, this.options.remote && this.$element.find(".modal-content").load(this.options.remote, a.proxy(function() {
309 this.$element.trigger("loaded.bs.modal")
310 }, this))
311 };
312 b.DEFAULTS = {
313 backdrop: !0,
314 keyboard: !0,
315 show: !0
316 }, b.prototype.toggle = function(a) {
317 return this[this.isShown ? "hide" : "show"](a)
318 }, b.prototype.show = function(b) {
319 var c = this,
320 d = a.Event("show.bs.modal", {
321 relatedTarget: b
322 });
323 this.$element.trigger(d), this.isShown || d.isDefaultPrevented() || (this.isShown = !0, this.escape(), this.$element.on("click.dismiss.bs.modal", '[data-dismiss="modal"]', a.proxy(this.hide, this)), this.backdrop(function() {
324 var d = a.support.transition && c.$element.hasClass("fade");
325 c.$element.parent().length || c.$element.appendTo(document.body), c.$element.show().scrollTop(0), d && c.$element[0].offsetWidth, c.$element.addClass("in").attr("aria-hidden", !1), c.enforceFocus();
326 var e = a.Event("shown.bs.modal", {
327 relatedTarget: b
328 });
329 d ? c.$element.find(".modal-dialog").one(a.support.transition.end, function() {
330 c.$element.focus().trigger(e)
331 }).emulateTransitionEnd(300) : c.$element.focus().trigger(e)
332 }))
333 }, b.prototype.hide = function(b) {
334 b && b.preventDefault(), b = a.Event("hide.bs.modal"), this.$element.trigger(b), this.isShown && !b.isDefaultPrevented() && (this.isShown = !1, this.escape(), a(document).off("focusin.bs.modal"), this.$element.removeClass("in").attr("aria-hidden", !0).off("click.dismiss.bs.modal"), a.support.transition && this.$element.hasClass("fade") ? this.$element.one(a.support.transition.end, a.proxy(this.hideModal, this)).emulateTransitionEnd(300) : this.hideModal())
335 }, b.prototype.enforceFocus = function() {
336 a(document).off("focusin.bs.modal").on("focusin.bs.modal", a.proxy(function(a) {
337 this.$element[0] === a.target || this.$element.has(a.target).length || this.$element.focus()
338 }, this))
339 }, b.prototype.escape = function() {
340 this.isShown && this.options.keyboard ? this.$element.on("keyup.dismiss.bs.modal", a.proxy(function(a) {
341 27 == a.which && this.hide()
342 }, this)) : this.isShown || this.$element.off("keyup.dismiss.bs.modal")
343 }, b.prototype.hideModal = function() {
344 var a = this;
345 this.$element.hide(), this.backdrop(function() {
346 a.removeBackdrop(), a.$element.trigger("hidden.bs.modal")
347 })
348 }, b.prototype.removeBackdrop = function() {
349 this.$backdrop && this.$backdrop.remove(), this.$backdrop = null
350 }, b.prototype.backdrop = function(b) {
351 var c = this.$element.hasClass("fade") ? "fade" : "";
352 if (this.isShown && this.options.backdrop) {
353 var d = a.support.transition && c;
354 if (this.$backdrop = a('<div class="modal-backdrop ' + c + '" />').appendTo(document.body), this.$element.on("click.dismiss.bs.modal", a.proxy(function(a) {
355 a.target === a.currentTarget && ("static" == this.options.backdrop ? this.$element[0].focus.call(this.$element[0]) : this.hide.call(this))
356 }, this)), d && this.$backdrop[0].offsetWidth, this.$backdrop.addClass("in"), !b) return;
357 d ? this.$backdrop.one(a.support.transition.end, b).emulateTransitionEnd(150) : b()
358 } else !this.isShown && this.$backdrop ? (this.$backdrop.removeClass("in"), a.support.transition && this.$element.hasClass("fade") ? this.$backdrop.one(a.support.transition.end, b).emulateTransitionEnd(150) : b()) : b && b()
359 };
360 var c = a.fn.modal;
361 a.fn.modal = function(c, d) {
362 return this.each(function() {
363 var e = a(this),
364 f = e.data("bs.modal"),
365 g = a.extend({}, b.DEFAULTS, e.data(), "object" == typeof c && c);
366 f || e.data("bs.modal", f = new b(this, g)), "string" == typeof c ? f[c](d) : g.show && f.show(d)
367 })
368 }, a.fn.modal.Constructor = b, a.fn.modal.noConflict = function() {
369 return a.fn.modal = c, this
370 }, a(document).on("click.bs.modal.data-api", '[data-toggle="modal"]', function(b) {
371 var c = a(this),
372 d = c.attr("href"),
373 e = a(c.attr("data-target") || d && d.replace(/.*(?=#[^\s]+$)/, "")),
374 f = e.data("bs.modal") ? "toggle" : a.extend({
375 remote: !/#/.test(d) && d
376 }, e.data(), c.data());
377 c.is("a") && b.preventDefault(), e.modal(f, this).one("hide", function() {
378 c.is(":visible") && c.focus()
379 })
380 }), a(document).on("show.bs.modal", ".modal", function() {
381 a(document.body).addClass("modal-open")
382 }).on("hidden.bs.modal", ".modal", function() {
383 a(document.body).removeClass("modal-open")
384 })
385}(jQuery), + function(a) {
386 "use strict";
387 var b = function(a, b) {
388 this.type = this.options = this.enabled = this.timeout = this.hoverState = this.$element = null, this.init("tooltip", a, b)
389 };
390 b.DEFAULTS = {
391 animation: !0,
392 placement: "top",
393 selector: !1,
394 template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
395 trigger: "hover focus",
396 title: "",
397 delay: 0,
398 html: !1,
399 container: !1
400 }, b.prototype.init = function(b, c, d) {
401 this.enabled = !0, this.type = b, this.$element = a(c), this.options = this.getOptions(d);
402 for (var e = this.options.trigger.split(" "), f = e.length; f--;) {
403 var g = e[f];
404 if ("click" == g) this.$element.on("click." + this.type, this.options.selector, a.proxy(this.toggle, this));
405 else if ("manual" != g) {
406 var h = "hover" == g ? "mouseenter" : "focusin",
407 i = "hover" == g ? "mouseleave" : "focusout";
408 this.$element.on(h + "." + this.type, this.options.selector, a.proxy(this.enter, this)), this.$element.on(i + "." + this.type, this.options.selector, a.proxy(this.leave, this))
409 }
410 }
411 this.options.selector ? this._options = a.extend({}, this.options, {
412 trigger: "manual",
413 selector: ""
414 }) : this.fixTitle()
415 }, b.prototype.getDefaults = function() {
416 return b.DEFAULTS
417 }, b.prototype.getOptions = function(b) {
418 return b = a.extend({}, this.getDefaults(), this.$element.data(), b), b.delay && "number" == typeof b.delay && (b.delay = {
419 show: b.delay,
420 hide: b.delay
421 }), b
422 }, b.prototype.getDelegateOptions = function() {
423 var b = {},
424 c = this.getDefaults();
425 return this._options && a.each(this._options, function(a, d) {
426 c[a] != d && (b[a] = d)
427 }), b
428 }, b.prototype.enter = function(b) {
429 var c = b instanceof this.constructor ? b : a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs." + this.type);
430 return clearTimeout(c.timeout), c.hoverState = "in", c.options.delay && c.options.delay.show ? void(c.timeout = setTimeout(function() {
431 "in" == c.hoverState && c.show()
432 }, c.options.delay.show)) : c.show()
433 }, b.prototype.leave = function(b) {
434 var c = b instanceof this.constructor ? b : a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs." + this.type);
435 return clearTimeout(c.timeout), c.hoverState = "out", c.options.delay && c.options.delay.hide ? void(c.timeout = setTimeout(function() {
436 "out" == c.hoverState && c.hide()
437 }, c.options.delay.hide)) : c.hide()
438 }, b.prototype.show = function() {
439 var b = a.Event("show.bs." + this.type);
440 if (this.hasContent() && this.enabled) {
441 if (this.$element.trigger(b), b.isDefaultPrevented()) return;
442 var c = this,
443 d = this.tip();
444 this.setContent(), this.options.animation && d.addClass("fade");
445 var e = "function" == typeof this.options.placement ? this.options.placement.call(this, d[0], this.$element[0]) : this.options.placement,
446 f = /\s?auto?\s?/i,
447 g = f.test(e);
448 g && (e = e.replace(f, "") || "top"), d.detach().css({
449 top: 0,
450 left: 0,
451 display: "block"
452 }).addClass(e), this.options.container ? d.appendTo(this.options.container) : d.insertAfter(this.$element);
453 var h = this.getPosition(),
454 i = d[0].offsetWidth,
455 j = d[0].offsetHeight;
456 if (g) {
457 var k = this.$element.parent(),
458 l = e,
459 m = document.documentElement.scrollTop || document.body.scrollTop,
460 n = "body" == this.options.container ? window.innerWidth : k.outerWidth(),
461 o = "body" == this.options.container ? window.innerHeight : k.outerHeight(),
462 p = "body" == this.options.container ? 0 : k.offset().left;
463 e = "bottom" == e && h.top + h.height + j - m > o ? "top" : "top" == e && h.top - m - j < 0 ? "bottom" : "right" == e && h.right + i > n ? "left" : "left" == e && h.left - i < p ? "right" : e, d.removeClass(l).addClass(e)
464 }
465 var q = this.getCalculatedOffset(e, h, i, j);
466 this.applyPlacement(q, e), this.hoverState = null;
467 var r = function() {
468 c.$element.trigger("shown.bs." + c.type)
469 };
470 a.support.transition && this.$tip.hasClass("fade") ? d.one(a.support.transition.end, r).emulateTransitionEnd(150) : r()
471 }
472 }, b.prototype.applyPlacement = function(b, c) {
473 var d, e = this.tip(),
474 f = e[0].offsetWidth,
475 g = e[0].offsetHeight,
476 h = parseInt(e.css("margin-top"), 10),
477 i = parseInt(e.css("margin-left"), 10);
478 isNaN(h) && (h = 0), isNaN(i) && (i = 0), b.top = b.top + h, b.left = b.left + i, a.offset.setOffset(e[0], a.extend({
479 using: function(a) {
480 e.css({
481 top: Math.round(a.top),
482 left: Math.round(a.left)
483 })
484 }
485 }, b), 0), e.addClass("in");
486 var j = e[0].offsetWidth,
487 k = e[0].offsetHeight;
488 if ("top" == c && k != g && (d = !0, b.top = b.top + g - k), /bottom|top/.test(c)) {
489 var l = 0;
490 b.left < 0 && (l = -2 * b.left, b.left = 0, e.offset(b), j = e[0].offsetWidth, k = e[0].offsetHeight), this.replaceArrow(l - f + j, j, "left")
491 } else this.replaceArrow(k - g, k, "top");
492 d && e.offset(b)
493 }, b.prototype.replaceArrow = function(a, b, c) {
494 this.arrow().css(c, a ? 50 * (1 - a / b) + "%" : "")
495 }, b.prototype.setContent = function() {
496 var a = this.tip(),
497 b = this.getTitle();
498 a.find(".tooltip-inner")[this.options.html ? "html" : "text"](b), a.removeClass("fade in top bottom left right")
499 }, b.prototype.hide = function() {
500 function b() {
501 "in" != c.hoverState && d.detach(), c.$element.trigger("hidden.bs." + c.type)
502 }
503 var c = this,
504 d = this.tip(),
505 e = a.Event("hide.bs." + this.type);
506 return this.$element.trigger(e), e.isDefaultPrevented() ? void 0 : (d.removeClass("in"), a.support.transition && this.$tip.hasClass("fade") ? d.one(a.support.transition.end, b).emulateTransitionEnd(150) : b(), this.hoverState = null, this)
507 }, b.prototype.fixTitle = function() {
508 var a = this.$element;
509 (a.attr("title") || "string" != typeof a.attr("data-original-title")) && a.attr("data-original-title", a.attr("title") || "").attr("title", "")
510 }, b.prototype.hasContent = function() {
511 return this.getTitle()
512 }, b.prototype.getPosition = function() {
513 var b = this.$element[0];
514 return a.extend({}, "function" == typeof b.getBoundingClientRect ? b.getBoundingClientRect() : {
515 width: b.offsetWidth,
516 height: b.offsetHeight
517 }, this.$element.offset())
518 }, b.prototype.getCalculatedOffset = function(a, b, c, d) {
519 return "bottom" == a ? {
520 top: b.top + b.height,
521 left: b.left + b.width / 2 - c / 2
522 } : "top" == a ? {
523 top: b.top - d,
524 left: b.left + b.width / 2 - c / 2
525 } : "left" == a ? {
526 top: b.top + b.height / 2 - d / 2,
527 left: b.left - c
528 } : {
529 top: b.top + b.height / 2 - d / 2,
530 left: b.left + b.width
531 }
532 }, b.prototype.getTitle = function() {
533 var a, b = this.$element,
534 c = this.options;
535 return a = b.attr("data-original-title") || ("function" == typeof c.title ? c.title.call(b[0]) : c.title)
536 }, b.prototype.tip = function() {
537 return this.$tip = this.$tip || a(this.options.template)
538 }, b.prototype.arrow = function() {
539 return this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow")
540 }, b.prototype.validate = function() {
541 this.$element[0].parentNode || (this.hide(), this.$element = null, this.options = null)
542 }, b.prototype.enable = function() {
543 this.enabled = !0
544 }, b.prototype.disable = function() {
545 this.enabled = !1
546 }, b.prototype.toggleEnabled = function() {
547 this.enabled = !this.enabled
548 }, b.prototype.toggle = function(b) {
549 var c = b ? a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs." + this.type) : this;
550 c.tip().hasClass("in") ? c.leave(c) : c.enter(c)
551 }, b.prototype.destroy = function() {
552 clearTimeout(this.timeout), this.hide().$element.off("." + this.type).removeData("bs." + this.type)
553 };
554 var c = a.fn.tooltip;
555 a.fn.tooltip = function(c) {
556 return this.each(function() {
557 var d = a(this),
558 e = d.data("bs.tooltip"),
559 f = "object" == typeof c && c;
560 (e || "destroy" != c) && (e || d.data("bs.tooltip", e = new b(this, f)), "string" == typeof c && e[c]())
561 })
562 }, a.fn.tooltip.Constructor = b, a.fn.tooltip.noConflict = function() {
563 return a.fn.tooltip = c, this
564 }
565}(jQuery), + function(a) {
566 "use strict";
567 var b = function(a, b) {
568 this.init("popover", a, b)
569 };
570 if (!a.fn.tooltip) throw new Error("Popover requires tooltip.js");
571 b.DEFAULTS = a.extend({}, a.fn.tooltip.Constructor.DEFAULTS, {
572 placement: "right",
573 trigger: "click",
574 content: "",
575 template: '<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
576 }), b.prototype = a.extend({}, a.fn.tooltip.Constructor.prototype), b.prototype.constructor = b, b.prototype.getDefaults = function() {
577 return b.DEFAULTS
578 }, b.prototype.setContent = function() {
579 var a = this.tip(),
580 b = this.getTitle(),
581 c = this.getContent();
582 a.find(".popover-title")[this.options.html ? "html" : "text"](b), a.find(".popover-content")[this.options.html ? "string" == typeof c ? "html" : "append" : "text"](c), a.removeClass("fade top bottom left right in"), a.find(".popover-title").html() || a.find(".popover-title").hide()
583 }, b.prototype.hasContent = function() {
584 return this.getTitle() || this.getContent()
585 }, b.prototype.getContent = function() {
586 var a = this.$element,
587 b = this.options;
588 return a.attr("data-content") || ("function" == typeof b.content ? b.content.call(a[0]) : b.content)
589 }, b.prototype.arrow = function() {
590 return this.$arrow = this.$arrow || this.tip().find(".arrow")
591 }, b.prototype.tip = function() {
592 return this.$tip || (this.$tip = a(this.options.template)), this.$tip
593 };
594 var c = a.fn.popover;
595 a.fn.popover = function(c) {
596 return this.each(function() {
597 var d = a(this),
598 e = d.data("bs.popover"),
599 f = "object" == typeof c && c;
600 (e || "destroy" != c) && (e || d.data("bs.popover", e = new b(this, f)), "string" == typeof c && e[c]())
601 })
602 }, a.fn.popover.Constructor = b, a.fn.popover.noConflict = function() {
603 return a.fn.popover = c, this
604 }
605}(jQuery), + function(a) {
606 "use strict";
607
608 function b(c, d) {
609 var e, f = a.proxy(this.process, this);
610 this.$element = a(a(c).is("body") ? window : c), this.$body = a("body"), this.$scrollElement = this.$element.on("scroll.bs.scroll-spy.data-api", f), this.options = a.extend({}, b.DEFAULTS, d), this.selector = (this.options.target || (e = a(c).attr("href")) && e.replace(/.*(?=#[^\s]+$)/, "") || "") + " .nav li > a", this.offsets = a([]), this.targets = a([]), this.activeTarget = null, this.refresh(), this.process()
611 }
612 b.DEFAULTS = {
613 offset: 10
614 }, b.prototype.refresh = function() {
615 var b = this.$element[0] == window ? "offset" : "position";
616 this.offsets = a([]), this.targets = a([]); {
617 var c = this;
618 this.$body.find(this.selector).map(function() {
619 var d = a(this),
620 e = d.data("target") || d.attr("href"),
621 f = /^#./.test(e) && a(e);
622 return f && f.length && f.is(":visible") && [
623 [f[b]().top + (!a.isWindow(c.$scrollElement.get(0)) && c.$scrollElement.scrollTop()), e]
624 ] || null
625 }).sort(function(a, b) {
626 return a[0] - b[0]
627 }).each(function() {
628 c.offsets.push(this[0]), c.targets.push(this[1])
629 })
630 }
631 }, b.prototype.process = function() {
632 var a, b = this.$scrollElement.scrollTop() + this.options.offset,
633 c = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight,
634 d = c - this.$scrollElement.height(),
635 e = this.offsets,
636 f = this.targets,
637 g = this.activeTarget;
638 if (b >= d) return g != (a = f.last()[0]) && this.activate(a);
639 if (g && b <= e[0]) return g != (a = f[0]) && this.activate(a);
640 for (a = e.length; a--;) g != f[a] && b >= e[a] && (!e[a + 1] || b <= e[a + 1]) && this.activate(f[a])
641 }, b.prototype.activate = function(b) {
642 this.activeTarget = b, a(this.selector).parentsUntil(this.options.target, ".active").removeClass("active");
643 var c = this.selector + '[data-target="' + b + '"],' + this.selector + '[href="' + b + '"]',
644 d = a(c).parents("li").addClass("active");
645 d.parent(".dropdown-menu").length && (d = d.closest("li.dropdown").addClass("active")), d.trigger("activate.bs.scrollspy")
646 };
647 var c = a.fn.scrollspy;
648 a.fn.scrollspy = function(c) {
649 return this.each(function() {
650 var d = a(this),
651 e = d.data("bs.scrollspy"),
652 f = "object" == typeof c && c;
653 e || d.data("bs.scrollspy", e = new b(this, f)), "string" == typeof c && e[c]()
654 })
655 }, a.fn.scrollspy.Constructor = b, a.fn.scrollspy.noConflict = function() {
656 return a.fn.scrollspy = c, this
657 }, a(window).on("load", function() {
658 a('[data-spy="scroll"]').each(function() {
659 var b = a(this);
660 b.scrollspy(b.data())
661 })
662 })
663}(jQuery), + function(a) {
664 "use strict";
665 var b = function(b) {
666 this.element = a(b)
667 };
668 b.prototype.show = function() {
669 var b = this.element,
670 c = b.closest("ul:not(.dropdown-menu)"),
671 d = b.data("target");
672 if (d || (d = b.attr("href"), d = d && d.replace(/.*(?=#[^\s]*$)/, "")), !b.parent("li").hasClass("active")) {
673 var e = c.find(".active:last a")[0],
674 f = a.Event("show.bs.tab", {
675 relatedTarget: e
676 });
677 if (b.trigger(f), !f.isDefaultPrevented()) {
678 var g = a(d);
679 this.activate(b.parent("li"), c), this.activate(g, g.parent(), function() {
680 b.trigger({
681 type: "shown.bs.tab",
682 relatedTarget: e
683 })
684 })
685 }
686 }
687 }, b.prototype.activate = function(b, c, d) {
688 function e() {
689 f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"), b.addClass("active"), g ? (b[0].offsetWidth, b.addClass("in")) : b.removeClass("fade"), b.parent(".dropdown-menu") && b.closest("li.dropdown").addClass("active"), d && d()
690 }
691 var f = c.find("> .active"),
692 g = d && a.support.transition && f.hasClass("fade");
693 g ? f.one(a.support.transition.end, e).emulateTransitionEnd(150) : e(), f.removeClass("in")
694 };
695 var c = a.fn.tab;
696 a.fn.tab = function(c) {
697 return this.each(function() {
698 var d = a(this),
699 e = d.data("bs.tab");
700 e || d.data("bs.tab", e = new b(this)), "string" == typeof c && e[c]()
701 })
702 }, a.fn.tab.Constructor = b, a.fn.tab.noConflict = function() {
703 return a.fn.tab = c, this
704 }, a(document).on("click.bs.tab.data-api", '[data-toggle="tab"], [data-toggle="pill"]', function(b) {
705 b.preventDefault(), a(this).tab("show")
706 })
707}(jQuery), + function(a) {
708 "use strict";
709 var b = function(c, d) {
710 this.options = a.extend({}, b.DEFAULTS, d), this.$window = a(window).on("scroll.bs.affix.data-api", a.proxy(this.checkPosition, this)).on("click.bs.affix.data-api", a.proxy(this.checkPositionWithEventLoop, this)), this.$element = a(c), this.affixed = this.unpin = this.pinnedOffset = null, this.checkPosition()
711 };
712 b.RESET = "affix affix-top affix-bottom", b.DEFAULTS = {
713 offset: 0
714 }, b.prototype.getPinnedOffset = function() {
715 if (this.pinnedOffset) return this.pinnedOffset;
716 this.$element.removeClass(b.RESET).addClass("affix");
717 var a = this.$window.scrollTop(),
718 c = this.$element.offset();
719 return this.pinnedOffset = c.top - a
720 }, b.prototype.checkPositionWithEventLoop = function() {
721 setTimeout(a.proxy(this.checkPosition, this), 1)
722 }, b.prototype.checkPosition = function() {
723 if (this.$element.is(":visible")) {
724 var c = a(document).height(),
725 d = this.$window.scrollTop(),
726 e = this.$element.offset(),
727 f = this.options.offset,
728 g = f.top,
729 h = f.bottom;
730 "top" == this.affixed && (e.top += d), "object" != typeof f && (h = g = f), "function" == typeof g && (g = f.top(this.$element)), "function" == typeof h && (h = f.bottom(this.$element));
731 var i = null != this.unpin && d + this.unpin <= e.top ? !1 : null != h && e.top + this.$element.height() >= c - h ? "bottom" : null != g && g >= d ? "top" : !1;
732 if (this.affixed !== i) {
733 this.unpin && this.$element.css("top", "");
734 var j = "affix" + (i ? "-" + i : ""),
735 k = a.Event(j + ".bs.affix");
736 this.$element.trigger(k), k.isDefaultPrevented() || (this.affixed = i, this.unpin = "bottom" == i ? this.getPinnedOffset() : null, this.$element.removeClass(b.RESET).addClass(j).trigger(a.Event(j.replace("affix", "affixed"))), "bottom" == i && this.$element.offset({
737 top: c - h - this.$element.height()
738 }))
739 }
740 }
741 };
742 var c = a.fn.affix;
743 a.fn.affix = function(c) {
744 return this.each(function() {
745 var d = a(this),
746 e = d.data("bs.affix"),
747 f = "object" == typeof c && c;
748 e || d.data("bs.affix", e = new b(this, f)), "string" == typeof c && e[c]()
749 })
750 }, a.fn.affix.Constructor = b, a.fn.affix.noConflict = function() {
751 return a.fn.affix = c, this
752 }, a(window).on("load", function() {
753 a('[data-spy="affix"]').each(function() {
754 var b = a(this),
755 c = b.data();
756 c.offset = c.offset || {}, c.offsetBottom && (c.offset.bottom = c.offsetBottom), c.offsetTop && (c.offset.top = c.offsetTop), b.affix(c)
757 })
758 })
759}(jQuery); \ No newline at end of file
diff --git a/Back/jinwei.me/mobile/js/jquery.min.js b/Back/jinwei.me/mobile/js/jquery.min.js
new file mode 100644
index 0000000..60479ce
--- /dev/null
+++ b/Back/jinwei.me/mobile/js/jquery.min.js
@@ -0,0 +1,3375 @@
1/*! jQuery v1.11.0 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ ! function(a, b) {
2 "object" == typeof module && "object" == typeof module.exports ? module.exports = a.document ? b(a, !0) : function(a) {
3 if (!a.document) throw new Error("jQuery requires a window with a document");
4 return b(a)
5 } : b(a)
6}("undefined" != typeof window ? window : this, function(a, b) {
7 var c = [],
8 d = c.slice,
9 e = c.concat,
10 f = c.push,
11 g = c.indexOf,
12 h = {},
13 i = h.toString,
14 j = h.hasOwnProperty,
15 k = "".trim,
16 l = {},
17 m = "1.11.0",
18 n = function(a, b) {
19 return new n.fn.init(a, b)
20 },
21 o = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
22 p = /^-ms-/,
23 q = /-([\da-z])/gi,
24 r = function(a, b) {
25 return b.toUpperCase()
26 };
27 n.fn = n.prototype = {
28 jquery: m,
29 constructor: n,
30 selector: "",
31 length: 0,
32 toArray: function() {
33 return d.call(this)
34 },
35 get: function(a) {
36 return null != a ? 0 > a ? this[a + this.length] : this[a] : d.call(this)
37 },
38 pushStack: function(a) {
39 var b = n.merge(this.constructor(), a);
40 return b.prevObject = this, b.context = this.context, b
41 },
42 each: function(a, b) {
43 return n.each(this, a, b)
44 },
45 map: function(a) {
46 return this.pushStack(n.map(this, function(b, c) {
47 return a.call(b, c, b)
48 }))
49 },
50 slice: function() {
51 return this.pushStack(d.apply(this, arguments))
52 },
53 first: function() {
54 return this.eq(0)
55 },
56 last: function() {
57 return this.eq(-1)
58 },
59 eq: function(a) {
60 var b = this.length,
61 c = +a + (0 > a ? b : 0);
62 return this.pushStack(c >= 0 && b > c ? [this[c]] : [])
63 },
64 end: function() {
65 return this.prevObject || this.constructor(null)
66 },
67 push: f,
68 sort: c.sort,
69 splice: c.splice
70 }, n.extend = n.fn.extend = function() {
71 var a, b, c, d, e, f, g = arguments[0] || {},
72 h = 1,
73 i = arguments.length,
74 j = !1;
75 for ("boolean" == typeof g && (j = g, g = arguments[h] || {}, h++), "object" == typeof g || n.isFunction(g) || (g = {}), h === i && (g = this, h--); i > h; h++)
76 if (null != (e = arguments[h]))
77 for (d in e) a = g[d], c = e[d], g !== c && (j && c && (n.isPlainObject(c) || (b = n.isArray(c))) ? (b ? (b = !1, f = a && n.isArray(a) ? a : []) : f = a && n.isPlainObject(a) ? a : {}, g[d] = n.extend(j, f, c)) : void 0 !== c && (g[d] = c));
78 return g
79 }, n.extend({
80 expando: "jQuery" + (m + Math.random()).replace(/\D/g, ""),
81 isReady: !0,
82 error: function(a) {
83 throw new Error(a)
84 },
85 noop: function() {},
86 isFunction: function(a) {
87 return "function" === n.type(a)
88 },
89 isArray: Array.isArray || function(a) {
90 return "array" === n.type(a)
91 },
92 isWindow: function(a) {
93 return null != a && a == a.window
94 },
95 isNumeric: function(a) {
96 return a - parseFloat(a) >= 0
97 },
98 isEmptyObject: function(a) {
99 var b;
100 for (b in a) return !1;
101 return !0
102 },
103 isPlainObject: function(a) {
104 var b;
105 if (!a || "object" !== n.type(a) || a.nodeType || n.isWindow(a)) return !1;
106 try {
107 if (a.constructor && !j.call(a, "constructor") && !j.call(a.constructor.prototype, "isPrototypeOf")) return !1
108 } catch (c) {
109 return !1
110 }
111 if (l.ownLast)
112 for (b in a) return j.call(a, b);
113 for (b in a);
114 return void 0 === b || j.call(a, b)
115 },
116 type: function(a) {
117 return null == a ? a + "" : "object" == typeof a || "function" == typeof a ? h[i.call(a)] || "object" : typeof a
118 },
119 globalEval: function(b) {
120 b && n.trim(b) && (a.execScript || function(b) {
121 a.eval.call(a, b)
122 })(b)
123 },
124 camelCase: function(a) {
125 return a.replace(p, "ms-").replace(q, r)
126 },
127 nodeName: function(a, b) {
128 return a.nodeName && a.nodeName.toLowerCase() === b.toLowerCase()
129 },
130 each: function(a, b, c) {
131 var d, e = 0,
132 f = a.length,
133 g = s(a);
134 if (c) {
135 if (g) {
136 for (; f > e; e++)
137 if (d = b.apply(a[e], c), d === !1) break
138 } else
139 for (e in a)
140 if (d = b.apply(a[e], c), d === !1) break
141 } else if (g) {
142 for (; f > e; e++)
143 if (d = b.call(a[e], e, a[e]), d === !1) break
144 } else
145 for (e in a)
146 if (d = b.call(a[e], e, a[e]), d === !1) break; return a
147 },
148 trim: k && !k.call("\ufeff\xa0") ? function(a) {
149 return null == a ? "" : k.call(a)
150 } : function(a) {
151 return null == a ? "" : (a + "").replace(o, "")
152 },
153 makeArray: function(a, b) {
154 var c = b || [];
155 return null != a && (s(Object(a)) ? n.merge(c, "string" == typeof a ? [a] : a) : f.call(c, a)), c
156 },
157 inArray: function(a, b, c) {
158 var d;
159 if (b) {
160 if (g) return g.call(b, a, c);
161 for (d = b.length, c = c ? 0 > c ? Math.max(0, d + c) : c : 0; d > c; c++)
162 if (c in b && b[c] === a) return c
163 }
164 return -1
165 },
166 merge: function(a, b) {
167 var c = +b.length,
168 d = 0,
169 e = a.length;
170 while (c > d) a[e++] = b[d++];
171 if (c !== c)
172 while (void 0 !== b[d]) a[e++] = b[d++];
173 return a.length = e, a
174 },
175 grep: function(a, b, c) {
176 for (var d, e = [], f = 0, g = a.length, h = !c; g > f; f++) d = !b(a[f], f), d !== h && e.push(a[f]);
177 return e
178 },
179 map: function(a, b, c) {
180 var d, f = 0,
181 g = a.length,
182 h = s(a),
183 i = [];
184 if (h)
185 for (; g > f; f++) d = b(a[f], f, c), null != d && i.push(d);
186 else
187 for (f in a) d = b(a[f], f, c), null != d && i.push(d);
188 return e.apply([], i)
189 },
190 guid: 1,
191 proxy: function(a, b) {
192 var c, e, f;
193 return "string" == typeof b && (f = a[b], b = a, a = f), n.isFunction(a) ? (c = d.call(arguments, 2), e = function() {
194 return a.apply(b || this, c.concat(d.call(arguments)))
195 }, e.guid = a.guid = a.guid || n.guid++, e) : void 0
196 },
197 now: function() {
198 return +new Date
199 },
200 support: l
201 }), n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(a, b) {
202 h["[object " + b + "]"] = b.toLowerCase()
203 });
204
205 function s(a) {
206 var b = a.length,
207 c = n.type(a);
208 return "function" === c || n.isWindow(a) ? !1 : 1 === a.nodeType && b ? !0 : "array" === c || 0 === b || "number" == typeof b && b > 0 && b - 1 in a
209 }
210 var t = function(a) {
211 var b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s = "sizzle" + -new Date,
212 t = a.document,
213 u = 0,
214 v = 0,
215 w = eb(),
216 x = eb(),
217 y = eb(),
218 z = function(a, b) {
219 return a === b && (j = !0), 0
220 },
221 A = "undefined",
222 B = 1 << 31,
223 C = {}.hasOwnProperty,
224 D = [],
225 E = D.pop,
226 F = D.push,
227 G = D.push,
228 H = D.slice,
229 I = D.indexOf || function(a) {
230 for (var b = 0, c = this.length; c > b; b++)
231 if (this[b] === a) return b;
232 return -1
233 },
234 J = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
235 K = "[\\x20\\t\\r\\n\\f]",
236 L = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
237 M = L.replace("w", "w#"),
238 N = "\\[" + K + "*(" + L + ")" + K + "*(?:([*^$|!~]?=)" + K + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + M + ")|)|)" + K + "*\\]",
239 O = ":(" + L + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + N.replace(3, 8) + ")*)|.*)\\)|)",
240 P = new RegExp("^" + K + "+|((?:^|[^\\\\])(?:\\\\.)*)" + K + "+$", "g"),
241 Q = new RegExp("^" + K + "*," + K + "*"),
242 R = new RegExp("^" + K + "*([>+~]|" + K + ")" + K + "*"),
243 S = new RegExp("=" + K + "*([^\\]'\"]*?)" + K + "*\\]", "g"),
244 T = new RegExp(O),
245 U = new RegExp("^" + M + "$"),
246 V = {
247 ID: new RegExp("^#(" + L + ")"),
248 CLASS: new RegExp("^\\.(" + L + ")"),
249 TAG: new RegExp("^(" + L.replace("w", "w*") + ")"),
250 ATTR: new RegExp("^" + N),
251 PSEUDO: new RegExp("^" + O),
252 CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + K + "*(even|odd|(([+-]|)(\\d*)n|)" + K + "*(?:([+-]|)" + K + "*(\\d+)|))" + K + "*\\)|)", "i"),
253 bool: new RegExp("^(?:" + J + ")$", "i"),
254 needsContext: new RegExp("^" + K + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + K + "*((?:-\\d)?\\d*)" + K + "*\\)|)(?=[^-]|$)", "i")
255 },
256 W = /^(?:input|select|textarea|button)$/i,
257 X = /^h\d$/i,
258 Y = /^[^{]+\{\s*\[native \w/,
259 Z = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
260 $ = /[+~]/,
261 _ = /'|\\/g,
262 ab = new RegExp("\\\\([\\da-f]{1,6}" + K + "?|(" + K + ")|.)", "ig"),
263 bb = function(a, b, c) {
264 var d = "0x" + b - 65536;
265 return d !== d || c ? b : 0 > d ? String.fromCharCode(d + 65536) : String.fromCharCode(d >> 10 | 55296, 1023 & d | 56320)
266 };
267 try {
268 G.apply(D = H.call(t.childNodes), t.childNodes), D[t.childNodes.length].nodeType
269 } catch (cb) {
270 G = {
271 apply: D.length ? function(a, b) {
272 F.apply(a, H.call(b))
273 } : function(a, b) {
274 var c = a.length,
275 d = 0;
276 while (a[c++] = b[d++]);
277 a.length = c - 1
278 }
279 }
280 }
281
282 function db(a, b, d, e) {
283 var f, g, h, i, j, m, p, q, u, v;
284 if ((b ? b.ownerDocument || b : t) !== l && k(b), b = b || l, d = d || [], !a || "string" != typeof a) return d;
285 if (1 !== (i = b.nodeType) && 9 !== i) return [];
286 if (n && !e) {
287 if (f = Z.exec(a))
288 if (h = f[1]) {
289 if (9 === i) {
290 if (g = b.getElementById(h), !g || !g.parentNode) return d;
291 if (g.id === h) return d.push(g), d
292 } else if (b.ownerDocument && (g = b.ownerDocument.getElementById(h)) && r(b, g) && g.id === h) return d.push(g), d
293 } else {
294 if (f[2]) return G.apply(d, b.getElementsByTagName(a)), d;
295 if ((h = f[3]) && c.getElementsByClassName && b.getElementsByClassName) return G.apply(d, b.getElementsByClassName(h)), d
296 }
297 if (c.qsa && (!o || !o.test(a))) {
298 if (q = p = s, u = b, v = 9 === i && a, 1 === i && "object" !== b.nodeName.toLowerCase()) {
299 m = ob(a), (p = b.getAttribute("id")) ? q = p.replace(_, "\\$&") : b.setAttribute("id", q), q = "[id='" + q + "'] ", j = m.length;
300 while (j--) m[j] = q + pb(m[j]);
301 u = $.test(a) && mb(b.parentNode) || b, v = m.join(",")
302 }
303 if (v) try {
304 return G.apply(d, u.querySelectorAll(v)), d
305 } catch (w) {} finally {
306 p || b.removeAttribute("id")
307 }
308 }
309 }
310 return xb(a.replace(P, "$1"), b, d, e)
311 }
312
313 function eb() {
314 var a = [];
315
316 function b(c, e) {
317 return a.push(c + " ") > d.cacheLength && delete b[a.shift()], b[c + " "] = e
318 }
319 return b
320 }
321
322 function fb(a) {
323 return a[s] = !0, a
324 }
325
326 function gb(a) {
327 var b = l.createElement("div");
328 try {
329 return !!a(b)
330 } catch (c) {
331 return !1
332 } finally {
333 b.parentNode && b.parentNode.removeChild(b), b = null
334 }
335 }
336
337 function hb(a, b) {
338 var c = a.split("|"),
339 e = a.length;
340 while (e--) d.attrHandle[c[e]] = b
341 }
342
343 function ib(a, b) {
344 var c = b && a,
345 d = c && 1 === a.nodeType && 1 === b.nodeType && (~b.sourceIndex || B) - (~a.sourceIndex || B);
346 if (d) return d;
347 if (c)
348 while (c = c.nextSibling)
349 if (c === b) return -1;
350 return a ? 1 : -1
351 }
352
353 function jb(a) {
354 return function(b) {
355 var c = b.nodeName.toLowerCase();
356 return "input" === c && b.type === a
357 }
358 }
359
360 function kb(a) {
361 return function(b) {
362 var c = b.nodeName.toLowerCase();
363 return ("input" === c || "button" === c) && b.type === a
364 }
365 }
366
367 function lb(a) {
368 return fb(function(b) {
369 return b = +b, fb(function(c, d) {
370 var e, f = a([], c.length, b),
371 g = f.length;
372 while (g--) c[e = f[g]] && (c[e] = !(d[e] = c[e]))
373 })
374 })
375 }
376
377 function mb(a) {
378 return a && typeof a.getElementsByTagName !== A && a
379 }
380 c = db.support = {}, f = db.isXML = function(a) {
381 var b = a && (a.ownerDocument || a).documentElement;
382 return b ? "HTML" !== b.nodeName : !1
383 }, k = db.setDocument = function(a) {
384 var b, e = a ? a.ownerDocument || a : t,
385 g = e.defaultView;
386 return e !== l && 9 === e.nodeType && e.documentElement ? (l = e, m = e.documentElement, n = !f(e), g && g !== g.top && (g.addEventListener ? g.addEventListener("unload", function() {
387 k()
388 }, !1) : g.attachEvent && g.attachEvent("onunload", function() {
389 k()
390 })), c.attributes = gb(function(a) {
391 return a.className = "i", !a.getAttribute("className")
392 }), c.getElementsByTagName = gb(function(a) {
393 return a.appendChild(e.createComment("")), !a.getElementsByTagName("*").length
394 }), c.getElementsByClassName = Y.test(e.getElementsByClassName) && gb(function(a) {
395 return a.innerHTML = "<div class='a'></div><div class='a i'></div>", a.firstChild.className = "i", 2 === a.getElementsByClassName("i").length
396 }), c.getById = gb(function(a) {
397 return m.appendChild(a).id = s, !e.getElementsByName || !e.getElementsByName(s).length
398 }), c.getById ? (d.find.ID = function(a, b) {
399 if (typeof b.getElementById !== A && n) {
400 var c = b.getElementById(a);
401 return c && c.parentNode ? [c] : []
402 }
403 }, d.filter.ID = function(a) {
404 var b = a.replace(ab, bb);
405 return function(a) {
406 return a.getAttribute("id") === b
407 }
408 }) : (delete d.find.ID, d.filter.ID = function(a) {
409 var b = a.replace(ab, bb);
410 return function(a) {
411 var c = typeof a.getAttributeNode !== A && a.getAttributeNode("id");
412 return c && c.value === b
413 }
414 }), d.find.TAG = c.getElementsByTagName ? function(a, b) {
415 return typeof b.getElementsByTagName !== A ? b.getElementsByTagName(a) : void 0
416 } : function(a, b) {
417 var c, d = [],
418 e = 0,
419 f = b.getElementsByTagName(a);
420 if ("*" === a) {
421 while (c = f[e++]) 1 === c.nodeType && d.push(c);
422 return d
423 }
424 return f
425 }, d.find.CLASS = c.getElementsByClassName && function(a, b) {
426 return typeof b.getElementsByClassName !== A && n ? b.getElementsByClassName(a) : void 0
427 }, p = [], o = [], (c.qsa = Y.test(e.querySelectorAll)) && (gb(function(a) {
428 a.innerHTML = "<select t=''><option selected=''></option></select>", a.querySelectorAll("[t^='']").length && o.push("[*^$]=" + K + "*(?:''|\"\")"), a.querySelectorAll("[selected]").length || o.push("\\[" + K + "*(?:value|" + J + ")"), a.querySelectorAll(":checked").length || o.push(":checked")
429 }), gb(function(a) {
430 var b = e.createElement("input");
431 b.setAttribute("type", "hidden"), a.appendChild(b).setAttribute("name", "D"), a.querySelectorAll("[name=d]").length && o.push("name" + K + "*[*^$|!~]?="), a.querySelectorAll(":enabled").length || o.push(":enabled", ":disabled"), a.querySelectorAll("*,:x"), o.push(",.*:")
432 })), (c.matchesSelector = Y.test(q = m.webkitMatchesSelector || m.mozMatchesSelector || m.oMatchesSelector || m.msMatchesSelector)) && gb(function(a) {
433 c.disconnectedMatch = q.call(a, "div"), q.call(a, "[s!='']:x"), p.push("!=", O)
434 }), o = o.length && new RegExp(o.join("|")), p = p.length && new RegExp(p.join("|")), b = Y.test(m.compareDocumentPosition), r = b || Y.test(m.contains) ? function(a, b) {
435 var c = 9 === a.nodeType ? a.documentElement : a,
436 d = b && b.parentNode;
437 return a === d || !(!d || 1 !== d.nodeType || !(c.contains ? c.contains(d) : a.compareDocumentPosition && 16 & a.compareDocumentPosition(d)))
438 } : function(a, b) {
439 if (b)
440 while (b = b.parentNode)
441 if (b === a) return !0;
442 return !1
443 }, z = b ? function(a, b) {
444 if (a === b) return j = !0, 0;
445 var d = !a.compareDocumentPosition - !b.compareDocumentPosition;
446 return d ? d : (d = (a.ownerDocument || a) === (b.ownerDocument || b) ? a.compareDocumentPosition(b) : 1, 1 & d || !c.sortDetached && b.compareDocumentPosition(a) === d ? a === e || a.ownerDocument === t && r(t, a) ? -1 : b === e || b.ownerDocument === t && r(t, b) ? 1 : i ? I.call(i, a) - I.call(i, b) : 0 : 4 & d ? -1 : 1)
447 } : function(a, b) {
448 if (a === b) return j = !0, 0;
449 var c, d = 0,
450 f = a.parentNode,
451 g = b.parentNode,
452 h = [a],
453 k = [b];
454 if (!f || !g) return a === e ? -1 : b === e ? 1 : f ? -1 : g ? 1 : i ? I.call(i, a) - I.call(i, b) : 0;
455 if (f === g) return ib(a, b);
456 c = a;
457 while (c = c.parentNode) h.unshift(c);
458 c = b;
459 while (c = c.parentNode) k.unshift(c);
460 while (h[d] === k[d]) d++;
461 return d ? ib(h[d], k[d]) : h[d] === t ? -1 : k[d] === t ? 1 : 0
462 }, e) : l
463 }, db.matches = function(a, b) {
464 return db(a, null, null, b)
465 }, db.matchesSelector = function(a, b) {
466 if ((a.ownerDocument || a) !== l && k(a), b = b.replace(S, "='$1']"), !(!c.matchesSelector || !n || p && p.test(b) || o && o.test(b))) try {
467 var d = q.call(a, b);
468 if (d || c.disconnectedMatch || a.document && 11 !== a.document.nodeType) return d
469 } catch (e) {}
470 return db(b, l, null, [a]).length > 0
471 }, db.contains = function(a, b) {
472 return (a.ownerDocument || a) !== l && k(a), r(a, b)
473 }, db.attr = function(a, b) {
474 (a.ownerDocument || a) !== l && k(a);
475 var e = d.attrHandle[b.toLowerCase()],
476 f = e && C.call(d.attrHandle, b.toLowerCase()) ? e(a, b, !n) : void 0;
477 return void 0 !== f ? f : c.attributes || !n ? a.getAttribute(b) : (f = a.getAttributeNode(b)) && f.specified ? f.value : null
478 }, db.error = function(a) {
479 throw new Error("Syntax error, unrecognized expression: " + a)
480 }, db.uniqueSort = function(a) {
481 var b, d = [],
482 e = 0,
483 f = 0;
484 if (j = !c.detectDuplicates, i = !c.sortStable && a.slice(0), a.sort(z), j) {
485 while (b = a[f++]) b === a[f] && (e = d.push(f));
486 while (e--) a.splice(d[e], 1)
487 }
488 return i = null, a
489 }, e = db.getText = function(a) {
490 var b, c = "",
491 d = 0,
492 f = a.nodeType;
493 if (f) {
494 if (1 === f || 9 === f || 11 === f) {
495 if ("string" == typeof a.textContent) return a.textContent;
496 for (a = a.firstChild; a; a = a.nextSibling) c += e(a)
497 } else if (3 === f || 4 === f) return a.nodeValue
498 } else
499 while (b = a[d++]) c += e(b);
500 return c
501 }, d = db.selectors = {
502 cacheLength: 50,
503 createPseudo: fb,
504 match: V,
505 attrHandle: {},
506 find: {},
507 relative: {
508 ">": {
509 dir: "parentNode",
510 first: !0
511 },
512 " ": {
513 dir: "parentNode"
514 },
515 "+": {
516 dir: "previousSibling",
517 first: !0
518 },
519 "~": {
520 dir: "previousSibling"
521 }
522 },
523 preFilter: {
524 ATTR: function(a) {
525 return a[1] = a[1].replace(ab, bb), a[3] = (a[4] || a[5] || "").replace(ab, bb), "~=" === a[2] && (a[3] = " " + a[3] + " "), a.slice(0, 4)
526 },
527 CHILD: function(a) {
528 return a[1] = a[1].toLowerCase(), "nth" === a[1].slice(0, 3) ? (a[3] || db.error(a[0]), a[4] = +(a[4] ? a[5] + (a[6] || 1) : 2 * ("even" === a[3] || "odd" === a[3])), a[5] = +(a[7] + a[8] || "odd" === a[3])) : a[3] && db.error(a[0]), a
529 },
530 PSEUDO: function(a) {
531 var b, c = !a[5] && a[2];
532 return V.CHILD.test(a[0]) ? null : (a[3] && void 0 !== a[4] ? a[2] = a[4] : c && T.test(c) && (b = ob(c, !0)) && (b = c.indexOf(")", c.length - b) - c.length) && (a[0] = a[0].slice(0, b), a[2] = c.slice(0, b)), a.slice(0, 3))
533 }
534 },
535 filter: {
536 TAG: function(a) {
537 var b = a.replace(ab, bb).toLowerCase();
538 return "*" === a ? function() {
539 return !0
540 } : function(a) {
541 return a.nodeName && a.nodeName.toLowerCase() === b
542 }
543 },
544 CLASS: function(a) {
545 var b = w[a + " "];
546 return b || (b = new RegExp("(^|" + K + ")" + a + "(" + K + "|$)")) && w(a, function(a) {
547 return b.test("string" == typeof a.className && a.className || typeof a.getAttribute !== A && a.getAttribute("class") || "")
548 })
549 },
550 ATTR: function(a, b, c) {
551 return function(d) {
552 var e = db.attr(d, a);
553 return null == e ? "!=" === b : b ? (e += "", "=" === b ? e === c : "!=" === b ? e !== c : "^=" === b ? c && 0 === e.indexOf(c) : "*=" === b ? c && e.indexOf(c) > -1 : "$=" === b ? c && e.slice(-c.length) === c : "~=" === b ? (" " + e + " ").indexOf(c) > -1 : "|=" === b ? e === c || e.slice(0, c.length + 1) === c + "-" : !1) : !0
554 }
555 },
556 CHILD: function(a, b, c, d, e) {
557 var f = "nth" !== a.slice(0, 3),
558 g = "last" !== a.slice(-4),
559 h = "of-type" === b;
560 return 1 === d && 0 === e ? function(a) {
561 return !!a.parentNode
562 } : function(b, c, i) {
563 var j, k, l, m, n, o, p = f !== g ? "nextSibling" : "previousSibling",
564 q = b.parentNode,
565 r = h && b.nodeName.toLowerCase(),
566 t = !i && !h;
567 if (q) {
568 if (f) {
569 while (p) {
570 l = b;
571 while (l = l[p])
572 if (h ? l.nodeName.toLowerCase() === r : 1 === l.nodeType) return !1;
573 o = p = "only" === a && !o && "nextSibling"
574 }
575 return !0
576 }
577 if (o = [g ? q.firstChild : q.lastChild], g && t) {
578 k = q[s] || (q[s] = {}), j = k[a] || [], n = j[0] === u && j[1], m = j[0] === u && j[2], l = n && q.childNodes[n];
579 while (l = ++n && l && l[p] || (m = n = 0) || o.pop())
580 if (1 === l.nodeType && ++m && l === b) {
581 k[a] = [u, n, m];
582 break
583 }
584 } else if (t && (j = (b[s] || (b[s] = {}))[a]) && j[0] === u) m = j[1];
585 else
586 while (l = ++n && l && l[p] || (m = n = 0) || o.pop())
587 if ((h ? l.nodeName.toLowerCase() === r : 1 === l.nodeType) && ++m && (t && ((l[s] || (l[s] = {}))[a] = [u, m]), l === b)) break; return m -= e, m === d || m % d === 0 && m / d >= 0
588 }
589 }
590 },
591 PSEUDO: function(a, b) {
592 var c, e = d.pseudos[a] || d.setFilters[a.toLowerCase()] || db.error("unsupported pseudo: " + a);
593 return e[s] ? e(b) : e.length > 1 ? (c = [a, a, "", b], d.setFilters.hasOwnProperty(a.toLowerCase()) ? fb(function(a, c) {
594 var d, f = e(a, b),
595 g = f.length;
596 while (g--) d = I.call(a, f[g]), a[d] = !(c[d] = f[g])
597 }) : function(a) {
598 return e(a, 0, c)
599 }) : e
600 }
601 },
602 pseudos: {
603 not: fb(function(a) {
604 var b = [],
605 c = [],
606 d = g(a.replace(P, "$1"));
607 return d[s] ? fb(function(a, b, c, e) {
608 var f, g = d(a, null, e, []),
609 h = a.length;
610 while (h--)(f = g[h]) && (a[h] = !(b[h] = f))
611 }) : function(a, e, f) {
612 return b[0] = a, d(b, null, f, c), !c.pop()
613 }
614 }),
615 has: fb(function(a) {
616 return function(b) {
617 return db(a, b).length > 0
618 }
619 }),
620 contains: fb(function(a) {
621 return function(b) {
622 return (b.textContent || b.innerText || e(b)).indexOf(a) > -1
623 }
624 }),
625 lang: fb(function(a) {
626 return U.test(a || "") || db.error("unsupported lang: " + a), a = a.replace(ab, bb).toLowerCase(),
627 function(b) {
628 var c;
629 do
630 if (c = n ? b.lang : b.getAttribute("xml:lang") || b.getAttribute("lang")) return c = c.toLowerCase(), c === a || 0 === c.indexOf(a + "-");
631 while ((b = b.parentNode) && 1 === b.nodeType);
632 return !1
633 }
634 }),
635 target: function(b) {
636 var c = a.location && a.location.hash;
637 return c && c.slice(1) === b.id
638 },
639 root: function(a) {
640 return a === m
641 },
642 focus: function(a) {
643 return a === l.activeElement && (!l.hasFocus || l.hasFocus()) && !!(a.type || a.href || ~a.tabIndex)
644 },
645 enabled: function(a) {
646 return a.disabled === !1
647 },
648 disabled: function(a) {
649 return a.disabled === !0
650 },
651 checked: function(a) {
652 var b = a.nodeName.toLowerCase();
653 return "input" === b && !!a.checked || "option" === b && !!a.selected
654 },
655 selected: function(a) {
656 return a.parentNode && a.parentNode.selectedIndex, a.selected === !0
657 },
658 empty: function(a) {
659 for (a = a.firstChild; a; a = a.nextSibling)
660 if (a.nodeType < 6) return !1;
661 return !0
662 },
663 parent: function(a) {
664 return !d.pseudos.empty(a)
665 },
666 header: function(a) {
667 return X.test(a.nodeName)
668 },
669 input: function(a) {
670 return W.test(a.nodeName)
671 },
672 button: function(a) {
673 var b = a.nodeName.toLowerCase();
674 return "input" === b && "button" === a.type || "button" === b
675 },
676 text: function(a) {
677 var b;
678 return "input" === a.nodeName.toLowerCase() && "text" === a.type && (null == (b = a.getAttribute("type")) || "text" === b.toLowerCase())
679 },
680 first: lb(function() {
681 return [0]
682 }),
683 last: lb(function(a, b) {
684 return [b - 1]
685 }),
686 eq: lb(function(a, b, c) {
687 return [0 > c ? c + b : c]
688 }),
689 even: lb(function(a, b) {
690 for (var c = 0; b > c; c += 2) a.push(c);
691 return a
692 }),
693 odd: lb(function(a, b) {
694 for (var c = 1; b > c; c += 2) a.push(c);
695 return a
696 }),
697 lt: lb(function(a, b, c) {
698 for (var d = 0 > c ? c + b : c; --d >= 0;) a.push(d);
699 return a
700 }),
701 gt: lb(function(a, b, c) {
702 for (var d = 0 > c ? c + b : c; ++d < b;) a.push(d);
703 return a
704 })
705 }
706 }, d.pseudos.nth = d.pseudos.eq;
707 for (b in {
708 radio: !0,
709 checkbox: !0,
710 file: !0,
711 password: !0,
712 image: !0
713 }) d.pseudos[b] = jb(b);
714 for (b in {
715 submit: !0,
716 reset: !0
717 }) d.pseudos[b] = kb(b);
718
719 function nb() {}
720 nb.prototype = d.filters = d.pseudos, d.setFilters = new nb;
721
722 function ob(a, b) {
723 var c, e, f, g, h, i, j, k = x[a + " "];
724 if (k) return b ? 0 : k.slice(0);
725 h = a, i = [], j = d.preFilter;
726 while (h) {
727 (!c || (e = Q.exec(h))) && (e && (h = h.slice(e[0].length) || h), i.push(f = [])), c = !1, (e = R.exec(h)) && (c = e.shift(), f.push({
728 value: c,
729 type: e[0].replace(P, " ")
730 }), h = h.slice(c.length));
731 for (g in d.filter)!(e = V[g].exec(h)) || j[g] && !(e = j[g](e)) || (c = e.shift(), f.push({
732 value: c,
733 type: g,
734 matches: e
735 }), h = h.slice(c.length));
736 if (!c) break
737 }
738 return b ? h.length : h ? db.error(a) : x(a, i).slice(0)
739 }
740
741 function pb(a) {
742 for (var b = 0, c = a.length, d = ""; c > b; b++) d += a[b].value;
743 return d
744 }
745
746 function qb(a, b, c) {
747 var d = b.dir,
748 e = c && "parentNode" === d,
749 f = v++;
750 return b.first ? function(b, c, f) {
751 while (b = b[d])
752 if (1 === b.nodeType || e) return a(b, c, f)
753 } : function(b, c, g) {
754 var h, i, j = [u, f];
755 if (g) {
756 while (b = b[d])
757 if ((1 === b.nodeType || e) && a(b, c, g)) return !0
758 } else
759 while (b = b[d])
760 if (1 === b.nodeType || e) {
761 if (i = b[s] || (b[s] = {}), (h = i[d]) && h[0] === u && h[1] === f) return j[2] = h[2];
762 if (i[d] = j, j[2] = a(b, c, g)) return !0
763 }
764 }
765 }
766
767 function rb(a) {
768 return a.length > 1 ? function(b, c, d) {
769 var e = a.length;
770 while (e--)
771 if (!a[e](b, c, d)) return !1;
772 return !0
773 } : a[0]
774 }
775
776 function sb(a, b, c, d, e) {
777 for (var f, g = [], h = 0, i = a.length, j = null != b; i > h; h++)(f = a[h]) && (!c || c(f, d, e)) && (g.push(f), j && b.push(h));
778 return g
779 }
780
781 function tb(a, b, c, d, e, f) {
782 return d && !d[s] && (d = tb(d)), e && !e[s] && (e = tb(e, f)), fb(function(f, g, h, i) {
783 var j, k, l, m = [],
784 n = [],
785 o = g.length,
786 p = f || wb(b || "*", h.nodeType ? [h] : h, []),
787 q = !a || !f && b ? p : sb(p, m, a, h, i),
788 r = c ? e || (f ? a : o || d) ? [] : g : q;
789 if (c && c(q, r, h, i), d) {
790 j = sb(r, n), d(j, [], h, i), k = j.length;
791 while (k--)(l = j[k]) && (r[n[k]] = !(q[n[k]] = l))
792 }
793 if (f) {
794 if (e || a) {
795 if (e) {
796 j = [], k = r.length;
797 while (k--)(l = r[k]) && j.push(q[k] = l);
798 e(null, r = [], j, i)
799 }
800 k = r.length;
801 while (k--)(l = r[k]) && (j = e ? I.call(f, l) : m[k]) > -1 && (f[j] = !(g[j] = l))
802 }
803 } else r = sb(r === g ? r.splice(o, r.length) : r), e ? e(null, g, r, i) : G.apply(g, r)
804 })
805 }
806
807 function ub(a) {
808 for (var b, c, e, f = a.length, g = d.relative[a[0].type], i = g || d.relative[" "], j = g ? 1 : 0, k = qb(function(a) {
809 return a === b
810 }, i, !0), l = qb(function(a) {
811 return I.call(b, a) > -1
812 }, i, !0), m = [
813 function(a, c, d) {
814 return !g && (d || c !== h) || ((b = c).nodeType ? k(a, c, d) : l(a, c, d))
815 }
816 ]; f > j; j++)
817 if (c = d.relative[a[j].type]) m = [qb(rb(m), c)];
818 else {
819 if (c = d.filter[a[j].type].apply(null, a[j].matches), c[s]) {
820 for (e = ++j; f > e; e++)
821 if (d.relative[a[e].type]) break;
822 return tb(j > 1 && rb(m), j > 1 && pb(a.slice(0, j - 1).concat({
823 value: " " === a[j - 2].type ? "*" : ""
824 })).replace(P, "$1"), c, e > j && ub(a.slice(j, e)), f > e && ub(a = a.slice(e)), f > e && pb(a))
825 }
826 m.push(c)
827 }
828 return rb(m)
829 }
830
831 function vb(a, b) {
832 var c = b.length > 0,
833 e = a.length > 0,
834 f = function(f, g, i, j, k) {
835 var m, n, o, p = 0,
836 q = "0",
837 r = f && [],
838 s = [],
839 t = h,
840 v = f || e && d.find.TAG("*", k),
841 w = u += null == t ? 1 : Math.random() || .1,
842 x = v.length;
843 for (k && (h = g !== l && g); q !== x && null != (m = v[q]); q++) {
844 if (e && m) {
845 n = 0;
846 while (o = a[n++])
847 if (o(m, g, i)) {
848 j.push(m);
849 break
850 }
851 k && (u = w)
852 }
853 c && ((m = !o && m) && p--, f && r.push(m))
854 }
855 if (p += q, c && q !== p) {
856 n = 0;
857 while (o = b[n++]) o(r, s, g, i);
858 if (f) {
859 if (p > 0)
860 while (q--) r[q] || s[q] || (s[q] = E.call(j));
861 s = sb(s)
862 }
863 G.apply(j, s), k && !f && s.length > 0 && p + b.length > 1 && db.uniqueSort(j)
864 }
865 return k && (u = w, h = t), r
866 };
867 return c ? fb(f) : f
868 }
869 g = db.compile = function(a, b) {
870 var c, d = [],
871 e = [],
872 f = y[a + " "];
873 if (!f) {
874 b || (b = ob(a)), c = b.length;
875 while (c--) f = ub(b[c]), f[s] ? d.push(f) : e.push(f);
876 f = y(a, vb(e, d))
877 }
878 return f
879 };
880
881 function wb(a, b, c) {
882 for (var d = 0, e = b.length; e > d; d++) db(a, b[d], c);
883 return c
884 }
885
886 function xb(a, b, e, f) {
887 var h, i, j, k, l, m = ob(a);
888 if (!f && 1 === m.length) {
889 if (i = m[0] = m[0].slice(0), i.length > 2 && "ID" === (j = i[0]).type && c.getById && 9 === b.nodeType && n && d.relative[i[1].type]) {
890 if (b = (d.find.ID(j.matches[0].replace(ab, bb), b) || [])[0], !b) return e;
891 a = a.slice(i.shift().value.length)
892 }
893 h = V.needsContext.test(a) ? 0 : i.length;
894 while (h--) {
895 if (j = i[h], d.relative[k = j.type]) break;
896 if ((l = d.find[k]) && (f = l(j.matches[0].replace(ab, bb), $.test(i[0].type) && mb(b.parentNode) || b))) {
897 if (i.splice(h, 1), a = f.length && pb(i), !a) return G.apply(e, f), e;
898 break
899 }
900 }
901 }
902 return g(a, m)(f, b, !n, e, $.test(a) && mb(b.parentNode) || b), e
903 }
904 return c.sortStable = s.split("").sort(z).join("") === s, c.detectDuplicates = !!j, k(), c.sortDetached = gb(function(a) {
905 return 1 & a.compareDocumentPosition(l.createElement("div"))
906 }), gb(function(a) {
907 return a.innerHTML = "<a href='#'></a>", "#" === a.firstChild.getAttribute("href")
908 }) || hb("type|href|height|width", function(a, b, c) {
909 return c ? void 0 : a.getAttribute(b, "type" === b.toLowerCase() ? 1 : 2)
910 }), c.attributes && gb(function(a) {
911 return a.innerHTML = "<input/>", a.firstChild.setAttribute("value", ""), "" === a.firstChild.getAttribute("value")
912 }) || hb("value", function(a, b, c) {
913 return c || "input" !== a.nodeName.toLowerCase() ? void 0 : a.defaultValue
914 }), gb(function(a) {
915 return null == a.getAttribute("disabled")
916 }) || hb(J, function(a, b, c) {
917 var d;
918 return c ? void 0 : a[b] === !0 ? b.toLowerCase() : (d = a.getAttributeNode(b)) && d.specified ? d.value : null
919 }), db
920 }(a);
921 n.find = t, n.expr = t.selectors, n.expr[":"] = n.expr.pseudos, n.unique = t.uniqueSort, n.text = t.getText, n.isXMLDoc = t.isXML, n.contains = t.contains;
922 var u = n.expr.match.needsContext,
923 v = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
924 w = /^.[^:#\[\.,]*$/;
925
926 function x(a, b, c) {
927 if (n.isFunction(b)) return n.grep(a, function(a, d) {
928 return !!b.call(a, d, a) !== c
929 });
930 if (b.nodeType) return n.grep(a, function(a) {
931 return a === b !== c
932 });
933 if ("string" == typeof b) {
934 if (w.test(b)) return n.filter(b, a, c);
935 b = n.filter(b, a)
936 }
937 return n.grep(a, function(a) {
938 return n.inArray(a, b) >= 0 !== c
939 })
940 }
941 n.filter = function(a, b, c) {
942 var d = b[0];
943 return c && (a = ":not(" + a + ")"), 1 === b.length && 1 === d.nodeType ? n.find.matchesSelector(d, a) ? [d] : [] : n.find.matches(a, n.grep(b, function(a) {
944 return 1 === a.nodeType
945 }))
946 }, n.fn.extend({
947 find: function(a) {
948 var b, c = [],
949 d = this,
950 e = d.length;
951 if ("string" != typeof a) return this.pushStack(n(a).filter(function() {
952 for (b = 0; e > b; b++)
953 if (n.contains(d[b], this)) return !0
954 }));
955 for (b = 0; e > b; b++) n.find(a, d[b], c);
956 return c = this.pushStack(e > 1 ? n.unique(c) : c), c.selector = this.selector ? this.selector + " " + a : a, c
957 },
958 filter: function(a) {
959 return this.pushStack(x(this, a || [], !1))
960 },
961 not: function(a) {
962 return this.pushStack(x(this, a || [], !0))
963 },
964 is: function(a) {
965 return !!x(this, "string" == typeof a && u.test(a) ? n(a) : a || [], !1).length
966 }
967 });
968 var y, z = a.document,
969 A = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
970 B = n.fn.init = function(a, b) {
971 var c, d;
972 if (!a) return this;
973 if ("string" == typeof a) {
974 if (c = "<" === a.charAt(0) && ">" === a.charAt(a.length - 1) && a.length >= 3 ? [null, a, null] : A.exec(a), !c || !c[1] && b) return !b || b.jquery ? (b || y).find(a) : this.constructor(b).find(a);
975 if (c[1]) {
976 if (b = b instanceof n ? b[0] : b, n.merge(this, n.parseHTML(c[1], b && b.nodeType ? b.ownerDocument || b : z, !0)), v.test(c[1]) && n.isPlainObject(b))
977 for (c in b) n.isFunction(this[c]) ? this[c](b[c]) : this.attr(c, b[c]);
978 return this
979 }
980 if (d = z.getElementById(c[2]), d && d.parentNode) {
981 if (d.id !== c[2]) return y.find(a);
982 this.length = 1, this[0] = d
983 }
984 return this.context = z, this.selector = a, this
985 }
986 return a.nodeType ? (this.context = this[0] = a, this.length = 1, this) : n.isFunction(a) ? "undefined" != typeof y.ready ? y.ready(a) : a(n) : (void 0 !== a.selector && (this.selector = a.selector, this.context = a.context), n.makeArray(a, this))
987 };
988 B.prototype = n.fn, y = n(z);
989 var C = /^(?:parents|prev(?:Until|All))/,
990 D = {
991 children: !0,
992 contents: !0,
993 next: !0,
994 prev: !0
995 };
996 n.extend({
997 dir: function(a, b, c) {
998 var d = [],
999 e = a[b];
1000 while (e && 9 !== e.nodeType && (void 0 === c || 1 !== e.nodeType || !n(e).is(c))) 1 === e.nodeType && d.push(e), e = e[b];
1001 return d
1002 },
1003 sibling: function(a, b) {
1004 for (var c = []; a; a = a.nextSibling) 1 === a.nodeType && a !== b && c.push(a);
1005 return c
1006 }
1007 }), n.fn.extend({
1008 has: function(a) {
1009 var b, c = n(a, this),
1010 d = c.length;
1011 return this.filter(function() {
1012 for (b = 0; d > b; b++)
1013 if (n.contains(this, c[b])) return !0
1014 })
1015 },
1016 closest: function(a, b) {
1017 for (var c, d = 0, e = this.length, f = [], g = u.test(a) || "string" != typeof a ? n(a, b || this.context) : 0; e > d; d++)
1018 for (c = this[d]; c && c !== b; c = c.parentNode)
1019 if (c.nodeType < 11 && (g ? g.index(c) > -1 : 1 === c.nodeType && n.find.matchesSelector(c, a))) {
1020 f.push(c);
1021 break
1022 }
1023 return this.pushStack(f.length > 1 ? n.unique(f) : f)
1024 },
1025 index: function(a) {
1026 return a ? "string" == typeof a ? n.inArray(this[0], n(a)) : n.inArray(a.jquery ? a[0] : a, this) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1
1027 },
1028 add: function(a, b) {
1029 return this.pushStack(n.unique(n.merge(this.get(), n(a, b))))
1030 },
1031 addBack: function(a) {
1032 return this.add(null == a ? this.prevObject : this.prevObject.filter(a))
1033 }
1034 });
1035
1036 function E(a, b) {
1037 do a = a[b]; while (a && 1 !== a.nodeType);
1038 return a
1039 }
1040 n.each({
1041 parent: function(a) {
1042 var b = a.parentNode;
1043 return b && 11 !== b.nodeType ? b : null
1044 },
1045 parents: function(a) {
1046 return n.dir(a, "parentNode")
1047 },
1048 parentsUntil: function(a, b, c) {
1049 return n.dir(a, "parentNode", c)
1050 },
1051 next: function(a) {
1052 return E(a, "nextSibling")
1053 },
1054 prev: function(a) {
1055 return E(a, "previousSibling")
1056 },
1057 nextAll: function(a) {
1058 return n.dir(a, "nextSibling")
1059 },
1060 prevAll: function(a) {
1061 return n.dir(a, "previousSibling")
1062 },
1063 nextUntil: function(a, b, c) {
1064 return n.dir(a, "nextSibling", c)
1065 },
1066 prevUntil: function(a, b, c) {
1067 return n.dir(a, "previousSibling", c)
1068 },
1069 siblings: function(a) {
1070 return n.sibling((a.parentNode || {}).firstChild, a)
1071 },
1072 children: function(a) {
1073 return n.sibling(a.firstChild)
1074 },
1075 contents: function(a) {
1076 return n.nodeName(a, "iframe") ? a.contentDocument || a.contentWindow.document : n.merge([], a.childNodes)
1077 }
1078 }, function(a, b) {
1079 n.fn[a] = function(c, d) {
1080 var e = n.map(this, b, c);
1081 return "Until" !== a.slice(-5) && (d = c), d && "string" == typeof d && (e = n.filter(d, e)), this.length > 1 && (D[a] || (e = n.unique(e)), C.test(a) && (e = e.reverse())), this.pushStack(e)
1082 }
1083 });
1084 var F = /\S+/g,
1085 G = {};
1086
1087 function H(a) {
1088 var b = G[a] = {};
1089 return n.each(a.match(F) || [], function(a, c) {
1090 b[c] = !0
1091 }), b
1092 }
1093 n.Callbacks = function(a) {
1094 a = "string" == typeof a ? G[a] || H(a) : n.extend({}, a);
1095 var b, c, d, e, f, g, h = [],
1096 i = !a.once && [],
1097 j = function(l) {
1098 for (c = a.memory && l, d = !0, f = g || 0, g = 0, e = h.length, b = !0; h && e > f; f++)
1099 if (h[f].apply(l[0], l[1]) === !1 && a.stopOnFalse) {
1100 c = !1;
1101 break
1102 }
1103 b = !1, h && (i ? i.length && j(i.shift()) : c ? h = [] : k.disable())
1104 },
1105 k = {
1106 add: function() {
1107 if (h) {
1108 var d = h.length;
1109 ! function f(b) {
1110 n.each(b, function(b, c) {
1111 var d = n.type(c);
1112 "function" === d ? a.unique && k.has(c) || h.push(c) : c && c.length && "string" !== d && f(c)
1113 })
1114 }(arguments), b ? e = h.length : c && (g = d, j(c))
1115 }
1116 return this
1117 },
1118 remove: function() {
1119 return h && n.each(arguments, function(a, c) {
1120 var d;
1121 while ((d = n.inArray(c, h, d)) > -1) h.splice(d, 1), b && (e >= d && e--, f >= d && f--)
1122 }), this
1123 },
1124 has: function(a) {
1125 return a ? n.inArray(a, h) > -1 : !(!h || !h.length)
1126 },
1127 empty: function() {
1128 return h = [], e = 0, this
1129 },
1130 disable: function() {
1131 return h = i = c = void 0, this
1132 },
1133 disabled: function() {
1134 return !h
1135 },
1136 lock: function() {
1137 return i = void 0, c || k.disable(), this
1138 },
1139 locked: function() {
1140 return !i
1141 },
1142 fireWith: function(a, c) {
1143 return !h || d && !i || (c = c || [], c = [a, c.slice ? c.slice() : c], b ? i.push(c) : j(c)), this
1144 },
1145 fire: function() {
1146 return k.fireWith(this, arguments), this
1147 },
1148 fired: function() {
1149 return !!d
1150 }
1151 };
1152 return k
1153 }, n.extend({
1154 Deferred: function(a) {
1155 var b = [
1156 ["resolve", "done", n.Callbacks("once memory"), "resolved"],
1157 ["reject", "fail", n.Callbacks("once memory"), "rejected"],
1158 ["notify", "progress", n.Callbacks("memory")]
1159 ],
1160 c = "pending",
1161 d = {
1162 state: function() {
1163 return c
1164 },
1165 always: function() {
1166 return e.done(arguments).fail(arguments), this
1167 },
1168 then: function() {
1169 var a = arguments;
1170 return n.Deferred(function(c) {
1171 n.each(b, function(b, f) {
1172 var g = n.isFunction(a[b]) && a[b];
1173 e[f[1]](function() {
1174 var a = g && g.apply(this, arguments);
1175 a && n.isFunction(a.promise) ? a.promise().done(c.resolve).fail(c.reject).progress(c.notify) : c[f[0] + "With"](this === d ? c.promise() : this, g ? [a] : arguments)
1176 })
1177 }), a = null
1178 }).promise()
1179 },
1180 promise: function(a) {
1181 return null != a ? n.extend(a, d) : d
1182 }
1183 },
1184 e = {};
1185 return d.pipe = d.then, n.each(b, function(a, f) {
1186 var g = f[2],
1187 h = f[3];
1188 d[f[1]] = g.add, h && g.add(function() {
1189 c = h
1190 }, b[1 ^ a][2].disable, b[2][2].lock), e[f[0]] = function() {
1191 return e[f[0] + "With"](this === e ? d : this, arguments), this
1192 }, e[f[0] + "With"] = g.fireWith
1193 }), d.promise(e), a && a.call(e, e), e
1194 },
1195 when: function(a) {
1196 var b = 0,
1197 c = d.call(arguments),
1198 e = c.length,
1199 f = 1 !== e || a && n.isFunction(a.promise) ? e : 0,
1200 g = 1 === f ? a : n.Deferred(),
1201 h = function(a, b, c) {
1202 return function(e) {
1203 b[a] = this, c[a] = arguments.length > 1 ? d.call(arguments) : e, c === i ? g.notifyWith(b, c) : --f || g.resolveWith(b, c)
1204 }
1205 },
1206 i, j, k;
1207 if (e > 1)
1208 for (i = new Array(e), j = new Array(e), k = new Array(e); e > b; b++) c[b] && n.isFunction(c[b].promise) ? c[b].promise().done(h(b, k, c)).fail(g.reject).progress(h(b, j, i)) : --f;
1209 return f || g.resolveWith(k, c), g.promise()
1210 }
1211 });
1212 var I;
1213 n.fn.ready = function(a) {
1214 return n.ready.promise().done(a), this
1215 }, n.extend({
1216 isReady: !1,
1217 readyWait: 1,
1218 holdReady: function(a) {
1219 a ? n.readyWait++ : n.ready(!0)
1220 },
1221 ready: function(a) {
1222 if (a === !0 ? !--n.readyWait : !n.isReady) {
1223 if (!z.body) return setTimeout(n.ready);
1224 n.isReady = !0, a !== !0 && --n.readyWait > 0 || (I.resolveWith(z, [n]), n.fn.trigger && n(z).trigger("ready").off("ready"))
1225 }
1226 }
1227 });
1228
1229 function J() {
1230 z.addEventListener ? (z.removeEventListener("DOMContentLoaded", K, !1), a.removeEventListener("load", K, !1)) : (z.detachEvent("onreadystatechange", K), a.detachEvent("onload", K))
1231 }
1232
1233 function K() {
1234 (z.addEventListener || "load" === event.type || "complete" === z.readyState) && (J(), n.ready())
1235 }
1236 n.ready.promise = function(b) {
1237 if (!I)
1238 if (I = n.Deferred(), "complete" === z.readyState) setTimeout(n.ready);
1239 else if (z.addEventListener) z.addEventListener("DOMContentLoaded", K, !1), a.addEventListener("load", K, !1);
1240 else {
1241 z.attachEvent("onreadystatechange", K), a.attachEvent("onload", K);
1242 var c = !1;
1243 try {
1244 c = null == a.frameElement && z.documentElement
1245 } catch (d) {}
1246 c && c.doScroll && ! function e() {
1247 if (!n.isReady) {
1248 try {
1249 c.doScroll("left")
1250 } catch (a) {
1251 return setTimeout(e, 50)
1252 }
1253 J(), n.ready()
1254 }
1255 }()
1256 }
1257 return I.promise(b)
1258 };
1259 var L = "undefined",
1260 M;
1261 for (M in n(l)) break;
1262 l.ownLast = "0" !== M, l.inlineBlockNeedsLayout = !1, n(function() {
1263 var a, b, c = z.getElementsByTagName("body")[0];
1264 c && (a = z.createElement("div"), a.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px", b = z.createElement("div"), c.appendChild(a).appendChild(b), typeof b.style.zoom !== L && (b.style.cssText = "border:0;margin:0;width:1px;padding:1px;display:inline;zoom:1", (l.inlineBlockNeedsLayout = 3 === b.offsetWidth) && (c.style.zoom = 1)), c.removeChild(a), a = b = null)
1265 }),
1266 function() {
1267 var a = z.createElement("div");
1268 if (null == l.deleteExpando) {
1269 l.deleteExpando = !0;
1270 try {
1271 delete a.test
1272 } catch (b) {
1273 l.deleteExpando = !1
1274 }
1275 }
1276 a = null
1277 }(), n.acceptData = function(a) {
1278 var b = n.noData[(a.nodeName + " ").toLowerCase()],
1279 c = +a.nodeType || 1;
1280 return 1 !== c && 9 !== c ? !1 : !b || b !== !0 && a.getAttribute("classid") === b
1281 };
1282 var N = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
1283 O = /([A-Z])/g;
1284
1285 function P(a, b, c) {
1286 if (void 0 === c && 1 === a.nodeType) {
1287 var d = "data-" + b.replace(O, "-$1").toLowerCase();
1288 if (c = a.getAttribute(d), "string" == typeof c) {
1289 try {
1290 c = "true" === c ? !0 : "false" === c ? !1 : "null" === c ? null : +c + "" === c ? +c : N.test(c) ? n.parseJSON(c) : c
1291 } catch (e) {}
1292 n.data(a, b, c)
1293 } else c = void 0
1294 }
1295 return c
1296 }
1297
1298 function Q(a) {
1299 var b;
1300 for (b in a)
1301 if (("data" !== b || !n.isEmptyObject(a[b])) && "toJSON" !== b) return !1;
1302 return !0
1303 }
1304
1305 function R(a, b, d, e) {
1306 if (n.acceptData(a)) {
1307 var f, g, h = n.expando,
1308 i = a.nodeType,
1309 j = i ? n.cache : a,
1310 k = i ? a[h] : a[h] && h;
1311 if (k && j[k] && (e || j[k].data) || void 0 !== d || "string" != typeof b) return k || (k = i ? a[h] = c.pop() || n.guid++ : h), j[k] || (j[k] = i ? {} : {
1312 toJSON: n.noop
1313 }), ("object" == typeof b || "function" == typeof b) && (e ? j[k] = n.extend(j[k], b) : j[k].data = n.extend(j[k].data, b)), g = j[k], e || (g.data || (g.data = {}), g = g.data), void 0 !== d && (g[n.camelCase(b)] = d), "string" == typeof b ? (f = g[b], null == f && (f = g[n.camelCase(b)])) : f = g, f
1314 }
1315 }
1316
1317 function S(a, b, c) {
1318 if (n.acceptData(a)) {
1319 var d, e, f = a.nodeType,
1320 g = f ? n.cache : a,
1321 h = f ? a[n.expando] : n.expando;
1322 if (g[h]) {
1323 if (b && (d = c ? g[h] : g[h].data)) {
1324 n.isArray(b) ? b = b.concat(n.map(b, n.camelCase)) : b in d ? b = [b] : (b = n.camelCase(b), b = b in d ? [b] : b.split(" ")), e = b.length;
1325 while (e--) delete d[b[e]];
1326 if (c ? !Q(d) : !n.isEmptyObject(d)) return
1327 }(c || (delete g[h].data, Q(g[h]))) && (f ? n.cleanData([a], !0) : l.deleteExpando || g != g.window ? delete g[h] : g[h] = null)
1328 }
1329 }
1330 }
1331 n.extend({
1332 cache: {},
1333 noData: {
1334 "applet ": !0,
1335 "embed ": !0,
1336 "object ": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
1337 },
1338 hasData: function(a) {
1339 return a = a.nodeType ? n.cache[a[n.expando]] : a[n.expando], !!a && !Q(a)
1340 },
1341 data: function(a, b, c) {
1342 return R(a, b, c)
1343 },
1344 removeData: function(a, b) {
1345 return S(a, b)
1346 },
1347 _data: function(a, b, c) {
1348 return R(a, b, c, !0)
1349 },
1350 _removeData: function(a, b) {
1351 return S(a, b, !0)
1352 }
1353 }), n.fn.extend({
1354 data: function(a, b) {
1355 var c, d, e, f = this[0],
1356 g = f && f.attributes;
1357 if (void 0 === a) {
1358 if (this.length && (e = n.data(f), 1 === f.nodeType && !n._data(f, "parsedAttrs"))) {
1359 c = g.length;
1360 while (c--) d = g[c].name, 0 === d.indexOf("data-") && (d = n.camelCase(d.slice(5)), P(f, d, e[d]));
1361 n._data(f, "parsedAttrs", !0)
1362 }
1363 return e
1364 }
1365 return "object" == typeof a ? this.each(function() {
1366 n.data(this, a)
1367 }) : arguments.length > 1 ? this.each(function() {
1368 n.data(this, a, b)
1369 }) : f ? P(f, a, n.data(f, a)) : void 0
1370 },
1371 removeData: function(a) {
1372 return this.each(function() {
1373 n.removeData(this, a)
1374 })
1375 }
1376 }), n.extend({
1377 queue: function(a, b, c) {
1378 var d;
1379 return a ? (b = (b || "fx") + "queue", d = n._data(a, b), c && (!d || n.isArray(c) ? d = n._data(a, b, n.makeArray(c)) : d.push(c)), d || []) : void 0
1380 },
1381 dequeue: function(a, b) {
1382 b = b || "fx";
1383 var c = n.queue(a, b),
1384 d = c.length,
1385 e = c.shift(),
1386 f = n._queueHooks(a, b),
1387 g = function() {
1388 n.dequeue(a, b)
1389 };
1390 "inprogress" === e && (e = c.shift(), d--), e && ("fx" === b && c.unshift("inprogress"), delete f.stop, e.call(a, g, f)), !d && f && f.empty.fire()
1391 },
1392 _queueHooks: function(a, b) {
1393 var c = b + "queueHooks";
1394 return n._data(a, c) || n._data(a, c, {
1395 empty: n.Callbacks("once memory").add(function() {
1396 n._removeData(a, b + "queue"), n._removeData(a, c)
1397 })
1398 })
1399 }
1400 }), n.fn.extend({
1401 queue: function(a, b) {
1402 var c = 2;
1403 return "string" != typeof a && (b = a, a = "fx", c--), arguments.length < c ? n.queue(this[0], a) : void 0 === b ? this : this.each(function() {
1404 var c = n.queue(this, a, b);
1405 n._queueHooks(this, a), "fx" === a && "inprogress" !== c[0] && n.dequeue(this, a)
1406 })
1407 },
1408 dequeue: function(a) {
1409 return this.each(function() {
1410 n.dequeue(this, a)
1411 })
1412 },
1413 clearQueue: function(a) {
1414 return this.queue(a || "fx", [])
1415 },
1416 promise: function(a, b) {
1417 var c, d = 1,
1418 e = n.Deferred(),
1419 f = this,
1420 g = this.length,
1421 h = function() {
1422 --d || e.resolveWith(f, [f])
1423 };
1424 "string" != typeof a && (b = a, a = void 0), a = a || "fx";
1425 while (g--) c = n._data(f[g], a + "queueHooks"), c && c.empty && (d++, c.empty.add(h));
1426 return h(), e.promise(b)
1427 }
1428 });
1429 var T = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
1430 U = ["Top", "Right", "Bottom", "Left"],
1431 V = function(a, b) {
1432 return a = b || a, "none" === n.css(a, "display") || !n.contains(a.ownerDocument, a)
1433 },
1434 W = n.access = function(a, b, c, d, e, f, g) {
1435 var h = 0,
1436 i = a.length,
1437 j = null == c;
1438 if ("object" === n.type(c)) {
1439 e = !0;
1440 for (h in c) n.access(a, b, h, c[h], !0, f, g)
1441 } else if (void 0 !== d && (e = !0, n.isFunction(d) || (g = !0), j && (g ? (b.call(a, d), b = null) : (j = b, b = function(a, b, c) {
1442 return j.call(n(a), c)
1443 })), b))
1444 for (; i > h; h++) b(a[h], c, g ? d : d.call(a[h], h, b(a[h], c)));
1445 return e ? a : j ? b.call(a) : i ? b(a[0], c) : f
1446 },
1447 X = /^(?:checkbox|radio)$/i;
1448 ! function() {
1449 var a = z.createDocumentFragment(),
1450 b = z.createElement("div"),
1451 c = z.createElement("input");
1452 if (b.setAttribute("className", "t"), b.innerHTML = " <link/><table></table><a href='/a'>a</a>", l.leadingWhitespace = 3 === b.firstChild.nodeType, l.tbody = !b.getElementsByTagName("tbody").length, l.htmlSerialize = !!b.getElementsByTagName("link").length, l.html5Clone = "<:nav></:nav>" !== z.createElement("nav").cloneNode(!0).outerHTML, c.type = "checkbox", c.checked = !0, a.appendChild(c), l.appendChecked = c.checked, b.innerHTML = "<textarea>x</textarea>", l.noCloneChecked = !!b.cloneNode(!0).lastChild.defaultValue, a.appendChild(b), b.innerHTML = "<input type='radio' checked='checked' name='t'/>", l.checkClone = b.cloneNode(!0).cloneNode(!0).lastChild.checked, l.noCloneEvent = !0, b.attachEvent && (b.attachEvent("onclick", function() {
1453 l.noCloneEvent = !1
1454 }), b.cloneNode(!0).click()), null == l.deleteExpando) {
1455 l.deleteExpando = !0;
1456 try {
1457 delete b.test
1458 } catch (d) {
1459 l.deleteExpando = !1
1460 }
1461 }
1462 a = b = c = null
1463 }(),
1464 function() {
1465 var b, c, d = z.createElement("div");
1466 for (b in {
1467 submit: !0,
1468 change: !0,
1469 focusin: !0
1470 }) c = "on" + b, (l[b + "Bubbles"] = c in a) || (d.setAttribute(c, "t"), l[b + "Bubbles"] = d.attributes[c].expando === !1);
1471 d = null
1472 }();
1473 var Y = /^(?:input|select|textarea)$/i,
1474 Z = /^key/,
1475 $ = /^(?:mouse|contextmenu)|click/,
1476 _ = /^(?:focusinfocus|focusoutblur)$/,
1477 ab = /^([^.]*)(?:\.(.+)|)$/;
1478
1479 function bb() {
1480 return !0
1481 }
1482
1483 function cb() {
1484 return !1
1485 }
1486
1487 function db() {
1488 try {
1489 return z.activeElement
1490 } catch (a) {}
1491 }
1492 n.event = {
1493 global: {},
1494 add: function(a, b, c, d, e) {
1495 var f, g, h, i, j, k, l, m, o, p, q, r = n._data(a);
1496 if (r) {
1497 c.handler && (i = c, c = i.handler, e = i.selector), c.guid || (c.guid = n.guid++), (g = r.events) || (g = r.events = {}), (k = r.handle) || (k = r.handle = function(a) {
1498 return typeof n === L || a && n.event.triggered === a.type ? void 0 : n.event.dispatch.apply(k.elem, arguments)
1499 }, k.elem = a), b = (b || "").match(F) || [""], h = b.length;
1500 while (h--) f = ab.exec(b[h]) || [], o = q = f[1], p = (f[2] || "").split(".").sort(), o && (j = n.event.special[o] || {}, o = (e ? j.delegateType : j.bindType) || o, j = n.event.special[o] || {}, l = n.extend({
1501 type: o,
1502 origType: q,
1503 data: d,
1504 handler: c,
1505 guid: c.guid,
1506 selector: e,
1507 needsContext: e && n.expr.match.needsContext.test(e),
1508 namespace: p.join(".")
1509 }, i), (m = g[o]) || (m = g[o] = [], m.delegateCount = 0, j.setup && j.setup.call(a, d, p, k) !== !1 || (a.addEventListener ? a.addEventListener(o, k, !1) : a.attachEvent && a.attachEvent("on" + o, k))), j.add && (j.add.call(a, l), l.handler.guid || (l.handler.guid = c.guid)), e ? m.splice(m.delegateCount++, 0, l) : m.push(l), n.event.global[o] = !0);
1510 a = null
1511 }
1512 },
1513 remove: function(a, b, c, d, e) {
1514 var f, g, h, i, j, k, l, m, o, p, q, r = n.hasData(a) && n._data(a);
1515 if (r && (k = r.events)) {
1516 b = (b || "").match(F) || [""], j = b.length;
1517 while (j--)
1518 if (h = ab.exec(b[j]) || [], o = q = h[1], p = (h[2] || "").split(".").sort(), o) {
1519 l = n.event.special[o] || {}, o = (d ? l.delegateType : l.bindType) || o, m = k[o] || [], h = h[2] && new RegExp("(^|\\.)" + p.join("\\.(?:.*\\.|)") + "(\\.|$)"), i = f = m.length;
1520 while (f--) g = m[f], !e && q !== g.origType || c && c.guid !== g.guid || h && !h.test(g.namespace) || d && d !== g.selector && ("**" !== d || !g.selector) || (m.splice(f, 1), g.selector && m.delegateCount--, l.remove && l.remove.call(a, g));
1521 i && !m.length && (l.teardown && l.teardown.call(a, p, r.handle) !== !1 || n.removeEvent(a, o, r.handle), delete k[o])
1522 } else
1523 for (o in k) n.event.remove(a, o + b[j], c, d, !0);
1524 n.isEmptyObject(k) && (delete r.handle, n._removeData(a, "events"))
1525 }
1526 },
1527 trigger: function(b, c, d, e) {
1528 var f, g, h, i, k, l, m, o = [d || z],
1529 p = j.call(b, "type") ? b.type : b,
1530 q = j.call(b, "namespace") ? b.namespace.split(".") : [];
1531 if (h = l = d = d || z, 3 !== d.nodeType && 8 !== d.nodeType && !_.test(p + n.event.triggered) && (p.indexOf(".") >= 0 && (q = p.split("."), p = q.shift(), q.sort()), g = p.indexOf(":") < 0 && "on" + p, b = b[n.expando] ? b : new n.Event(p, "object" == typeof b && b), b.isTrigger = e ? 2 : 3, b.namespace = q.join("."), b.namespace_re = b.namespace ? new RegExp("(^|\\.)" + q.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, b.result = void 0, b.target || (b.target = d), c = null == c ? [b] : n.makeArray(c, [b]), k = n.event.special[p] || {}, e || !k.trigger || k.trigger.apply(d, c) !== !1)) {
1532 if (!e && !k.noBubble && !n.isWindow(d)) {
1533 for (i = k.delegateType || p, _.test(i + p) || (h = h.parentNode); h; h = h.parentNode) o.push(h), l = h;
1534 l === (d.ownerDocument || z) && o.push(l.defaultView || l.parentWindow || a)
1535 }
1536 m = 0;
1537 while ((h = o[m++]) && !b.isPropagationStopped()) b.type = m > 1 ? i : k.bindType || p, f = (n._data(h, "events") || {})[b.type] && n._data(h, "handle"), f && f.apply(h, c), f = g && h[g], f && f.apply && n.acceptData(h) && (b.result = f.apply(h, c), b.result === !1 && b.preventDefault());
1538 if (b.type = p, !e && !b.isDefaultPrevented() && (!k._default || k._default.apply(o.pop(), c) === !1) && n.acceptData(d) && g && d[p] && !n.isWindow(d)) {
1539 l = d[g], l && (d[g] = null), n.event.triggered = p;
1540 try {
1541 d[p]()
1542 } catch (r) {}
1543 n.event.triggered = void 0, l && (d[g] = l)
1544 }
1545 return b.result
1546 }
1547 },
1548 dispatch: function(a) {
1549 a = n.event.fix(a);
1550 var b, c, e, f, g, h = [],
1551 i = d.call(arguments),
1552 j = (n._data(this, "events") || {})[a.type] || [],
1553 k = n.event.special[a.type] || {};
1554 if (i[0] = a, a.delegateTarget = this, !k.preDispatch || k.preDispatch.call(this, a) !== !1) {
1555 h = n.event.handlers.call(this, a, j), b = 0;
1556 while ((f = h[b++]) && !a.isPropagationStopped()) {
1557 a.currentTarget = f.elem, g = 0;
1558 while ((e = f.handlers[g++]) && !a.isImmediatePropagationStopped())(!a.namespace_re || a.namespace_re.test(e.namespace)) && (a.handleObj = e, a.data = e.data, c = ((n.event.special[e.origType] || {}).handle || e.handler).apply(f.elem, i), void 0 !== c && (a.result = c) === !1 && (a.preventDefault(), a.stopPropagation()))
1559 }
1560 return k.postDispatch && k.postDispatch.call(this, a), a.result
1561 }
1562 },
1563 handlers: function(a, b) {
1564 var c, d, e, f, g = [],
1565 h = b.delegateCount,
1566 i = a.target;
1567 if (h && i.nodeType && (!a.button || "click" !== a.type))
1568 for (; i != this; i = i.parentNode || this)
1569 if (1 === i.nodeType && (i.disabled !== !0 || "click" !== a.type)) {
1570 for (e = [], f = 0; h > f; f++) d = b[f], c = d.selector + " ", void 0 === e[c] && (e[c] = d.needsContext ? n(c, this).index(i) >= 0 : n.find(c, this, null, [i]).length), e[c] && e.push(d);
1571 e.length && g.push({
1572 elem: i,
1573 handlers: e
1574 })
1575 }
1576 return h < b.length && g.push({
1577 elem: this,
1578 handlers: b.slice(h)
1579 }), g
1580 },
1581 fix: function(a) {
1582 if (a[n.expando]) return a;
1583 var b, c, d, e = a.type,
1584 f = a,
1585 g = this.fixHooks[e];
1586 g || (this.fixHooks[e] = g = $.test(e) ? this.mouseHooks : Z.test(e) ? this.keyHooks : {}), d = g.props ? this.props.concat(g.props) : this.props, a = new n.Event(f), b = d.length;
1587 while (b--) c = d[b], a[c] = f[c];
1588 return a.target || (a.target = f.srcElement || z), 3 === a.target.nodeType && (a.target = a.target.parentNode), a.metaKey = !!a.metaKey, g.filter ? g.filter(a, f) : a
1589 },
1590 props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
1591 fixHooks: {},
1592 keyHooks: {
1593 props: "char charCode key keyCode".split(" "),
1594 filter: function(a, b) {
1595 return null == a.which && (a.which = null != b.charCode ? b.charCode : b.keyCode), a
1596 }
1597 },
1598 mouseHooks: {
1599 props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
1600 filter: function(a, b) {
1601 var c, d, e, f = b.button,
1602 g = b.fromElement;
1603 return null == a.pageX && null != b.clientX && (d = a.target.ownerDocument || z, e = d.documentElement, c = d.body, a.pageX = b.clientX + (e && e.scrollLeft || c && c.scrollLeft || 0) - (e && e.clientLeft || c && c.clientLeft || 0), a.pageY = b.clientY + (e && e.scrollTop || c && c.scrollTop || 0) - (e && e.clientTop || c && c.clientTop || 0)), !a.relatedTarget && g && (a.relatedTarget = g === a.target ? b.toElement : g), a.which || void 0 === f || (a.which = 1 & f ? 1 : 2 & f ? 3 : 4 & f ? 2 : 0), a
1604 }
1605 },
1606 special: {
1607 load: {
1608 noBubble: !0
1609 },
1610 focus: {
1611 trigger: function() {
1612 if (this !== db() && this.focus) try {
1613 return this.focus(), !1
1614 } catch (a) {}
1615 },
1616 delegateType: "focusin"
1617 },
1618 blur: {
1619 trigger: function() {
1620 return this === db() && this.blur ? (this.blur(), !1) : void 0
1621 },
1622 delegateType: "focusout"
1623 },
1624 click: {
1625 trigger: function() {
1626 return n.nodeName(this, "input") && "checkbox" === this.type && this.click ? (this.click(), !1) : void 0
1627 },
1628 _default: function(a) {
1629 return n.nodeName(a.target, "a")
1630 }
1631 },
1632 beforeunload: {
1633 postDispatch: function(a) {
1634 void 0 !== a.result && (a.originalEvent.returnValue = a.result)
1635 }
1636 }
1637 },
1638 simulate: function(a, b, c, d) {
1639 var e = n.extend(new n.Event, c, {
1640 type: a,
1641 isSimulated: !0,
1642 originalEvent: {}
1643 });
1644 d ? n.event.trigger(e, null, b) : n.event.dispatch.call(b, e), e.isDefaultPrevented() && c.preventDefault()
1645 }
1646 }, n.removeEvent = z.removeEventListener ? function(a, b, c) {
1647 a.removeEventListener && a.removeEventListener(b, c, !1)
1648 } : function(a, b, c) {
1649 var d = "on" + b;
1650 a.detachEvent && (typeof a[d] === L && (a[d] = null), a.detachEvent(d, c))
1651 }, n.Event = function(a, b) {
1652 return this instanceof n.Event ? (a && a.type ? (this.originalEvent = a, this.type = a.type, this.isDefaultPrevented = a.defaultPrevented || void 0 === a.defaultPrevented && (a.returnValue === !1 || a.getPreventDefault && a.getPreventDefault()) ? bb : cb) : this.type = a, b && n.extend(this, b), this.timeStamp = a && a.timeStamp || n.now(), void(this[n.expando] = !0)) : new n.Event(a, b)
1653 }, n.Event.prototype = {
1654 isDefaultPrevented: cb,
1655 isPropagationStopped: cb,
1656 isImmediatePropagationStopped: cb,
1657 preventDefault: function() {
1658 var a = this.originalEvent;
1659 this.isDefaultPrevented = bb, a && (a.preventDefault ? a.preventDefault() : a.returnValue = !1)
1660 },
1661 stopPropagation: function() {
1662 var a = this.originalEvent;
1663 this.isPropagationStopped = bb, a && (a.stopPropagation && a.stopPropagation(), a.cancelBubble = !0)
1664 },
1665 stopImmediatePropagation: function() {
1666 this.isImmediatePropagationStopped = bb, this.stopPropagation()
1667 }
1668 }, n.each({
1669 mouseenter: "mouseover",
1670 mouseleave: "mouseout"
1671 }, function(a, b) {
1672 n.event.special[a] = {
1673 delegateType: b,
1674 bindType: b,
1675 handle: function(a) {
1676 var c, d = this,
1677 e = a.relatedTarget,
1678 f = a.handleObj;
1679 return (!e || e !== d && !n.contains(d, e)) && (a.type = f.origType, c = f.handler.apply(this, arguments), a.type = b), c
1680 }
1681 }
1682 }), l.submitBubbles || (n.event.special.submit = {
1683 setup: function() {
1684 return n.nodeName(this, "form") ? !1 : void n.event.add(this, "click._submit keypress._submit", function(a) {
1685 var b = a.target,
1686 c = n.nodeName(b, "input") || n.nodeName(b, "button") ? b.form : void 0;
1687 c && !n._data(c, "submitBubbles") && (n.event.add(c, "submit._submit", function(a) {
1688 a._submit_bubble = !0
1689 }), n._data(c, "submitBubbles", !0))
1690 })
1691 },
1692 postDispatch: function(a) {
1693 a._submit_bubble && (delete a._submit_bubble, this.parentNode && !a.isTrigger && n.event.simulate("submit", this.parentNode, a, !0))
1694 },
1695 teardown: function() {
1696 return n.nodeName(this, "form") ? !1 : void n.event.remove(this, "._submit")
1697 }
1698 }), l.changeBubbles || (n.event.special.change = {
1699 setup: function() {
1700 return Y.test(this.nodeName) ? (("checkbox" === this.type || "radio" === this.type) && (n.event.add(this, "propertychange._change", function(a) {
1701 "checked" === a.originalEvent.propertyName && (this._just_changed = !0)
1702 }), n.event.add(this, "click._change", function(a) {
1703 this._just_changed && !a.isTrigger && (this._just_changed = !1), n.event.simulate("change", this, a, !0)
1704 })), !1) : void n.event.add(this, "beforeactivate._change", function(a) {
1705 var b = a.target;
1706 Y.test(b.nodeName) && !n._data(b, "changeBubbles") && (n.event.add(b, "change._change", function(a) {
1707 !this.parentNode || a.isSimulated || a.isTrigger || n.event.simulate("change", this.parentNode, a, !0)
1708 }), n._data(b, "changeBubbles", !0))
1709 })
1710 },
1711 handle: function(a) {
1712 var b = a.target;
1713 return this !== b || a.isSimulated || a.isTrigger || "radio" !== b.type && "checkbox" !== b.type ? a.handleObj.handler.apply(this, arguments) : void 0
1714 },
1715 teardown: function() {
1716 return n.event.remove(this, "._change"), !Y.test(this.nodeName)
1717 }
1718 }), l.focusinBubbles || n.each({
1719 focus: "focusin",
1720 blur: "focusout"
1721 }, function(a, b) {
1722 var c = function(a) {
1723 n.event.simulate(b, a.target, n.event.fix(a), !0)
1724 };
1725 n.event.special[b] = {
1726 setup: function() {
1727 var d = this.ownerDocument || this,
1728 e = n._data(d, b);
1729 e || d.addEventListener(a, c, !0), n._data(d, b, (e || 0) + 1)
1730 },
1731 teardown: function() {
1732 var d = this.ownerDocument || this,
1733 e = n._data(d, b) - 1;
1734 e ? n._data(d, b, e) : (d.removeEventListener(a, c, !0), n._removeData(d, b))
1735 }
1736 }
1737 }), n.fn.extend({
1738 on: function(a, b, c, d, e) {
1739 var f, g;
1740 if ("object" == typeof a) {
1741 "string" != typeof b && (c = c || b, b = void 0);
1742 for (f in a) this.on(f, b, c, a[f], e);
1743 return this
1744 }
1745 if (null == c && null == d ? (d = b, c = b = void 0) : null == d && ("string" == typeof b ? (d = c, c = void 0) : (d = c, c = b, b = void 0)), d === !1) d = cb;
1746 else if (!d) return this;
1747 return 1 === e && (g = d, d = function(a) {
1748 return n().off(a), g.apply(this, arguments)
1749 }, d.guid = g.guid || (g.guid = n.guid++)), this.each(function() {
1750 n.event.add(this, a, d, c, b)
1751 })
1752 },
1753 one: function(a, b, c, d) {
1754 return this.on(a, b, c, d, 1)
1755 },
1756 off: function(a, b, c) {
1757 var d, e;
1758 if (a && a.preventDefault && a.handleObj) return d = a.handleObj, n(a.delegateTarget).off(d.namespace ? d.origType + "." + d.namespace : d.origType, d.selector, d.handler), this;
1759 if ("object" == typeof a) {
1760 for (e in a) this.off(e, b, a[e]);
1761 return this
1762 }
1763 return (b === !1 || "function" == typeof b) && (c = b, b = void 0), c === !1 && (c = cb), this.each(function() {
1764 n.event.remove(this, a, c, b)
1765 })
1766 },
1767 trigger: function(a, b) {
1768 return this.each(function() {
1769 n.event.trigger(a, b, this)
1770 })
1771 },
1772 triggerHandler: function(a, b) {
1773 var c = this[0];
1774 return c ? n.event.trigger(a, b, c, !0) : void 0
1775 }
1776 });
1777
1778 function eb(a) {
1779 var b = fb.split("|"),
1780 c = a.createDocumentFragment();
1781 if (c.createElement)
1782 while (b.length) c.createElement(b.pop());
1783 return c
1784 }
1785 var fb = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
1786 gb = / jQuery\d+="(?:null|\d+)"/g,
1787 hb = new RegExp("<(?:" + fb + ")[\\s/>]", "i"),
1788 ib = /^\s+/,
1789 jb = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
1790 kb = /<([\w:]+)/,
1791 lb = /<tbody/i,
1792 mb = /<|&#?\w+;/,
1793 nb = /<(?:script|style|link)/i,
1794 ob = /checked\s*(?:[^=]|=\s*.checked.)/i,
1795 pb = /^$|\/(?:java|ecma)script/i,
1796 qb = /^true\/(.*)/,
1797 rb = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
1798 sb = {
1799 option: [1, "<select multiple='multiple'>", "</select>"],
1800 legend: [1, "<fieldset>", "</fieldset>"],
1801 area: [1, "<map>", "</map>"],
1802 param: [1, "<object>", "</object>"],
1803 thead: [1, "<table>", "</table>"],
1804 tr: [2, "<table><tbody>", "</tbody></table>"],
1805 col: [2, "<table><tbody></tbody><colgroup>", "</colgroup></table>"],
1806 td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
1807 _default: l.htmlSerialize ? [0, "", ""] : [1, "X<div>", "</div>"]
1808 },
1809 tb = eb(z),
1810 ub = tb.appendChild(z.createElement("div"));
1811 sb.optgroup = sb.option, sb.tbody = sb.tfoot = sb.colgroup = sb.caption = sb.thead, sb.th = sb.td;
1812
1813 function vb(a, b) {
1814 var c, d, e = 0,
1815 f = typeof a.getElementsByTagName !== L ? a.getElementsByTagName(b || "*") : typeof a.querySelectorAll !== L ? a.querySelectorAll(b || "*") : void 0;
1816 if (!f)
1817 for (f = [], c = a.childNodes || a; null != (d = c[e]); e++)!b || n.nodeName(d, b) ? f.push(d) : n.merge(f, vb(d, b));
1818 return void 0 === b || b && n.nodeName(a, b) ? n.merge([a], f) : f
1819 }
1820
1821 function wb(a) {
1822 X.test(a.type) && (a.defaultChecked = a.checked)
1823 }
1824
1825 function xb(a, b) {
1826 return n.nodeName(a, "table") && n.nodeName(11 !== b.nodeType ? b : b.firstChild, "tr") ? a.getElementsByTagName("tbody")[0] || a.appendChild(a.ownerDocument.createElement("tbody")) : a
1827 }
1828
1829 function yb(a) {
1830 return a.type = (null !== n.find.attr(a, "type")) + "/" + a.type, a
1831 }
1832
1833 function zb(a) {
1834 var b = qb.exec(a.type);
1835 return b ? a.type = b[1] : a.removeAttribute("type"), a
1836 }
1837
1838 function Ab(a, b) {
1839 for (var c, d = 0; null != (c = a[d]); d++) n._data(c, "globalEval", !b || n._data(b[d], "globalEval"))
1840 }
1841
1842 function Bb(a, b) {
1843 if (1 === b.nodeType && n.hasData(a)) {
1844 var c, d, e, f = n._data(a),
1845 g = n._data(b, f),
1846 h = f.events;
1847 if (h) {
1848 delete g.handle, g.events = {};
1849 for (c in h)
1850 for (d = 0, e = h[c].length; e > d; d++) n.event.add(b, c, h[c][d])
1851 }
1852 g.data && (g.data = n.extend({}, g.data))
1853 }
1854 }
1855
1856 function Cb(a, b) {
1857 var c, d, e;
1858 if (1 === b.nodeType) {
1859 if (c = b.nodeName.toLowerCase(), !l.noCloneEvent && b[n.expando]) {
1860 e = n._data(b);
1861 for (d in e.events) n.removeEvent(b, d, e.handle);
1862 b.removeAttribute(n.expando)
1863 }
1864 "script" === c && b.text !== a.text ? (yb(b).text = a.text, zb(b)) : "object" === c ? (b.parentNode && (b.outerHTML = a.outerHTML), l.html5Clone && a.innerHTML && !n.trim(b.innerHTML) && (b.innerHTML = a.innerHTML)) : "input" === c && X.test(a.type) ? (b.defaultChecked = b.checked = a.checked, b.value !== a.value && (b.value = a.value)) : "option" === c ? b.defaultSelected = b.selected = a.defaultSelected : ("input" === c || "textarea" === c) && (b.defaultValue = a.defaultValue)
1865 }
1866 }
1867 n.extend({
1868 clone: function(a, b, c) {
1869 var d, e, f, g, h, i = n.contains(a.ownerDocument, a);
1870 if (l.html5Clone || n.isXMLDoc(a) || !hb.test("<" + a.nodeName + ">") ? f = a.cloneNode(!0) : (ub.innerHTML = a.outerHTML, ub.removeChild(f = ub.firstChild)), !(l.noCloneEvent && l.noCloneChecked || 1 !== a.nodeType && 11 !== a.nodeType || n.isXMLDoc(a)))
1871 for (d = vb(f), h = vb(a), g = 0; null != (e = h[g]); ++g) d[g] && Cb(e, d[g]);
1872 if (b)
1873 if (c)
1874 for (h = h || vb(a), d = d || vb(f), g = 0; null != (e = h[g]); g++) Bb(e, d[g]);
1875 else Bb(a, f);
1876 return d = vb(f, "script"), d.length > 0 && Ab(d, !i && vb(a, "script")), d = h = e = null, f
1877 },
1878 buildFragment: function(a, b, c, d) {
1879 for (var e, f, g, h, i, j, k, m = a.length, o = eb(b), p = [], q = 0; m > q; q++)
1880 if (f = a[q], f || 0 === f)
1881 if ("object" === n.type(f)) n.merge(p, f.nodeType ? [f] : f);
1882 else if (mb.test(f)) {
1883 h = h || o.appendChild(b.createElement("div")), i = (kb.exec(f) || ["", ""])[1].toLowerCase(), k = sb[i] || sb._default, h.innerHTML = k[1] + f.replace(jb, "<$1></$2>") + k[2], e = k[0];
1884 while (e--) h = h.lastChild;
1885 if (!l.leadingWhitespace && ib.test(f) && p.push(b.createTextNode(ib.exec(f)[0])), !l.tbody) {
1886 f = "table" !== i || lb.test(f) ? "<table>" !== k[1] || lb.test(f) ? 0 : h : h.firstChild, e = f && f.childNodes.length;
1887 while (e--) n.nodeName(j = f.childNodes[e], "tbody") && !j.childNodes.length && f.removeChild(j)
1888 }
1889 n.merge(p, h.childNodes), h.textContent = "";
1890 while (h.firstChild) h.removeChild(h.firstChild);
1891 h = o.lastChild
1892 } else p.push(b.createTextNode(f));
1893 h && o.removeChild(h), l.appendChecked || n.grep(vb(p, "input"), wb), q = 0;
1894 while (f = p[q++])
1895 if ((!d || -1 === n.inArray(f, d)) && (g = n.contains(f.ownerDocument, f), h = vb(o.appendChild(f), "script"), g && Ab(h), c)) {
1896 e = 0;
1897 while (f = h[e++]) pb.test(f.type || "") && c.push(f)
1898 }
1899 return h = null, o
1900 },
1901 cleanData: function(a, b) {
1902 for (var d, e, f, g, h = 0, i = n.expando, j = n.cache, k = l.deleteExpando, m = n.event.special; null != (d = a[h]); h++)
1903 if ((b || n.acceptData(d)) && (f = d[i], g = f && j[f])) {
1904 if (g.events)
1905 for (e in g.events) m[e] ? n.event.remove(d, e) : n.removeEvent(d, e, g.handle);
1906 j[f] && (delete j[f], k ? delete d[i] : typeof d.removeAttribute !== L ? d.removeAttribute(i) : d[i] = null, c.push(f))
1907 }
1908 }
1909 }), n.fn.extend({
1910 text: function(a) {
1911 return W(this, function(a) {
1912 return void 0 === a ? n.text(this) : this.empty().append((this[0] && this[0].ownerDocument || z).createTextNode(a))
1913 }, null, a, arguments.length)
1914 },
1915 append: function() {
1916 return this.domManip(arguments, function(a) {
1917 if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
1918 var b = xb(this, a);
1919 b.appendChild(a)
1920 }
1921 })
1922 },
1923 prepend: function() {
1924 return this.domManip(arguments, function(a) {
1925 if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
1926 var b = xb(this, a);
1927 b.insertBefore(a, b.firstChild)
1928 }
1929 })
1930 },
1931 before: function() {
1932 return this.domManip(arguments, function(a) {
1933 this.parentNode && this.parentNode.insertBefore(a, this)
1934 })
1935 },
1936 after: function() {
1937 return this.domManip(arguments, function(a) {
1938 this.parentNode && this.parentNode.insertBefore(a, this.nextSibling)
1939 })
1940 },
1941 remove: function(a, b) {
1942 for (var c, d = a ? n.filter(a, this) : this, e = 0; null != (c = d[e]); e++) b || 1 !== c.nodeType || n.cleanData(vb(c)), c.parentNode && (b && n.contains(c.ownerDocument, c) && Ab(vb(c, "script")), c.parentNode.removeChild(c));
1943 return this
1944 },
1945 empty: function() {
1946 for (var a, b = 0; null != (a = this[b]); b++) {
1947 1 === a.nodeType && n.cleanData(vb(a, !1));
1948 while (a.firstChild) a.removeChild(a.firstChild);
1949 a.options && n.nodeName(a, "select") && (a.options.length = 0)
1950 }
1951 return this
1952 },
1953 clone: function(a, b) {
1954 return a = null == a ? !1 : a, b = null == b ? a : b, this.map(function() {
1955 return n.clone(this, a, b)
1956 })
1957 },
1958 html: function(a) {
1959 return W(this, function(a) {
1960 var b = this[0] || {},
1961 c = 0,
1962 d = this.length;
1963 if (void 0 === a) return 1 === b.nodeType ? b.innerHTML.replace(gb, "") : void 0;
1964 if (!("string" != typeof a || nb.test(a) || !l.htmlSerialize && hb.test(a) || !l.leadingWhitespace && ib.test(a) || sb[(kb.exec(a) || ["", ""])[1].toLowerCase()])) {
1965 a = a.replace(jb, "<$1></$2>");
1966 try {
1967 for (; d > c; c++) b = this[c] || {}, 1 === b.nodeType && (n.cleanData(vb(b, !1)), b.innerHTML = a);
1968 b = 0
1969 } catch (e) {}
1970 }
1971 b && this.empty().append(a)
1972 }, null, a, arguments.length)
1973 },
1974 replaceWith: function() {
1975 var a = arguments[0];
1976 return this.domManip(arguments, function(b) {
1977 a = this.parentNode, n.cleanData(vb(this)), a && a.replaceChild(b, this)
1978 }), a && (a.length || a.nodeType) ? this : this.remove()
1979 },
1980 detach: function(a) {
1981 return this.remove(a, !0)
1982 },
1983 domManip: function(a, b) {
1984 a = e.apply([], a);
1985 var c, d, f, g, h, i, j = 0,
1986 k = this.length,
1987 m = this,
1988 o = k - 1,
1989 p = a[0],
1990 q = n.isFunction(p);
1991 if (q || k > 1 && "string" == typeof p && !l.checkClone && ob.test(p)) return this.each(function(c) {
1992 var d = m.eq(c);
1993 q && (a[0] = p.call(this, c, d.html())), d.domManip(a, b)
1994 });
1995 if (k && (i = n.buildFragment(a, this[0].ownerDocument, !1, this), c = i.firstChild, 1 === i.childNodes.length && (i = c), c)) {
1996 for (g = n.map(vb(i, "script"), yb), f = g.length; k > j; j++) d = i, j !== o && (d = n.clone(d, !0, !0), f && n.merge(g, vb(d, "script"))), b.call(this[j], d, j);
1997 if (f)
1998 for (h = g[g.length - 1].ownerDocument, n.map(g, zb), j = 0; f > j; j++) d = g[j], pb.test(d.type || "") && !n._data(d, "globalEval") && n.contains(h, d) && (d.src ? n._evalUrl && n._evalUrl(d.src) : n.globalEval((d.text || d.textContent || d.innerHTML || "").replace(rb, "")));
1999 i = c = null
2000 }
2001 return this
2002 }
2003 }), n.each({
2004 appendTo: "append",
2005 prependTo: "prepend",
2006 insertBefore: "before",
2007 insertAfter: "after",
2008 replaceAll: "replaceWith"
2009 }, function(a, b) {
2010 n.fn[a] = function(a) {
2011 for (var c, d = 0, e = [], g = n(a), h = g.length - 1; h >= d; d++) c = d === h ? this : this.clone(!0), n(g[d])[b](c), f.apply(e, c.get());
2012 return this.pushStack(e)
2013 }
2014 });
2015 var Db, Eb = {};
2016
2017 function Fb(b, c) {
2018 var d = n(c.createElement(b)).appendTo(c.body),
2019 e = a.getDefaultComputedStyle ? a.getDefaultComputedStyle(d[0]).display : n.css(d[0], "display");
2020 return d.detach(), e
2021 }
2022
2023 function Gb(a) {
2024 var b = z,
2025 c = Eb[a];
2026 return c || (c = Fb(a, b), "none" !== c && c || (Db = (Db || n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement), b = (Db[0].contentWindow || Db[0].contentDocument).document, b.write(), b.close(), c = Fb(a, b), Db.detach()), Eb[a] = c), c
2027 }! function() {
2028 var a, b, c = z.createElement("div"),
2029 d = "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0";
2030 c.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>", a = c.getElementsByTagName("a")[0], a.style.cssText = "float:left;opacity:.5", l.opacity = /^0.5/.test(a.style.opacity), l.cssFloat = !!a.style.cssFloat, c.style.backgroundClip = "content-box", c.cloneNode(!0).style.backgroundClip = "", l.clearCloneStyle = "content-box" === c.style.backgroundClip, a = c = null, l.shrinkWrapBlocks = function() {
2031 var a, c, e, f;
2032 if (null == b) {
2033 if (a = z.getElementsByTagName("body")[0], !a) return;
2034 f = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px", c = z.createElement("div"), e = z.createElement("div"), a.appendChild(c).appendChild(e), b = !1, typeof e.style.zoom !== L && (e.style.cssText = d + ";width:1px;padding:1px;zoom:1", e.innerHTML = "<div></div>", e.firstChild.style.width = "5px", b = 3 !== e.offsetWidth), a.removeChild(c), a = c = e = null
2035 }
2036 return b
2037 }
2038 }();
2039 var Hb = /^margin/,
2040 Ib = new RegExp("^(" + T + ")(?!px)[a-z%]+$", "i"),
2041 Jb, Kb, Lb = /^(top|right|bottom|left)$/;
2042 a.getComputedStyle ? (Jb = function(a) {
2043 return a.ownerDocument.defaultView.getComputedStyle(a, null)
2044 }, Kb = function(a, b, c) {
2045 var d, e, f, g, h = a.style;
2046 return c = c || Jb(a), g = c ? c.getPropertyValue(b) || c[b] : void 0, c && ("" !== g || n.contains(a.ownerDocument, a) || (g = n.style(a, b)), Ib.test(g) && Hb.test(b) && (d = h.width, e = h.minWidth, f = h.maxWidth, h.minWidth = h.maxWidth = h.width = g, g = c.width, h.width = d, h.minWidth = e, h.maxWidth = f)), void 0 === g ? g : g + ""
2047 }) : z.documentElement.currentStyle && (Jb = function(a) {
2048 return a.currentStyle
2049 }, Kb = function(a, b, c) {
2050 var d, e, f, g, h = a.style;
2051 return c = c || Jb(a), g = c ? c[b] : void 0, null == g && h && h[b] && (g = h[b]), Ib.test(g) && !Lb.test(b) && (d = h.left, e = a.runtimeStyle, f = e && e.left, f && (e.left = a.currentStyle.left), h.left = "fontSize" === b ? "1em" : g, g = h.pixelLeft + "px", h.left = d, f && (e.left = f)), void 0 === g ? g : g + "" || "auto"
2052 });
2053
2054 function Mb(a, b) {
2055 return {
2056 get: function() {
2057 var c = a();
2058 if (null != c) return c ? void delete this.get : (this.get = b).apply(this, arguments)
2059 }
2060 }
2061 }! function() {
2062 var b, c, d, e, f, g, h = z.createElement("div"),
2063 i = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px",
2064 j = "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0";
2065 h.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>", b = h.getElementsByTagName("a")[0], b.style.cssText = "float:left;opacity:.5", l.opacity = /^0.5/.test(b.style.opacity), l.cssFloat = !!b.style.cssFloat, h.style.backgroundClip = "content-box", h.cloneNode(!0).style.backgroundClip = "", l.clearCloneStyle = "content-box" === h.style.backgroundClip, b = h = null, n.extend(l, {
2066 reliableHiddenOffsets: function() {
2067 if (null != c) return c;
2068 var a, b, d, e = z.createElement("div"),
2069 f = z.getElementsByTagName("body")[0];
2070 if (f) return e.setAttribute("className", "t"), e.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>", a = z.createElement("div"), a.style.cssText = i, f.appendChild(a).appendChild(e), e.innerHTML = "<table><tr><td></td><td>t</td></tr></table>", b = e.getElementsByTagName("td"), b[0].style.cssText = "padding:0;margin:0;border:0;display:none", d = 0 === b[0].offsetHeight, b[0].style.display = "", b[1].style.display = "none", c = d && 0 === b[0].offsetHeight, f.removeChild(a), e = f = null, c
2071 },
2072 boxSizing: function() {
2073 return null == d && k(), d
2074 },
2075 boxSizingReliable: function() {
2076 return null == e && k(), e
2077 },
2078 pixelPosition: function() {
2079 return null == f && k(), f
2080 },
2081 reliableMarginRight: function() {
2082 var b, c, d, e;
2083 if (null == g && a.getComputedStyle) {
2084 if (b = z.getElementsByTagName("body")[0], !b) return;
2085 c = z.createElement("div"), d = z.createElement("div"), c.style.cssText = i, b.appendChild(c).appendChild(d), e = d.appendChild(z.createElement("div")), e.style.cssText = d.style.cssText = j, e.style.marginRight = e.style.width = "0", d.style.width = "1px", g = !parseFloat((a.getComputedStyle(e, null) || {}).marginRight), b.removeChild(c)
2086 }
2087 return g
2088 }
2089 });
2090
2091 function k() {
2092 var b, c, h = z.getElementsByTagName("body")[0];
2093 h && (b = z.createElement("div"), c = z.createElement("div"), b.style.cssText = i, h.appendChild(b).appendChild(c), c.style.cssText = "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;display:block;padding:1px;border:1px;width:4px;margin-top:1%;top:1%", n.swap(h, null != h.style.zoom ? {
2094 zoom: 1
2095 } : {}, function() {
2096 d = 4 === c.offsetWidth
2097 }), e = !0, f = !1, g = !0, a.getComputedStyle && (f = "1%" !== (a.getComputedStyle(c, null) || {}).top, e = "4px" === (a.getComputedStyle(c, null) || {
2098 width: "4px"
2099 }).width), h.removeChild(b), c = h = null)
2100 }
2101 }(), n.swap = function(a, b, c, d) {
2102 var e, f, g = {};
2103 for (f in b) g[f] = a.style[f], a.style[f] = b[f];
2104 e = c.apply(a, d || []);
2105 for (f in b) a.style[f] = g[f];
2106 return e
2107 };
2108 var Nb = /alpha\([^)]*\)/i,
2109 Ob = /opacity\s*=\s*([^)]*)/,
2110 Pb = /^(none|table(?!-c[ea]).+)/,
2111 Qb = new RegExp("^(" + T + ")(.*)$", "i"),
2112 Rb = new RegExp("^([+-])=(" + T + ")", "i"),
2113 Sb = {
2114 position: "absolute",
2115 visibility: "hidden",
2116 display: "block"
2117 },
2118 Tb = {
2119 letterSpacing: 0,
2120 fontWeight: 400
2121 },
2122 Ub = ["Webkit", "O", "Moz", "ms"];
2123
2124 function Vb(a, b) {
2125 if (b in a) return b;
2126 var c = b.charAt(0).toUpperCase() + b.slice(1),
2127 d = b,
2128 e = Ub.length;
2129 while (e--)
2130 if (b = Ub[e] + c, b in a) return b;
2131 return d
2132 }
2133
2134 function Wb(a, b) {
2135 for (var c, d, e, f = [], g = 0, h = a.length; h > g; g++) d = a[g], d.style && (f[g] = n._data(d, "olddisplay"), c = d.style.display, b ? (f[g] || "none" !== c || (d.style.display = ""), "" === d.style.display && V(d) && (f[g] = n._data(d, "olddisplay", Gb(d.nodeName)))) : f[g] || (e = V(d), (c && "none" !== c || !e) && n._data(d, "olddisplay", e ? c : n.css(d, "display"))));
2136 for (g = 0; h > g; g++) d = a[g], d.style && (b && "none" !== d.style.display && "" !== d.style.display || (d.style.display = b ? f[g] || "" : "none"));
2137 return a
2138 }
2139
2140 function Xb(a, b, c) {
2141 var d = Qb.exec(b);
2142 return d ? Math.max(0, d[1] - (c || 0)) + (d[2] || "px") : b
2143 }
2144
2145 function Yb(a, b, c, d, e) {
2146 for (var f = c === (d ? "border" : "content") ? 4 : "width" === b ? 1 : 0, g = 0; 4 > f; f += 2) "margin" === c && (g += n.css(a, c + U[f], !0, e)), d ? ("content" === c && (g -= n.css(a, "padding" + U[f], !0, e)), "margin" !== c && (g -= n.css(a, "border" + U[f] + "Width", !0, e))) : (g += n.css(a, "padding" + U[f], !0, e), "padding" !== c && (g += n.css(a, "border" + U[f] + "Width", !0, e)));
2147 return g
2148 }
2149
2150 function Zb(a, b, c) {
2151 var d = !0,
2152 e = "width" === b ? a.offsetWidth : a.offsetHeight,
2153 f = Jb(a),
2154 g = l.boxSizing() && "border-box" === n.css(a, "boxSizing", !1, f);
2155 if (0 >= e || null == e) {
2156 if (e = Kb(a, b, f), (0 > e || null == e) && (e = a.style[b]), Ib.test(e)) return e;
2157 d = g && (l.boxSizingReliable() || e === a.style[b]), e = parseFloat(e) || 0
2158 }
2159 return e + Yb(a, b, c || (g ? "border" : "content"), d, f) + "px"
2160 }
2161 n.extend({
2162 cssHooks: {
2163 opacity: {
2164 get: function(a, b) {
2165 if (b) {
2166 var c = Kb(a, "opacity");
2167 return "" === c ? "1" : c
2168 }
2169 }
2170 }
2171 },
2172 cssNumber: {
2173 columnCount: !0,
2174 fillOpacity: !0,
2175 fontWeight: !0,
2176 lineHeight: !0,
2177 opacity: !0,
2178 order: !0,
2179 orphans: !0,
2180 widows: !0,
2181 zIndex: !0,
2182 zoom: !0
2183 },
2184 cssProps: {
2185 "float": l.cssFloat ? "cssFloat" : "styleFloat"
2186 },
2187 style: function(a, b, c, d) {
2188 if (a && 3 !== a.nodeType && 8 !== a.nodeType && a.style) {
2189 var e, f, g, h = n.camelCase(b),
2190 i = a.style;
2191 if (b = n.cssProps[h] || (n.cssProps[h] = Vb(i, h)), g = n.cssHooks[b] || n.cssHooks[h], void 0 === c) return g && "get" in g && void 0 !== (e = g.get(a, !1, d)) ? e : i[b];
2192 if (f = typeof c, "string" === f && (e = Rb.exec(c)) && (c = (e[1] + 1) * e[2] + parseFloat(n.css(a, b)), f = "number"), null != c && c === c && ("number" !== f || n.cssNumber[h] || (c += "px"), l.clearCloneStyle || "" !== c || 0 !== b.indexOf("background") || (i[b] = "inherit"), !(g && "set" in g && void 0 === (c = g.set(a, c, d))))) try {
2193 i[b] = "", i[b] = c
2194 } catch (j) {}
2195 }
2196 },
2197 css: function(a, b, c, d) {
2198 var e, f, g, h = n.camelCase(b);
2199 return b = n.cssProps[h] || (n.cssProps[h] = Vb(a.style, h)), g = n.cssHooks[b] || n.cssHooks[h], g && "get" in g && (f = g.get(a, !0, c)), void 0 === f && (f = Kb(a, b, d)), "normal" === f && b in Tb && (f = Tb[b]), "" === c || c ? (e = parseFloat(f), c === !0 || n.isNumeric(e) ? e || 0 : f) : f
2200 }
2201 }), n.each(["height", "width"], function(a, b) {
2202 n.cssHooks[b] = {
2203 get: function(a, c, d) {
2204 return c ? 0 === a.offsetWidth && Pb.test(n.css(a, "display")) ? n.swap(a, Sb, function() {
2205 return Zb(a, b, d)
2206 }) : Zb(a, b, d) : void 0
2207 },
2208 set: function(a, c, d) {
2209 var e = d && Jb(a);
2210 return Xb(a, c, d ? Yb(a, b, d, l.boxSizing() && "border-box" === n.css(a, "boxSizing", !1, e), e) : 0)
2211 }
2212 }
2213 }), l.opacity || (n.cssHooks.opacity = {
2214 get: function(a, b) {
2215 return Ob.test((b && a.currentStyle ? a.currentStyle.filter : a.style.filter) || "") ? .01 * parseFloat(RegExp.$1) + "" : b ? "1" : ""
2216 },
2217 set: function(a, b) {
2218 var c = a.style,
2219 d = a.currentStyle,
2220 e = n.isNumeric(b) ? "alpha(opacity=" + 100 * b + ")" : "",
2221 f = d && d.filter || c.filter || "";
2222 c.zoom = 1, (b >= 1 || "" === b) && "" === n.trim(f.replace(Nb, "")) && c.removeAttribute && (c.removeAttribute("filter"), "" === b || d && !d.filter) || (c.filter = Nb.test(f) ? f.replace(Nb, e) : f + " " + e)
2223 }
2224 }), n.cssHooks.marginRight = Mb(l.reliableMarginRight, function(a, b) {
2225 return b ? n.swap(a, {
2226 display: "inline-block"
2227 }, Kb, [a, "marginRight"]) : void 0
2228 }), n.each({
2229 margin: "",
2230 padding: "",
2231 border: "Width"
2232 }, function(a, b) {
2233 n.cssHooks[a + b] = {
2234 expand: function(c) {
2235 for (var d = 0, e = {}, f = "string" == typeof c ? c.split(" ") : [c]; 4 > d; d++) e[a + U[d] + b] = f[d] || f[d - 2] || f[0];
2236 return e
2237 }
2238 }, Hb.test(a) || (n.cssHooks[a + b].set = Xb)
2239 }), n.fn.extend({
2240 css: function(a, b) {
2241 return W(this, function(a, b, c) {
2242 var d, e, f = {},
2243 g = 0;
2244 if (n.isArray(b)) {
2245 for (d = Jb(a), e = b.length; e > g; g++) f[b[g]] = n.css(a, b[g], !1, d);
2246 return f
2247 }
2248 return void 0 !== c ? n.style(a, b, c) : n.css(a, b)
2249 }, a, b, arguments.length > 1)
2250 },
2251 show: function() {
2252 return Wb(this, !0)
2253 },
2254 hide: function() {
2255 return Wb(this)
2256 },
2257 toggle: function(a) {
2258 return "boolean" == typeof a ? a ? this.show() : this.hide() : this.each(function() {
2259 V(this) ? n(this).show() : n(this).hide()
2260 })
2261 }
2262 });
2263
2264 function $b(a, b, c, d, e) {
2265 return new $b.prototype.init(a, b, c, d, e)
2266 }
2267 n.Tween = $b, $b.prototype = {
2268 constructor: $b,
2269 init: function(a, b, c, d, e, f) {
2270 this.elem = a, this.prop = c, this.easing = e || "swing", this.options = b, this.start = this.now = this.cur(), this.end = d, this.unit = f || (n.cssNumber[c] ? "" : "px")
2271 },
2272 cur: function() {
2273 var a = $b.propHooks[this.prop];
2274 return a && a.get ? a.get(this) : $b.propHooks._default.get(this)
2275 },
2276 run: function(a) {
2277 var b, c = $b.propHooks[this.prop];
2278 return this.pos = b = this.options.duration ? n.easing[this.easing](a, this.options.duration * a, 0, 1, this.options.duration) : a, this.now = (this.end - this.start) * b + this.start, this.options.step && this.options.step.call(this.elem, this.now, this), c && c.set ? c.set(this) : $b.propHooks._default.set(this), this
2279 }
2280 }, $b.prototype.init.prototype = $b.prototype, $b.propHooks = {
2281 _default: {
2282 get: function(a) {
2283 var b;
2284 return null == a.elem[a.prop] || a.elem.style && null != a.elem.style[a.prop] ? (b = n.css(a.elem, a.prop, ""), b && "auto" !== b ? b : 0) : a.elem[a.prop]
2285 },
2286 set: function(a) {
2287 n.fx.step[a.prop] ? n.fx.step[a.prop](a) : a.elem.style && (null != a.elem.style[n.cssProps[a.prop]] || n.cssHooks[a.prop]) ? n.style(a.elem, a.prop, a.now + a.unit) : a.elem[a.prop] = a.now
2288 }
2289 }
2290 }, $b.propHooks.scrollTop = $b.propHooks.scrollLeft = {
2291 set: function(a) {
2292 a.elem.nodeType && a.elem.parentNode && (a.elem[a.prop] = a.now)
2293 }
2294 }, n.easing = {
2295 linear: function(a) {
2296 return a
2297 },
2298 swing: function(a) {
2299 return .5 - Math.cos(a * Math.PI) / 2
2300 }
2301 }, n.fx = $b.prototype.init, n.fx.step = {};
2302 var _b, ac, bc = /^(?:toggle|show|hide)$/,
2303 cc = new RegExp("^(?:([+-])=|)(" + T + ")([a-z%]*)$", "i"),
2304 dc = /queueHooks$/,
2305 ec = [jc],
2306 fc = {
2307 "*": [
2308 function(a, b) {
2309 var c = this.createTween(a, b),
2310 d = c.cur(),
2311 e = cc.exec(b),
2312 f = e && e[3] || (n.cssNumber[a] ? "" : "px"),
2313 g = (n.cssNumber[a] || "px" !== f && +d) && cc.exec(n.css(c.elem, a)),
2314 h = 1,
2315 i = 20;
2316 if (g && g[3] !== f) {
2317 f = f || g[3], e = e || [], g = +d || 1;
2318 do h = h || ".5", g /= h, n.style(c.elem, a, g + f); while (h !== (h = c.cur() / d) && 1 !== h && --i)
2319 }
2320 return e && (g = c.start = +g || +d || 0, c.unit = f, c.end = e[1] ? g + (e[1] + 1) * e[2] : +e[2]), c
2321 }
2322 ]
2323 };
2324
2325 function gc() {
2326 return setTimeout(function() {
2327 _b = void 0
2328 }), _b = n.now()
2329 }
2330
2331 function hc(a, b) {
2332 var c, d = {
2333 height: a
2334 },
2335 e = 0;
2336 for (b = b ? 1 : 0; 4 > e; e += 2 - b) c = U[e], d["margin" + c] = d["padding" + c] = a;
2337 return b && (d.opacity = d.width = a), d
2338 }
2339
2340 function ic(a, b, c) {
2341 for (var d, e = (fc[b] || []).concat(fc["*"]), f = 0, g = e.length; g > f; f++)
2342 if (d = e[f].call(c, b, a)) return d
2343 }
2344
2345 function jc(a, b, c) {
2346 var d, e, f, g, h, i, j, k, m = this,
2347 o = {},
2348 p = a.style,
2349 q = a.nodeType && V(a),
2350 r = n._data(a, "fxshow");
2351 c.queue || (h = n._queueHooks(a, "fx"), null == h.unqueued && (h.unqueued = 0, i = h.empty.fire, h.empty.fire = function() {
2352 h.unqueued || i()
2353 }), h.unqueued++, m.always(function() {
2354 m.always(function() {
2355 h.unqueued--, n.queue(a, "fx").length || h.empty.fire()
2356 })
2357 })), 1 === a.nodeType && ("height" in b || "width" in b) && (c.overflow = [p.overflow, p.overflowX, p.overflowY], j = n.css(a, "display"), k = Gb(a.nodeName), "none" === j && (j = k), "inline" === j && "none" === n.css(a, "float") && (l.inlineBlockNeedsLayout && "inline" !== k ? p.zoom = 1 : p.display = "inline-block")), c.overflow && (p.overflow = "hidden", l.shrinkWrapBlocks() || m.always(function() {
2358 p.overflow = c.overflow[0], p.overflowX = c.overflow[1], p.overflowY = c.overflow[2]
2359 }));
2360 for (d in b)
2361 if (e = b[d], bc.exec(e)) {
2362 if (delete b[d], f = f || "toggle" === e, e === (q ? "hide" : "show")) {
2363 if ("show" !== e || !r || void 0 === r[d]) continue;
2364 q = !0
2365 }
2366 o[d] = r && r[d] || n.style(a, d)
2367 }
2368 if (!n.isEmptyObject(o)) {
2369 r ? "hidden" in r && (q = r.hidden) : r = n._data(a, "fxshow", {}), f && (r.hidden = !q), q ? n(a).show() : m.done(function() {
2370 n(a).hide()
2371 }), m.done(function() {
2372 var b;
2373 n._removeData(a, "fxshow");
2374 for (b in o) n.style(a, b, o[b])
2375 });
2376 for (d in o) g = ic(q ? r[d] : 0, d, m), d in r || (r[d] = g.start, q && (g.end = g.start, g.start = "width" === d || "height" === d ? 1 : 0))
2377 }
2378 }
2379
2380 function kc(a, b) {
2381 var c, d, e, f, g;
2382 for (c in a)
2383 if (d = n.camelCase(c), e = b[d], f = a[c], n.isArray(f) && (e = f[1], f = a[c] = f[0]), c !== d && (a[d] = f, delete a[c]), g = n.cssHooks[d], g && "expand" in g) {
2384 f = g.expand(f), delete a[d];
2385 for (c in f) c in a || (a[c] = f[c], b[c] = e)
2386 } else b[d] = e
2387 }
2388
2389 function lc(a, b, c) {
2390 var d, e, f = 0,
2391 g = ec.length,
2392 h = n.Deferred().always(function() {
2393 delete i.elem
2394 }),
2395 i = function() {
2396 if (e) return !1;
2397 for (var b = _b || gc(), c = Math.max(0, j.startTime + j.duration - b), d = c / j.duration || 0, f = 1 - d, g = 0, i = j.tweens.length; i > g; g++) j.tweens[g].run(f);
2398 return h.notifyWith(a, [j, f, c]), 1 > f && i ? c : (h.resolveWith(a, [j]), !1)
2399 },
2400 j = h.promise({
2401 elem: a,
2402 props: n.extend({}, b),
2403 opts: n.extend(!0, {
2404 specialEasing: {}
2405 }, c),
2406 originalProperties: b,
2407 originalOptions: c,
2408 startTime: _b || gc(),
2409 duration: c.duration,
2410 tweens: [],
2411 createTween: function(b, c) {
2412 var d = n.Tween(a, j.opts, b, c, j.opts.specialEasing[b] || j.opts.easing);
2413 return j.tweens.push(d), d
2414 },
2415 stop: function(b) {
2416 var c = 0,
2417 d = b ? j.tweens.length : 0;
2418 if (e) return this;
2419 for (e = !0; d > c; c++) j.tweens[c].run(1);
2420 return b ? h.resolveWith(a, [j, b]) : h.rejectWith(a, [j, b]), this
2421 }
2422 }),
2423 k = j.props;
2424 for (kc(k, j.opts.specialEasing); g > f; f++)
2425 if (d = ec[f].call(j, a, k, j.opts)) return d;
2426 return n.map(k, ic, j), n.isFunction(j.opts.start) && j.opts.start.call(a, j), n.fx.timer(n.extend(i, {
2427 elem: a,
2428 anim: j,
2429 queue: j.opts.queue
2430 })), j.progress(j.opts.progress).done(j.opts.done, j.opts.complete).fail(j.opts.fail).always(j.opts.always)
2431 }
2432 n.Animation = n.extend(lc, {
2433 tweener: function(a, b) {
2434 n.isFunction(a) ? (b = a, a = ["*"]) : a = a.split(" ");
2435 for (var c, d = 0, e = a.length; e > d; d++) c = a[d], fc[c] = fc[c] || [], fc[c].unshift(b)
2436 },
2437 prefilter: function(a, b) {
2438 b ? ec.unshift(a) : ec.push(a)
2439 }
2440 }), n.speed = function(a, b, c) {
2441 var d = a && "object" == typeof a ? n.extend({}, a) : {
2442 complete: c || !c && b || n.isFunction(a) && a,
2443 duration: a,
2444 easing: c && b || b && !n.isFunction(b) && b
2445 };
2446 return d.duration = n.fx.off ? 0 : "number" == typeof d.duration ? d.duration : d.duration in n.fx.speeds ? n.fx.speeds[d.duration] : n.fx.speeds._default, (null == d.queue || d.queue === !0) && (d.queue = "fx"), d.old = d.complete, d.complete = function() {
2447 n.isFunction(d.old) && d.old.call(this), d.queue && n.dequeue(this, d.queue)
2448 }, d
2449 }, n.fn.extend({
2450 fadeTo: function(a, b, c, d) {
2451 return this.filter(V).css("opacity", 0).show().end().animate({
2452 opacity: b
2453 }, a, c, d)
2454 },
2455 animate: function(a, b, c, d) {
2456 var e = n.isEmptyObject(a),
2457 f = n.speed(b, c, d),
2458 g = function() {
2459 var b = lc(this, n.extend({}, a), f);
2460 (e || n._data(this, "finish")) && b.stop(!0)
2461 };
2462 return g.finish = g, e || f.queue === !1 ? this.each(g) : this.queue(f.queue, g)
2463 },
2464 stop: function(a, b, c) {
2465 var d = function(a) {
2466 var b = a.stop;
2467 delete a.stop, b(c)
2468 };
2469 return "string" != typeof a && (c = b, b = a, a = void 0), b && a !== !1 && this.queue(a || "fx", []), this.each(function() {
2470 var b = !0,
2471 e = null != a && a + "queueHooks",
2472 f = n.timers,
2473 g = n._data(this);
2474 if (e) g[e] && g[e].stop && d(g[e]);
2475 else
2476 for (e in g) g[e] && g[e].stop && dc.test(e) && d(g[e]);
2477 for (e = f.length; e--;) f[e].elem !== this || null != a && f[e].queue !== a || (f[e].anim.stop(c), b = !1, f.splice(e, 1));
2478 (b || !c) && n.dequeue(this, a)
2479 })
2480 },
2481 finish: function(a) {
2482 return a !== !1 && (a = a || "fx"), this.each(function() {
2483 var b, c = n._data(this),
2484 d = c[a + "queue"],
2485 e = c[a + "queueHooks"],
2486 f = n.timers,
2487 g = d ? d.length : 0;
2488 for (c.finish = !0, n.queue(this, a, []), e && e.stop && e.stop.call(this, !0), b = f.length; b--;) f[b].elem === this && f[b].queue === a && (f[b].anim.stop(!0), f.splice(b, 1));
2489 for (b = 0; g > b; b++) d[b] && d[b].finish && d[b].finish.call(this);
2490 delete c.finish
2491 })
2492 }
2493 }), n.each(["toggle", "show", "hide"], function(a, b) {
2494 var c = n.fn[b];
2495 n.fn[b] = function(a, d, e) {
2496 return null == a || "boolean" == typeof a ? c.apply(this, arguments) : this.animate(hc(b, !0), a, d, e)
2497 }
2498 }), n.each({
2499 slideDown: hc("show"),
2500 slideUp: hc("hide"),
2501 slideToggle: hc("toggle"),
2502 fadeIn: {
2503 opacity: "show"
2504 },
2505 fadeOut: {
2506 opacity: "hide"
2507 },
2508 fadeToggle: {
2509 opacity: "toggle"
2510 }
2511 }, function(a, b) {
2512 n.fn[a] = function(a, c, d) {
2513 return this.animate(b, a, c, d)
2514 }
2515 }), n.timers = [], n.fx.tick = function() {
2516 var a, b = n.timers,
2517 c = 0;
2518 for (_b = n.now(); c < b.length; c++) a = b[c], a() || b[c] !== a || b.splice(c--, 1);
2519 b.length || n.fx.stop(), _b = void 0
2520 }, n.fx.timer = function(a) {
2521 n.timers.push(a), a() ? n.fx.start() : n.timers.pop()
2522 }, n.fx.interval = 13, n.fx.start = function() {
2523 ac || (ac = setInterval(n.fx.tick, n.fx.interval))
2524 }, n.fx.stop = function() {
2525 clearInterval(ac), ac = null
2526 }, n.fx.speeds = {
2527 slow: 600,
2528 fast: 200,
2529 _default: 400
2530 }, n.fn.delay = function(a, b) {
2531 return a = n.fx ? n.fx.speeds[a] || a : a, b = b || "fx", this.queue(b, function(b, c) {
2532 var d = setTimeout(b, a);
2533 c.stop = function() {
2534 clearTimeout(d)
2535 }
2536 })
2537 },
2538 function() {
2539 var a, b, c, d, e = z.createElement("div");
2540 e.setAttribute("className", "t"), e.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>", a = e.getElementsByTagName("a")[0], c = z.createElement("select"), d = c.appendChild(z.createElement("option")), b = e.getElementsByTagName("input")[0], a.style.cssText = "top:1px", l.getSetAttribute = "t" !== e.className, l.style = /top/.test(a.getAttribute("style")), l.hrefNormalized = "/a" === a.getAttribute("href"), l.checkOn = !!b.value, l.optSelected = d.selected, l.enctype = !!z.createElement("form").enctype, c.disabled = !0, l.optDisabled = !d.disabled, b = z.createElement("input"), b.setAttribute("value", ""), l.input = "" === b.getAttribute("value"), b.value = "t", b.setAttribute("type", "radio"), l.radioValue = "t" === b.value, a = b = c = d = e = null
2541 }();
2542 var mc = /\r/g;
2543 n.fn.extend({
2544 val: function(a) {
2545 var b, c, d, e = this[0]; {
2546 if (arguments.length) return d = n.isFunction(a), this.each(function(c) {
2547 var e;
2548 1 === this.nodeType && (e = d ? a.call(this, c, n(this).val()) : a, null == e ? e = "" : "number" == typeof e ? e += "" : n.isArray(e) && (e = n.map(e, function(a) {
2549 return null == a ? "" : a + ""
2550 })), b = n.valHooks[this.type] || n.valHooks[this.nodeName.toLowerCase()], b && "set" in b && void 0 !== b.set(this, e, "value") || (this.value = e))
2551 });
2552 if (e) return b = n.valHooks[e.type] || n.valHooks[e.nodeName.toLowerCase()], b && "get" in b && void 0 !== (c = b.get(e, "value")) ? c : (c = e.value, "string" == typeof c ? c.replace(mc, "") : null == c ? "" : c)
2553 }
2554 }
2555 }), n.extend({
2556 valHooks: {
2557 option: {
2558 get: function(a) {
2559 var b = n.find.attr(a, "value");
2560 return null != b ? b : n.text(a)
2561 }
2562 },
2563 select: {
2564 get: function(a) {
2565 for (var b, c, d = a.options, e = a.selectedIndex, f = "select-one" === a.type || 0 > e, g = f ? null : [], h = f ? e + 1 : d.length, i = 0 > e ? h : f ? e : 0; h > i; i++)
2566 if (c = d[i], !(!c.selected && i !== e || (l.optDisabled ? c.disabled : null !== c.getAttribute("disabled")) || c.parentNode.disabled && n.nodeName(c.parentNode, "optgroup"))) {
2567 if (b = n(c).val(), f) return b;
2568 g.push(b)
2569 }
2570 return g
2571 },
2572 set: function(a, b) {
2573 var c, d, e = a.options,
2574 f = n.makeArray(b),
2575 g = e.length;
2576 while (g--)
2577 if (d = e[g], n.inArray(n.valHooks.option.get(d), f) >= 0) try {
2578 d.selected = c = !0
2579 } catch (h) {
2580 d.scrollHeight
2581 } else d.selected = !1;
2582 return c || (a.selectedIndex = -1), e
2583 }
2584 }
2585 }
2586 }), n.each(["radio", "checkbox"], function() {
2587 n.valHooks[this] = {
2588 set: function(a, b) {
2589 return n.isArray(b) ? a.checked = n.inArray(n(a).val(), b) >= 0 : void 0
2590 }
2591 }, l.checkOn || (n.valHooks[this].get = function(a) {
2592 return null === a.getAttribute("value") ? "on" : a.value
2593 })
2594 });
2595 var nc, oc, pc = n.expr.attrHandle,
2596 qc = /^(?:checked|selected)$/i,
2597 rc = l.getSetAttribute,
2598 sc = l.input;
2599 n.fn.extend({
2600 attr: function(a, b) {
2601 return W(this, n.attr, a, b, arguments.length > 1)
2602 },
2603 removeAttr: function(a) {
2604 return this.each(function() {
2605 n.removeAttr(this, a)
2606 })
2607 }
2608 }), n.extend({
2609 attr: function(a, b, c) {
2610 var d, e, f = a.nodeType;
2611 if (a && 3 !== f && 8 !== f && 2 !== f) return typeof a.getAttribute === L ? n.prop(a, b, c) : (1 === f && n.isXMLDoc(a) || (b = b.toLowerCase(), d = n.attrHooks[b] || (n.expr.match.bool.test(b) ? oc : nc)), void 0 === c ? d && "get" in d && null !== (e = d.get(a, b)) ? e : (e = n.find.attr(a, b), null == e ? void 0 : e) : null !== c ? d && "set" in d && void 0 !== (e = d.set(a, c, b)) ? e : (a.setAttribute(b, c + ""), c) : void n.removeAttr(a, b))
2612 },
2613 removeAttr: function(a, b) {
2614 var c, d, e = 0,
2615 f = b && b.match(F);
2616 if (f && 1 === a.nodeType)
2617 while (c = f[e++]) d = n.propFix[c] || c, n.expr.match.bool.test(c) ? sc && rc || !qc.test(c) ? a[d] = !1 : a[n.camelCase("default-" + c)] = a[d] = !1 : n.attr(a, c, ""), a.removeAttribute(rc ? c : d)
2618 },
2619 attrHooks: {
2620 type: {
2621 set: function(a, b) {
2622 if (!l.radioValue && "radio" === b && n.nodeName(a, "input")) {
2623 var c = a.value;
2624 return a.setAttribute("type", b), c && (a.value = c), b
2625 }
2626 }
2627 }
2628 }
2629 }), oc = {
2630 set: function(a, b, c) {
2631 return b === !1 ? n.removeAttr(a, c) : sc && rc || !qc.test(c) ? a.setAttribute(!rc && n.propFix[c] || c, c) : a[n.camelCase("default-" + c)] = a[c] = !0, c
2632 }
2633 }, n.each(n.expr.match.bool.source.match(/\w+/g), function(a, b) {
2634 var c = pc[b] || n.find.attr;
2635 pc[b] = sc && rc || !qc.test(b) ? function(a, b, d) {
2636 var e, f;
2637 return d || (f = pc[b], pc[b] = e, e = null != c(a, b, d) ? b.toLowerCase() : null, pc[b] = f), e
2638 } : function(a, b, c) {
2639 return c ? void 0 : a[n.camelCase("default-" + b)] ? b.toLowerCase() : null
2640 }
2641 }), sc && rc || (n.attrHooks.value = {
2642 set: function(a, b, c) {
2643 return n.nodeName(a, "input") ? void(a.defaultValue = b) : nc && nc.set(a, b, c)
2644 }
2645 }), rc || (nc = {
2646 set: function(a, b, c) {
2647 var d = a.getAttributeNode(c);
2648 return d || a.setAttributeNode(d = a.ownerDocument.createAttribute(c)), d.value = b += "", "value" === c || b === a.getAttribute(c) ? b : void 0
2649 }
2650 }, pc.id = pc.name = pc.coords = function(a, b, c) {
2651 var d;
2652 return c ? void 0 : (d = a.getAttributeNode(b)) && "" !== d.value ? d.value : null
2653 }, n.valHooks.button = {
2654 get: function(a, b) {
2655 var c = a.getAttributeNode(b);
2656 return c && c.specified ? c.value : void 0
2657 },
2658 set: nc.set
2659 }, n.attrHooks.contenteditable = {
2660 set: function(a, b, c) {
2661 nc.set(a, "" === b ? !1 : b, c)
2662 }
2663 }, n.each(["width", "height"], function(a, b) {
2664 n.attrHooks[b] = {
2665 set: function(a, c) {
2666 return "" === c ? (a.setAttribute(b, "auto"), c) : void 0
2667 }
2668 }
2669 })), l.style || (n.attrHooks.style = {
2670 get: function(a) {
2671 return a.style.cssText || void 0
2672 },
2673 set: function(a, b) {
2674 return a.style.cssText = b + ""
2675 }
2676 });
2677 var tc = /^(?:input|select|textarea|button|object)$/i,
2678 uc = /^(?:a|area)$/i;
2679 n.fn.extend({
2680 prop: function(a, b) {
2681 return W(this, n.prop, a, b, arguments.length > 1)
2682 },
2683 removeProp: function(a) {
2684 return a = n.propFix[a] || a, this.each(function() {
2685 try {
2686 this[a] = void 0, delete this[a]
2687 } catch (b) {}
2688 })
2689 }
2690 }), n.extend({
2691 propFix: {
2692 "for": "htmlFor",
2693 "class": "className"
2694 },
2695 prop: function(a, b, c) {
2696 var d, e, f, g = a.nodeType;
2697 if (a && 3 !== g && 8 !== g && 2 !== g) return f = 1 !== g || !n.isXMLDoc(a), f && (b = n.propFix[b] || b, e = n.propHooks[b]), void 0 !== c ? e && "set" in e && void 0 !== (d = e.set(a, c, b)) ? d : a[b] = c : e && "get" in e && null !== (d = e.get(a, b)) ? d : a[b]
2698 },
2699 propHooks: {
2700 tabIndex: {
2701 get: function(a) {
2702 var b = n.find.attr(a, "tabindex");
2703 return b ? parseInt(b, 10) : tc.test(a.nodeName) || uc.test(a.nodeName) && a.href ? 0 : -1
2704 }
2705 }
2706 }
2707 }), l.hrefNormalized || n.each(["href", "src"], function(a, b) {
2708 n.propHooks[b] = {
2709 get: function(a) {
2710 return a.getAttribute(b, 4)
2711 }
2712 }
2713 }), l.optSelected || (n.propHooks.selected = {
2714 get: function(a) {
2715 var b = a.parentNode;
2716 return b && (b.selectedIndex, b.parentNode && b.parentNode.selectedIndex), null
2717 }
2718 }), n.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], function() {
2719 n.propFix[this.toLowerCase()] = this
2720 }), l.enctype || (n.propFix.enctype = "encoding");
2721 var vc = /[\t\r\n\f]/g;
2722 n.fn.extend({
2723 addClass: function(a) {
2724 var b, c, d, e, f, g, h = 0,
2725 i = this.length,
2726 j = "string" == typeof a && a;
2727 if (n.isFunction(a)) return this.each(function(b) {
2728 n(this).addClass(a.call(this, b, this.className))
2729 });
2730 if (j)
2731 for (b = (a || "").match(F) || []; i > h; h++)
2732 if (c = this[h], d = 1 === c.nodeType && (c.className ? (" " + c.className + " ").replace(vc, " ") : " ")) {
2733 f = 0;
2734 while (e = b[f++]) d.indexOf(" " + e + " ") < 0 && (d += e + " ");
2735 g = n.trim(d), c.className !== g && (c.className = g)
2736 }
2737 return this
2738 },
2739 removeClass: function(a) {
2740 var b, c, d, e, f, g, h = 0,
2741 i = this.length,
2742 j = 0 === arguments.length || "string" == typeof a && a;
2743 if (n.isFunction(a)) return this.each(function(b) {
2744 n(this).removeClass(a.call(this, b, this.className))
2745 });
2746 if (j)
2747 for (b = (a || "").match(F) || []; i > h; h++)
2748 if (c = this[h], d = 1 === c.nodeType && (c.className ? (" " + c.className + " ").replace(vc, " ") : "")) {
2749 f = 0;
2750 while (e = b[f++])
2751 while (d.indexOf(" " + e + " ") >= 0) d = d.replace(" " + e + " ", " ");
2752 g = a ? n.trim(d) : "", c.className !== g && (c.className = g)
2753 }
2754 return this
2755 },
2756 toggleClass: function(a, b) {
2757 var c = typeof a;
2758 return "boolean" == typeof b && "string" === c ? b ? this.addClass(a) : this.removeClass(a) : this.each(n.isFunction(a) ? function(c) {
2759 n(this).toggleClass(a.call(this, c, this.className, b), b)
2760 } : function() {
2761 if ("string" === c) {
2762 var b, d = 0,
2763 e = n(this),
2764 f = a.match(F) || [];
2765 while (b = f[d++]) e.hasClass(b) ? e.removeClass(b) : e.addClass(b)
2766 } else(c === L || "boolean" === c) && (this.className && n._data(this, "__className__", this.className), this.className = this.className || a === !1 ? "" : n._data(this, "__className__") || "")
2767 })
2768 },
2769 hasClass: function(a) {
2770 for (var b = " " + a + " ", c = 0, d = this.length; d > c; c++)
2771 if (1 === this[c].nodeType && (" " + this[c].className + " ").replace(vc, " ").indexOf(b) >= 0) return !0;
2772 return !1
2773 }
2774 }), n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "), function(a, b) {
2775 n.fn[b] = function(a, c) {
2776 return arguments.length > 0 ? this.on(b, null, a, c) : this.trigger(b)
2777 }
2778 }), n.fn.extend({
2779 hover: function(a, b) {
2780 return this.mouseenter(a).mouseleave(b || a)
2781 },
2782 bind: function(a, b, c) {
2783 return this.on(a, null, b, c)
2784 },
2785 unbind: function(a, b) {
2786 return this.off(a, null, b)
2787 },
2788 delegate: function(a, b, c, d) {
2789 return this.on(b, a, c, d)
2790 },
2791 undelegate: function(a, b, c) {
2792 return 1 === arguments.length ? this.off(a, "**") : this.off(b, a || "**", c)
2793 }
2794 });
2795 var wc = n.now(),
2796 xc = /\?/,
2797 yc = /(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;
2798 n.parseJSON = function(b) {
2799 if (a.JSON && a.JSON.parse) return a.JSON.parse(b + "");
2800 var c, d = null,
2801 e = n.trim(b + "");
2802 return e && !n.trim(e.replace(yc, function(a, b, e, f) {
2803 return c && b && (d = 0), 0 === d ? a : (c = e || b, d += !f - !e, "")
2804 })) ? Function("return " + e)() : n.error("Invalid JSON: " + b)
2805 }, n.parseXML = function(b) {
2806 var c, d;
2807 if (!b || "string" != typeof b) return null;
2808 try {
2809 a.DOMParser ? (d = new DOMParser, c = d.parseFromString(b, "text/xml")) : (c = new ActiveXObject("Microsoft.XMLDOM"), c.async = "false", c.loadXML(b))
2810 } catch (e) {
2811 c = void 0
2812 }
2813 return c && c.documentElement && !c.getElementsByTagName("parsererror").length || n.error("Invalid XML: " + b), c
2814 };
2815 var zc, Ac, Bc = /#.*$/,
2816 Cc = /([?&])_=[^&]*/,
2817 Dc = /^(.*?):[ \t]*([^\r\n]*)\r?$/gm,
2818 Ec = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
2819 Fc = /^(?:GET|HEAD)$/,
2820 Gc = /^\/\//,
2821 Hc = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,
2822 Ic = {},
2823 Jc = {},
2824 Kc = "*/".concat("*");
2825 try {
2826 Ac = location.href
2827 } catch (Lc) {
2828 Ac = z.createElement("a"), Ac.href = "", Ac = Ac.href
2829 }
2830 zc = Hc.exec(Ac.toLowerCase()) || [];
2831
2832 function Mc(a) {
2833 return function(b, c) {
2834 "string" != typeof b && (c = b, b = "*");
2835 var d, e = 0,
2836 f = b.toLowerCase().match(F) || [];
2837 if (n.isFunction(c))
2838 while (d = f[e++]) "+" === d.charAt(0) ? (d = d.slice(1) || "*", (a[d] = a[d] || []).unshift(c)) : (a[d] = a[d] || []).push(c)
2839 }
2840 }
2841
2842 function Nc(a, b, c, d) {
2843 var e = {},
2844 f = a === Jc;
2845
2846 function g(h) {
2847 var i;
2848 return e[h] = !0, n.each(a[h] || [], function(a, h) {
2849 var j = h(b, c, d);
2850 return "string" != typeof j || f || e[j] ? f ? !(i = j) : void 0 : (b.dataTypes.unshift(j), g(j), !1)
2851 }), i
2852 }
2853 return g(b.dataTypes[0]) || !e["*"] && g("*")
2854 }
2855
2856 function Oc(a, b) {
2857 var c, d, e = n.ajaxSettings.flatOptions || {};
2858 for (d in b) void 0 !== b[d] && ((e[d] ? a : c || (c = {}))[d] = b[d]);
2859 return c && n.extend(!0, a, c), a
2860 }
2861
2862 function Pc(a, b, c) {
2863 var d, e, f, g, h = a.contents,
2864 i = a.dataTypes;
2865 while ("*" === i[0]) i.shift(), void 0 === e && (e = a.mimeType || b.getResponseHeader("Content-Type"));
2866 if (e)
2867 for (g in h)
2868 if (h[g] && h[g].test(e)) {
2869 i.unshift(g);
2870 break
2871 }
2872 if (i[0] in c) f = i[0];
2873 else {
2874 for (g in c) {
2875 if (!i[0] || a.converters[g + " " + i[0]]) {
2876 f = g;
2877 break
2878 }
2879 d || (d = g)
2880 }
2881 f = f || d
2882 }
2883 return f ? (f !== i[0] && i.unshift(f), c[f]) : void 0
2884 }
2885
2886 function Qc(a, b, c, d) {
2887 var e, f, g, h, i, j = {},
2888 k = a.dataTypes.slice();
2889 if (k[1])
2890 for (g in a.converters) j[g.toLowerCase()] = a.converters[g];
2891 f = k.shift();
2892 while (f)
2893 if (a.responseFields[f] && (c[a.responseFields[f]] = b), !i && d && a.dataFilter && (b = a.dataFilter(b, a.dataType)), i = f, f = k.shift())
2894 if ("*" === f) f = i;
2895 else if ("*" !== i && i !== f) {
2896 if (g = j[i + " " + f] || j["* " + f], !g)
2897 for (e in j)
2898 if (h = e.split(" "), h[1] === f && (g = j[i + " " + h[0]] || j["* " + h[0]])) {
2899 g === !0 ? g = j[e] : j[e] !== !0 && (f = h[0], k.unshift(h[1]));
2900 break
2901 }
2902 if (g !== !0)
2903 if (g && a["throws"]) b = g(b);
2904 else try {
2905 b = g(b)
2906 } catch (l) {
2907 return {
2908 state: "parsererror",
2909 error: g ? l : "No conversion from " + i + " to " + f
2910 }
2911 }
2912 }
2913 return {
2914 state: "success",
2915 data: b
2916 }
2917 }
2918 n.extend({
2919 active: 0,
2920 lastModified: {},
2921 etag: {},
2922 ajaxSettings: {
2923 url: Ac,
2924 type: "GET",
2925 isLocal: Ec.test(zc[1]),
2926 global: !0,
2927 processData: !0,
2928 async: !0,
2929 contentType: "application/x-www-form-urlencoded; charset=UTF-8",
2930 accepts: {
2931 "*": Kc,
2932 text: "text/plain",
2933 html: "text/html",
2934 xml: "application/xml, text/xml",
2935 json: "application/json, text/javascript"
2936 },
2937 contents: {
2938 xml: /xml/,
2939 html: /html/,
2940 json: /json/
2941 },
2942 responseFields: {
2943 xml: "responseXML",
2944 text: "responseText",
2945 json: "responseJSON"
2946 },
2947 converters: {
2948 "* text": String,
2949 "text html": !0,
2950 "text json": n.parseJSON,
2951 "text xml": n.parseXML
2952 },
2953 flatOptions: {
2954 url: !0,
2955 context: !0
2956 }
2957 },
2958 ajaxSetup: function(a, b) {
2959 return b ? Oc(Oc(a, n.ajaxSettings), b) : Oc(n.ajaxSettings, a)
2960 },
2961 ajaxPrefilter: Mc(Ic),
2962 ajaxTransport: Mc(Jc),
2963 ajax: function(a, b) {
2964 "object" == typeof a && (b = a, a = void 0), b = b || {};
2965 var c, d, e, f, g, h, i, j, k = n.ajaxSetup({}, b),
2966 l = k.context || k,
2967 m = k.context && (l.nodeType || l.jquery) ? n(l) : n.event,
2968 o = n.Deferred(),
2969 p = n.Callbacks("once memory"),
2970 q = k.statusCode || {},
2971 r = {},
2972 s = {},
2973 t = 0,
2974 u = "canceled",
2975 v = {
2976 readyState: 0,
2977 getResponseHeader: function(a) {
2978 var b;
2979 if (2 === t) {
2980 if (!j) {
2981 j = {};
2982 while (b = Dc.exec(f)) j[b[1].toLowerCase()] = b[2]
2983 }
2984 b = j[a.toLowerCase()]
2985 }
2986 return null == b ? null : b
2987 },
2988 getAllResponseHeaders: function() {
2989 return 2 === t ? f : null
2990 },
2991 setRequestHeader: function(a, b) {
2992 var c = a.toLowerCase();
2993 return t || (a = s[c] = s[c] || a, r[a] = b), this
2994 },
2995 overrideMimeType: function(a) {
2996 return t || (k.mimeType = a), this
2997 },
2998 statusCode: function(a) {
2999 var b;
3000 if (a)
3001 if (2 > t)
3002 for (b in a) q[b] = [q[b], a[b]];
3003 else v.always(a[v.status]);
3004 return this
3005 },
3006 abort: function(a) {
3007 var b = a || u;
3008 return i && i.abort(b), x(0, b), this
3009 }
3010 };
3011 if (o.promise(v).complete = p.add, v.success = v.done, v.error = v.fail, k.url = ((a || k.url || Ac) + "").replace(Bc, "").replace(Gc, zc[1] + "//"), k.type = b.method || b.type || k.method || k.type, k.dataTypes = n.trim(k.dataType || "*").toLowerCase().match(F) || [""], null == k.crossDomain && (c = Hc.exec(k.url.toLowerCase()), k.crossDomain = !(!c || c[1] === zc[1] && c[2] === zc[2] && (c[3] || ("http:" === c[1] ? "80" : "443")) === (zc[3] || ("http:" === zc[1] ? "80" : "443")))), k.data && k.processData && "string" != typeof k.data && (k.data = n.param(k.data, k.traditional)), Nc(Ic, k, b, v), 2 === t) return v;
3012 h = k.global, h && 0 === n.active++ && n.event.trigger("ajaxStart"), k.type = k.type.toUpperCase(), k.hasContent = !Fc.test(k.type), e = k.url, k.hasContent || (k.data && (e = k.url += (xc.test(e) ? "&" : "?") + k.data, delete k.data), k.cache === !1 && (k.url = Cc.test(e) ? e.replace(Cc, "$1_=" + wc++) : e + (xc.test(e) ? "&" : "?") + "_=" + wc++)), k.ifModified && (n.lastModified[e] && v.setRequestHeader("If-Modified-Since", n.lastModified[e]), n.etag[e] && v.setRequestHeader("If-None-Match", n.etag[e])), (k.data && k.hasContent && k.contentType !== !1 || b.contentType) && v.setRequestHeader("Content-Type", k.contentType), v.setRequestHeader("Accept", k.dataTypes[0] && k.accepts[k.dataTypes[0]] ? k.accepts[k.dataTypes[0]] + ("*" !== k.dataTypes[0] ? ", " + Kc + "; q=0.01" : "") : k.accepts["*"]);
3013 for (d in k.headers) v.setRequestHeader(d, k.headers[d]);
3014 if (k.beforeSend && (k.beforeSend.call(l, v, k) === !1 || 2 === t)) return v.abort();
3015 u = "abort";
3016 for (d in {
3017 success: 1,
3018 error: 1,
3019 complete: 1
3020 }) v[d](k[d]);
3021 if (i = Nc(Jc, k, b, v)) {
3022 v.readyState = 1, h && m.trigger("ajaxSend", [v, k]), k.async && k.timeout > 0 && (g = setTimeout(function() {
3023 v.abort("timeout")
3024 }, k.timeout));
3025 try {
3026 t = 1, i.send(r, x)
3027 } catch (w) {
3028 if (!(2 > t)) throw w;
3029 x(-1, w)
3030 }
3031 } else x(-1, "No Transport");
3032
3033 function x(a, b, c, d) {
3034 var j, r, s, u, w, x = b;
3035 2 !== t && (t = 2, g && clearTimeout(g), i = void 0, f = d || "", v.readyState = a > 0 ? 4 : 0, j = a >= 200 && 300 > a || 304 === a, c && (u = Pc(k, v, c)), u = Qc(k, u, v, j), j ? (k.ifModified && (w = v.getResponseHeader("Last-Modified"), w && (n.lastModified[e] = w), w = v.getResponseHeader("etag"), w && (n.etag[e] = w)), 204 === a || "HEAD" === k.type ? x = "nocontent" : 304 === a ? x = "notmodified" : (x = u.state, r = u.data, s = u.error, j = !s)) : (s = x, (a || !x) && (x = "error", 0 > a && (a = 0))), v.status = a, v.statusText = (b || x) + "", j ? o.resolveWith(l, [r, x, v]) : o.rejectWith(l, [v, x, s]), v.statusCode(q), q = void 0, h && m.trigger(j ? "ajaxSuccess" : "ajaxError", [v, k, j ? r : s]), p.fireWith(l, [v, x]), h && (m.trigger("ajaxComplete", [v, k]), --n.active || n.event.trigger("ajaxStop")))
3036 }
3037 return v
3038 },
3039 getJSON: function(a, b, c) {
3040 return n.get(a, b, c, "json")
3041 },
3042 getScript: function(a, b) {
3043 return n.get(a, void 0, b, "script")
3044 }
3045 }), n.each(["get", "post"], function(a, b) {
3046 n[b] = function(a, c, d, e) {
3047 return n.isFunction(c) && (e = e || d, d = c, c = void 0), n.ajax({
3048 url: a,
3049 type: b,
3050 dataType: e,
3051 data: c,
3052 success: d
3053 })
3054 }
3055 }), n.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function(a, b) {
3056 n.fn[b] = function(a) {
3057 return this.on(b, a)
3058 }
3059 }), n._evalUrl = function(a) {
3060 return n.ajax({
3061 url: a,
3062 type: "GET",
3063 dataType: "script",
3064 async: !1,
3065 global: !1,
3066 "throws": !0
3067 })
3068 }, n.fn.extend({
3069 wrapAll: function(a) {
3070 if (n.isFunction(a)) return this.each(function(b) {
3071 n(this).wrapAll(a.call(this, b))
3072 });
3073 if (this[0]) {
3074 var b = n(a, this[0].ownerDocument).eq(0).clone(!0);
3075 this[0].parentNode && b.insertBefore(this[0]), b.map(function() {
3076 var a = this;
3077 while (a.firstChild && 1 === a.firstChild.nodeType) a = a.firstChild;
3078 return a
3079 }).append(this)
3080 }
3081 return this
3082 },
3083 wrapInner: function(a) {
3084 return this.each(n.isFunction(a) ? function(b) {
3085 n(this).wrapInner(a.call(this, b))
3086 } : function() {
3087 var b = n(this),
3088 c = b.contents();
3089 c.length ? c.wrapAll(a) : b.append(a)
3090 })
3091 },
3092 wrap: function(a) {
3093 var b = n.isFunction(a);
3094 return this.each(function(c) {
3095 n(this).wrapAll(b ? a.call(this, c) : a)
3096 })
3097 },
3098 unwrap: function() {
3099 return this.parent().each(function() {
3100 n.nodeName(this, "body") || n(this).replaceWith(this.childNodes)
3101 }).end()
3102 }
3103 }), n.expr.filters.hidden = function(a) {
3104 return a.offsetWidth <= 0 && a.offsetHeight <= 0 || !l.reliableHiddenOffsets() && "none" === (a.style && a.style.display || n.css(a, "display"))
3105 }, n.expr.filters.visible = function(a) {
3106 return !n.expr.filters.hidden(a)
3107 };
3108 var Rc = /%20/g,
3109 Sc = /\[\]$/,
3110 Tc = /\r?\n/g,
3111 Uc = /^(?:submit|button|image|reset|file)$/i,
3112 Vc = /^(?:input|select|textarea|keygen)/i;
3113
3114 function Wc(a, b, c, d) {
3115 var e;
3116 if (n.isArray(b)) n.each(b, function(b, e) {
3117 c || Sc.test(a) ? d(a, e) : Wc(a + "[" + ("object" == typeof e ? b : "") + "]", e, c, d)
3118 });
3119 else if (c || "object" !== n.type(b)) d(a, b);
3120 else
3121 for (e in b) Wc(a + "[" + e + "]", b[e], c, d)
3122 }
3123 n.param = function(a, b) {
3124 var c, d = [],
3125 e = function(a, b) {
3126 b = n.isFunction(b) ? b() : null == b ? "" : b, d[d.length] = encodeURIComponent(a) + "=" + encodeURIComponent(b)
3127 };
3128 if (void 0 === b && (b = n.ajaxSettings && n.ajaxSettings.traditional), n.isArray(a) || a.jquery && !n.isPlainObject(a)) n.each(a, function() {
3129 e(this.name, this.value)
3130 });
3131 else
3132 for (c in a) Wc(c, a[c], b, e);
3133 return d.join("&").replace(Rc, "+")
3134 }, n.fn.extend({
3135 serialize: function() {
3136 return n.param(this.serializeArray())
3137 },
3138 serializeArray: function() {
3139 return this.map(function() {
3140 var a = n.prop(this, "elements");
3141 return a ? n.makeArray(a) : this
3142 }).filter(function() {
3143 var a = this.type;
3144 return this.name && !n(this).is(":disabled") && Vc.test(this.nodeName) && !Uc.test(a) && (this.checked || !X.test(a))
3145 }).map(function(a, b) {
3146 var c = n(this).val();
3147 return null == c ? null : n.isArray(c) ? n.map(c, function(a) {
3148 return {
3149 name: b.name,
3150 value: a.replace(Tc, "\r\n")
3151 }
3152 }) : {
3153 name: b.name,
3154 value: c.replace(Tc, "\r\n")
3155 }
3156 }).get()
3157 }
3158 }), n.ajaxSettings.xhr = void 0 !== a.ActiveXObject ? function() {
3159 return !this.isLocal && /^(get|post|head|put|delete|options)$/i.test(this.type) && $c() || _c()
3160 } : $c;
3161 var Xc = 0,
3162 Yc = {},
3163 Zc = n.ajaxSettings.xhr();
3164 a.ActiveXObject && n(a).on("unload", function() {
3165 for (var a in Yc) Yc[a](void 0, !0)
3166 }), l.cors = !!Zc && "withCredentials" in Zc, Zc = l.ajax = !!Zc, Zc && n.ajaxTransport(function(a) {
3167 if (!a.crossDomain || l.cors) {
3168 var b;
3169 return {
3170 send: function(c, d) {
3171 var e, f = a.xhr(),
3172 g = ++Xc;
3173 if (f.open(a.type, a.url, a.async, a.username, a.password), a.xhrFields)
3174 for (e in a.xhrFields) f[e] = a.xhrFields[e];
3175 a.mimeType && f.overrideMimeType && f.overrideMimeType(a.mimeType), a.crossDomain || c["X-Requested-With"] || (c["X-Requested-With"] = "XMLHttpRequest");
3176 for (e in c) void 0 !== c[e] && f.setRequestHeader(e, c[e] + "");
3177 f.send(a.hasContent && a.data || null), b = function(c, e) {
3178 var h, i, j;
3179 if (b && (e || 4 === f.readyState))
3180 if (delete Yc[g], b = void 0, f.onreadystatechange = n.noop, e) 4 !== f.readyState && f.abort();
3181 else {
3182 j = {}, h = f.status, "string" == typeof f.responseText && (j.text = f.responseText);
3183 try {
3184 i = f.statusText
3185 } catch (k) {
3186 i = ""
3187 }
3188 h || !a.isLocal || a.crossDomain ? 1223 === h && (h = 204) : h = j.text ? 200 : 404
3189 }
3190 j && d(h, i, j, f.getAllResponseHeaders())
3191 }, a.async ? 4 === f.readyState ? setTimeout(b) : f.onreadystatechange = Yc[g] = b : b()
3192 },
3193 abort: function() {
3194 b && b(void 0, !0)
3195 }
3196 }
3197 }
3198 });
3199
3200 function $c() {
3201 try {
3202 return new a.XMLHttpRequest
3203 } catch (b) {}
3204 }
3205
3206 function _c() {
3207 try {
3208 return new a.ActiveXObject("Microsoft.XMLHTTP")
3209 } catch (b) {}
3210 }
3211 n.ajaxSetup({
3212 accepts: {
3213 script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
3214 },
3215 contents: {
3216 script: /(?:java|ecma)script/
3217 },
3218 converters: {
3219 "text script": function(a) {
3220 return n.globalEval(a), a
3221 }
3222 }
3223 }), n.ajaxPrefilter("script", function(a) {
3224 void 0 === a.cache && (a.cache = !1), a.crossDomain && (a.type = "GET", a.global = !1)
3225 }), n.ajaxTransport("script", function(a) {
3226 if (a.crossDomain) {
3227 var b, c = z.head || n("head")[0] || z.documentElement;
3228 return {
3229 send: function(d, e) {
3230 b = z.createElement("script"), b.async = !0, a.scriptCharset && (b.charset = a.scriptCharset), b.src = a.url, b.onload = b.onreadystatechange = function(a, c) {
3231 (c || !b.readyState || /loaded|complete/.test(b.readyState)) && (b.onload = b.onreadystatechange = null, b.parentNode && b.parentNode.removeChild(b), b = null, c || e(200, "success"))
3232 }, c.insertBefore(b, c.firstChild)
3233 },
3234 abort: function() {
3235 b && b.onload(void 0, !0)
3236 }
3237 }
3238 }
3239 });
3240 var ad = [],
3241 bd = /(=)\?(?=&|$)|\?\?/;
3242 n.ajaxSetup({
3243 jsonp: "callback",
3244 jsonpCallback: function() {
3245 var a = ad.pop() || n.expando + "_" + wc++;
3246 return this[a] = !0, a
3247 }
3248 }), n.ajaxPrefilter("json jsonp", function(b, c, d) {
3249 var e, f, g, h = b.jsonp !== !1 && (bd.test(b.url) ? "url" : "string" == typeof b.data && !(b.contentType || "").indexOf("application/x-www-form-urlencoded") && bd.test(b.data) && "data");
3250 return h || "jsonp" === b.dataTypes[0] ? (e = b.jsonpCallback = n.isFunction(b.jsonpCallback) ? b.jsonpCallback() : b.jsonpCallback, h ? b[h] = b[h].replace(bd, "$1" + e) : b.jsonp !== !1 && (b.url += (xc.test(b.url) ? "&" : "?") + b.jsonp + "=" + e), b.converters["script json"] = function() {
3251 return g || n.error(e + " was not called"), g[0]
3252 }, b.dataTypes[0] = "json", f = a[e], a[e] = function() {
3253 g = arguments
3254 }, d.always(function() {
3255 a[e] = f, b[e] && (b.jsonpCallback = c.jsonpCallback, ad.push(e)), g && n.isFunction(f) && f(g[0]), g = f = void 0
3256 }), "script") : void 0
3257 }), n.parseHTML = function(a, b, c) {
3258 if (!a || "string" != typeof a) return null;
3259 "boolean" == typeof b && (c = b, b = !1), b = b || z;
3260 var d = v.exec(a),
3261 e = !c && [];
3262 return d ? [b.createElement(d[1])] : (d = n.buildFragment([a], b, e), e && e.length && n(e).remove(), n.merge([], d.childNodes))
3263 };
3264 var cd = n.fn.load;
3265 n.fn.load = function(a, b, c) {
3266 if ("string" != typeof a && cd) return cd.apply(this, arguments);
3267 var d, e, f, g = this,
3268 h = a.indexOf(" ");
3269 return h >= 0 && (d = a.slice(h, a.length), a = a.slice(0, h)), n.isFunction(b) ? (c = b, b = void 0) : b && "object" == typeof b && (f = "POST"), g.length > 0 && n.ajax({
3270 url: a,
3271 type: f,
3272 dataType: "html",
3273 data: b
3274 }).done(function(a) {
3275 e = arguments, g.html(d ? n("<div>").append(n.parseHTML(a)).find(d) : a)
3276 }).complete(c && function(a, b) {
3277 g.each(c, e || [a.responseText, b, a])
3278 }), this
3279 }, n.expr.filters.animated = function(a) {
3280 return n.grep(n.timers, function(b) {
3281 return a === b.elem
3282 }).length
3283 };
3284 var dd = a.document.documentElement;
3285
3286 function ed(a) {
3287 return n.isWindow(a) ? a : 9 === a.nodeType ? a.defaultView || a.parentWindow : !1
3288 }
3289 n.offset = {
3290 setOffset: function(a, b, c) {
3291 var d, e, f, g, h, i, j, k = n.css(a, "position"),
3292 l = n(a),
3293 m = {};
3294 "static" === k && (a.style.position = "relative"), h = l.offset(), f = n.css(a, "top"), i = n.css(a, "left"), j = ("absolute" === k || "fixed" === k) && n.inArray("auto", [f, i]) > -1, j ? (d = l.position(), g = d.top, e = d.left) : (g = parseFloat(f) || 0, e = parseFloat(i) || 0), n.isFunction(b) && (b = b.call(a, c, h)), null != b.top && (m.top = b.top - h.top + g), null != b.left && (m.left = b.left - h.left + e), "using" in b ? b.using.call(a, m) : l.css(m)
3295 }
3296 }, n.fn.extend({
3297 offset: function(a) {
3298 if (arguments.length) return void 0 === a ? this : this.each(function(b) {
3299 n.offset.setOffset(this, a, b)
3300 });
3301 var b, c, d = {
3302 top: 0,
3303 left: 0
3304 },
3305 e = this[0],
3306 f = e && e.ownerDocument;
3307 if (f) return b = f.documentElement, n.contains(b, e) ? (typeof e.getBoundingClientRect !== L && (d = e.getBoundingClientRect()), c = ed(f), {
3308 top: d.top + (c.pageYOffset || b.scrollTop) - (b.clientTop || 0),
3309 left: d.left + (c.pageXOffset || b.scrollLeft) - (b.clientLeft || 0)
3310 }) : d
3311 },
3312 position: function() {
3313 if (this[0]) {
3314 var a, b, c = {
3315 top: 0,
3316 left: 0
3317 },
3318 d = this[0];
3319 return "fixed" === n.css(d, "position") ? b = d.getBoundingClientRect() : (a = this.offsetParent(), b = this.offset(), n.nodeName(a[0], "html") || (c = a.offset()), c.top += n.css(a[0], "borderTopWidth", !0), c.left += n.css(a[0], "borderLeftWidth", !0)), {
3320 top: b.top - c.top - n.css(d, "marginTop", !0),
3321 left: b.left - c.left - n.css(d, "marginLeft", !0)
3322 }
3323 }
3324 },
3325 offsetParent: function() {
3326 return this.map(function() {
3327 var a = this.offsetParent || dd;
3328 while (a && !n.nodeName(a, "html") && "static" === n.css(a, "position")) a = a.offsetParent;
3329 return a || dd
3330 })
3331 }
3332 }), n.each({
3333 scrollLeft: "pageXOffset",
3334 scrollTop: "pageYOffset"
3335 }, function(a, b) {
3336 var c = /Y/.test(b);
3337 n.fn[a] = function(d) {
3338 return W(this, function(a, d, e) {
3339 var f = ed(a);
3340 return void 0 === e ? f ? b in f ? f[b] : f.document.documentElement[d] : a[d] : void(f ? f.scrollTo(c ? n(f).scrollLeft() : e, c ? e : n(f).scrollTop()) : a[d] = e)
3341 }, a, d, arguments.length, null)
3342 }
3343 }), n.each(["top", "left"], function(a, b) {
3344 n.cssHooks[b] = Mb(l.pixelPosition, function(a, c) {
3345 return c ? (c = Kb(a, b), Ib.test(c) ? n(a).position()[b] + "px" : c) : void 0
3346 })
3347 }), n.each({
3348 Height: "height",
3349 Width: "width"
3350 }, function(a, b) {
3351 n.each({
3352 padding: "inner" + a,
3353 content: b,
3354 "": "outer" + a
3355 }, function(c, d) {
3356 n.fn[d] = function(d, e) {
3357 var f = arguments.length && (c || "boolean" != typeof d),
3358 g = c || (d === !0 || e === !0 ? "margin" : "border");
3359 return W(this, function(b, c, d) {
3360 var e;
3361 return n.isWindow(b) ? b.document.documentElement["client" + a] : 9 === b.nodeType ? (e = b.documentElement, Math.max(b.body["scroll" + a], e["scroll" + a], b.body["offset" + a], e["offset" + a], e["client" + a])) : void 0 === d ? n.css(b, c, g) : n.style(b, c, d, g)
3362 }, b, f ? d : void 0, f, null)
3363 }
3364 })
3365 }), n.fn.size = function() {
3366 return this.length
3367 }, n.fn.andSelf = n.fn.addBack, "function" == typeof define && define.amd && define("jquery", [], function() {
3368 return n
3369 });
3370 var fd = a.jQuery,
3371 gd = a.$;
3372 return n.noConflict = function(b) {
3373 return a.$ === n && (a.$ = gd), b && a.jQuery === n && (a.jQuery = fd), n
3374 }, typeof b === L && (a.jQuery = a.$ = n), n
3375}); \ No newline at end of file
diff --git a/Back/jinwei.me/mobile/js/less.js b/Back/jinwei.me/mobile/js/less.js
new file mode 100644
index 0000000..01ba958
--- /dev/null
+++ b/Back/jinwei.me/mobile/js/less.js
@@ -0,0 +1,3635 @@
1/*!
2 * LESS - Leaner CSS v1.7.0
3 * http://lesscss.org
4 *
5 * Copyright (c) 2009-2014, Alexis Sellier <[email protected]>
6 * Licensed under the Apache v2 License.
7 *
8 */
9
10/** * @license Apache v2
11 */
12
13! function(a, b) {
14 function c(b) {
15 return a.less[b.split("/")[1]]
16 }
17
18 function d(a, b) {
19 "undefined" != typeof console && w.logLevel >= b && console.log("less: " + a)
20 }
21
22 function e(a) {
23 return a.replace(/^[a-z-]+:\/+?[^\/]+/, "").replace(/^\//, "").replace(/\.[a-zA-Z]+$/, "").replace(/[^\.\w-]+/g, "-").replace(/\./g, ":")
24 }
25
26 function f(a, c) {
27 var e = "{line} {content}",
28 f = a.filename || c,
29 g = [],
30 h = (a.type || "Syntax") + "Error: " + (a.message || "There is an error in your .less file") + " in " + f + " ",
31 i = function(a, c, d) {
32 a.extract[c] !== b && g.push(e.replace(/\{line\}/, (parseInt(a.line, 10) || 0) + (c - 1)).replace(/\{class\}/, d).replace(/\{content\}/, a.extract[c]))
33 };
34 a.extract ? (i(a, 0, ""), i(a, 1, "line"), i(a, 2, ""), h += "on line " + a.line + ", column " + (a.column + 1) + ":\n" + g.join("\n")) : a.stack && (h += a.stack), d(h, z.errors)
35 }
36
37 function g(a, b, c) {
38 var f = b.href || "",
39 g = "less:" + (b.title || e(f)),
40 h = document.getElementById(g),
41 i = !1,
42 j = document.createElement("style");
43 if (j.setAttribute("type", "text/css"), b.media && j.setAttribute("media", b.media), j.id = g, j.styleSheet) try {
44 j.styleSheet.cssText = a
45 } catch (k) {
46 throw new Error("Couldn't reassign styleSheet.cssText.")
47 } else j.appendChild(document.createTextNode(a)), i = null !== h && h.childNodes.length > 0 && j.childNodes.length > 0 && h.firstChild.nodeValue === j.firstChild.nodeValue;
48 var l = document.getElementsByTagName("head")[0];
49 if (null === h || i === !1) {
50 var m = b && b.nextSibling || null;
51 m ? m.parentNode.insertBefore(j, m) : l.appendChild(j)
52 }
53 if (h && i === !1 && h.parentNode.removeChild(h), c && D) {
54 d("saving " + f + " to cache.", z.info);
55 try {
56 D.setItem(f, a), D.setItem(f + ":timestamp", c)
57 } catch (k) {
58 d("failed to save", z.errors)
59 }
60 }
61 }
62
63 function h(a) {
64 return w.postProcessor && "function" == typeof w.postProcessor && (a = w.postProcessor.call(a, a) || a), a
65 }
66
67 function i(a, c) {
68 var d, f, h = "less-error-message:" + e(c || ""),
69 i = '<li><label>{line}</label><pre class="{class}">{content}</pre></li>',
70 j = document.createElement("div"),
71 k = [],
72 l = a.filename || c,
73 m = l.match(/([^\/]+(\?.*)?)$/)[1];
74 j.id = h, j.className = "less-error-message", f = "<h3>" + (a.type || "Syntax") + "Error: " + (a.message || "There is an error in your .less file") + '</h3><p>in <a href="' + l + '">' + m + "</a> ";
75 var n = function(a, c, d) {
76 a.extract[c] !== b && k.push(i.replace(/\{line\}/, (parseInt(a.line, 10) || 0) + (c - 1)).replace(/\{class\}/, d).replace(/\{content\}/, a.extract[c]))
77 };
78 a.extract ? (n(a, 0, ""), n(a, 1, "line"), n(a, 2, ""), f += "on line " + a.line + ", column " + (a.column + 1) + ":</p><ul>" + k.join("") + "</ul>") : a.stack && (f += "<br/>" + a.stack.split("\n").slice(1).join("<br/>")), j.innerHTML = f, g([".less-error-message ul, .less-error-message li {", "list-style-type: none;", "margin-right: 15px;", "padding: 4px 0;", "margin: 0;", "}", ".less-error-message label {", "font-size: 12px;", "margin-right: 15px;", "padding: 4px 0;", "color: #cc7777;", "}", ".less-error-message pre {", "color: #dd6666;", "padding: 4px 0;", "margin: 0;", "display: inline-block;", "}", ".less-error-message pre.line {", "color: #ff0000;", "}", ".less-error-message h3 {", "font-size: 20px;", "font-weight: bold;", "padding: 15px 0 5px 0;", "margin: 0;", "}", ".less-error-message a {", "color: #10a", "}", ".less-error-message .error {", "color: red;", "font-weight: bold;", "padding-bottom: 2px;", "border-bottom: 1px dashed red;", "}"].join("\n"), {
79 title: "error-message"
80 }), j.style.cssText = ["font-family: Arial, sans-serif", "border: 1px solid #e00", "background-color: #eee", "border-radius: 5px", "-webkit-border-radius: 5px", "-moz-border-radius: 5px", "color: #e00", "padding: 15px", "margin-bottom: 15px"].join(";"), "development" == w.env && (d = setInterval(function() {
81 document.body && (document.getElementById(h) ? document.body.replaceChild(j, document.getElementById(h)) : document.body.insertBefore(j, document.body.firstChild), clearInterval(d))
82 }, 10))
83 }
84
85 function j(a, b) {
86 w.errorReporting && "html" !== w.errorReporting ? "console" === w.errorReporting ? f(a, b) : "function" == typeof w.errorReporting && w.errorReporting("add", a, b) : i(a, b)
87 }
88
89 function k(a) {
90 var b = document.getElementById("less-error-message:" + e(a));
91 b && b.parentNode.removeChild(b)
92 }
93
94 function l() {}
95
96 function m(a) {
97 w.errorReporting && "html" !== w.errorReporting ? "console" === w.errorReporting ? l(a) : "function" == typeof w.errorReporting && w.errorReporting("remove", a) : k(a)
98 }
99
100 function n(a) {
101 for (var b, c = document.getElementsByTagName("style"), d = 0; d < c.length; d++)
102 if (b = c[d], b.type.match(C)) {
103 var e = new w.tree.parseEnv(w),
104 f = b.innerHTML || "";
105 e.filename = document.location.href.replace(/#.*$/, ""), (a || w.globalVars) && (e.useFileCache = !0);
106 var g = function(a) {
107 return function(b, c) {
108 if (b) return j(b, "inline");
109 var d = c.toCSS(w);
110 a.type = "text/css", a.styleSheet ? a.styleSheet.cssText = d : a.innerHTML = d
111 }
112 }(b);
113 new w.Parser(e).parse(f, g, {
114 globalVars: w.globalVars,
115 modifyVars: a
116 })
117 }
118 }
119
120 function o(a, b) {
121 var c, d, e = /^((?:[a-z-]+:)?\/+?(?:[^\/\?#]*\/)|([\/\\]))?((?:[^\/\\\?#]*[\/\\])*)([^\/\\\?#]*)([#\?].*)?$/i,
122 f = a.match(e),
123 g = {},
124 h = [];
125 if (!f) throw new Error("Could not parse sheet href - '" + a + "'");
126 if (!f[1] || f[2]) {
127 if (d = b.match(e), !d) throw new Error("Could not parse page url - '" + b + "'");
128 f[1] = f[1] || d[1] || "", f[2] || (f[3] = d[3] + f[3])
129 }
130 if (f[3]) {
131 for (h = f[3].replace(/\\/g, "/").split("/"), c = 0; c < h.length; c++) "." === h[c] && (h.splice(c, 1), c -= 1);
132 for (c = 0; c < h.length; c++) ".." === h[c] && c > 0 && (h.splice(c - 1, 2), c -= 2)
133 }
134 return g.hostPart = f[1], g.directories = h, g.path = f[1] + h.join("/"), g.fileUrl = g.path + (f[4] || ""), g.url = g.fileUrl + (f[5] || ""), g
135 }
136
137 function p(a, b) {
138 var c, d, e, f, g = o(a),
139 h = o(b),
140 i = "";
141 if (g.hostPart !== h.hostPart) return "";
142 for (d = Math.max(h.directories.length, g.directories.length), c = 0; d > c && h.directories[c] === g.directories[c]; c++);
143 for (f = h.directories.slice(c), e = g.directories.slice(c), c = 0; c < f.length - 1; c++) i += "../";
144 for (c = 0; c < e.length - 1; c++) i += e[c] + "/";
145 return i
146 }
147
148 function q() {
149 if (a.XMLHttpRequest && ("file:" !== a.location.protocol || !a.ActiveXObject)) return new XMLHttpRequest;
150 try {
151 return new ActiveXObject("Microsoft.XMLHTTP")
152 } catch (b) {
153 return d("browser doesn't support AJAX.", z.errors), null
154 }
155 }
156
157 function r(a, b, c, e) {
158 function f(b, c, d) {
159 b.status >= 200 && b.status < 300 ? c(b.responseText, b.getResponseHeader("Last-Modified")) : "function" == typeof d && d(b.status, a)
160 }
161 var g = q(),
162 h = y ? w.fileAsync : w.async;
163 "function" == typeof g.overrideMimeType && g.overrideMimeType("text/css"), d("XHR: Getting '" + a + "'", z.debug), g.open("GET", a, h), g.setRequestHeader("Accept", b || "text/x-less, text/css; q=0.9, */*; q=0.5"), g.send(null), y && !w.fileAsync ? 0 === g.status || g.status >= 200 && g.status < 300 ? c(g.responseText) : e(g.status, a) : h ? g.onreadystatechange = function() {
164 4 == g.readyState && f(g, c, e)
165 } : f(g, c, e)
166 }
167
168 function s(b, c, d, e) {
169 c && c.currentDirectory && !/^([a-z-]+:)?\//.test(b) && (b = c.currentDirectory + b);
170 var f = o(b, a.location.href),
171 g = f.url,
172 h = {
173 currentDirectory: f.path,
174 filename: g
175 };
176 if (c ? (h.entryPath = c.entryPath, h.rootpath = c.rootpath, h.rootFilename = c.rootFilename, h.relativeUrls = c.relativeUrls) : (h.entryPath = f.path, h.rootpath = w.rootpath || f.path, h.rootFilename = g, h.relativeUrls = e.relativeUrls), h.relativeUrls && (h.rootpath = e.rootpath ? o(e.rootpath + p(f.path, h.entryPath)).path : f.path), e.useFileCache && E[g]) try {
177 var i = E[g];
178 d(null, i, g, h, {
179 lastModified: new Date
180 })
181 } catch (j) {
182 d(j, null, g)
183 } else r(g, e.mime, function(a, b) {
184 E[g] = a;
185 try {
186 d(null, a, g, h, {
187 lastModified: b
188 })
189 } catch (c) {
190 d(c, null, g)
191 }
192 }, function(a, b) {
193 d({
194 type: "File",
195 message: "'" + b + "' wasn't found (" + a + ")"
196 }, null, g)
197 })
198 }
199
200 function t(a, b, c, d, e) {
201 var f = new w.tree.parseEnv(w);
202 f.mime = a.type, (e || w.globalVars) && (f.useFileCache = !0), s(a.href, null, function(h, i, j, k, l) {
203 if (l) {
204 l.remaining = d;
205 var n = D && D.getItem(j),
206 o = D && D.getItem(j + ":timestamp");
207 if (!c && o && l.lastModified && new Date(l.lastModified).valueOf() === new Date(o).valueOf()) return g(n, a), l.local = !0, void b(null, null, i, a, l, j)
208 }
209 m(j), i ? (f.currentFileInfo = k, new w.Parser(f).parse(i, function(c, d) {
210 if (c) return b(c, null, null, a);
211 try {
212 b(c, d, i, a, l, j)
213 } catch (c) {
214 b(c, null, null, a)
215 }
216 }, {
217 modifyVars: e,
218 globalVars: w.globalVars
219 })) : b(h, null, null, a, l, j)
220 }, f, e)
221 }
222
223 function u(a, b, c) {
224 for (var d = 0; d < w.sheets.length; d++) t(w.sheets[d], a, b, w.sheets.length - (d + 1), c)
225 }
226
227 function v() {
228 "development" === w.env ? (w.optimization = 0, w.watchTimer = setInterval(function() {
229 w.watchMode && u(function(a, b, c, d, e) {
230 if (a) j(a, d.href);
231 else if (b) {
232 var f = b.toCSS(w);
233 f = h(f), g(f, d, e.lastModified)
234 }
235 })
236 }, w.poll)) : w.optimization = 3
237 }("undefined" == typeof a.less || "undefined" != typeof a.less.nodeType) && (a.less = {}), w = a.less, x = a.less.tree = {}, w.mode = "browser";
238 var w, x;
239 w === b && (w = exports, x = c("./tree"), w.mode = "node"), w.Parser = function(a) {
240 function d() {
241 D = y, G.push({
242 current: C,
243 i: y,
244 j: z
245 })
246 }
247
248 function e() {
249 var a = G.pop();
250 C = a.current, D = y = a.i, z = a.j
251 }
252
253 function f() {
254 G.pop()
255 }
256
257 function g() {
258 y > D && (C = C.slice(y - D), D = y)
259 }
260
261 function h(a, b) {
262 var c = a.charCodeAt(0 | b);
263 return 32 >= c && (32 === c || 10 === c || 9 === c)
264 }
265
266 function i(a) {
267 var b, c, d = typeof a;
268 return "string" === d ? v.charAt(y) !== a ? null : (l(1), a) : (g(), (b = a.exec(C)) ? (c = b[0].length, l(c), "string" == typeof b ? b : 1 === b.length ? b[0] : b) : null)
269 }
270
271 function j(a) {
272 y > D && (C = C.slice(y - D), D = y);
273 var b = a.exec(C);
274 return b ? (l(b[0].length), "string" == typeof b ? b : 1 === b.length ? b[0] : b) : null
275 }
276
277 function k(a) {
278 return v.charAt(y) !== a ? null : (l(1), a)
279 }
280
281 function l(a) {
282 for (var b, c = y, d = z, e = y - D, f = y + C.length - e, g = y += a, h = v; f > y && (b = h.charCodeAt(y), !(b > 32)) && (32 === b || 10 === b || 9 === b || 13 === b); y++);
283 return C = C.slice(a + y - g + e), D = y, !C.length && z < B.length - 1 ? (C = B[++z], l(0), !0) : c !== y || d !== z
284 }
285
286 function m(a, b) {
287 var c = "[object Function]" === Object.prototype.toString.call(a) ? a.call(F) : i(a);
288 return c ? c : void o(b || ("string" == typeof a ? "expected '" + a + "' got '" + v.charAt(y) + "'" : "unexpected token"))
289 }
290
291 function n(a, b) {
292 return v.charAt(y) === a ? (l(1), a) : void o(b || "expected '" + a + "' got '" + v.charAt(y) + "'")
293 }
294
295 function o(a, b) {
296 var c = new Error(a);
297 throw c.index = y, c.type = b || "Syntax", c
298 }
299
300 function p(a) {
301 return "string" == typeof a ? v.charAt(y) === a : a.test(C)
302 }
303
304 function q(a) {
305 return v.charAt(y) === a
306 }
307
308 function r(a, b) {
309 return a.filename && b.currentFileInfo.filename && a.filename !== b.currentFileInfo.filename ? E.imports.contents[a.filename] : v
310 }
311
312 function s(a, b) {
313 for (var c = a + 1, d = null, e = -1; --c >= 0 && "\n" !== b.charAt(c);) e++;
314 return "number" == typeof a && (d = (b.slice(0, a).match(/\n/g) || "").length), {
315 line: d,
316 column: e
317 }
318 }
319
320 function t(a, b, d) {
321 var e = d.currentFileInfo.filename;
322 return "browser" !== w.mode && "rhino" !== w.mode && (e = c("path").resolve(e)), {
323 lineNumber: s(a, b).line + 1,
324 fileName: e
325 }
326 }
327
328 function u(a, b) {
329 var c = r(a, b),
330 d = s(a.index, c),
331 e = d.line,
332 f = d.column,
333 g = a.call && s(a.call, c).line,
334 h = c.split("\n");
335 this.type = a.type || "Syntax", this.message = a.message, this.filename = a.filename || b.currentFileInfo.filename, this.index = a.index, this.line = "number" == typeof e ? e + 1 : null, this.callLine = g + 1, this.callExtract = h[g], this.stack = a.stack, this.column = f, this.extract = [h[e - 1], h[e], h[e + 1]]
336 }
337 var v, y, z, A, B, C, D, E, F, G = [],
338 H = a && a.filename;
339 a instanceof x.parseEnv || (a = new x.parseEnv(a));
340 var I = this.imports = {
341 paths: a.paths || [],
342 queue: [],
343 files: a.files,
344 contents: a.contents,
345 contentsIgnoredChars: a.contentsIgnoredChars,
346 mime: a.mime,
347 error: null,
348 push: function(b, c, d, e) {
349 var f = this;
350 this.queue.push(b);
351 var g = function(a, c, d) {
352 f.queue.splice(f.queue.indexOf(b), 1);
353 var g = d === H;
354 f.files[d] = c, a && !f.error && (f.error = a), e(a, c, g, d)
355 };
356 w.Parser.importer ? w.Parser.importer(b, c, g, a) : w.Parser.fileLoader(b, c, function(b, e, f, h) {
357 if (b) return void g(b);
358 var i = new x.parseEnv(a);
359 i.currentFileInfo = h, i.processImports = !1, i.contents[f] = e, (c.reference || d.reference) && (h.reference = !0), d.inline ? g(null, e, f) : new w.Parser(i).parse(e, function(a, b) {
360 g(a, b, f)
361 })
362 }, a)
363 }
364 },
365 J = j;
366 return u.prototype = new Error, u.prototype.constructor = u, this.env = a = a || {}, this.optimization = "optimization" in this.env ? this.env.optimization : 1, E = {
367 imports: I,
368 parse: function(d, e, f) {
369 var g, h, i, j, k, l = null,
370 m = "";
371 if (y = z = D = A = 0, j = f && f.globalVars ? w.Parser.serializeVars(f.globalVars) + "\n" : "", k = f && f.modifyVars ? "\n" + w.Parser.serializeVars(f.modifyVars) : "", (j || f && f.banner) && (m = (f && f.banner ? f.banner : "") + j, E.imports.contentsIgnoredChars[a.currentFileInfo.filename] = m.length), d = d.replace(/\r\n/g, "\n"), v = d = m + d.replace(/^\uFEFF/, "") + k, E.imports.contents[a.currentFileInfo.filename] = d, B = function(b) {
372 function c(b, c) {
373 l = new u({
374 index: c || i,
375 type: "Parse",
376 message: b,
377 filename: a.currentFileInfo.filename
378 }, a)
379 }
380
381 function d(a) {
382 var c = i - s;
383 512 > c && !a || !c || (r.push(b.slice(s, i + 1)), s = i + 1)
384 }
385 var e, f, g, h, i, j, k, m, n, o = b.length,
386 p = 0,
387 q = 0,
388 r = [],
389 s = 0;
390 for (i = 0; o > i; i++)
391 if (k = b.charCodeAt(i), !(k >= 97 && 122 >= k || 34 > k)) switch (k) {
392 case 40:
393 q++, f = i;
394 continue;
395 case 41:
396 if (--q < 0) return c("missing opening `(`");
397 continue;
398 case 59:
399 q || d();
400 continue;
401 case 123:
402 p++, e = i;
403 continue;
404 case 125:
405 if (--p < 0) return c("missing opening `{`");
406 p || q || d();
407 continue;
408 case 92:
409 if (o - 1 > i) {
410 i++;
411 continue
412 }
413 return c("unescaped `\\`");
414 case 34:
415 case 39:
416 case 96:
417 for (n = 0, j = i, i += 1; o > i; i++)
418 if (m = b.charCodeAt(i), !(m > 96)) {
419 if (m == k) {
420 n = 1;
421 break
422 }
423 if (92 == m) {
424 if (i == o - 1) return c("unescaped `\\`");
425 i++
426 }
427 }
428 if (n) continue;
429 return c("unmatched `" + String.fromCharCode(k) + "`", j);
430 case 47:
431 if (q || i == o - 1) continue;
432 if (m = b.charCodeAt(i + 1), 47 == m)
433 for (i += 2; o > i && (m = b.charCodeAt(i), !(13 >= m) || 10 != m && 13 != m); i++);
434 else if (42 == m) {
435 for (g = j = i, i += 2; o - 1 > i && (m = b.charCodeAt(i), 125 == m && (h = i), 42 != m || 47 != b.charCodeAt(i + 1)); i++);
436 if (i == o - 1) return c("missing closing `*/`", j);
437 i++
438 }
439 continue;
440 case 42:
441 if (o - 1 > i && 47 == b.charCodeAt(i + 1)) return c("unmatched `/*`");
442 continue
443 }
444 return 0 !== p ? g > e && h > g ? c("missing closing `}` or `*/`", e) : c("missing closing `}`", e) : 0 !== q ? c("missing closing `)`", f) : (d(!0), r)
445 }(d), l) return e(new u(l, a));
446 C = B[0];
447 try {
448 g = new x.Ruleset(null, this.parsers.primary()), g.root = !0, g.firstRoot = !0
449 } catch (n) {
450 return e(new u(n, a))
451 }
452 if (g.toCSS = function(d) {
453 return function(e, f) {
454 e = e || {};
455 var g, h, i = new x.evalEnv(e);
456 "object" != typeof f || Array.isArray(f) || (f = Object.keys(f).map(function(a) {
457 var b = f[a];
458 return b instanceof x.Value || (b instanceof x.Expression || (b = new x.Expression([b])), b = new x.Value([b])), new x.Rule("@" + a, b, !1, null, 0)
459 }), i.frames = [new x.Ruleset(null, f)]);
460 try {
461 var j, k = [],
462 l = [new x.joinSelectorVisitor, new x.processExtendsVisitor, new x.toCSSVisitor({
463 compress: Boolean(e.compress)
464 })],
465 m = this;
466 if (e.plugins)
467 for (j = 0; j < e.plugins.length; j++) e.plugins[j].isPreEvalVisitor ? k.push(e.plugins[j]) : e.plugins[j].isPreVisitor ? l.splice(0, 0, e.plugins[j]) : l.push(e.plugins[j]);
468 for (j = 0; j < k.length; j++) k[j].run(m);
469 for (g = d.call(m, i), j = 0; j < l.length; j++) l[j].run(g);
470 e.sourceMap && (g = new x.sourceMapOutput({
471 contentsIgnoredCharsMap: E.imports.contentsIgnoredChars,
472 writeSourceMap: e.writeSourceMap,
473 rootNode: g,
474 contentsMap: E.imports.contents,
475 sourceMapFilename: e.sourceMapFilename,
476 sourceMapURL: e.sourceMapURL,
477 outputFilename: e.sourceMapOutputFilename,
478 sourceMapBasepath: e.sourceMapBasepath,
479 sourceMapRootpath: e.sourceMapRootpath,
480 outputSourceFiles: e.outputSourceFiles,
481 sourceMapGenerator: e.sourceMapGenerator
482 })), h = g.toCSS({
483 compress: Boolean(e.compress),
484 dumpLineNumbers: a.dumpLineNumbers,
485 strictUnits: Boolean(e.strictUnits),
486 numPrecision: 8
487 })
488 } catch (n) {
489 throw new u(n, a)
490 }
491 if (e.cleancss && "node" === w.mode) {
492 var o = c("clean-css"),
493 p = e.cleancssOptions || {};
494 return p.keepSpecialComments === b && (p.keepSpecialComments = "*"), p.processImport = !1, p.noRebase = !0, p.noAdvanced === b && (p.noAdvanced = !0), new o(p).minify(h)
495 }
496 return e.compress ? h.replace(/(^(\s)+)|((\s)+$)/g, "") : h
497 }
498 }(g.eval), y < v.length - 1) {
499 y = A;
500 var o = s(y, v);
501 i = v.split("\n"), h = o.line + 1, l = {
502 type: "Parse",
503 message: "Unrecognised input",
504 index: y,
505 filename: a.currentFileInfo.filename,
506 line: h,
507 column: o.column,
508 extract: [i[h - 2], i[h - 1], i[h]]
509 }
510 }
511 var p = function(b) {
512 return b = l || b || E.imports.error, b ? (b instanceof u || (b = new u(b, a)), e(b)) : e(null, g)
513 };
514 return a.processImports === !1 ? p() : void new x.importVisitor(this.imports, p).run(g)
515 },
516 parsers: F = {
517 primary: function() {
518 for (var a, b = this.mixin, c = J, d = []; C;) {
519 if (a = this.extendRule() || b.definition() || this.rule() || this.ruleset() || b.call() || this.comment() || this.rulesetCall() || this.directive()) d.push(a);
520 else if (!c(/^[\s\n]+/) && !c(/^;+/)) break;
521 if (q("}")) break
522 }
523 return d
524 },
525 comment: function() {
526 var b;
527 if ("/" === v.charAt(y)) return "/" === v.charAt(y + 1) ? new x.Comment(j(/^\/\/.*/), !0, y, a.currentFileInfo) : (b = j(/^\/\*(?:[^*]|\*+[^\/*])*\*+\/\n?/), b ? new x.Comment(b, !1, y, a.currentFileInfo) : void 0)
528 },
529 comments: function() {
530 for (var a, b = [];;) {
531 if (a = this.comment(), !a) break;
532 b.push(a)
533 }
534 return b
535 },
536 entities: {
537 quoted: function() {
538 var b, c, d = y,
539 e = y;
540 return "~" === v.charAt(d) && (d++, c = !0), '"' === v.charAt(d) || "'" === v.charAt(d) ? (c && k("~"), b = j(/^"((?:[^"\\\r\n]|\\.)*)"|'((?:[^'\\\r\n]|\\.)*)'/), b ? new x.Quoted(b[0], b[1] || b[2], c, e, a.currentFileInfo) : void 0) : void 0
541 },
542 keyword: function() {
543 var a;
544 if (a = j(/^%|^[_A-Za-z-][_A-Za-z0-9-]*/)) {
545 var b = x.Color.fromKeyword(a);
546 return b ? b : new x.Keyword(a)
547 }
548 },
549 call: function() {
550 var b, c, d, e, f = y;
551 if (b = /^([\w-]+|%|progid:[\w\.]+)\(/.exec(C)) {
552 if (b = b[1], c = b.toLowerCase(), "url" === c) return null;
553 if (y += b.length, "alpha" === c && (e = F.alpha(), "undefined" != typeof e)) return e;
554 if (k("("), d = this.arguments(), k(")")) return b ? new x.Call(b, d, f, a.currentFileInfo) : void 0
555 }
556 },
557 arguments: function() {
558 for (var a, b = [];;) {
559 if (a = this.assignment() || F.expression(), !a) break;
560 if (b.push(a), !k(",")) break
561 }
562 return b
563 },
564 literal: function() {
565 return this.dimension() || this.color() || this.quoted() || this.unicodeDescriptor()
566 },
567 assignment: function() {
568 var a, b;
569 return a = j(/^\w+(?=\s?=)/i), a && k("=") ? (b = F.entity(), b ? new x.Assignment(a, b) : void 0) : void 0
570 },
571 url: function() {
572 var b;
573 if ("u" === v.charAt(y) && j(/^url\(/)) return b = this.quoted() || this.variable() || j(/^(?:(?:\\[\(\)'"])|[^\(\)'"])+/) || "", n(")"), new x.URL(null != b.value || b instanceof x.Variable ? b : new x.Anonymous(b), a.currentFileInfo)
574 },
575 variable: function() {
576 var b, c = y;
577 return "@" === v.charAt(y) && (b = j(/^@@?[\w-]+/)) ? new x.Variable(b, c, a.currentFileInfo) : void 0
578 },
579 variableCurly: function() {
580 var b, c = y;
581 return "@" === v.charAt(y) && (b = j(/^@\{([\w-]+)\}/)) ? new x.Variable("@" + b[1], c, a.currentFileInfo) : void 0
582 },
583 color: function() {
584 var a;
585 return "#" === v.charAt(y) && (a = j(/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})/)) ? new x.Color(a[1]) : void 0
586 },
587 dimension: function() {
588 var a, b = v.charCodeAt(y);
589 if (!(b > 57 || 43 > b || 47 === b || 44 == b)) return a = j(/^([+-]?\d*\.?\d+)(%|[a-z]+)?/), a ? new x.Dimension(a[1], a[2]) : void 0
590 },
591 unicodeDescriptor: function() {
592 var a;
593 return a = j(/^U\+[0-9a-fA-F?]+(\-[0-9a-fA-F?]+)?/), a ? new x.UnicodeDescriptor(a[0]) : void 0
594 },
595 javascript: function() {
596 var c, d, e = y;
597 return "~" === v.charAt(e) && (e++, d = !0), "`" === v.charAt(e) ? (a.javascriptEnabled === b || a.javascriptEnabled || o("You are using JavaScript, which has been disabled."), d && k("~"), c = j(/^`([^`]*)`/), c ? new x.JavaScript(c[1], y, d) : void 0) : void 0
598 }
599 },
600 variable: function() {
601 var a;
602 return "@" === v.charAt(y) && (a = j(/^(@[\w-]+)\s*:/)) ? a[1] : void 0
603 },
604 rulesetCall: function() {
605 var a;
606 return "@" === v.charAt(y) && (a = j(/^(@[\w-]+)\s*\(\s*\)\s*;/)) ? new x.RulesetCall(a[1]) : void 0
607 },
608 extend: function(a) {
609 var b, c, d, e, f, g = y;
610 if (j(a ? /^&:extend\(/ : /^:extend\(/)) {
611 do {
612 for (d = null, b = null; !(d = j(/^(all)(?=\s*(\)|,))/)) && (c = this.element());) b ? b.push(c) : b = [c];
613 d = d && d[1], f = new x.Extend(new x.Selector(b), d, g), e ? e.push(f) : e = [f]
614 } while (k(","));
615 return m(/^\)/), a && m(/^;/), e
616 }
617 },
618 extendRule: function() {
619 return this.extend(!0)
620 },
621 mixin: {
622 call: function() {
623 var b, c, g, h, i, l, m = v.charAt(y),
624 o = !1,
625 p = y;
626 if ("." === m || "#" === m) {
627 for (d();;) {
628 if (b = y, h = j(/^[#.](?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/), !h) break;
629 g = new x.Element(i, h, b, a.currentFileInfo), c ? c.push(g) : c = [g], i = k(">")
630 }
631 return c && (k("(") && (l = this.args(!0).args, n(")")), F.important() && (o = !0), F.end()) ? (f(), new x.mixin.Call(c, l, p, a.currentFileInfo, o)) : void e()
632 }
633 },
634 args: function(a) {
635 var b, c, g, h, i, l, m = E.parsers,
636 n = m.entities,
637 p = {
638 args: null,
639 variadic: !1
640 },
641 q = [],
642 r = [],
643 s = [];
644 for (d();;) {
645 if (a) l = m.detachedRuleset() || m.expression();
646 else {
647 if (m.comments(), "." === v.charAt(y) && j(/^\.{3}/)) {
648 p.variadic = !0, k(";") && !b && (b = !0), (b ? r : s).push({
649 variadic: !0
650 });
651 break
652 }
653 l = n.variable() || n.literal() || n.keyword()
654 } if (!l) break;
655 h = null, l.throwAwayComments && l.throwAwayComments(), i = l;
656 var t = null;
657 if (a ? l.value && 1 == l.value.length && (t = l.value[0]) : t = l, t && t instanceof x.Variable)
658 if (k(":")) {
659 if (q.length > 0 && (b && o("Cannot mix ; and , as delimiter types"), c = !0), i = a && m.detachedRuleset() || m.expression(), !i) {
660 if (!a) return e(), p.args = [], p;
661 o("could not understand value for named argument")
662 }
663 h = g = t.name
664 } else {
665 if (!a && j(/^\.{3}/)) {
666 p.variadic = !0, k(";") && !b && (b = !0), (b ? r : s).push({
667 name: l.name,
668 variadic: !0
669 });
670 break
671 }
672 a || (g = h = t.name, i = null)
673 }
674 i && q.push(i), s.push({
675 name: h,
676 value: i
677 }), k(",") || (k(";") || b) && (c && o("Cannot mix ; and , as delimiter types"), b = !0, q.length > 1 && (i = new x.Value(q)), r.push({
678 name: g,
679 value: i
680 }), g = null, q = [], c = !1)
681 }
682 return f(), p.args = b ? r : s, p
683 },
684 definition: function() {
685 var a, b, c, g, h = [],
686 i = !1;
687 if (!("." !== v.charAt(y) && "#" !== v.charAt(y) || p(/^[^{]*\}/)))
688 if (d(), b = j(/^([#.](?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+)\s*\(/)) {
689 a = b[1];
690 var l = this.args(!1);
691 if (h = l.args, i = l.variadic, !k(")")) return A = y, void e();
692 if (F.comments(), j(/^when/) && (g = m(F.conditions, "expected condition")), c = F.block()) return f(), new x.mixin.Definition(a, h, c, g, i);
693 e()
694 } else f()
695 }
696 },
697 entity: function() {
698 var a = this.entities;
699 return a.literal() || a.variable() || a.url() || a.call() || a.keyword() || a.javascript() || this.comment()
700 },
701 end: function() {
702 return k(";") || q("}")
703 },
704 alpha: function() {
705 var a;
706 if (j(/^\(opacity=/i)) return a = j(/^\d+/) || this.entities.variable(), a ? (n(")"), new x.Alpha(a)) : void 0
707 },
708 element: function() {
709 var b, c, g, h = y;
710 return c = this.combinator(), b = j(/^(?:\d+\.\d+|\d+)%/) || j(/^(?:[.#]?|:*)(?:[\w-]|[^\x00-\x9f]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/) || k("*") || k("&") || this.attribute() || j(/^\([^()@]+\)/) || j(/^[\.#](?=@)/) || this.entities.variableCurly(), b || (d(), k("(") ? (g = this.selector()) && k(")") ? (b = new x.Paren(g), f()) : e() : f()), b ? new x.Element(c, b, h, a.currentFileInfo) : void 0
711 },
712 combinator: function() {
713 var a = v.charAt(y);
714 if (">" === a || "+" === a || "~" === a || "|" === a || "^" === a) {
715 for (y++, "^" === v.charAt(y) && (a = "^^", y++); h(v, y);) y++;
716 return new x.Combinator(a)
717 }
718 return new x.Combinator(h(v, y - 1) ? " " : null)
719 },
720 lessSelector: function() {
721 return this.selector(!0)
722 },
723 selector: function(b) {
724 for (var c, d, e, f, g, h, i, j = y, k = J;
725 (b && (g = this.extend()) || b && (h = k(/^when/)) || (f = this.element())) && (h ? i = m(this.conditions, "expected condition") : i ? o("CSS guard can only be used at the end of selector") : g ? d ? d.push(g) : d = [g] : (d && o("Extend can only be used at the end of selector"), e = v.charAt(y), c ? c.push(f) : c = [f], f = null), "{" !== e && "}" !== e && ";" !== e && "," !== e && ")" !== e););
726 return c ? new x.Selector(c, d, i, j, a.currentFileInfo) : void(d && o("Extend must be used to extend a selector, it cannot be used on its own"))
727 },
728 attribute: function() {
729 if (k("[")) {
730 var a, b, c, d = this.entities;
731 return (a = d.variableCurly()) || (a = m(/^(?:[_A-Za-z0-9-\*]*\|)?(?:[_A-Za-z0-9-]|\\.)+/)), c = j(/^[|~*$^]?=/), c && (b = d.quoted() || j(/^[0-9]+%/) || j(/^[\w-]+/) || d.variableCurly()), n("]"), new x.Attribute(a, c, b)
732 }
733 },
734 block: function() {
735 var a;
736 return k("{") && (a = this.primary()) && k("}") ? a : void 0
737 },
738 blockRuleset: function() {
739 var a = this.block();
740 return a && (a = new x.Ruleset(null, a)), a
741 },
742 detachedRuleset: function() {
743 var a = this.blockRuleset();
744 return a ? new x.DetachedRuleset(a) : void 0
745 },
746 ruleset: function() {
747 var b, c, g, h;
748 for (d(), a.dumpLineNumbers && (h = t(y, v, a));;) {
749 if (c = this.lessSelector(), !c) break;
750 if (b ? b.push(c) : b = [c], this.comments(), c.condition && b.length > 1 && o("Guards are only currently allowed on a single selector."), !k(",")) break;
751 c.condition && o("Guards are only currently allowed on a single selector."), this.comments()
752 }
753 if (b && (g = this.block())) {
754 f();
755 var i = new x.Ruleset(b, g, a.strictImports);
756 return a.dumpLineNumbers && (i.debugInfo = h), i
757 }
758 A = y, e()
759 },
760 rule: function(b) {
761 var c, g, h, i, j, k = y,
762 l = v.charAt(k);
763 if ("." !== l && "#" !== l && "&" !== l)
764 if (d(), c = this.variable() || this.ruleProperty()) {
765 if (j = "string" == typeof c, j && (g = this.detachedRuleset()), g || (g = b || !a.compress && !j ? this.anonymousValue() || this.value() : this.value() || this.anonymousValue(), h = this.important(), i = !j && c.pop().value), g && this.end()) return f(), new x.Rule(c, g, h, i, k, a.currentFileInfo);
766 if (A = y, e(), g && !b) return this.rule(!0)
767 } else f()
768 },
769 anonymousValue: function() {
770 var a;
771 return a = /^([^@+\/'"*`(;{}-]*);/.exec(C), a ? (y += a[0].length - 1, new x.Anonymous(a[1])) : void 0
772 },
773 "import": function() {
774 var b, c, g = y;
775 d();
776 var h = j(/^@import?\s+/),
777 i = (h ? this.importOptions() : null) || {};
778 return h && (b = this.entities.quoted() || this.entities.url()) && (c = this.mediaFeatures(), k(";")) ? (f(), c = c && new x.Value(c), new x.Import(b, c, i, g, a.currentFileInfo)) : void e()
779 },
780 importOptions: function() {
781 var a, b, c, d = {};
782 if (!k("(")) return null;
783 do
784 if (a = this.importOption()) {
785 switch (b = a, c = !0, b) {
786 case "css":
787 b = "less", c = !1;
788 break;
789 case "once":
790 b = "multiple", c = !1
791 }
792 if (d[b] = c, !k(",")) break
793 }
794 while (a);
795 return n(")"), d
796 },
797 importOption: function() {
798 var a = j(/^(less|css|multiple|once|inline|reference)/);
799 return a ? a[1] : void 0
800 },
801 mediaFeature: function() {
802 var b, c, d = this.entities,
803 e = [];
804 do
805 if (b = d.keyword() || d.variable()) e.push(b);
806 else if (k("(")) {
807 if (c = this.property(), b = this.value(), !k(")")) return null;
808 if (c && b) e.push(new x.Paren(new x.Rule(c, b, null, null, y, a.currentFileInfo, !0)));
809 else {
810 if (!b) return null;
811 e.push(new x.Paren(b))
812 }
813 } while (b);
814 return e.length > 0 ? new x.Expression(e) : void 0
815 },
816 mediaFeatures: function() {
817 var a, b = this.entities,
818 c = [];
819 do
820 if (a = this.mediaFeature()) {
821 if (c.push(a), !k(",")) break
822 } else if (a = b.variable(), a && (c.push(a), !k(","))) break; while (a);
823 return c.length > 0 ? c : null
824 },
825 media: function() {
826 var b, c, d, e;
827 return a.dumpLineNumbers && (e = t(y, v, a)), j(/^@media/) && (b = this.mediaFeatures(), c = this.block()) ? (d = new x.Media(c, b, y, a.currentFileInfo), a.dumpLineNumbers && (d.debugInfo = e), d) : void 0
828 },
829 directive: function() {
830 var b, c, g, h, i, l, m, n = y,
831 p = !0;
832 if ("@" === v.charAt(y)) {
833 if (c = this["import"]() || this.media()) return c;
834 if (d(), b = j(/^@[a-z-]+/)) {
835 switch (h = b, "-" == b.charAt(1) && b.indexOf("-", 2) > 0 && (h = "@" + b.slice(b.indexOf("-", 2) + 1)), h) {
836 case "@charset":
837 i = !0, p = !1;
838 break;
839 case "@namespace":
840 l = !0, p = !1;
841 break;
842 case "@keyframes":
843 i = !0;
844 break;
845 case "@host":
846 case "@page":
847 case "@document":
848 case "@supports":
849 m = !0
850 }
851 return i ? (c = this.entity(), c || o("expected " + b + " identifier")) : l ? (c = this.expression(), c || o("expected " + b + " expression")) : m && (c = (j(/^[^{;]+/) || "").trim(), c && (c = new x.Anonymous(c))), p && (g = this.blockRuleset()), g || !p && c && k(";") ? (f(), new x.Directive(b, c, g, n, a.currentFileInfo, a.dumpLineNumbers ? t(n, v, a) : null)) : void e()
852 }
853 }
854 },
855 value: function() {
856 var a, b = [];
857 do
858 if (a = this.expression(), a && (b.push(a), !k(","))) break;
859 while (a);
860 return b.length > 0 ? new x.Value(b) : void 0
861 },
862 important: function() {
863 return "!" === v.charAt(y) ? j(/^! *important/) : void 0
864 },
865 sub: function() {
866 var a, b;
867 return k("(") && (a = this.addition()) ? (b = new x.Expression([a]), n(")"), b.parens = !0, b) : void 0
868 },
869 multiplication: function() {
870 var a, b, c, d, e;
871 if (a = this.operand()) {
872 for (e = h(v, y - 1);;) {
873 if (p(/^\/[*\/]/)) break;
874 if (c = k("/") || k("*"), !c) break;
875 if (b = this.operand(), !b) break;
876 a.parensInOp = !0, b.parensInOp = !0, d = new x.Operation(c, [d || a, b], e), e = h(v, y - 1)
877 }
878 return d || a
879 }
880 },
881 addition: function() {
882 var a, b, c, d, e;
883 if (a = this.multiplication()) {
884 for (e = h(v, y - 1);;) {
885 if (c = j(/^[-+]\s+/) || !e && (k("+") || k("-")), !c) break;
886 if (b = this.multiplication(), !b) break;
887 a.parensInOp = !0, b.parensInOp = !0, d = new x.Operation(c, [d || a, b], e), e = h(v, y - 1)
888 }
889 return d || a
890 }
891 },
892 conditions: function() {
893 var a, b, c, d = y;
894 if (a = this.condition()) {
895 for (;;) {
896 if (!p(/^,\s*(not\s*)?\(/) || !k(",")) break;
897 if (b = this.condition(), !b) break;
898 c = new x.Condition("or", c || a, b, d)
899 }
900 return c || a
901 }
902 },
903 condition: function() {
904 var a, b, c, d, e = this.entities,
905 f = y,
906 g = !1;
907 return j(/^not/) && (g = !0), n("("), a = this.addition() || e.keyword() || e.quoted(), a ? (d = j(/^(?:>=|<=|=<|[<=>])/), d ? (b = this.addition() || e.keyword() || e.quoted(), b ? c = new x.Condition(d, a, b, f, g) : o("expected expression")) : c = new x.Condition("=", a, new x.Keyword("true"), f, g), n(")"), j(/^and/) ? new x.Condition("and", c, this.condition()) : c) : void 0
908 },
909 operand: function() {
910 var a, b = this.entities,
911 c = v.charAt(y + 1);
912 "-" !== v.charAt(y) || "@" !== c && "(" !== c || (a = k("-"));
913 var d = this.sub() || b.dimension() || b.color() || b.variable() || b.call();
914 return a && (d.parensInOp = !0, d = new x.Negative(d)), d
915 },
916 expression: function() {
917 var a, b, c = [];
918 do a = this.addition() || this.entity(), a && (c.push(a), p(/^\/[\/*]/) || (b = k("/"), b && c.push(new x.Anonymous(b)))); while (a);
919 return c.length > 0 ? new x.Expression(c) : void 0
920 },
921 property: function() {
922 var a = j(/^(\*?-?[_a-zA-Z0-9-]+)\s*:/);
923 return a ? a[1] : void 0
924 },
925 ruleProperty: function() {
926 function b(a) {
927 var b = a.exec(e);
928 return b ? (g.push(y + h), h += b[0].length, e = e.slice(b[1].length), f.push(b[1])) : void 0
929 }
930 var c, d, e = C,
931 f = [],
932 g = [],
933 h = 0;
934 for (b(/^(\*?)/); b(/^((?:[\w-]+)|(?:@\{[\w-]+\}))/););
935 if (f.length > 1 && b(/^\s*((?:\+_|\+)?)\s*:/)) {
936 for (l(h), "" === f[0] && (f.shift(), g.shift()), d = 0; d < f.length; d++) c = f[d], f[d] = "@" !== c.charAt(0) ? new x.Keyword(c) : new x.Variable("@" + c.slice(2, -1), g[d], a.currentFileInfo);
937 return f
938 }
939 }
940 }
941 }
942 }, w.Parser.serializeVars = function(a) {
943 var b = "";
944 for (var c in a)
945 if (Object.hasOwnProperty.call(a, c)) {
946 var d = a[c];
947 b += ("@" === c[0] ? "" : "@") + c + ": " + d + (";" === ("" + d).slice(-1) ? "" : ";")
948 }
949 return b
950 },
951 function(d) {
952 function e(a, b, c) {
953 if (!(c instanceof d.Dimension)) throw {
954 type: "Argument",
955 message: "argument must be a number"
956 };
957 return null == b ? b = c.unit : c = c.unify(), new d.Dimension(a(parseFloat(c.value)), b)
958 }
959
960 function f(a, b, c) {
961 var e, f, g, h, i = b.alpha,
962 j = c.alpha,
963 k = [];
964 g = j + i * (1 - j);
965 for (var l = 0; 3 > l; l++) e = b.rgb[l] / 255, f = c.rgb[l] / 255, h = a(e, f), g && (h = (j * f + i * (e - j * (e + f - h))) / g), k[l] = 255 * h;
966 return new d.Color(k, g)
967 }
968
969 function g() {
970 var a, b = d.functions;
971 for (a in l) l.hasOwnProperty(a) && (b[a] = e.bind(null, Math[a], l[a]));
972 for (a in m) m.hasOwnProperty(a) && (b[a] = f.bind(null, m[a]));
973 a = d.defaultFunc, b["default"] = a.eval.bind(a)
974 }
975
976 function h(a) {
977 return d.functions.hsla(a.h, a.s, a.l, a.a)
978 }
979
980 function i(a, b) {
981 return a instanceof d.Dimension && a.unit.is("%") ? parseFloat(a.value * b / 100) : j(a)
982 }
983
984 function j(a) {
985 if (a instanceof d.Dimension) return parseFloat(a.unit.is("%") ? a.value / 100 : a.value);
986 if ("number" == typeof a) return a;
987 throw {
988 error: "RuntimeError",
989 message: "color functions take numbers as parameters"
990 }
991 }
992
993 function k(a) {
994 return Math.min(1, Math.max(0, a))
995 }
996 d.functions = {
997 rgb: function(a, b, c) {
998 return this.rgba(a, b, c, 1)
999 },
1000 rgba: function(a, b, c, e) {
1001 var f = [a, b, c].map(function(a) {
1002 return i(a, 255)
1003 });
1004 return e = j(e), new d.Color(f, e)
1005 },
1006 hsl: function(a, b, c) {
1007 return this.hsla(a, b, c, 1)
1008 },
1009 hsla: function(a, b, c, d) {
1010 function e(a) {
1011 return a = 0 > a ? a + 1 : a > 1 ? a - 1 : a, 1 > 6 * a ? g + (f - g) * a * 6 : 1 > 2 * a ? f : 2 > 3 * a ? g + (f - g) * (2 / 3 - a) * 6 : g
1012 }
1013 a = j(a) % 360 / 360, b = k(j(b)), c = k(j(c)), d = k(j(d));
1014 var f = .5 >= c ? c * (b + 1) : c + b - c * b,
1015 g = 2 * c - f;
1016 return this.rgba(255 * e(a + 1 / 3), 255 * e(a), 255 * e(a - 1 / 3), d)
1017 },
1018 hsv: function(a, b, c) {
1019 return this.hsva(a, b, c, 1)
1020 },
1021 hsva: function(a, b, c, d) {
1022 a = j(a) % 360 / 360 * 360, b = j(b), c = j(c), d = j(d);
1023 var e, f;
1024 e = Math.floor(a / 60 % 6), f = a / 60 - e;
1025 var g = [c, c * (1 - b), c * (1 - f * b), c * (1 - (1 - f) * b)],
1026 h = [
1027 [0, 3, 1],
1028 [2, 0, 1],
1029 [1, 0, 3],
1030 [1, 2, 0],
1031 [3, 1, 0],
1032 [0, 1, 2]
1033 ];
1034 return this.rgba(255 * g[h[e][0]], 255 * g[h[e][1]], 255 * g[h[e][2]], d)
1035 },
1036 hue: function(a) {
1037 return new d.Dimension(Math.round(a.toHSL().h))
1038 },
1039 saturation: function(a) {
1040 return new d.Dimension(Math.round(100 * a.toHSL().s), "%")
1041 },
1042 lightness: function(a) {
1043 return new d.Dimension(Math.round(100 * a.toHSL().l), "%")
1044 },
1045 hsvhue: function(a) {
1046 return new d.Dimension(Math.round(a.toHSV().h))
1047 },
1048 hsvsaturation: function(a) {
1049 return new d.Dimension(Math.round(100 * a.toHSV().s), "%")
1050 },
1051 hsvvalue: function(a) {
1052 return new d.Dimension(Math.round(100 * a.toHSV().v), "%")
1053 },
1054 red: function(a) {
1055 return new d.Dimension(a.rgb[0])
1056 },
1057 green: function(a) {
1058 return new d.Dimension(a.rgb[1])
1059 },
1060 blue: function(a) {
1061 return new d.Dimension(a.rgb[2])
1062 },
1063 alpha: function(a) {
1064 return new d.Dimension(a.toHSL().a)
1065 },
1066 luma: function(a) {
1067 return new d.Dimension(Math.round(a.luma() * a.alpha * 100), "%")
1068 },
1069 luminance: function(a) {
1070 var b = .2126 * a.rgb[0] / 255 + .7152 * a.rgb[1] / 255 + .0722 * a.rgb[2] / 255;
1071 return new d.Dimension(Math.round(b * a.alpha * 100), "%")
1072 },
1073 saturate: function(a, b) {
1074 if (!a.rgb) return null;
1075 var c = a.toHSL();
1076 return c.s += b.value / 100, c.s = k(c.s), h(c)
1077 },
1078 desaturate: function(a, b) {
1079 var c = a.toHSL();
1080 return c.s -= b.value / 100, c.s = k(c.s), h(c)
1081 },
1082 lighten: function(a, b) {
1083 var c = a.toHSL();
1084 return c.l += b.value / 100, c.l = k(c.l), h(c)
1085 },
1086 darken: function(a, b) {
1087 var c = a.toHSL();
1088 return c.l -= b.value / 100, c.l = k(c.l), h(c)
1089 },
1090 fadein: function(a, b) {
1091 var c = a.toHSL();
1092 return c.a += b.value / 100, c.a = k(c.a), h(c)
1093 },
1094 fadeout: function(a, b) {
1095 var c = a.toHSL();
1096 return c.a -= b.value / 100, c.a = k(c.a), h(c)
1097 },
1098 fade: function(a, b) {
1099 var c = a.toHSL();
1100 return c.a = b.value / 100, c.a = k(c.a), h(c)
1101 },
1102 spin: function(a, b) {
1103 var c = a.toHSL(),
1104 d = (c.h + b.value) % 360;
1105 return c.h = 0 > d ? 360 + d : d, h(c)
1106 },
1107 mix: function(a, b, c) {
1108 c || (c = new d.Dimension(50));
1109 var e = c.value / 100,
1110 f = 2 * e - 1,
1111 g = a.toHSL().a - b.toHSL().a,
1112 h = ((f * g == -1 ? f : (f + g) / (1 + f * g)) + 1) / 2,
1113 i = 1 - h,
1114 j = [a.rgb[0] * h + b.rgb[0] * i, a.rgb[1] * h + b.rgb[1] * i, a.rgb[2] * h + b.rgb[2] * i],
1115 k = a.alpha * e + b.alpha * (1 - e);
1116 return new d.Color(j, k)
1117 },
1118 greyscale: function(a) {
1119 return this.desaturate(a, new d.Dimension(100))
1120 },
1121 contrast: function(a, b, c, d) {
1122 if (!a.rgb) return null;
1123 if ("undefined" == typeof c && (c = this.rgba(255, 255, 255, 1)), "undefined" == typeof b && (b = this.rgba(0, 0, 0, 1)), b.luma() > c.luma()) {
1124 var e = c;
1125 c = b, b = e
1126 }
1127 return d = "undefined" == typeof d ? .43 : j(d), a.luma() < d ? c : b
1128 },
1129 e: function(a) {
1130 return new d.Anonymous(a instanceof d.JavaScript ? a.evaluated : a)
1131 },
1132 escape: function(a) {
1133 return new d.Anonymous(encodeURI(a.value).replace(/=/g, "%3D").replace(/:/g, "%3A").replace(/#/g, "%23").replace(/;/g, "%3B").replace(/\(/g, "%28").replace(/\)/g, "%29"))
1134 },
1135 replace: function(a, b, c, e) {
1136 var f = a.value;
1137 return f = f.replace(new RegExp(b.value, e ? e.value : ""), c.value), new d.Quoted(a.quote || "", f, a.escaped)
1138 },
1139 "%": function(a) {
1140 for (var b = Array.prototype.slice.call(arguments, 1), c = a.value, e = 0; e < b.length; e++) c = c.replace(/%[sda]/i, function(a) {
1141 var c = a.match(/s/i) ? b[e].value : b[e].toCSS();
1142 return a.match(/[A-Z]$/) ? encodeURIComponent(c) : c
1143 });
1144 return c = c.replace(/%%/g, "%"), new d.Quoted(a.quote || "", c, a.escaped)
1145 },
1146 unit: function(a, b) {
1147 if (!(a instanceof d.Dimension)) throw {
1148 type: "Argument",
1149 message: "the first argument to unit must be a number" + (a instanceof d.Operation ? ". Have you forgotten parenthesis?" : "")
1150 };
1151 return b = b ? b instanceof d.Keyword ? b.value : b.toCSS() : "", new d.Dimension(a.value, b)
1152 },
1153 convert: function(a, b) {
1154 return a.convertTo(b.value)
1155 },
1156 round: function(a, b) {
1157 var c = "undefined" == typeof b ? 0 : b.value;
1158 return e(function(a) {
1159 return a.toFixed(c)
1160 }, null, a)
1161 },
1162 pi: function() {
1163 return new d.Dimension(Math.PI)
1164 },
1165 mod: function(a, b) {
1166 return new d.Dimension(a.value % b.value, a.unit)
1167 },
1168 pow: function(a, b) {
1169 if ("number" == typeof a && "number" == typeof b) a = new d.Dimension(a), b = new d.Dimension(b);
1170 else if (!(a instanceof d.Dimension && b instanceof d.Dimension)) throw {
1171 type: "Argument",
1172 message: "arguments must be numbers"
1173 };
1174 return new d.Dimension(Math.pow(a.value, b.value), a.unit)
1175 },
1176 _minmax: function(a, c) {
1177 switch (c = Array.prototype.slice.call(c), c.length) {
1178 case 0:
1179 throw {
1180 type: "Argument",
1181 message: "one or more arguments required"
1182 }
1183 }
1184 var e, f, g, h, i, j, k, l, m = [],
1185 n = {};
1186 for (e = 0; e < c.length; e++)
1187 if (g = c[e], g instanceof d.Dimension)
1188 if (h = "" === g.unit.toString() && l !== b ? new d.Dimension(g.value, l).unify() : g.unify(), j = "" === h.unit.toString() && k !== b ? k : h.unit.toString(), k = "" !== j && k === b || "" !== j && "" === m[0].unify().unit.toString() ? j : k, l = "" !== j && l === b ? g.unit.toString() : l, f = n[""] !== b && "" !== j && j === k ? n[""] : n[j], f !== b) i = "" === m[f].unit.toString() && l !== b ? new d.Dimension(m[f].value, l).unify() : m[f].unify(), (a && h.value < i.value || !a && h.value > i.value) && (m[f] = g);
1189 else {
1190 if (k !== b && j !== k) throw {
1191 type: "Argument",
1192 message: "incompatible types"
1193 };
1194 n[j] = m.length, m.push(g)
1195 } else Array.isArray(c[e].value) && Array.prototype.push.apply(c, Array.prototype.slice.call(c[e].value));
1196 return 1 == m.length ? m[0] : (c = m.map(function(a) {
1197 return a.toCSS(this.env)
1198 }).join(this.env.compress ? "," : ", "), new d.Anonymous((a ? "min" : "max") + "(" + c + ")"))
1199 },
1200 min: function() {
1201 return this._minmax(!0, arguments)
1202 },
1203 max: function() {
1204 return this._minmax(!1, arguments)
1205 },
1206 "get-unit": function(a) {
1207 return new d.Anonymous(a.unit)
1208 },
1209 argb: function(a) {
1210 return new d.Anonymous(a.toARGB())
1211 },
1212 percentage: function(a) {
1213 return new d.Dimension(100 * a.value, "%")
1214 },
1215 color: function(a) {
1216 if (a instanceof d.Quoted) {
1217 var b, c = a.value;
1218 if (b = d.Color.fromKeyword(c)) return b;
1219 if (/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})/.test(c)) return new d.Color(c.slice(1));
1220 throw {
1221 type: "Argument",
1222 message: "argument must be a color keyword or 3/6 digit hex e.g. #FFF"
1223 }
1224 }
1225 throw {
1226 type: "Argument",
1227 message: "argument must be a string"
1228 }
1229 },
1230 iscolor: function(a) {
1231 return this._isa(a, d.Color)
1232 },
1233 isnumber: function(a) {
1234 return this._isa(a, d.Dimension)
1235 },
1236 isstring: function(a) {
1237 return this._isa(a, d.Quoted)
1238 },
1239 iskeyword: function(a) {
1240 return this._isa(a, d.Keyword)
1241 },
1242 isurl: function(a) {
1243 return this._isa(a, d.URL)
1244 },
1245 ispixel: function(a) {
1246 return this.isunit(a, "px")
1247 },
1248 ispercentage: function(a) {
1249 return this.isunit(a, "%")
1250 },
1251 isem: function(a) {
1252 return this.isunit(a, "em")
1253 },
1254 isunit: function(a, b) {
1255 return a instanceof d.Dimension && a.unit.is(b.value || b) ? d.True : d.False
1256 },
1257 _isa: function(a, b) {
1258 return a instanceof b ? d.True : d.False
1259 },
1260 tint: function(a, b) {
1261 return this.mix(this.rgb(255, 255, 255), a, b)
1262 },
1263 shade: function(a, b) {
1264 return this.mix(this.rgb(0, 0, 0), a, b)
1265 },
1266 extract: function(a, b) {
1267 return b = b.value - 1, Array.isArray(a.value) ? a.value[b] : Array(a)[b]
1268 },
1269 length: function(a) {
1270 var b = Array.isArray(a.value) ? a.value.length : 1;
1271 return new d.Dimension(b)
1272 },
1273 "data-uri": function(b, e) {
1274 if ("undefined" != typeof a) return new d.URL(e || b, this.currentFileInfo).eval(this.env);
1275 var f = b.value,
1276 g = e && e.value,
1277 h = c("fs"),
1278 i = c("path"),
1279 j = !1;
1280 if (arguments.length < 2 && (g = f), this.env.isPathRelative(g) && (g = this.currentFileInfo.relativeUrls ? i.join(this.currentFileInfo.currentDirectory, g) : i.join(this.currentFileInfo.entryPath, g)), arguments.length < 2) {
1281 var k;
1282 try {
1283 k = c("mime")
1284 } catch (l) {
1285 k = d._mime
1286 }
1287 f = k.lookup(g);
1288 var m = k.charsets.lookup(f);
1289 j = ["US-ASCII", "UTF-8"].indexOf(m) < 0, j && (f += ";base64")
1290 } else j = /;base64$/.test(f);
1291 var n = h.readFileSync(g),
1292 o = 32,
1293 p = parseInt(n.length / 1024, 10);
1294 if (p >= o && this.env.ieCompat !== !1) return this.env.silent || console.warn("Skipped data-uri embedding of %s because its size (%dKB) exceeds IE8-safe %dKB!", g, p, o), new d.URL(e || b, this.currentFileInfo).eval(this.env);
1295 n = j ? n.toString("base64") : encodeURIComponent(n);
1296 var q = '"data:' + f + "," + n + '"';
1297 return new d.URL(new d.Anonymous(q))
1298 },
1299 "svg-gradient": function(a) {
1300 function e() {
1301 throw {
1302 type: "Argument",
1303 message: "svg-gradient expects direction, start_color [start_position], [color position,]..., end_color [end_position]"
1304 }
1305 }
1306 arguments.length < 3 && e();
1307 var f, g, h, i, j, k, l, m = Array.prototype.slice.call(arguments, 1),
1308 n = "linear",
1309 o = 'x="0" y="0" width="1" height="1"',
1310 p = !0,
1311 q = {
1312 compress: !1
1313 },
1314 r = a.toCSS(q);
1315 switch (r) {
1316 case "to bottom":
1317 f = 'x1="0%" y1="0%" x2="0%" y2="100%"';
1318 break;
1319 case "to right":
1320 f = 'x1="0%" y1="0%" x2="100%" y2="0%"';
1321 break;
1322 case "to bottom right":
1323 f = 'x1="0%" y1="0%" x2="100%" y2="100%"';
1324 break;
1325 case "to top right":
1326 f = 'x1="0%" y1="100%" x2="100%" y2="0%"';
1327 break;
1328 case "ellipse":
1329 case "ellipse at center":
1330 n = "radial", f = 'cx="50%" cy="50%" r="75%"', o = 'x="-50" y="-50" width="101" height="101"';
1331 break;
1332 default:
1333 throw {
1334 type: "Argument",
1335 message: "svg-gradient direction must be 'to bottom', 'to right', 'to bottom right', 'to top right' or 'ellipse at center'"
1336 }
1337 }
1338 for (g = '<?xml version="1.0" ?><svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="100%" height="100%" viewBox="0 0 1 1" preserveAspectRatio="none"><' + n + 'Gradient id="gradient" gradientUnits="userSpaceOnUse" ' + f + ">", h = 0; h < m.length; h += 1) m[h].value ? (i = m[h].value[0], j = m[h].value[1]) : (i = m[h], j = b), i instanceof d.Color && ((0 === h || h + 1 === m.length) && j === b || j instanceof d.Dimension) || e(), k = j ? j.toCSS(q) : 0 === h ? "0%" : "100%", l = i.alpha, g += '<stop offset="' + k + '" stop-color="' + i.toRGB() + '"' + (1 > l ? ' stop-opacity="' + l + '"' : "") + "/>";
1339 if (g += "</" + n + "Gradient><rect " + o + ' fill="url(#gradient)" /></svg>', p) try {
1340 g = c("./encoder").encodeBase64(g)
1341 } catch (s) {
1342 p = !1
1343 }
1344 return g = "'data:image/svg+xml" + (p ? ";base64" : "") + "," + g + "'", new d.URL(new d.Anonymous(g))
1345 }
1346 }, d._mime = {
1347 _types: {
1348 ".htm": "text/html",
1349 ".html": "text/html",
1350 ".gif": "image/gif",
1351 ".jpg": "image/jpeg",
1352 ".jpeg": "image/jpeg",
1353 ".png": "image/png"
1354 },
1355 lookup: function(a) {
1356 var e = c("path").extname(a),
1357 f = d._mime._types[e];
1358 if (f === b) throw new Error('Optional dependency "mime" is required for ' + e);
1359 return f
1360 },
1361 charsets: {
1362 lookup: function(a) {
1363 return a && /^text\//.test(a) ? "UTF-8" : ""
1364 }
1365 }
1366 };
1367 var l = {
1368 ceil: null,
1369 floor: null,
1370 sqrt: null,
1371 abs: null,
1372 tan: "",
1373 sin: "",
1374 cos: "",
1375 atan: "rad",
1376 asin: "rad",
1377 acos: "rad"
1378 },
1379 m = {
1380 multiply: function(a, b) {
1381 return a * b
1382 },
1383 screen: function(a, b) {
1384 return a + b - a * b
1385 },
1386 overlay: function(a, b) {
1387 return a *= 2, 1 >= a ? m.multiply(a, b) : m.screen(a - 1, b)
1388 },
1389 softlight: function(a, b) {
1390 var c = 1,
1391 d = a;
1392 return b > .5 && (d = 1, c = a > .25 ? Math.sqrt(a) : ((16 * a - 12) * a + 4) * a), a - (1 - 2 * b) * d * (c - a)
1393 },
1394 hardlight: function(a, b) {
1395 return m.overlay(b, a)
1396 },
1397 difference: function(a, b) {
1398 return Math.abs(a - b)
1399 },
1400 exclusion: function(a, b) {
1401 return a + b - 2 * a * b
1402 },
1403 average: function(a, b) {
1404 return (a + b) / 2
1405 },
1406 negation: function(a, b) {
1407 return 1 - Math.abs(a + b - 1)
1408 }
1409 };
1410 d.defaultFunc = {
1411 eval: function() {
1412 var a = this.value_,
1413 b = this.error_;
1414 if (b) throw b;
1415 return null != a ? a ? d.True : d.False : void 0
1416 },
1417 value: function(a) {
1418 this.value_ = a
1419 },
1420 error: function(a) {
1421 this.error_ = a
1422 },
1423 reset: function() {
1424 this.value_ = this.error_ = null
1425 }
1426 }, g(), d.fround = function(a, b) {
1427 var c;
1428 return a && null != a.numPrecision ? (c = Math.pow(10, a.numPrecision), Math.round(b * c) / c) : b
1429 }, d.functionCall = function(a, b) {
1430 this.env = a, this.currentFileInfo = b
1431 }, d.functionCall.prototype = d.functions
1432 }(c("./tree")),
1433 function(a) {
1434 a.colors = {
1435 aliceblue: "#f0f8ff",
1436 antiquewhite: "#faebd7",
1437 aqua: "#00ffff",
1438 aquamarine: "#7fffd4",
1439 azure: "#f0ffff",
1440 beige: "#f5f5dc",
1441 bisque: "#ffe4c4",
1442 black: "#000000",
1443 blanchedalmond: "#ffebcd",
1444 blue: "#0000ff",
1445 blueviolet: "#8a2be2",
1446 brown: "#a52a2a",
1447 burlywood: "#deb887",
1448 cadetblue: "#5f9ea0",
1449 chartreuse: "#7fff00",
1450 chocolate: "#d2691e",
1451 coral: "#ff7f50",
1452 cornflowerblue: "#6495ed",
1453 cornsilk: "#fff8dc",
1454 crimson: "#dc143c",
1455 cyan: "#00ffff",
1456 darkblue: "#00008b",
1457 darkcyan: "#008b8b",
1458 darkgoldenrod: "#b8860b",
1459 darkgray: "#a9a9a9",
1460 darkgrey: "#a9a9a9",
1461 darkgreen: "#006400",
1462 darkkhaki: "#bdb76b",
1463 darkmagenta: "#8b008b",
1464 darkolivegreen: "#556b2f",
1465 darkorange: "#ff8c00",
1466 darkorchid: "#9932cc",
1467 darkred: "#8b0000",
1468 darksalmon: "#e9967a",
1469 darkseagreen: "#8fbc8f",
1470 darkslateblue: "#483d8b",
1471 darkslategray: "#2f4f4f",
1472 darkslategrey: "#2f4f4f",
1473 darkturquoise: "#00ced1",
1474 darkviolet: "#9400d3",
1475 deeppink: "#ff1493",
1476 deepskyblue: "#00bfff",
1477 dimgray: "#696969",
1478 dimgrey: "#696969",
1479 dodgerblue: "#1e90ff",
1480 firebrick: "#b22222",
1481 floralwhite: "#fffaf0",
1482 forestgreen: "#228b22",
1483 fuchsia: "#ff00ff",
1484 gainsboro: "#dcdcdc",
1485 ghostwhite: "#f8f8ff",
1486 gold: "#ffd700",
1487 goldenrod: "#daa520",
1488 gray: "#808080",
1489 grey: "#808080",
1490 green: "#008000",
1491 greenyellow: "#adff2f",
1492 honeydew: "#f0fff0",
1493 hotpink: "#ff69b4",
1494 indianred: "#cd5c5c",
1495 indigo: "#4b0082",
1496 ivory: "#fffff0",
1497 khaki: "#f0e68c",
1498 lavender: "#e6e6fa",
1499 lavenderblush: "#fff0f5",
1500 lawngreen: "#7cfc00",
1501 lemonchiffon: "#fffacd",
1502 lightblue: "#add8e6",
1503 lightcoral: "#f08080",
1504 lightcyan: "#e0ffff",
1505 lightgoldenrodyellow: "#fafad2",
1506 lightgray: "#d3d3d3",
1507 lightgrey: "#d3d3d3",
1508 lightgreen: "#90ee90",
1509 lightpink: "#ffb6c1",
1510 lightsalmon: "#ffa07a",
1511 lightseagreen: "#20b2aa",
1512 lightskyblue: "#87cefa",
1513 lightslategray: "#778899",
1514 lightslategrey: "#778899",
1515 lightsteelblue: "#b0c4de",
1516 lightyellow: "#ffffe0",
1517 lime: "#00ff00",
1518 limegreen: "#32cd32",
1519 linen: "#faf0e6",
1520 magenta: "#ff00ff",
1521 maroon: "#800000",
1522 mediumaquamarine: "#66cdaa",
1523 mediumblue: "#0000cd",
1524 mediumorchid: "#ba55d3",
1525 mediumpurple: "#9370d8",
1526 mediumseagreen: "#3cb371",
1527 mediumslateblue: "#7b68ee",
1528 mediumspringgreen: "#00fa9a",
1529 mediumturquoise: "#48d1cc",
1530 mediumvioletred: "#c71585",
1531 midnightblue: "#191970",
1532 mintcream: "#f5fffa",
1533 mistyrose: "#ffe4e1",
1534 moccasin: "#ffe4b5",
1535 navajowhite: "#ffdead",
1536 navy: "#000080",
1537 oldlace: "#fdf5e6",
1538 olive: "#808000",
1539 olivedrab: "#6b8e23",
1540 orange: "#ffa500",
1541 orangered: "#ff4500",
1542 orchid: "#da70d6",
1543 palegoldenrod: "#eee8aa",
1544 palegreen: "#98fb98",
1545 paleturquoise: "#afeeee",
1546 palevioletred: "#d87093",
1547 papayawhip: "#ffefd5",
1548 peachpuff: "#ffdab9",
1549 peru: "#cd853f",
1550 pink: "#ffc0cb",
1551 plum: "#dda0dd",
1552 powderblue: "#b0e0e6",
1553 purple: "#800080",
1554 red: "#ff0000",
1555 rosybrown: "#bc8f8f",
1556 royalblue: "#4169e1",
1557 saddlebrown: "#8b4513",
1558 salmon: "#fa8072",
1559 sandybrown: "#f4a460",
1560 seagreen: "#2e8b57",
1561 seashell: "#fff5ee",
1562 sienna: "#a0522d",
1563 silver: "#c0c0c0",
1564 skyblue: "#87ceeb",
1565 slateblue: "#6a5acd",
1566 slategray: "#708090",
1567 slategrey: "#708090",
1568 snow: "#fffafa",
1569 springgreen: "#00ff7f",
1570 steelblue: "#4682b4",
1571 tan: "#d2b48c",
1572 teal: "#008080",
1573 thistle: "#d8bfd8",
1574 tomato: "#ff6347",
1575 turquoise: "#40e0d0",
1576 violet: "#ee82ee",
1577 wheat: "#f5deb3",
1578 white: "#ffffff",
1579 whitesmoke: "#f5f5f5",
1580 yellow: "#ffff00",
1581 yellowgreen: "#9acd32"
1582 }
1583 }(c("./tree")),
1584 function(a) {
1585 a.debugInfo = function(b, c, d) {
1586 var e = "";
1587 if (b.dumpLineNumbers && !b.compress) switch (b.dumpLineNumbers) {
1588 case "comments":
1589 e = a.debugInfo.asComment(c);
1590 break;
1591 case "mediaquery":
1592 e = a.debugInfo.asMediaQuery(c);
1593 break;
1594 case "all":
1595 e = a.debugInfo.asComment(c) + (d || "") + a.debugInfo.asMediaQuery(c)
1596 }
1597 return e
1598 }, a.debugInfo.asComment = function(a) {
1599 return "/* line " + a.debugInfo.lineNumber + ", " + a.debugInfo.fileName + " */\n"
1600 }, a.debugInfo.asMediaQuery = function(a) {
1601 return "@media -sass-debug-info{filename{font-family:" + ("file://" + a.debugInfo.fileName).replace(/([.:\/\\])/g, function(a) {
1602 return "\\" == a && (a = "/"), "\\" + a
1603 }) + "}line{font-family:\\00003" + a.debugInfo.lineNumber + "}}\n"
1604 }, a.find = function(a, b) {
1605 for (var c, d = 0; d < a.length; d++)
1606 if (c = b.call(a, a[d])) return c;
1607 return null
1608 }, a.jsify = function(a) {
1609 return Array.isArray(a.value) && a.value.length > 1 ? "[" + a.value.map(function(a) {
1610 return a.toCSS(!1)
1611 }).join(", ") + "]" : a.toCSS(!1)
1612 }, a.toCSS = function(a) {
1613 var b = [];
1614 return this.genCSS(a, {
1615 add: function(a) {
1616 b.push(a)
1617 },
1618 isEmpty: function() {
1619 return 0 === b.length
1620 }
1621 }), b.join("")
1622 }, a.outputRuleset = function(a, b, c) {
1623 var d, e = c.length;
1624 if (a.tabLevel = (0 | a.tabLevel) + 1, a.compress) {
1625 for (b.add("{"), d = 0; e > d; d++) c[d].genCSS(a, b);
1626 return b.add("}"), void a.tabLevel--
1627 }
1628 var f = "\n" + Array(a.tabLevel).join(" "),
1629 g = f + " ";
1630 if (e) {
1631 for (b.add(" {" + g), c[0].genCSS(a, b), d = 1; e > d; d++) b.add(g), c[d].genCSS(a, b);
1632 b.add(f + "}")
1633 } else b.add(" {" + f + "}");
1634 a.tabLevel--
1635 }
1636 }(c("./tree")),
1637 function(a) {
1638 a.Alpha = function(a) {
1639 this.value = a
1640 }, a.Alpha.prototype = {
1641 type: "Alpha",
1642 accept: function(a) {
1643 this.value = a.visit(this.value)
1644 },
1645 eval: function(b) {
1646 return this.value.eval ? new a.Alpha(this.value.eval(b)) : this
1647 },
1648 genCSS: function(a, b) {
1649 b.add("alpha(opacity="), this.value.genCSS ? this.value.genCSS(a, b) : b.add(this.value), b.add(")")
1650 },
1651 toCSS: a.toCSS
1652 }
1653 }(c("../tree")),
1654 function(a) {
1655 a.Anonymous = function(a, b, c, d) {
1656 this.value = a.value || a, this.index = b, this.mapLines = d, this.currentFileInfo = c
1657 }, a.Anonymous.prototype = {
1658 type: "Anonymous",
1659 eval: function() {
1660 return new a.Anonymous(this.value, this.index, this.currentFileInfo, this.mapLines)
1661 },
1662 compare: function(a) {
1663 if (!a.toCSS) return -1;
1664 var b = this.toCSS(),
1665 c = a.toCSS();
1666 return b === c ? 0 : c > b ? -1 : 1
1667 },
1668 genCSS: function(a, b) {
1669 b.add(this.value, this.currentFileInfo, this.index, this.mapLines)
1670 },
1671 toCSS: a.toCSS
1672 }
1673 }(c("../tree")),
1674 function(a) {
1675 a.Assignment = function(a, b) {
1676 this.key = a, this.value = b
1677 }, a.Assignment.prototype = {
1678 type: "Assignment",
1679 accept: function(a) {
1680 this.value = a.visit(this.value)
1681 },
1682 eval: function(b) {
1683 return this.value.eval ? new a.Assignment(this.key, this.value.eval(b)) : this
1684 },
1685 genCSS: function(a, b) {
1686 b.add(this.key + "="), this.value.genCSS ? this.value.genCSS(a, b) : b.add(this.value)
1687 },
1688 toCSS: a.toCSS
1689 }
1690 }(c("../tree")),
1691 function(a) {
1692 a.Call = function(a, b, c, d) {
1693 this.name = a, this.args = b, this.index = c, this.currentFileInfo = d
1694 }, a.Call.prototype = {
1695 type: "Call",
1696 accept: function(a) {
1697 this.args && (this.args = a.visitArray(this.args))
1698 },
1699 eval: function(b) {
1700 var c, d, e = this.args.map(function(a) {
1701 return a.eval(b)
1702 }),
1703 f = this.name.toLowerCase();
1704 if (f in a.functions) try {
1705 if (d = new a.functionCall(b, this.currentFileInfo), c = d[f].apply(d, e), null != c) return c
1706 } catch (g) {
1707 throw {
1708 type: g.type || "Runtime",
1709 message: "error evaluating function `" + this.name + "`" + (g.message ? ": " + g.message : ""),
1710 index: this.index,
1711 filename: this.currentFileInfo.filename
1712 }
1713 }
1714 return new a.Call(this.name, e, this.index, this.currentFileInfo)
1715 },
1716 genCSS: function(a, b) {
1717 b.add(this.name + "(", this.currentFileInfo, this.index);
1718 for (var c = 0; c < this.args.length; c++) this.args[c].genCSS(a, b), c + 1 < this.args.length && b.add(", ");
1719 b.add(")")
1720 },
1721 toCSS: a.toCSS
1722 }
1723 }(c("../tree")),
1724 function(a) {
1725 function b(a) {
1726 return "#" + a.map(function(a) {
1727 return a = c(Math.round(a), 255), (16 > a ? "0" : "") + a.toString(16)
1728 }).join("")
1729 }
1730
1731 function c(a, b) {
1732 return Math.min(Math.max(a, 0), b)
1733 }
1734 a.Color = function(a, b) {
1735 this.rgb = Array.isArray(a) ? a : 6 == a.length ? a.match(/.{2}/g).map(function(a) {
1736 return parseInt(a, 16)
1737 }) : a.split("").map(function(a) {
1738 return parseInt(a + a, 16)
1739 }), this.alpha = "number" == typeof b ? b : 1
1740 };
1741 var d = "transparent";
1742 a.Color.prototype = {
1743 type: "Color",
1744 eval: function() {
1745 return this
1746 },
1747 luma: function() {
1748 var a = this.rgb[0] / 255,
1749 b = this.rgb[1] / 255,
1750 c = this.rgb[2] / 255;
1751 return a = .03928 >= a ? a / 12.92 : Math.pow((a + .055) / 1.055, 2.4), b = .03928 >= b ? b / 12.92 : Math.pow((b + .055) / 1.055, 2.4), c = .03928 >= c ? c / 12.92 : Math.pow((c + .055) / 1.055, 2.4), .2126 * a + .7152 * b + .0722 * c
1752 },
1753 genCSS: function(a, b) {
1754 b.add(this.toCSS(a))
1755 },
1756 toCSS: function(b, e) {
1757 var f = b && b.compress && !e,
1758 g = a.fround(b, this.alpha);
1759 if (1 > g) return 0 === g && this.isTransparentKeyword ? d : "rgba(" + this.rgb.map(function(a) {
1760 return c(Math.round(a), 255)
1761 }).concat(c(g, 1)).join("," + (f ? "" : " ")) + ")";
1762 var h = this.toRGB();
1763 if (f) {
1764 var i = h.split("");
1765 i[1] === i[2] && i[3] === i[4] && i[5] === i[6] && (h = "#" + i[1] + i[3] + i[5])
1766 }
1767 return h
1768 },
1769 operate: function(b, c, d) {
1770 for (var e = [], f = this.alpha * (1 - d.alpha) + d.alpha, g = 0; 3 > g; g++) e[g] = a.operate(b, c, this.rgb[g], d.rgb[g]);
1771 return new a.Color(e, f)
1772 },
1773 toRGB: function() {
1774 return b(this.rgb)
1775 },
1776 toHSL: function() {
1777 var a, b, c = this.rgb[0] / 255,
1778 d = this.rgb[1] / 255,
1779 e = this.rgb[2] / 255,
1780 f = this.alpha,
1781 g = Math.max(c, d, e),
1782 h = Math.min(c, d, e),
1783 i = (g + h) / 2,
1784 j = g - h;
1785 if (g === h) a = b = 0;
1786 else {
1787 switch (b = i > .5 ? j / (2 - g - h) : j / (g + h), g) {
1788 case c:
1789 a = (d - e) / j + (e > d ? 6 : 0);
1790 break;
1791 case d:
1792 a = (e - c) / j + 2;
1793 break;
1794 case e:
1795 a = (c - d) / j + 4
1796 }
1797 a /= 6
1798 }
1799 return {
1800 h: 360 * a,
1801 s: b,
1802 l: i,
1803 a: f
1804 }
1805 },
1806 toHSV: function() {
1807 var a, b, c = this.rgb[0] / 255,
1808 d = this.rgb[1] / 255,
1809 e = this.rgb[2] / 255,
1810 f = this.alpha,
1811 g = Math.max(c, d, e),
1812 h = Math.min(c, d, e),
1813 i = g,
1814 j = g - h;
1815 if (b = 0 === g ? 0 : j / g, g === h) a = 0;
1816 else {
1817 switch (g) {
1818 case c:
1819 a = (d - e) / j + (e > d ? 6 : 0);
1820 break;
1821 case d:
1822 a = (e - c) / j + 2;
1823 break;
1824 case e:
1825 a = (c - d) / j + 4
1826 }
1827 a /= 6
1828 }
1829 return {
1830 h: 360 * a,
1831 s: b,
1832 v: i,
1833 a: f
1834 }
1835 },
1836 toARGB: function() {
1837 return b([255 * this.alpha].concat(this.rgb))
1838 },
1839 compare: function(a) {
1840 return a.rgb ? a.rgb[0] === this.rgb[0] && a.rgb[1] === this.rgb[1] && a.rgb[2] === this.rgb[2] && a.alpha === this.alpha ? 0 : -1 : -1
1841 }
1842 }, a.Color.fromKeyword = function(b) {
1843 if (b = b.toLowerCase(), a.colors.hasOwnProperty(b)) return new a.Color(a.colors[b].slice(1));
1844 if (b === d) {
1845 var c = new a.Color([0, 0, 0], 0);
1846 return c.isTransparentKeyword = !0, c
1847 }
1848 }
1849 }(c("../tree")),
1850 function(a) {
1851 a.Comment = function(a, b, c, d) {
1852 this.value = a, this.silent = !!b, this.currentFileInfo = d
1853 }, a.Comment.prototype = {
1854 type: "Comment",
1855 genCSS: function(b, c) {
1856 this.debugInfo && c.add(a.debugInfo(b, this), this.currentFileInfo, this.index), c.add(this.value.trim())
1857 },
1858 toCSS: a.toCSS,
1859 isSilent: function(a) {
1860 var b = this.currentFileInfo && this.currentFileInfo.reference && !this.isReferenced,
1861 c = a.compress && !this.value.match(/^\/\*!/);
1862 return this.silent || b || c
1863 },
1864 eval: function() {
1865 return this
1866 },
1867 markReferenced: function() {
1868 this.isReferenced = !0
1869 }
1870 }
1871 }(c("../tree")),
1872 function(a) {
1873 a.Condition = function(a, b, c, d, e) {
1874 this.op = a.trim(), this.lvalue = b, this.rvalue = c, this.index = d, this.negate = e
1875 }, a.Condition.prototype = {
1876 type: "Condition",
1877 accept: function(a) {
1878 this.lvalue = a.visit(this.lvalue), this.rvalue = a.visit(this.rvalue)
1879 },
1880 eval: function(a) {
1881 var b, c = this.lvalue.eval(a),
1882 d = this.rvalue.eval(a),
1883 e = this.index;
1884 return b = function(a) {
1885 switch (a) {
1886 case "and":
1887 return c && d;
1888 case "or":
1889 return c || d;
1890 default:
1891 if (c.compare) b = c.compare(d);
1892 else {
1893 if (!d.compare) throw {
1894 type: "Type",
1895 message: "Unable to perform comparison",
1896 index: e
1897 };
1898 b = d.compare(c)
1899 }
1900 switch (b) {
1901 case -1:
1902 return "<" === a || "=<" === a || "<=" === a;
1903 case 0:
1904 return "=" === a || ">=" === a || "=<" === a || "<=" === a;
1905 case 1:
1906 return ">" === a || ">=" === a
1907 }
1908 }
1909 }(this.op), this.negate ? !b : b
1910 }
1911 }
1912 }(c("../tree")),
1913 function(a) {
1914 a.DetachedRuleset = function(a, b) {
1915 this.ruleset = a, this.frames = b
1916 }, a.DetachedRuleset.prototype = {
1917 type: "DetachedRuleset",
1918 accept: function(a) {
1919 this.ruleset = a.visit(this.ruleset)
1920 },
1921 eval: function(b) {
1922 var c = this.frames || b.frames.slice(0);
1923 return new a.DetachedRuleset(this.ruleset, c)
1924 },
1925 callEval: function(b) {
1926 return this.ruleset.eval(this.frames ? new a.evalEnv(b, this.frames.concat(b.frames)) : b)
1927 }
1928 }
1929 }(c("../tree")),
1930 function(a) {
1931 a.Dimension = function(c, d) {
1932 this.value = parseFloat(c), this.unit = d && d instanceof a.Unit ? d : new a.Unit(d ? [d] : b)
1933 }, a.Dimension.prototype = {
1934 type: "Dimension",
1935 accept: function(a) {
1936 this.unit = a.visit(this.unit)
1937 },
1938 eval: function() {
1939 return this
1940 },
1941 toColor: function() {
1942 return new a.Color([this.value, this.value, this.value])
1943 },
1944 genCSS: function(b, c) {
1945 if (b && b.strictUnits && !this.unit.isSingular()) throw new Error("Multiple units in dimension. Correct the units or use the unit function. Bad unit: " + this.unit.toString());
1946 var d = a.fround(b, this.value),
1947 e = String(d);
1948 if (0 !== d && 1e-6 > d && d > -1e-6 && (e = d.toFixed(20).replace(/0+$/, "")), b && b.compress) {
1949 if (0 === d && this.unit.isLength()) return void c.add(e);
1950 d > 0 && 1 > d && (e = e.substr(1))
1951 }
1952 c.add(e), this.unit.genCSS(b, c)
1953 },
1954 toCSS: a.toCSS,
1955 operate: function(b, c, d) {
1956 var e = a.operate(b, c, this.value, d.value),
1957 f = this.unit.clone();
1958 if ("+" === c || "-" === c)
1959 if (0 === f.numerator.length && 0 === f.denominator.length) f.numerator = d.unit.numerator.slice(0), f.denominator = d.unit.denominator.slice(0);
1960 else if (0 === d.unit.numerator.length && 0 === f.denominator.length);
1961 else {
1962 if (d = d.convertTo(this.unit.usedUnits()), b.strictUnits && d.unit.toString() !== f.toString()) throw new Error("Incompatible units. Change the units or use the unit function. Bad units: '" + f.toString() + "' and '" + d.unit.toString() + "'.");
1963 e = a.operate(b, c, this.value, d.value)
1964 } else "*" === c ? (f.numerator = f.numerator.concat(d.unit.numerator).sort(), f.denominator = f.denominator.concat(d.unit.denominator).sort(), f.cancel()) : "/" === c && (f.numerator = f.numerator.concat(d.unit.denominator).sort(), f.denominator = f.denominator.concat(d.unit.numerator).sort(), f.cancel());
1965 return new a.Dimension(e, f)
1966 },
1967 compare: function(b) {
1968 if (b instanceof a.Dimension) {
1969 var c, d, e, f;
1970 if (this.unit.isEmpty() || b.unit.isEmpty()) c = this, d = b;
1971 else if (c = this.unify(), d = b.unify(), 0 !== c.unit.compare(d.unit)) return -1;
1972 return e = c.value, f = d.value, f > e ? -1 : e > f ? 1 : 0
1973 }
1974 return -1
1975 },
1976 unify: function() {
1977 return this.convertTo({
1978 length: "px",
1979 duration: "s",
1980 angle: "rad"
1981 })
1982 },
1983 convertTo: function(b) {
1984 var c, d, e, f, g, h = this.value,
1985 i = this.unit.clone(),
1986 j = {};
1987 if ("string" == typeof b) {
1988 for (c in a.UnitConversions) a.UnitConversions[c].hasOwnProperty(b) && (j = {}, j[c] = b);
1989 b = j
1990 }
1991 g = function(a, b) {
1992 return e.hasOwnProperty(a) ? (b ? h /= e[a] / e[f] : h *= e[a] / e[f], f) : a
1993 };
1994 for (d in b) b.hasOwnProperty(d) && (f = b[d], e = a.UnitConversions[d], i.map(g));
1995 return i.cancel(), new a.Dimension(h, i)
1996 }
1997 }, a.UnitConversions = {
1998 length: {
1999 m: 1,
2000 cm: .01,
2001 mm: .001,
2002 "in": .0254,
2003 px: .0254 / 96,
2004 pt: .0254 / 72,
2005 pc: .0254 / 72 * 12
2006 },
2007 duration: {
2008 s: 1,
2009 ms: .001
2010 },
2011 angle: {
2012 rad: 1 / (2 * Math.PI),
2013 deg: 1 / 360,
2014 grad: .0025,
2015 turn: 1
2016 }
2017 }, a.Unit = function(a, b, c) {
2018 this.numerator = a ? a.slice(0).sort() : [], this.denominator = b ? b.slice(0).sort() : [], this.backupUnit = c
2019 }, a.Unit.prototype = {
2020 type: "Unit",
2021 clone: function() {
2022 return new a.Unit(this.numerator.slice(0), this.denominator.slice(0), this.backupUnit)
2023 },
2024 genCSS: function(a, b) {
2025 this.numerator.length >= 1 ? b.add(this.numerator[0]) : this.denominator.length >= 1 ? b.add(this.denominator[0]) : a && a.strictUnits || !this.backupUnit || b.add(this.backupUnit)
2026 },
2027 toCSS: a.toCSS,
2028 toString: function() {
2029 var a, b = this.numerator.join("*");
2030 for (a = 0; a < this.denominator.length; a++) b += "/" + this.denominator[a];
2031 return b
2032 },
2033 compare: function(a) {
2034 return this.is(a.toString()) ? 0 : -1
2035 },
2036 is: function(a) {
2037 return this.toString() === a
2038 },
2039 isLength: function() {
2040 return Boolean(this.toCSS().match(/px|em|%|in|cm|mm|pc|pt|ex/))
2041 },
2042 isEmpty: function() {
2043 return 0 === this.numerator.length && 0 === this.denominator.length
2044 },
2045 isSingular: function() {
2046 return this.numerator.length <= 1 && 0 === this.denominator.length
2047 },
2048 map: function(a) {
2049 var b;
2050 for (b = 0; b < this.numerator.length; b++) this.numerator[b] = a(this.numerator[b], !1);
2051 for (b = 0; b < this.denominator.length; b++) this.denominator[b] = a(this.denominator[b], !0)
2052 },
2053 usedUnits: function() {
2054 var b, c, d = {};
2055 c = function(a) {
2056 return b.hasOwnProperty(a) && !d[e] && (d[e] = a), a
2057 };
2058 for (var e in a.UnitConversions) a.UnitConversions.hasOwnProperty(e) && (b = a.UnitConversions[e], this.map(c));
2059 return d
2060 },
2061 cancel: function() {
2062 var a, b, c, d = {};
2063 for (b = 0; b < this.numerator.length; b++) a = this.numerator[b], c || (c = a), d[a] = (d[a] || 0) + 1;
2064 for (b = 0; b < this.denominator.length; b++) a = this.denominator[b], c || (c = a), d[a] = (d[a] || 0) - 1;
2065 this.numerator = [], this.denominator = [];
2066 for (a in d)
2067 if (d.hasOwnProperty(a)) {
2068 var e = d[a];
2069 if (e > 0)
2070 for (b = 0; e > b; b++) this.numerator.push(a);
2071 else if (0 > e)
2072 for (b = 0; - e > b; b++) this.denominator.push(a)
2073 }
2074 0 === this.numerator.length && 0 === this.denominator.length && c && (this.backupUnit = c), this.numerator.sort(), this.denominator.sort()
2075 }
2076 }
2077 }(c("../tree")),
2078 function(a) {
2079 a.Directive = function(a, b, c, d, e, f) {
2080 this.name = a, this.value = b, c && (this.rules = c, this.rules.allowImports = !0), this.index = d, this.currentFileInfo = e, this.debugInfo = f
2081 }, a.Directive.prototype = {
2082 type: "Directive",
2083 accept: function(a) {
2084 var b = this.value,
2085 c = this.rules;
2086 c && (c = a.visit(c)), b && (b = a.visit(b))
2087 },
2088 genCSS: function(b, c) {
2089 var d = this.value,
2090 e = this.rules;
2091 c.add(this.name, this.currentFileInfo, this.index), d && (c.add(" "), d.genCSS(b, c)), e ? a.outputRuleset(b, c, [e]) : c.add(";")
2092 },
2093 toCSS: a.toCSS,
2094 eval: function(b) {
2095 var c = this.value,
2096 d = this.rules;
2097 return c && (c = c.eval(b)), d && (d = d.eval(b), d.root = !0), new a.Directive(this.name, c, d, this.index, this.currentFileInfo, this.debugInfo)
2098 },
2099 variable: function(b) {
2100 return this.rules ? a.Ruleset.prototype.variable.call(this.rules, b) : void 0
2101 },
2102 find: function() {
2103 return this.rules ? a.Ruleset.prototype.find.apply(this.rules, arguments) : void 0
2104 },
2105 rulesets: function() {
2106 return this.rules ? a.Ruleset.prototype.rulesets.apply(this.rules) : void 0
2107 },
2108 markReferenced: function() {
2109 var a, b;
2110 if (this.isReferenced = !0, this.rules)
2111 for (b = this.rules.rules, a = 0; a < b.length; a++) b[a].markReferenced && b[a].markReferenced()
2112 }
2113 }
2114 }(c("../tree")),
2115 function(a) {
2116 a.Element = function(b, c, d, e) {
2117 this.combinator = b instanceof a.Combinator ? b : new a.Combinator(b), this.value = "string" == typeof c ? c.trim() : c ? c : "", this.index = d, this.currentFileInfo = e
2118 }, a.Element.prototype = {
2119 type: "Element",
2120 accept: function(a) {
2121 var b = this.value;
2122 this.combinator = a.visit(this.combinator), "object" == typeof b && (this.value = a.visit(b))
2123 },
2124 eval: function(b) {
2125 return new a.Element(this.combinator, this.value.eval ? this.value.eval(b) : this.value, this.index, this.currentFileInfo)
2126 },
2127 genCSS: function(a, b) {
2128 b.add(this.toCSS(a), this.currentFileInfo, this.index)
2129 },
2130 toCSS: function(a) {
2131 var b = this.value.toCSS ? this.value.toCSS(a) : this.value;
2132 return "" === b && "&" === this.combinator.value.charAt(0) ? "" : this.combinator.toCSS(a || {}) + b
2133 }
2134 }, a.Attribute = function(a, b, c) {
2135 this.key = a, this.op = b, this.value = c
2136 }, a.Attribute.prototype = {
2137 type: "Attribute",
2138 eval: function(b) {
2139 return new a.Attribute(this.key.eval ? this.key.eval(b) : this.key, this.op, this.value && this.value.eval ? this.value.eval(b) : this.value)
2140 },
2141 genCSS: function(a, b) {
2142 b.add(this.toCSS(a))
2143 },
2144 toCSS: function(a) {
2145 var b = this.key.toCSS ? this.key.toCSS(a) : this.key;
2146 return this.op && (b += this.op, b += this.value.toCSS ? this.value.toCSS(a) : this.value), "[" + b + "]"
2147 }
2148 }, a.Combinator = function(a) {
2149 this.value = " " === a ? " " : a ? a.trim() : ""
2150 }, a.Combinator.prototype = {
2151 type: "Combinator",
2152 _outputMap: {
2153 "": "",
2154 " ": " ",
2155 ":": " :",
2156 "+": " + ",
2157 "~": " ~ ",
2158 ">": " > ",
2159 "|": "|",
2160 "^": " ^ ",
2161 "^^": " ^^ "
2162 },
2163 _outputMapCompressed: {
2164 "": "",
2165 " ": " ",
2166 ":": " :",
2167 "+": "+",
2168 "~": "~",
2169 ">": ">",
2170 "|": "|",
2171 "^": "^",
2172 "^^": "^^"
2173 },
2174 genCSS: function(a, b) {
2175 b.add((a.compress ? this._outputMapCompressed : this._outputMap)[this.value])
2176 },
2177 toCSS: a.toCSS
2178 }
2179 }(c("../tree")),
2180 function(a) {
2181 a.Expression = function(a) {
2182 this.value = a
2183 }, a.Expression.prototype = {
2184 type: "Expression",
2185 accept: function(a) {
2186 this.value && (this.value = a.visitArray(this.value))
2187 },
2188 eval: function(b) {
2189 var c, d = this.parens && !this.parensInOp,
2190 e = !1;
2191 return d && b.inParenthesis(), this.value.length > 1 ? c = new a.Expression(this.value.map(function(a) {
2192 return a.eval(b)
2193 })) : 1 === this.value.length ? (this.value[0].parens && !this.value[0].parensInOp && (e = !0), c = this.value[0].eval(b)) : c = this, d && b.outOfParenthesis(), this.parens && this.parensInOp && !b.isMathOn() && !e && (c = new a.Paren(c)), c
2194 },
2195 genCSS: function(a, b) {
2196 for (var c = 0; c < this.value.length; c++) this.value[c].genCSS(a, b), c + 1 < this.value.length && b.add(" ")
2197 },
2198 toCSS: a.toCSS,
2199 throwAwayComments: function() {
2200 this.value = this.value.filter(function(b) {
2201 return !(b instanceof a.Comment)
2202 })
2203 }
2204 }
2205 }(c("../tree")),
2206 function(a) {
2207 a.Extend = function(b, c, d) {
2208 switch (this.selector = b, this.option = c, this.index = d, this.object_id = a.Extend.next_id++, this.parent_ids = [this.object_id], c) {
2209 case "all":
2210 this.allowBefore = !0, this.allowAfter = !0;
2211 break;
2212 default:
2213 this.allowBefore = !1, this.allowAfter = !1
2214 }
2215 }, a.Extend.next_id = 0, a.Extend.prototype = {
2216 type: "Extend",
2217 accept: function(a) {
2218 this.selector = a.visit(this.selector)
2219 },
2220 eval: function(b) {
2221 return new a.Extend(this.selector.eval(b), this.option, this.index)
2222 },
2223 clone: function() {
2224 return new a.Extend(this.selector, this.option, this.index)
2225 },
2226 findSelfSelectors: function(a) {
2227 var b, c, d = [];
2228 for (b = 0; b < a.length; b++) c = a[b].elements, b > 0 && c.length && "" === c[0].combinator.value && (c[0].combinator.value = " "), d = d.concat(a[b].elements);
2229 this.selfSelectors = [{
2230 elements: d
2231 }]
2232 }
2233 }
2234 }(c("../tree")),
2235 function(a) {
2236 a.Import = function(a, c, d, e, f) {
2237 if (this.options = d, this.index = e, this.path = a, this.features = c, this.currentFileInfo = f, this.options.less !== b || this.options.inline) this.css = !this.options.less || this.options.inline;
2238 else {
2239 var g = this.getPath();
2240 g && /css([\?;].*)?$/.test(g) && (this.css = !0)
2241 }
2242 }, a.Import.prototype = {
2243 type: "Import",
2244 accept: function(a) {
2245 this.features && (this.features = a.visit(this.features)), this.path = a.visit(this.path), !this.options.inline && this.root && (this.root = a.visit(this.root))
2246 },
2247 genCSS: function(a, b) {
2248 this.css && (b.add("@import ", this.currentFileInfo, this.index), this.path.genCSS(a, b), this.features && (b.add(" "), this.features.genCSS(a, b)), b.add(";"))
2249 },
2250 toCSS: a.toCSS,
2251 getPath: function() {
2252 if (this.path instanceof a.Quoted) {
2253 var c = this.path.value;
2254 return this.css !== b || /(\.[a-z]*$)|([\?;].*)$/.test(c) ? c : c + ".less"
2255 }
2256 return this.path instanceof a.URL ? this.path.value.value : null
2257 },
2258 evalForImport: function(b) {
2259 return new a.Import(this.path.eval(b), this.features, this.options, this.index, this.currentFileInfo)
2260 },
2261 evalPath: function(b) {
2262 var c = this.path.eval(b),
2263 d = this.currentFileInfo && this.currentFileInfo.rootpath;
2264 if (!(c instanceof a.URL)) {
2265 if (d) {
2266 var e = c.value;
2267 e && b.isPathRelative(e) && (c.value = d + e)
2268 }
2269 c.value = b.normalizePath(c.value)
2270 }
2271 return c
2272 },
2273 eval: function(b) {
2274 var c, d = this.features && this.features.eval(b);
2275 if (this.skip && ("function" == typeof this.skip && (this.skip = this.skip()), this.skip)) return [];
2276 if (this.options.inline) {
2277 var e = new a.Anonymous(this.root, 0, {
2278 filename: this.importedFilename
2279 }, !0);
2280 return this.features ? new a.Media([e], this.features.value) : [e]
2281 }
2282 if (this.css) {
2283 var f = new a.Import(this.evalPath(b), d, this.options, this.index);
2284 if (!f.css && this.error) throw this.error;
2285 return f
2286 }
2287 return c = new a.Ruleset(null, this.root.rules.slice(0)), c.evalImports(b), this.features ? new a.Media(c.rules, this.features.value) : c.rules
2288 }
2289 }
2290 }(c("../tree")),
2291 function(a) {
2292 a.JavaScript = function(a, b, c) {
2293 this.escaped = c, this.expression = a, this.index = b
2294 }, a.JavaScript.prototype = {
2295 type: "JavaScript",
2296 eval: function(b) {
2297 var c, d = this,
2298 e = {},
2299 f = this.expression.replace(/@\{([\w-]+)\}/g, function(c, e) {
2300 return a.jsify(new a.Variable("@" + e, d.index).eval(b))
2301 });
2302 try {
2303 f = new Function("return (" + f + ")")
2304 } catch (g) {
2305 throw {
2306 message: "JavaScript evaluation error: " + g.message + " from `" + f + "`",
2307 index: this.index
2308 }
2309 }
2310 var h = b.frames[0].variables();
2311 for (var i in h) h.hasOwnProperty(i) && (e[i.slice(1)] = {
2312 value: h[i].value,
2313 toJS: function() {
2314 return this.value.eval(b).toCSS()
2315 }
2316 });
2317 try {
2318 c = f.call(e)
2319 } catch (g) {
2320 throw {
2321 message: "JavaScript evaluation error: '" + g.name + ": " + g.message.replace(/["]/g, "'") + "'",
2322 index: this.index
2323 }
2324 }
2325 return "number" == typeof c ? new a.Dimension(c) : "string" == typeof c ? new a.Quoted('"' + c + '"', c, this.escaped, this.index) : new a.Anonymous(Array.isArray(c) ? c.join(", ") : c)
2326 }
2327 }
2328 }(c("../tree")),
2329 function(a) {
2330 a.Keyword = function(a) {
2331 this.value = a
2332 }, a.Keyword.prototype = {
2333 type: "Keyword",
2334 eval: function() {
2335 return this
2336 },
2337 genCSS: function(a, b) {
2338 if ("%" === this.value) throw {
2339 type: "Syntax",
2340 message: "Invalid % without number"
2341 };
2342 b.add(this.value)
2343 },
2344 toCSS: a.toCSS,
2345 compare: function(b) {
2346 return b instanceof a.Keyword ? b.value === this.value ? 0 : 1 : -1
2347 }
2348 }, a.True = new a.Keyword("true"), a.False = new a.Keyword("false")
2349 }(c("../tree")),
2350 function(a) {
2351 a.Media = function(b, c, d, e) {
2352 this.index = d, this.currentFileInfo = e;
2353 var f = this.emptySelectors();
2354 this.features = new a.Value(c), this.rules = [new a.Ruleset(f, b)], this.rules[0].allowImports = !0
2355 }, a.Media.prototype = {
2356 type: "Media",
2357 accept: function(a) {
2358 this.features && (this.features = a.visit(this.features)), this.rules && (this.rules = a.visitArray(this.rules))
2359 },
2360 genCSS: function(b, c) {
2361 c.add("@media ", this.currentFileInfo, this.index), this.features.genCSS(b, c), a.outputRuleset(b, c, this.rules)
2362 },
2363 toCSS: a.toCSS,
2364 eval: function(b) {
2365 b.mediaBlocks || (b.mediaBlocks = [], b.mediaPath = []);
2366 var c = new a.Media(null, [], this.index, this.currentFileInfo);
2367 this.debugInfo && (this.rules[0].debugInfo = this.debugInfo, c.debugInfo = this.debugInfo);
2368 var d = !1;
2369 b.strictMath || (d = !0, b.strictMath = !0);
2370 try {
2371 c.features = this.features.eval(b)
2372 } finally {
2373 d && (b.strictMath = !1)
2374 }
2375 return b.mediaPath.push(c), b.mediaBlocks.push(c), b.frames.unshift(this.rules[0]), c.rules = [this.rules[0].eval(b)], b.frames.shift(), b.mediaPath.pop(), 0 === b.mediaPath.length ? c.evalTop(b) : c.evalNested(b)
2376 },
2377 variable: function(b) {
2378 return a.Ruleset.prototype.variable.call(this.rules[0], b)
2379 },
2380 find: function() {
2381 return a.Ruleset.prototype.find.apply(this.rules[0], arguments)
2382 },
2383 rulesets: function() {
2384 return a.Ruleset.prototype.rulesets.apply(this.rules[0])
2385 },
2386 emptySelectors: function() {
2387 var b = new a.Element("", "&", this.index, this.currentFileInfo),
2388 c = [new a.Selector([b], null, null, this.index, this.currentFileInfo)];
2389 return c[0].mediaEmpty = !0, c
2390 },
2391 markReferenced: function() {
2392 var a, b = this.rules[0].rules;
2393 for (this.rules[0].markReferenced(), this.isReferenced = !0, a = 0; a < b.length; a++) b[a].markReferenced && b[a].markReferenced()
2394 },
2395 evalTop: function(b) {
2396 var c = this;
2397 if (b.mediaBlocks.length > 1) {
2398 var d = this.emptySelectors();
2399 c = new a.Ruleset(d, b.mediaBlocks), c.multiMedia = !0
2400 }
2401 return delete b.mediaBlocks, delete b.mediaPath, c
2402 },
2403 evalNested: function(b) {
2404 var c, d, e = b.mediaPath.concat([this]);
2405 for (c = 0; c < e.length; c++) d = e[c].features instanceof a.Value ? e[c].features.value : e[c].features, e[c] = Array.isArray(d) ? d : [d];
2406 return this.features = new a.Value(this.permute(e).map(function(b) {
2407 for (b = b.map(function(b) {
2408 return b.toCSS ? b : new a.Anonymous(b)
2409 }), c = b.length - 1; c > 0; c--) b.splice(c, 0, new a.Anonymous("and"));
2410 return new a.Expression(b)
2411 })), new a.Ruleset([], [])
2412 },
2413 permute: function(a) {
2414 if (0 === a.length) return [];
2415 if (1 === a.length) return a[0];
2416 for (var b = [], c = this.permute(a.slice(1)), d = 0; d < c.length; d++)
2417 for (var e = 0; e < a[0].length; e++) b.push([a[0][e]].concat(c[d]));
2418 return b
2419 },
2420 bubbleSelectors: function(b) {
2421 b && (this.rules = [new a.Ruleset(b.slice(0), [this.rules[0]])])
2422 }
2423 }
2424 }(c("../tree")),
2425 function(a) {
2426 a.mixin = {}, a.mixin.Call = function(b, c, d, e, f) {
2427 this.selector = new a.Selector(b), this.arguments = c && c.length ? c : null, this.index = d, this.currentFileInfo = e, this.important = f
2428 }, a.mixin.Call.prototype = {
2429 type: "MixinCall",
2430 accept: function(a) {
2431 this.selector && (this.selector = a.visit(this.selector)), this.arguments && (this.arguments = a.visitArray(this.arguments))
2432 },
2433 eval: function(b) {
2434 var c, d, e, f, g, h, i, j, k, l, m, n, o = [],
2435 p = !1,
2436 q = [],
2437 r = [],
2438 s = a.defaultFunc,
2439 t = 0,
2440 u = 1,
2441 v = 2;
2442 for (e = this.arguments && this.arguments.map(function(a) {
2443 return {
2444 name: a.name,
2445 value: a.value.eval(b)
2446 }
2447 }), f = 0; f < b.frames.length; f++)
2448 if ((c = b.frames[f].find(this.selector)).length > 0) {
2449 for (j = !0, g = 0; g < c.length; g++) {
2450 for (d = c[g], i = !1, h = 0; h < b.frames.length; h++)
2451 if (!(d instanceof a.mixin.Definition) && d === (b.frames[h].originalRuleset || b.frames[h])) {
2452 i = !0;
2453 break
2454 }
2455 if (!i && d.matchArgs(e, b)) {
2456 if (l = {
2457 mixin: d,
2458 group: t
2459 }, d.matchCondition) {
2460 for (h = 0; 2 > h; h++) s.value(h), r[h] = d.matchCondition(e, b);
2461 (r[0] || r[1]) && (r[0] != r[1] && (l.group = r[1] ? u : v), q.push(l))
2462 } else q.push(l);
2463 p = !0
2464 }
2465 }
2466 for (s.reset(), n = [0, 0, 0], g = 0; g < q.length; g++) n[q[g].group]++;
2467 if (n[t] > 0) m = v;
2468 else if (m = u, n[u] + n[v] > 1) throw {
2469 type: "Runtime",
2470 message: "Ambiguous use of `default()` found when matching for `" + this.format(e) + "`",
2471 index: this.index,
2472 filename: this.currentFileInfo.filename
2473 };
2474 for (g = 0; g < q.length; g++)
2475 if (l = q[g].group, l === t || l === m) try {
2476 d = q[g].mixin, d instanceof a.mixin.Definition || (d = new a.mixin.Definition("", [], d.rules, null, !1), d.originalRuleset = c[g].originalRuleset || c[g]), Array.prototype.push.apply(o, d.evalCall(b, e, this.important).rules)
2477 } catch (w) {
2478 throw {
2479 message: w.message,
2480 index: this.index,
2481 filename: this.currentFileInfo.filename,
2482 stack: w.stack
2483 }
2484 }
2485 if (p) {
2486 if (!this.currentFileInfo || !this.currentFileInfo.reference)
2487 for (f = 0; f < o.length; f++) k = o[f], k.markReferenced && k.markReferenced();
2488 return o
2489 }
2490 }
2491 throw j ? {
2492 type: "Runtime",
2493 message: "No matching definition was found for `" + this.format(e) + "`",
2494 index: this.index,
2495 filename: this.currentFileInfo.filename
2496 } : {
2497 type: "Name",
2498 message: this.selector.toCSS().trim() + " is undefined",
2499 index: this.index,
2500 filename: this.currentFileInfo.filename
2501 }
2502 },
2503 format: function(a) {
2504 return this.selector.toCSS().trim() + "(" + (a ? a.map(function(a) {
2505 var b = "";
2506 return a.name && (b += a.name + ":"), b += a.value.toCSS ? a.value.toCSS() : "???"
2507 }).join(", ") : "") + ")"
2508 }
2509 }, a.mixin.Definition = function(b, c, d, e, f, g) {
2510 this.name = b, this.selectors = [new a.Selector([new a.Element(null, b, this.index, this.currentFileInfo)])], this.params = c, this.condition = e, this.variadic = f, this.arity = c.length, this.rules = d, this._lookups = {}, this.required = c.reduce(function(a, b) {
2511 return !b.name || b.name && !b.value ? a + 1 : a
2512 }, 0), this.parent = a.Ruleset.prototype, this.frames = g
2513 }, a.mixin.Definition.prototype = {
2514 type: "MixinDefinition",
2515 accept: function(a) {
2516 this.params && this.params.length && (this.params = a.visitArray(this.params)), this.rules = a.visitArray(this.rules), this.condition && (this.condition = a.visit(this.condition))
2517 },
2518 variable: function(a) {
2519 return this.parent.variable.call(this, a)
2520 },
2521 variables: function() {
2522 return this.parent.variables.call(this)
2523 },
2524 find: function() {
2525 return this.parent.find.apply(this, arguments)
2526 },
2527 rulesets: function() {
2528 return this.parent.rulesets.apply(this)
2529 },
2530 evalParams: function(b, c, d, e) {
2531 var f, g, h, i, j, k, l, m, n = new a.Ruleset(null, null),
2532 o = this.params.slice(0),
2533 p = 0;
2534 if (c = new a.evalEnv(c, [n].concat(c.frames)), d)
2535 for (d = d.slice(0), p = d.length, h = 0; p > h; h++)
2536 if (g = d[h], k = g && g.name) {
2537 for (l = !1, i = 0; i < o.length; i++)
2538 if (!e[i] && k === o[i].name) {
2539 e[i] = g.value.eval(b), n.prependRule(new a.Rule(k, g.value.eval(b))), l = !0;
2540 break
2541 }
2542 if (l) {
2543 d.splice(h, 1), h--;
2544 continue
2545 }
2546 throw {
2547 type: "Runtime",
2548 message: "Named argument for " + this.name + " " + d[h].name + " not found"
2549 }
2550 }
2551 for (m = 0, h = 0; h < o.length; h++)
2552 if (!e[h]) {
2553 if (g = d && d[m], k = o[h].name)
2554 if (o[h].variadic) {
2555 for (f = [], i = m; p > i; i++) f.push(d[i].value.eval(b));
2556 n.prependRule(new a.Rule(k, new a.Expression(f).eval(b)))
2557 } else {
2558 if (j = g && g.value) j = j.eval(b);
2559 else {
2560 if (!o[h].value) throw {
2561 type: "Runtime",
2562 message: "wrong number of arguments for " + this.name + " (" + p + " for " + this.arity + ")"
2563 };
2564 j = o[h].value.eval(c), n.resetCache()
2565 }
2566 n.prependRule(new a.Rule(k, j)), e[h] = j
2567 }
2568 if (o[h].variadic && d)
2569 for (i = m; p > i; i++) e[i] = d[i].value.eval(b);
2570 m++
2571 }
2572 return n
2573 },
2574 eval: function(b) {
2575 return new a.mixin.Definition(this.name, this.params, this.rules, this.condition, this.variadic, this.frames || b.frames.slice(0))
2576 },
2577 evalCall: function(b, c, d) {
2578 var e, f, g = [],
2579 h = this.frames ? this.frames.concat(b.frames) : b.frames,
2580 i = this.evalParams(b, new a.evalEnv(b, h), c, g);
2581 return i.prependRule(new a.Rule("@arguments", new a.Expression(g).eval(b))), e = this.rules.slice(0), f = new a.Ruleset(null, e), f.originalRuleset = this, f = f.eval(new a.evalEnv(b, [this, i].concat(h))), d && (f = this.parent.makeImportant.apply(f)), f
2582 },
2583 matchCondition: function(b, c) {
2584 return this.condition && !this.condition.eval(new a.evalEnv(c, [this.evalParams(c, new a.evalEnv(c, this.frames.concat(c.frames)), b, [])].concat(this.frames).concat(c.frames))) ? !1 : !0
2585 },
2586 matchArgs: function(a, b) {
2587 var c, d = a && a.length || 0;
2588 if (this.variadic) {
2589 if (d < this.required - 1) return !1
2590 } else {
2591 if (d < this.required) return !1;
2592 if (d > this.params.length) return !1
2593 }
2594 c = Math.min(d, this.arity);
2595 for (var e = 0; c > e; e++)
2596 if (!this.params[e].name && !this.params[e].variadic && a[e].value.eval(b).toCSS() != this.params[e].value.eval(b).toCSS()) return !1;
2597 return !0
2598 }
2599 }
2600 }(c("../tree")),
2601 function(a) {
2602 a.Negative = function(a) {
2603 this.value = a
2604 }, a.Negative.prototype = {
2605 type: "Negative",
2606 accept: function(a) {
2607 this.value = a.visit(this.value)
2608 },
2609 genCSS: function(a, b) {
2610 b.add("-"), this.value.genCSS(a, b)
2611 },
2612 toCSS: a.toCSS,
2613 eval: function(b) {
2614 return b.isMathOn() ? new a.Operation("*", [new a.Dimension(-1), this.value]).eval(b) : new a.Negative(this.value.eval(b))
2615 }
2616 }
2617 }(c("../tree")),
2618 function(a) {
2619 a.Operation = function(a, b, c) {
2620 this.op = a.trim(), this.operands = b, this.isSpaced = c
2621 }, a.Operation.prototype = {
2622 type: "Operation",
2623 accept: function(a) {
2624 this.operands = a.visit(this.operands)
2625 },
2626 eval: function(b) {
2627 var c = this.operands[0].eval(b),
2628 d = this.operands[1].eval(b);
2629 if (b.isMathOn()) {
2630 if (c instanceof a.Dimension && d instanceof a.Color && (c = c.toColor()), d instanceof a.Dimension && c instanceof a.Color && (d = d.toColor()), !c.operate) throw {
2631 type: "Operation",
2632 message: "Operation on an invalid type"
2633 };
2634 return c.operate(b, this.op, d)
2635 }
2636 return new a.Operation(this.op, [c, d], this.isSpaced)
2637 },
2638 genCSS: function(a, b) {
2639 this.operands[0].genCSS(a, b), this.isSpaced && b.add(" "), b.add(this.op), this.isSpaced && b.add(" "), this.operands[1].genCSS(a, b)
2640 },
2641 toCSS: a.toCSS
2642 }, a.operate = function(a, b, c, d) {
2643 switch (b) {
2644 case "+":
2645 return c + d;
2646 case "-":
2647 return c - d;
2648 case "*":
2649 return c * d;
2650 case "/":
2651 return c / d
2652 }
2653 }
2654 }(c("../tree")),
2655 function(a) {
2656 a.Paren = function(a) {
2657 this.value = a
2658 }, a.Paren.prototype = {
2659 type: "Paren",
2660 accept: function(a) {
2661 this.value = a.visit(this.value)
2662 },
2663 genCSS: function(a, b) {
2664 b.add("("), this.value.genCSS(a, b), b.add(")")
2665 },
2666 toCSS: a.toCSS,
2667 eval: function(b) {
2668 return new a.Paren(this.value.eval(b))
2669 }
2670 }
2671 }(c("../tree")),
2672 function(a) {
2673 a.Quoted = function(a, b, c, d, e) {
2674 this.escaped = c, this.value = b || "", this.quote = a.charAt(0), this.index = d, this.currentFileInfo = e
2675 }, a.Quoted.prototype = {
2676 type: "Quoted",
2677 genCSS: function(a, b) {
2678 this.escaped || b.add(this.quote, this.currentFileInfo, this.index), b.add(this.value), this.escaped || b.add(this.quote)
2679 },
2680 toCSS: a.toCSS,
2681 eval: function(b) {
2682 var c = this,
2683 d = this.value.replace(/`([^`]+)`/g, function(d, e) {
2684 return new a.JavaScript(e, c.index, !0).eval(b).value
2685 }).replace(/@\{([\w-]+)\}/g, function(d, e) {
2686 var f = new a.Variable("@" + e, c.index, c.currentFileInfo).eval(b, !0);
2687 return f instanceof a.Quoted ? f.value : f.toCSS()
2688 });
2689 return new a.Quoted(this.quote + d + this.quote, d, this.escaped, this.index, this.currentFileInfo)
2690 },
2691 compare: function(a) {
2692 if (!a.toCSS) return -1;
2693 var b = this.toCSS(),
2694 c = a.toCSS();
2695 return b === c ? 0 : c > b ? -1 : 1
2696 }
2697 }
2698 }(c("../tree")),
2699 function(a) {
2700 function b(a, b) {
2701 var c, d = "",
2702 e = b.length,
2703 f = {
2704 add: function(a) {
2705 d += a
2706 }
2707 };
2708 for (c = 0; e > c; c++) b[c].eval(a).genCSS(a, f);
2709 return d
2710 }
2711 a.Rule = function(b, c, d, e, f, g, h) {
2712 this.name = b, this.value = c instanceof a.Value || c instanceof a.Ruleset ? c : new a.Value([c]), this.important = d ? " " + d.trim() : "", this.merge = e, this.index = f, this.currentFileInfo = g, this.inline = h || !1, this.variable = b.charAt && "@" === b.charAt(0)
2713 }, a.Rule.prototype = {
2714 type: "Rule",
2715 accept: function(a) {
2716 this.value = a.visit(this.value)
2717 },
2718 genCSS: function(a, b) {
2719 b.add(this.name + (a.compress ? ":" : ": "), this.currentFileInfo, this.index);
2720 try {
2721 this.value.genCSS(a, b)
2722 } catch (c) {
2723 throw c.index = this.index, c.filename = this.currentFileInfo.filename, c
2724 }
2725 b.add(this.important + (this.inline || a.lastRule && a.compress ? "" : ";"), this.currentFileInfo, this.index)
2726 },
2727 toCSS: a.toCSS,
2728 eval: function(c) {
2729 var d, e = !1,
2730 f = this.name;
2731 "string" != typeof f && (f = 1 === f.length && f[0] instanceof a.Keyword ? f[0].value : b(c, f)), "font" !== f || c.strictMath || (e = !0, c.strictMath = !0);
2732 try {
2733 if (d = this.value.eval(c), !this.variable && "DetachedRuleset" === d.type) throw {
2734 message: "Rulesets cannot be evaluated on a property.",
2735 index: this.index,
2736 filename: this.currentFileInfo.filename
2737 };
2738 return new a.Rule(f, d, this.important, this.merge, this.index, this.currentFileInfo, this.inline)
2739 } catch (g) {
2740 throw "number" != typeof g.index && (g.index = this.index, g.filename = this.currentFileInfo.filename), g
2741 } finally {
2742 e && (c.strictMath = !1)
2743 }
2744 },
2745 makeImportant: function() {
2746 return new a.Rule(this.name, this.value, "!important", this.merge, this.index, this.currentFileInfo, this.inline)
2747 }
2748 }
2749 }(c("../tree")),
2750 function(a) {
2751 a.RulesetCall = function(a) {
2752 this.variable = a
2753 }, a.RulesetCall.prototype = {
2754 type: "RulesetCall",
2755 accept: function() {},
2756 eval: function(b) {
2757 var c = new a.Variable(this.variable).eval(b);
2758 return c.callEval(b)
2759 }
2760 }
2761 }(c("../tree")),
2762 function(a) {
2763 a.Ruleset = function(a, b, c) {
2764 this.selectors = a, this.rules = b, this._lookups = {}, this.strictImports = c
2765 }, a.Ruleset.prototype = {
2766 type: "Ruleset",
2767 accept: function(a) {
2768 this.paths ? a.visitArray(this.paths, !0) : this.selectors && (this.selectors = a.visitArray(this.selectors)), this.rules && this.rules.length && (this.rules = a.visitArray(this.rules))
2769 },
2770 eval: function(b) {
2771 var c, d, e, f, g = this.selectors,
2772 h = a.defaultFunc,
2773 i = !1;
2774 if (g && (d = g.length)) {
2775 for (c = [], h.error({
2776 type: "Syntax",
2777 message: "it is currently only allowed in parametric mixin guards,"
2778 }), f = 0; d > f; f++) e = g[f].eval(b), c.push(e), e.evaldCondition && (i = !0);
2779 h.reset()
2780 } else i = !0;
2781 var j, k, l = this.rules ? this.rules.slice(0) : null,
2782 m = new a.Ruleset(c, l, this.strictImports);
2783 m.originalRuleset = this, m.root = this.root, m.firstRoot = this.firstRoot, m.allowImports = this.allowImports, this.debugInfo && (m.debugInfo = this.debugInfo), i || (l.length = 0);
2784 var n = b.frames;
2785 n.unshift(m);
2786 var o = b.selectors;
2787 o || (b.selectors = o = []), o.unshift(this.selectors), (m.root || m.allowImports || !m.strictImports) && m.evalImports(b);
2788 var p = m.rules,
2789 q = p ? p.length : 0;
2790 for (f = 0; q > f; f++)(p[f] instanceof a.mixin.Definition || p[f] instanceof a.DetachedRuleset) && (p[f] = p[f].eval(b));
2791 var r = b.mediaBlocks && b.mediaBlocks.length || 0;
2792 for (f = 0; q > f; f++) p[f] instanceof a.mixin.Call ? (l = p[f].eval(b).filter(function(b) {
2793 return b instanceof a.Rule && b.variable ? !m.variable(b.name) : !0
2794 }), p.splice.apply(p, [f, 1].concat(l)), q += l.length - 1, f += l.length - 1, m.resetCache()) : p[f] instanceof a.RulesetCall && (l = p[f].eval(b).rules.filter(function(b) {
2795 return b instanceof a.Rule && b.variable ? !1 : !0
2796 }), p.splice.apply(p, [f, 1].concat(l)), q += l.length - 1, f += l.length - 1, m.resetCache());
2797 for (f = 0; f < p.length; f++) j = p[f], j instanceof a.mixin.Definition || j instanceof a.DetachedRuleset || (p[f] = j = j.eval ? j.eval(b) : j);
2798 for (f = 0; f < p.length; f++)
2799 if (j = p[f], j instanceof a.Ruleset && j.selectors && 1 === j.selectors.length && j.selectors[0].isJustParentSelector()) {
2800 p.splice(f--, 1);
2801 for (var s = 0; s < j.rules.length; s++) k = j.rules[s], k instanceof a.Rule && k.variable || p.splice(++f, 0, k)
2802 }
2803 if (n.shift(), o.shift(), b.mediaBlocks)
2804 for (f = r; f < b.mediaBlocks.length; f++) b.mediaBlocks[f].bubbleSelectors(c);
2805 return m
2806 },
2807 evalImports: function(b) {
2808 var c, d, e = this.rules;
2809 if (e)
2810 for (c = 0; c < e.length; c++) e[c] instanceof a.Import && (d = e[c].eval(b), d && d.length ? (e.splice.apply(e, [c, 1].concat(d)), c += d.length - 1) : e.splice(c, 1, d), this.resetCache())
2811 },
2812 makeImportant: function() {
2813 return new a.Ruleset(this.selectors, this.rules.map(function(a) {
2814 return a.makeImportant ? a.makeImportant() : a
2815 }), this.strictImports)
2816 },
2817 matchArgs: function(a) {
2818 return !a || 0 === a.length
2819 },
2820 matchCondition: function(b, c) {
2821 var d = this.selectors[this.selectors.length - 1];
2822 return d.evaldCondition ? d.condition && !d.condition.eval(new a.evalEnv(c, c.frames)) ? !1 : !0 : !1
2823 },
2824 resetCache: function() {
2825 this._rulesets = null, this._variables = null, this._lookups = {}
2826 },
2827 variables: function() {
2828 return this._variables || (this._variables = this.rules ? this.rules.reduce(function(b, c) {
2829 return c instanceof a.Rule && c.variable === !0 && (b[c.name] = c), b
2830 }, {}) : {}), this._variables
2831 },
2832 variable: function(a) {
2833 return this.variables()[a]
2834 },
2835 rulesets: function() {
2836 if (!this.rules) return null;
2837 var b, c, d = a.Ruleset,
2838 e = a.mixin.Definition,
2839 f = [],
2840 g = this.rules,
2841 h = g.length;
2842 for (b = 0; h > b; b++) c = g[b], (c instanceof d || c instanceof e) && f.push(c);
2843 return f
2844 },
2845 prependRule: function(a) {
2846 var b = this.rules;
2847 b ? b.unshift(a) : this.rules = [a]
2848 },
2849 find: function(b, c) {
2850 c = c || this;
2851 var d, e = [],
2852 f = b.toCSS();
2853 return f in this._lookups ? this._lookups[f] : (this.rulesets().forEach(function(f) {
2854 if (f !== c)
2855 for (var g = 0; g < f.selectors.length; g++)
2856 if (d = b.match(f.selectors[g])) {
2857 b.elements.length > d ? Array.prototype.push.apply(e, f.find(new a.Selector(b.elements.slice(d)), c)) : e.push(f);
2858 break
2859 }
2860 }), this._lookups[f] = e, e)
2861 },
2862 genCSS: function(b, c) {
2863 var d, e, f, g, h, i, j = [],
2864 k = [];
2865 b.tabLevel = b.tabLevel || 0, this.root || b.tabLevel++;
2866 var l, m = b.compress ? "" : Array(b.tabLevel + 1).join(" "),
2867 n = b.compress ? "" : Array(b.tabLevel).join(" ");
2868 for (d = 0; d < this.rules.length; d++) h = this.rules[d], h.rules || h instanceof a.Media || h instanceof a.Directive || this.root && h instanceof a.Comment ? k.push(h) : j.push(h);
2869 if (!this.root) {
2870 g = a.debugInfo(b, this, n), g && (c.add(g), c.add(n));
2871 var o, p = this.paths,
2872 q = p.length;
2873 for (l = b.compress ? "," : ",\n" + n, d = 0; q > d; d++)
2874 if (i = p[d], o = i.length)
2875 for (d > 0 && c.add(l), b.firstSelector = !0, i[0].genCSS(b, c), b.firstSelector = !1, e = 1; o > e; e++) i[e].genCSS(b, c);
2876 c.add((b.compress ? "{" : " {\n") + m)
2877 }
2878 for (d = 0; d < j.length; d++) h = j[d], d + 1 !== j.length || this.root && 0 !== k.length && !this.firstRoot || (b.lastRule = !0), h.genCSS ? h.genCSS(b, c) : h.value && c.add(h.value.toString()), b.lastRule ? b.lastRule = !1 : c.add(b.compress ? "" : "\n" + m);
2879 if (this.root || (c.add(b.compress ? "}" : "\n" + n + "}"), b.tabLevel--), l = (b.compress ? "" : "\n") + (this.root ? m : n), f = k.length)
2880 for (j.length && l && c.add(l), k[0].genCSS(b, c), d = 1; f > d; d++) l && c.add(l), k[d].genCSS(b, c);
2881 c.isEmpty() || b.compress || !this.firstRoot || c.add("\n")
2882 },
2883 toCSS: a.toCSS,
2884 markReferenced: function() {
2885 if (this.selectors)
2886 for (var a = 0; a < this.selectors.length; a++) this.selectors[a].markReferenced()
2887 },
2888 joinSelectors: function(a, b, c) {
2889 for (var d = 0; d < c.length; d++) this.joinSelector(a, b, c[d])
2890 },
2891 joinSelector: function(b, c, d) {
2892 var e, f, g, h, i, j, k, l, m, n, o, p, q, r, s;
2893 for (e = 0; e < d.elements.length; e++) j = d.elements[e], "&" === j.value && (h = !0);
2894 if (h) {
2895 for (r = [], i = [
2896 []
2897 ], e = 0; e < d.elements.length; e++)
2898 if (j = d.elements[e], "&" !== j.value) r.push(j);
2899 else {
2900 for (s = [], r.length > 0 && this.mergeElementsOnToSelectors(r, i), f = 0; f < i.length; f++)
2901 if (k = i[f], 0 === c.length) k.length > 0 && (k[0].elements = k[0].elements.slice(0), k[0].elements.push(new a.Element(j.combinator, "", j.index, j.currentFileInfo))), s.push(k);
2902 else
2903 for (g = 0; g < c.length; g++) l = c[g], m = [], n = [], p = !0, k.length > 0 ? (m = k.slice(0), q = m.pop(), o = d.createDerived(q.elements.slice(0)), p = !1) : o = d.createDerived([]), l.length > 1 && (n = n.concat(l.slice(1))), l.length > 0 && (p = !1, o.elements.push(new a.Element(j.combinator, l[0].elements[0].value, j.index, j.currentFileInfo)), o.elements = o.elements.concat(l[0].elements.slice(1))), p || m.push(o), m = m.concat(n), s.push(m);
2904 i = s, r = []
2905 }
2906 for (r.length > 0 && this.mergeElementsOnToSelectors(r, i), e = 0; e < i.length; e++) i[e].length > 0 && b.push(i[e])
2907 } else if (c.length > 0)
2908 for (e = 0; e < c.length; e++) b.push(c[e].concat(d));
2909 else b.push([d])
2910 },
2911 mergeElementsOnToSelectors: function(b, c) {
2912 var d, e;
2913 if (0 === c.length) return void c.push([new a.Selector(b)]);
2914 for (d = 0; d < c.length; d++) e = c[d], e.length > 0 ? e[e.length - 1] = e[e.length - 1].createDerived(e[e.length - 1].elements.concat(b)) : e.push(new a.Selector(b))
2915 }
2916 }
2917 }(c("../tree")),
2918 function(a) {
2919 a.Selector = function(a, b, c, d, e, f) {
2920 this.elements = a, this.extendList = b, this.condition = c, this.currentFileInfo = e || {}, this.isReferenced = f, c || (this.evaldCondition = !0)
2921 }, a.Selector.prototype = {
2922 type: "Selector",
2923 accept: function(a) {
2924 this.elements && (this.elements = a.visitArray(this.elements)), this.extendList && (this.extendList = a.visitArray(this.extendList)), this.condition && (this.condition = a.visit(this.condition))
2925 },
2926 createDerived: function(b, c, d) {
2927 d = null != d ? d : this.evaldCondition;
2928 var e = new a.Selector(b, c || this.extendList, null, this.index, this.currentFileInfo, this.isReferenced);
2929 return e.evaldCondition = d, e.mediaEmpty = this.mediaEmpty, e
2930 },
2931 match: function(a) {
2932 var b, c, d = this.elements,
2933 e = d.length;
2934 if (a.CacheElements(), b = a._elements.length, 0 === b || b > e) return 0;
2935 for (c = 0; b > c; c++)
2936 if (d[c].value !== a._elements[c]) return 0;
2937 return b
2938 },
2939 CacheElements: function() {
2940 var a, b, c, d = "";
2941 if (!this._elements) {
2942 for (a = this.elements.length, c = 0; a > c; c++)
2943 if (b = this.elements[c], d += b.combinator.value, b.value.value) {
2944 if ("string" != typeof b.value.value) {
2945 d = "";
2946 break
2947 }
2948 d += b.value.value
2949 } else d += b.value;
2950 this._elements = d.match(/[,&#\.\w-]([\w-]|(\\.))*/g), this._elements ? "&" === this._elements[0] && this._elements.shift() : this._elements = []
2951 }
2952 },
2953 isJustParentSelector: function() {
2954 return !this.mediaEmpty && 1 === this.elements.length && "&" === this.elements[0].value && (" " === this.elements[0].combinator.value || "" === this.elements[0].combinator.value)
2955 },
2956 eval: function(a) {
2957 var b = this.condition && this.condition.eval(a),
2958 c = this.elements,
2959 d = this.extendList;
2960 return c = c && c.map(function(b) {
2961 return b.eval(a)
2962 }), d = d && d.map(function(b) {
2963 return b.eval(a)
2964 }), this.createDerived(c, d, b)
2965 },
2966 genCSS: function(a, b) {
2967 var c, d;
2968 if (a && a.firstSelector || "" !== this.elements[0].combinator.value || b.add(" ", this.currentFileInfo, this.index), !this._css)
2969 for (c = 0; c < this.elements.length; c++) d = this.elements[c], d.genCSS(a, b)
2970 },
2971 toCSS: a.toCSS,
2972 markReferenced: function() {
2973 this.isReferenced = !0
2974 },
2975 getIsReferenced: function() {
2976 return !this.currentFileInfo.reference || this.isReferenced
2977 },
2978 getIsOutput: function() {
2979 return this.evaldCondition
2980 }
2981 }
2982 }(c("../tree")),
2983 function(a) {
2984 a.UnicodeDescriptor = function(a) {
2985 this.value = a
2986 }, a.UnicodeDescriptor.prototype = {
2987 type: "UnicodeDescriptor",
2988 genCSS: function(a, b) {
2989 b.add(this.value)
2990 },
2991 toCSS: a.toCSS,
2992 eval: function() {
2993 return this
2994 }
2995 }
2996 }(c("../tree")),
2997 function(a) {
2998 a.URL = function(a, b, c) {
2999 this.value = a, this.currentFileInfo = b, this.isEvald = c
3000 }, a.URL.prototype = {
3001 type: "Url",
3002 accept: function(a) {
3003 this.value = a.visit(this.value)
3004 },
3005 genCSS: function(a, b) {
3006 b.add("url("), this.value.genCSS(a, b), b.add(")")
3007 },
3008 toCSS: a.toCSS,
3009 eval: function(b) {
3010 var c, d = this.value.eval(b);
3011 if (!this.isEvald && (c = this.currentFileInfo && this.currentFileInfo.rootpath, c && "string" == typeof d.value && b.isPathRelative(d.value) && (d.quote || (c = c.replace(/[\(\)'"\s]/g, function(a) {
3012 return "\\" + a
3013 })), d.value = c + d.value), d.value = b.normalizePath(d.value), b.urlArgs && !d.value.match(/^\s*data:/))) {
3014 var e = -1 === d.value.indexOf("?") ? "?" : "&",
3015 f = e + b.urlArgs; - 1 !== d.value.indexOf("#") ? d.value = d.value.replace("#", f + "#") : d.value += f
3016 }
3017 return new a.URL(d, this.currentFileInfo, !0)
3018 }
3019 }
3020 }(c("../tree")),
3021 function(a) {
3022 a.Value = function(a) {
3023 this.value = a
3024 }, a.Value.prototype = {
3025 type: "Value",
3026 accept: function(a) {
3027 this.value && (this.value = a.visitArray(this.value))
3028 },
3029 eval: function(b) {
3030 return 1 === this.value.length ? this.value[0].eval(b) : new a.Value(this.value.map(function(a) {
3031 return a.eval(b)
3032 }))
3033 },
3034 genCSS: function(a, b) {
3035 var c;
3036 for (c = 0; c < this.value.length; c++) this.value[c].genCSS(a, b), c + 1 < this.value.length && b.add(a && a.compress ? "," : ", ")
3037 },
3038 toCSS: a.toCSS
3039 }
3040 }(c("../tree")),
3041 function(a) {
3042 a.Variable = function(a, b, c) {
3043 this.name = a, this.index = b, this.currentFileInfo = c || {}
3044 }, a.Variable.prototype = {
3045 type: "Variable",
3046 eval: function(b) {
3047 var c, d = this.name;
3048 if (0 === d.indexOf("@@") && (d = "@" + new a.Variable(d.slice(1)).eval(b).value), this.evaluating) throw {
3049 type: "Name",
3050 message: "Recursive variable definition for " + d,
3051 filename: this.currentFileInfo.file,
3052 index: this.index
3053 };
3054 if (this.evaluating = !0, c = a.find(b.frames, function(a) {
3055 var c = a.variable(d);
3056 return c ? c.value.eval(b) : void 0
3057 })) return this.evaluating = !1, c;
3058 throw {
3059 type: "Name",
3060 message: "variable " + d + " is undefined",
3061 filename: this.currentFileInfo.filename,
3062 index: this.index
3063 }
3064 }
3065 }
3066 }(c("../tree")),
3067 function(a) {
3068 var b = ["paths", "optimization", "files", "contents", "contentsIgnoredChars", "relativeUrls", "rootpath", "strictImports", "insecure", "dumpLineNumbers", "compress", "processImports", "syncImport", "javascriptEnabled", "mime", "useFileCache", "currentFileInfo"];
3069 a.parseEnv = function(a) {
3070 if (d(a, this, b), this.contents || (this.contents = {}), this.contentsIgnoredChars || (this.contentsIgnoredChars = {}), this.files || (this.files = {}), !this.currentFileInfo) {
3071 var c = a && a.filename || "input",
3072 e = c.replace(/[^\/\\]*$/, "");
3073 a && (a.filename = null), this.currentFileInfo = {
3074 filename: c,
3075 relativeUrls: this.relativeUrls,
3076 rootpath: a && a.rootpath || "",
3077 currentDirectory: e,
3078 entryPath: e,
3079 rootFilename: c
3080 }
3081 }
3082 };
3083 var c = ["silent", "verbose", "compress", "yuicompress", "ieCompat", "strictMath", "strictUnits", "cleancss", "sourceMap", "importMultiple", "urlArgs"];
3084 a.evalEnv = function(a, b) {
3085 d(a, this, c), this.frames = b || []
3086 }, a.evalEnv.prototype.inParenthesis = function() {
3087 this.parensStack || (this.parensStack = []), this.parensStack.push(!0)
3088 }, a.evalEnv.prototype.outOfParenthesis = function() {
3089 this.parensStack.pop()
3090 }, a.evalEnv.prototype.isMathOn = function() {
3091 return this.strictMath ? this.parensStack && this.parensStack.length : !0
3092 }, a.evalEnv.prototype.isPathRelative = function(a) {
3093 return !/^(?:[a-z-]+:|\/)/.test(a)
3094 }, a.evalEnv.prototype.normalizePath = function(a) {
3095 var b, c = a.split("/").reverse();
3096 for (a = []; 0 !== c.length;) switch (b = c.pop()) {
3097 case ".":
3098 break;
3099 case "..":
3100 0 === a.length || ".." === a[a.length - 1] ? a.push(b) : a.pop();
3101 break;
3102 default:
3103 a.push(b)
3104 }
3105 return a.join("/")
3106 };
3107 var d = function(a, b, c) {
3108 if (a)
3109 for (var d = 0; d < c.length; d++) a.hasOwnProperty(c[d]) && (b[c[d]] = a[c[d]])
3110 }
3111 }(c("./tree")),
3112 function(a) {
3113 function b(a) {
3114 return a
3115 }
3116
3117 function c(a, b) {
3118 var d, e;
3119 for (d in a)
3120 if (a.hasOwnProperty(d)) switch (e = a[d], typeof e) {
3121 case "function":
3122 e.prototype && e.prototype.type && (e.prototype.typeIndex = b++);
3123 break;
3124 case "object":
3125 b = c(e, b)
3126 }
3127 return b
3128 }
3129 var d = {
3130 visitDeeper: !0
3131 },
3132 e = !1;
3133 a.visitor = function(b) {
3134 this._implementation = b, this._visitFnCache = [], e || (c(a, 1), e = !0)
3135 }, a.visitor.prototype = {
3136 visit: function(a) {
3137 if (!a) return a;
3138 var c = a.typeIndex;
3139 if (!c) return a;
3140 var e, f = this._visitFnCache,
3141 g = this._implementation,
3142 h = c << 1,
3143 i = 1 | h,
3144 j = f[h],
3145 k = f[i],
3146 l = d;
3147 if (l.visitDeeper = !0, j || (e = "visit" + a.type, j = g[e] || b, k = g[e + "Out"] || b, f[h] = j, f[i] = k), j !== b) {
3148 var m = j.call(g, a, l);
3149 g.isReplacing && (a = m)
3150 }
3151 return l.visitDeeper && a && a.accept && a.accept(this), k != b && k.call(g, a), a
3152 },
3153 visitArray: function(a, b) {
3154 if (!a) return a;
3155 var c, d = a.length;
3156 if (b || !this._implementation.isReplacing) {
3157 for (c = 0; d > c; c++) this.visit(a[c]);
3158 return a
3159 }
3160 var e = [];
3161 for (c = 0; d > c; c++) {
3162 var f = this.visit(a[c]);
3163 f.splice ? f.length && this.flatten(f, e) : e.push(f)
3164 }
3165 return e
3166 },
3167 flatten: function(a, b) {
3168 b || (b = []);
3169 var c, d, e, f, g, h;
3170 for (d = 0, c = a.length; c > d; d++)
3171 if (e = a[d], e.splice)
3172 for (g = 0, f = e.length; f > g; g++) h = e[g], h.splice ? h.length && this.flatten(h, b) : b.push(h);
3173 else b.push(e);
3174 return b
3175 }
3176 }
3177 }(c("./tree")),
3178 function(a) {
3179 a.importVisitor = function(b, c, d, e, f) {
3180 if (this._visitor = new a.visitor(this), this._importer = b, this._finish = c, this.env = d || new a.evalEnv, this.importCount = 0, this.onceFileDetectionMap = e || {}, this.recursionDetector = {}, f)
3181 for (var g in f) f.hasOwnProperty(g) && (this.recursionDetector[g] = !0)
3182 }, a.importVisitor.prototype = {
3183 isReplacing: !0,
3184 run: function(a) {
3185 var b;
3186 try {
3187 this._visitor.visit(a)
3188 } catch (c) {
3189 b = c
3190 }
3191 this.isFinished = !0, 0 === this.importCount && this._finish(b)
3192 },
3193 visitImport: function(b, c) {
3194 var d, e = this,
3195 f = b.options.inline;
3196 if (!b.css || f) {
3197 try {
3198 d = b.evalForImport(this.env)
3199 } catch (g) {
3200 g.filename || (g.index = b.index, g.filename = b.currentFileInfo.filename), b.css = !0, b.error = g
3201 }
3202 if (d && (!d.css || f)) {
3203 b = d, this.importCount++;
3204 var h = new a.evalEnv(this.env, this.env.frames.slice(0));
3205 b.options.multiple && (h.importMultiple = !0), this._importer.push(b.getPath(), b.currentFileInfo, b.options, function(c, d, g, i) {
3206 c && !c.filename && (c.index = b.index, c.filename = b.currentFileInfo.filename), h.importMultiple || (b.skip = g ? !0 : function() {
3207 return i in e.onceFileDetectionMap ? !0 : (e.onceFileDetectionMap[i] = !0, !1)
3208 });
3209 var j = function(a) {
3210 e.importCount--, 0 === e.importCount && e.isFinished && e._finish(a)
3211 };
3212 if (d) {
3213 b.root = d, b.importedFilename = i;
3214 var k = g || i in e.recursionDetector;
3215 if (!f && (h.importMultiple || !k)) return e.recursionDetector[i] = !0, void new a.importVisitor(e._importer, j, h, e.onceFileDetectionMap, e.recursionDetector).run(d)
3216 }
3217 j()
3218 })
3219 }
3220 }
3221 return c.visitDeeper = !1, b
3222 },
3223 visitRule: function(a, b) {
3224 return b.visitDeeper = !1, a
3225 },
3226 visitDirective: function(a) {
3227 return this.env.frames.unshift(a), a
3228 },
3229 visitDirectiveOut: function() {
3230 this.env.frames.shift()
3231 },
3232 visitMixinDefinition: function(a) {
3233 return this.env.frames.unshift(a), a
3234 },
3235 visitMixinDefinitionOut: function() {
3236 this.env.frames.shift()
3237 },
3238 visitRuleset: function(a) {
3239 return this.env.frames.unshift(a), a
3240 },
3241 visitRulesetOut: function() {
3242 this.env.frames.shift()
3243 },
3244 visitMedia: function(a) {
3245 return this.env.frames.unshift(a.ruleset), a
3246 },
3247 visitMediaOut: function() {
3248 this.env.frames.shift()
3249 }
3250 }
3251 }(c("./tree")),
3252 function(a) {
3253 a.joinSelectorVisitor = function() {
3254 this.contexts = [
3255 []
3256 ], this._visitor = new a.visitor(this)
3257 }, a.joinSelectorVisitor.prototype = {
3258 run: function(a) {
3259 return this._visitor.visit(a)
3260 },
3261 visitRule: function(a, b) {
3262 b.visitDeeper = !1
3263 },
3264 visitMixinDefinition: function(a, b) {
3265 b.visitDeeper = !1
3266 },
3267 visitRuleset: function(a) {
3268 var b, c = this.contexts[this.contexts.length - 1],
3269 d = [];
3270 this.contexts.push(d), a.root || (b = a.selectors, b && (b = b.filter(function(a) {
3271 return a.getIsOutput()
3272 }), a.selectors = b.length ? b : b = null, b && a.joinSelectors(d, c, b)), b || (a.rules = null), a.paths = d)
3273 },
3274 visitRulesetOut: function() {
3275 this.contexts.length = this.contexts.length - 1
3276 },
3277 visitMedia: function(a) {
3278 var b = this.contexts[this.contexts.length - 1];
3279 a.rules[0].root = 0 === b.length || b[0].multiMedia
3280 }
3281 }
3282 }(c("./tree")),
3283 function(a) {
3284 a.toCSSVisitor = function(b) {
3285 this._visitor = new a.visitor(this), this._env = b
3286 }, a.toCSSVisitor.prototype = {
3287 isReplacing: !0,
3288 run: function(a) {
3289 return this._visitor.visit(a)
3290 },
3291 visitRule: function(a) {
3292 return a.variable ? [] : a
3293 },
3294 visitMixinDefinition: function(a) {
3295 return a.frames = [], []
3296 },
3297 visitExtend: function() {
3298 return []
3299 },
3300 visitComment: function(a) {
3301 return a.isSilent(this._env) ? [] : a
3302 },
3303 visitMedia: function(a, b) {
3304 return a.accept(this._visitor), b.visitDeeper = !1, a.rules.length ? a : []
3305 },
3306 visitDirective: function(b) {
3307 if (b.currentFileInfo.reference && !b.isReferenced) return [];
3308 if ("@charset" === b.name) {
3309 if (this.charset) {
3310 if (b.debugInfo) {
3311 var c = new a.Comment("/* " + b.toCSS(this._env).replace(/\n/g, "") + " */\n");
3312 return c.debugInfo = b.debugInfo, this._visitor.visit(c)
3313 }
3314 return []
3315 }
3316 this.charset = !0
3317 }
3318 return b
3319 },
3320 checkPropertiesInRoot: function(b) {
3321 for (var c, d = 0; d < b.length; d++)
3322 if (c = b[d], c instanceof a.Rule && !c.variable) throw {
3323 message: "properties must be inside selector blocks, they cannot be in the root.",
3324 index: c.index,
3325 filename: c.currentFileInfo ? c.currentFileInfo.filename : null
3326 }
3327 },
3328 visitRuleset: function(b, c) {
3329 var d, e = [];
3330 if (b.firstRoot && this.checkPropertiesInRoot(b.rules), b.root) b.accept(this._visitor), c.visitDeeper = !1, (b.firstRoot || b.rules && b.rules.length > 0) && e.splice(0, 0, b);
3331 else {
3332 b.paths && (b.paths = b.paths.filter(function(b) {
3333 var c;
3334 for (" " === b[0].elements[0].combinator.value && (b[0].elements[0].combinator = new a.Combinator("")), c = 0; c < b.length; c++)
3335 if (b[c].getIsReferenced() && b[c].getIsOutput()) return !0;
3336 return !1
3337 }));
3338 for (var f = b.rules, g = f ? f.length : 0, h = 0; g > h;) d = f[h], d && d.rules ? (e.push(this._visitor.visit(d)), f.splice(h, 1), g--) : h++;
3339 g > 0 ? b.accept(this._visitor) : b.rules = null, c.visitDeeper = !1, f = b.rules, f && (this._mergeRules(f), f = b.rules), f && (this._removeDuplicateRules(f), f = b.rules), f && f.length > 0 && b.paths.length > 0 && e.splice(0, 0, b)
3340 }
3341 return 1 === e.length ? e[0] : e
3342 },
3343 _removeDuplicateRules: function(b) {
3344 if (b) {
3345 var c, d, e, f = {};
3346 for (e = b.length - 1; e >= 0; e--)
3347 if (d = b[e], d instanceof a.Rule)
3348 if (f[d.name]) {
3349 c = f[d.name], c instanceof a.Rule && (c = f[d.name] = [f[d.name].toCSS(this._env)]);
3350 var g = d.toCSS(this._env); - 1 !== c.indexOf(g) ? b.splice(e, 1) : c.push(g)
3351 } else f[d.name] = d
3352 }
3353 },
3354 _mergeRules: function(b) {
3355 if (b) {
3356 for (var c, d, e, f = {}, g = 0; g < b.length; g++) d = b[g], d instanceof a.Rule && d.merge && (e = [d.name, d.important ? "!" : ""].join(","), f[e] ? b.splice(g--, 1) : f[e] = [], f[e].push(d));
3357 Object.keys(f).map(function(b) {
3358 function e(b) {
3359 return new a.Expression(b.map(function(a) {
3360 return a.value
3361 }))
3362 }
3363
3364 function g(b) {
3365 return new a.Value(b.map(function(a) {
3366 return a
3367 }))
3368 }
3369 if (c = f[b], c.length > 1) {
3370 d = c[0];
3371 var h = [],
3372 i = [];
3373 c.map(function(a) {
3374 "+" === a.merge && (i.length > 0 && h.push(e(i)), i = []), i.push(a)
3375 }), h.push(e(i)), d.value = g(h)
3376 }
3377 })
3378 }
3379 }
3380 }
3381 }(c("./tree")),
3382 function(a) {
3383 a.extendFinderVisitor = function() {
3384 this._visitor = new a.visitor(this), this.contexts = [], this.allExtendsStack = [
3385 []
3386 ]
3387 }, a.extendFinderVisitor.prototype = {
3388 run: function(a) {
3389 return a = this._visitor.visit(a), a.allExtends = this.allExtendsStack[0], a
3390 },
3391 visitRule: function(a, b) {
3392 b.visitDeeper = !1
3393 },
3394 visitMixinDefinition: function(a, b) {
3395 b.visitDeeper = !1
3396 },
3397 visitRuleset: function(b) {
3398 if (!b.root) {
3399 var c, d, e, f, g = [],
3400 h = b.rules,
3401 i = h ? h.length : 0;
3402 for (c = 0; i > c; c++) b.rules[c] instanceof a.Extend && (g.push(h[c]), b.extendOnEveryPath = !0);
3403 var j = b.paths;
3404 for (c = 0; c < j.length; c++) {
3405 var k = j[c],
3406 l = k[k.length - 1],
3407 m = l.extendList;
3408 for (f = m ? m.slice(0).concat(g) : g, f && (f = f.map(function(a) {
3409 return a.clone()
3410 })), d = 0; d < f.length; d++) this.foundExtends = !0, e = f[d], e.findSelfSelectors(k), e.ruleset = b, 0 === d && (e.firstExtendOnThisSelectorPath = !0), this.allExtendsStack[this.allExtendsStack.length - 1].push(e)
3411 }
3412 this.contexts.push(b.selectors)
3413 }
3414 },
3415 visitRulesetOut: function(a) {
3416 a.root || (this.contexts.length = this.contexts.length - 1)
3417 },
3418 visitMedia: function(a) {
3419 a.allExtends = [], this.allExtendsStack.push(a.allExtends)
3420 },
3421 visitMediaOut: function() {
3422 this.allExtendsStack.length = this.allExtendsStack.length - 1
3423 },
3424 visitDirective: function(a) {
3425 a.allExtends = [], this.allExtendsStack.push(a.allExtends)
3426 },
3427 visitDirectiveOut: function() {
3428 this.allExtendsStack.length = this.allExtendsStack.length - 1
3429 }
3430 }, a.processExtendsVisitor = function() {
3431 this._visitor = new a.visitor(this)
3432 }, a.processExtendsVisitor.prototype = {
3433 run: function(b) {
3434 var c = new a.extendFinderVisitor;
3435 return c.run(b), c.foundExtends ? (b.allExtends = b.allExtends.concat(this.doExtendChaining(b.allExtends, b.allExtends)), this.allExtendsStack = [b.allExtends], this._visitor.visit(b)) : b
3436 },
3437 doExtendChaining: function(b, c, d) {
3438 var e, f, g, h, i, j, k, l, m = [],
3439 n = this;
3440 for (d = d || 0, e = 0; e < b.length; e++)
3441 for (f = 0; f < c.length; f++) j = b[e], k = c[f], j.parent_ids.indexOf(k.object_id) >= 0 || (i = [k.selfSelectors[0]], g = n.findMatch(j, i), g.length && j.selfSelectors.forEach(function(b) {
3442 h = n.extendSelector(g, i, b), l = new a.Extend(k.selector, k.option, 0), l.selfSelectors = h, h[h.length - 1].extendList = [l], m.push(l), l.ruleset = k.ruleset, l.parent_ids = l.parent_ids.concat(k.parent_ids, j.parent_ids), k.firstExtendOnThisSelectorPath && (l.firstExtendOnThisSelectorPath = !0, k.ruleset.paths.push(h))
3443 }));
3444 if (m.length) {
3445 if (this.extendChainCount++, d > 100) {
3446 var o = "{unable to calculate}",
3447 p = "{unable to calculate}";
3448 try {
3449 o = m[0].selfSelectors[0].toCSS(), p = m[0].selector.toCSS()
3450 } catch (q) {}
3451 throw {
3452 message: "extend circular reference detected. One of the circular extends is currently:" + o + ":extend(" + p + ")"
3453 }
3454 }
3455 return m.concat(n.doExtendChaining(m, c, d + 1))
3456 }
3457 return m
3458 },
3459 visitRule: function(a, b) {
3460 b.visitDeeper = !1
3461 },
3462 visitMixinDefinition: function(a, b) {
3463 b.visitDeeper = !1
3464 },
3465 visitSelector: function(a, b) {
3466 b.visitDeeper = !1
3467 },
3468 visitRuleset: function(a) {
3469 if (!a.root) {
3470 var b, c, d, e, f = this.allExtendsStack[this.allExtendsStack.length - 1],
3471 g = [],
3472 h = this;
3473 for (d = 0; d < f.length; d++)
3474 for (c = 0; c < a.paths.length; c++)
3475 if (e = a.paths[c], !a.extendOnEveryPath) {
3476 var i = e[e.length - 1].extendList;
3477 i && i.length || (b = this.findMatch(f[d], e), b.length && f[d].selfSelectors.forEach(function(a) {
3478 g.push(h.extendSelector(b, e, a))
3479 }))
3480 }
3481 a.paths = a.paths.concat(g)
3482 }
3483 },
3484 findMatch: function(a, b) {
3485 var c, d, e, f, g, h, i, j = this,
3486 k = a.selector.elements,
3487 l = [],
3488 m = [];
3489 for (c = 0; c < b.length; c++)
3490 for (d = b[c], e = 0; e < d.elements.length; e++)
3491 for (f = d.elements[e], (a.allowBefore || 0 === c && 0 === e) && l.push({
3492 pathIndex: c,
3493 index: e,
3494 matched: 0,
3495 initialCombinator: f.combinator
3496 }), h = 0; h < l.length; h++) i = l[h], g = f.combinator.value, "" === g && 0 === e && (g = " "), !j.isElementValuesEqual(k[i.matched].value, f.value) || i.matched > 0 && k[i.matched].combinator.value !== g ? i = null : i.matched++, i && (i.finished = i.matched === k.length, i.finished && !a.allowAfter && (e + 1 < d.elements.length || c + 1 < b.length) && (i = null)), i ? i.finished && (i.length = k.length, i.endPathIndex = c, i.endPathElementIndex = e + 1, l.length = 0, m.push(i)) : (l.splice(h, 1), h--);
3497 return m
3498 },
3499 isElementValuesEqual: function(b, c) {
3500 if ("string" == typeof b || "string" == typeof c) return b === c;
3501 if (b instanceof a.Attribute) return b.op !== c.op || b.key !== c.key ? !1 : b.value && c.value ? (b = b.value.value || b.value, c = c.value.value || c.value, b === c) : b.value || c.value ? !1 : !0;
3502 if (b = b.value, c = c.value, b instanceof a.Selector) {
3503 if (!(c instanceof a.Selector) || b.elements.length !== c.elements.length) return !1;
3504 for (var d = 0; d < b.elements.length; d++) {
3505 if (b.elements[d].combinator.value !== c.elements[d].combinator.value && (0 !== d || (b.elements[d].combinator.value || " ") !== (c.elements[d].combinator.value || " "))) return !1;
3506 if (!this.isElementValuesEqual(b.elements[d].value, c.elements[d].value)) return !1
3507 }
3508 return !0
3509 }
3510 return !1
3511 },
3512 extendSelector: function(b, c, d) {
3513 var e, f, g, h, i, j = 0,
3514 k = 0,
3515 l = [];
3516 for (e = 0; e < b.length; e++) h = b[e], f = c[h.pathIndex], g = new a.Element(h.initialCombinator, d.elements[0].value, d.elements[0].index, d.elements[0].currentFileInfo), h.pathIndex > j && k > 0 && (l[l.length - 1].elements = l[l.length - 1].elements.concat(c[j].elements.slice(k)), k = 0, j++), i = f.elements.slice(k, h.index).concat([g]).concat(d.elements.slice(1)), j === h.pathIndex && e > 0 ? l[l.length - 1].elements = l[l.length - 1].elements.concat(i) : (l = l.concat(c.slice(j, h.pathIndex)), l.push(new a.Selector(i))), j = h.endPathIndex, k = h.endPathElementIndex, k >= c[j].elements.length && (k = 0, j++);
3517 return j < c.length && k > 0 && (l[l.length - 1].elements = l[l.length - 1].elements.concat(c[j].elements.slice(k)), j++), l = l.concat(c.slice(j, c.length))
3518 },
3519 visitRulesetOut: function() {},
3520 visitMedia: function(a) {
3521 var b = a.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length - 1]);
3522 b = b.concat(this.doExtendChaining(b, a.allExtends)), this.allExtendsStack.push(b)
3523 },
3524 visitMediaOut: function() {
3525 this.allExtendsStack.length = this.allExtendsStack.length - 1
3526 },
3527 visitDirective: function(a) {
3528 var b = a.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length - 1]);
3529 b = b.concat(this.doExtendChaining(b, a.allExtends)), this.allExtendsStack.push(b)
3530 },
3531 visitDirectiveOut: function() {
3532 this.allExtendsStack.length = this.allExtendsStack.length - 1
3533 }
3534 }
3535 }(c("./tree")),
3536 function(a) {
3537 a.sourceMapOutput = function(a) {
3538 this._css = [], this._rootNode = a.rootNode, this._writeSourceMap = a.writeSourceMap, this._contentsMap = a.contentsMap, this._contentsIgnoredCharsMap = a.contentsIgnoredCharsMap, this._sourceMapFilename = a.sourceMapFilename, this._outputFilename = a.outputFilename, this._sourceMapURL = a.sourceMapURL, a.sourceMapBasepath && (this._sourceMapBasepath = a.sourceMapBasepath.replace(/\\/g, "/")), this._sourceMapRootpath = a.sourceMapRootpath, this._outputSourceFiles = a.outputSourceFiles, this._sourceMapGeneratorConstructor = a.sourceMapGenerator || c("source-map").SourceMapGenerator, this._sourceMapRootpath && "/" !== this._sourceMapRootpath.charAt(this._sourceMapRootpath.length - 1) && (this._sourceMapRootpath += "/"), this._lineNumber = 0, this._column = 0
3539 }, a.sourceMapOutput.prototype.normalizeFilename = function(a) {
3540 return a = a.replace(/\\/g, "/"), this._sourceMapBasepath && 0 === a.indexOf(this._sourceMapBasepath) && (a = a.substring(this._sourceMapBasepath.length), ("\\" === a.charAt(0) || "/" === a.charAt(0)) && (a = a.substring(1))), (this._sourceMapRootpath || "") + a
3541 }, a.sourceMapOutput.prototype.add = function(a, b, c, d) {
3542 if (a) {
3543 var e, f, g, h, i;
3544 if (b) {
3545 var j = this._contentsMap[b.filename];
3546 this._contentsIgnoredCharsMap[b.filename] && (c -= this._contentsIgnoredCharsMap[b.filename], 0 > c && (c = 0), j = j.slice(this._contentsIgnoredCharsMap[b.filename])), j = j.substring(0, c), f = j.split("\n"), h = f[f.length - 1]
3547 }
3548 if (e = a.split("\n"), g = e[e.length - 1], b)
3549 if (d)
3550 for (i = 0; i < e.length; i++) this._sourceMapGenerator.addMapping({
3551 generated: {
3552 line: this._lineNumber + i + 1,
3553 column: 0 === i ? this._column : 0
3554 },
3555 original: {
3556 line: f.length + i,
3557 column: 0 === i ? h.length : 0
3558 },
3559 source: this.normalizeFilename(b.filename)
3560 });
3561 else this._sourceMapGenerator.addMapping({
3562 generated: {
3563 line: this._lineNumber + 1,
3564 column: this._column
3565 },
3566 original: {
3567 line: f.length,
3568 column: h.length
3569 },
3570 source: this.normalizeFilename(b.filename)
3571 });
3572 1 === e.length ? this._column += g.length : (this._lineNumber += e.length - 1, this._column = g.length), this._css.push(a)
3573 }
3574 }, a.sourceMapOutput.prototype.isEmpty = function() {
3575 return 0 === this._css.length
3576 }, a.sourceMapOutput.prototype.toCSS = function(a) {
3577 if (this._sourceMapGenerator = new this._sourceMapGeneratorConstructor({
3578 file: this._outputFilename,
3579 sourceRoot: null
3580 }), this._outputSourceFiles)
3581 for (var b in this._contentsMap)
3582 if (this._contentsMap.hasOwnProperty(b)) {
3583 var c = this._contentsMap[b];
3584 this._contentsIgnoredCharsMap[b] && (c = c.slice(this._contentsIgnoredCharsMap[b])), this._sourceMapGenerator.setSourceContent(this.normalizeFilename(b), c)
3585 }
3586 if (this._rootNode.genCSS(a, this), this._css.length > 0) {
3587 var d, e = JSON.stringify(this._sourceMapGenerator.toJSON());
3588 this._sourceMapURL ? d = this._sourceMapURL : this._sourceMapFilename && (d = this.normalizeFilename(this._sourceMapFilename)), this._writeSourceMap ? this._writeSourceMap(e) : d = "data:application/json," + encodeURIComponent(e), d && this._css.push("/*# sourceMappingURL=" + d + " */")
3589 }
3590 return this._css.join("")
3591 }
3592 }(c("./tree"));
3593 var y = /^(file|chrome(-extension)?|resource|qrc|app):/.test(location.protocol);
3594 w.env = w.env || ("127.0.0.1" == location.hostname || "0.0.0.0" == location.hostname || "localhost" == location.hostname || location.port && location.port.length > 0 || y ? "development" : "production");
3595 var z = {
3596 debug: 3,
3597 info: 2,
3598 errors: 1,
3599 none: 0
3600 };
3601 if (w.logLevel = "undefined" != typeof w.logLevel ? w.logLevel : "development" === w.env ? z.debug : z.errors, w.async = w.async || !1, w.fileAsync = w.fileAsync || !1, w.poll = w.poll || (y ? 1e3 : 1500), w.functions)
3602 for (var A in w.functions) w.functions.hasOwnProperty(A) && (w.tree.functions[A] = w.functions[A]);
3603 var B = /!dumpLineNumbers:(comments|mediaquery|all)/.exec(location.hash);
3604 B && (w.dumpLineNumbers = B[1]);
3605 var C = /^text\/(x-)?less$/,
3606 D = null,
3607 E = {};
3608 if (w.watch = function() {
3609 return w.watchMode || (w.env = "development", v()), this.watchMode = !0, !0
3610 }, w.unwatch = function() {
3611 return clearInterval(w.watchTimer), this.watchMode = !1, !1
3612 }, /!watch/.test(location.hash) && w.watch(), "development" != w.env) try {
3613 D = "undefined" == typeof a.localStorage ? null : a.localStorage
3614 } catch (F) {}
3615 var G = document.getElementsByTagName("link");
3616 w.sheets = [];
3617 for (var H = 0; H < G.length; H++)("stylesheet/less" === G[H].rel || G[H].rel.match(/stylesheet/) && G[H].type.match(C)) && w.sheets.push(G[H]);
3618 w.modifyVars = function(a) {
3619 w.refresh(!1, a)
3620 }, w.refresh = function(a, b) {
3621 var c, e;
3622 c = e = new Date, u(function(a, b, f, i, k) {
3623 if (a) return j(a, i.href);
3624 if (k.local) d("loading " + i.href + " from cache.", z.info);
3625 else {
3626 d("parsed " + i.href + " successfully.", z.debug);
3627 var l = b.toCSS(w);
3628 l = h(l), g(l, i, k.lastModified)
3629 }
3630 d("css for " + i.href + " generated in " + (new Date - e) + "ms", z.info), 0 === k.remaining && d("less has finished. css generated in " + (new Date - c) + "ms", z.info), e = new Date
3631 }, a, b), n(b)
3632 }, w.refreshStyles = n, w.Parser.fileLoader = s, w.refresh("development" === w.env), "function" == typeof define && define.amd && define(function() {
3633 return w
3634 })
3635}(window); \ No newline at end of file
diff --git a/uucky.me/Uucky的小站.htm b/Back/uucky.me/Uucky的小站.htm
index 8bc3d88..8bc3d88 100644
--- a/uucky.me/Uucky的小站.htm
+++ b/Back/uucky.me/Uucky的小站.htm
diff --git a/uucky.me/Uucky的小站_files/capture.css b/Back/uucky.me/Uucky的小站_files/capture.css
index 6c3ce60..6c3ce60 100644
--- a/uucky.me/Uucky的小站_files/capture.css
+++ b/Back/uucky.me/Uucky的小站_files/capture.css
diff --git a/Back/uucky.me/Uucky的小站_files/cover.jpg b/Back/uucky.me/Uucky的小站_files/cover.jpg
new file mode 100644
index 0000000..458945c
--- /dev/null
+++ b/Back/uucky.me/Uucky的小站_files/cover.jpg
Binary files differ
diff --git a/uucky.me/Uucky的小站_files/css.css b/Back/uucky.me/Uucky的小站_files/css.css
index 9cea348..9cea348 100644
--- a/uucky.me/Uucky的小站_files/css.css
+++ b/Back/uucky.me/Uucky的小站_files/css.css
diff --git a/uucky.me/Uucky的小站_files/demo.css b/Back/uucky.me/Uucky的小站_files/demo.css
index f60fbb3..f60fbb3 100644
--- a/uucky.me/Uucky的小站_files/demo.css
+++ b/Back/uucky.me/Uucky的小站_files/demo.css
diff --git a/Back/uucky.me/Uucky的小站_files/egg_shell.jpg b/Back/uucky.me/Uucky的小站_files/egg_shell.jpg
new file mode 100644
index 0000000..a08c04e
--- /dev/null
+++ b/Back/uucky.me/Uucky的小站_files/egg_shell.jpg
Binary files differ
diff --git a/Back/uucky.me/Uucky的小站_files/fabric.png b/Back/uucky.me/Uucky的小站_files/fabric.png
new file mode 100644
index 0000000..07178c2
--- /dev/null
+++ b/Back/uucky.me/Uucky的小站_files/fabric.png
Binary files differ
diff --git a/uucky.me/Uucky的小站_files/gk5FxslNkTTHtojXrkp-xF1YPouZEKgzpqZW9wN-3Ek.woff b/Back/uucky.me/Uucky的小站_files/gk5FxslNkTTHtojXrkp-xF1YPouZEKgzpqZW9wN-3Ek.woff
index aedbd93..aedbd93 100644
--- a/uucky.me/Uucky的小站_files/gk5FxslNkTTHtojXrkp-xF1YPouZEKgzpqZW9wN-3Ek.woff
+++ b/Back/uucky.me/Uucky的小站_files/gk5FxslNkTTHtojXrkp-xF1YPouZEKgzpqZW9wN-3Ek.woff
Binary files differ
diff --git a/uucky.me/Uucky的小站_files/gk5FxslNkTTHtojXrkp-xONSK5BxN3NFS4EJkViHIqo.woff b/Back/uucky.me/Uucky的小站_files/gk5FxslNkTTHtojXrkp-xONSK5BxN3NFS4EJkViHIqo.woff
index e52b962..e52b962 100644
--- a/uucky.me/Uucky的小站_files/gk5FxslNkTTHtojXrkp-xONSK5BxN3NFS4EJkViHIqo.woff
+++ b/Back/uucky.me/Uucky的小站_files/gk5FxslNkTTHtojXrkp-xONSK5BxN3NFS4EJkViHIqo.woff
Binary files differ
diff --git a/uucky.me/Uucky的小站_files/icons.woff b/Back/uucky.me/Uucky的小站_files/icons.woff
index d7c99b9..d7c99b9 100644
--- a/uucky.me/Uucky的小站_files/icons.woff
+++ b/Back/uucky.me/Uucky的小站_files/icons.woff
Binary files differ
diff --git a/uucky.me/Uucky的小站_files/jquery.max.js b/Back/uucky.me/Uucky的小站_files/jquery.max.js
index 4f6078f..4f6078f 100644
--- a/uucky.me/Uucky的小站_files/jquery.max.js
+++ b/Back/uucky.me/Uucky的小站_files/jquery.max.js
diff --git a/uucky.me/Uucky的小站_files/jquery.min.js b/Back/uucky.me/Uucky的小站_files/jquery.min.js
index 3883779..3883779 100644
--- a/uucky.me/Uucky的小站_files/jquery.min.js
+++ b/Back/uucky.me/Uucky的小站_files/jquery.min.js
diff --git a/uucky.me/Uucky的小站_files/jquery.swatchbook.js b/Back/uucky.me/Uucky的小站_files/jquery.swatchbook.js
index 294b3f4..294b3f4 100644
--- a/uucky.me/Uucky的小站_files/jquery.swatchbook.js
+++ b/Back/uucky.me/Uucky的小站_files/jquery.swatchbook.js
diff --git a/uucky.me/Uucky的小站_files/modernizr.custom.79639.js b/Back/uucky.me/Uucky的小站_files/modernizr.custom.79639.js
index af98011..af98011 100644
--- a/uucky.me/Uucky的小站_files/modernizr.custom.79639.js
+++ b/Back/uucky.me/Uucky的小站_files/modernizr.custom.79639.js
diff --git a/uucky.me/Uucky的小站_files/stats b/Back/uucky.me/Uucky的小站_files/stats
index 1e0eb8b..1e0eb8b 100644
--- a/uucky.me/Uucky的小站_files/stats
+++ b/Back/uucky.me/Uucky的小站_files/stats
diff --git a/uucky.me/Uucky的小站_files/style.css b/Back/uucky.me/Uucky的小站_files/style.css
index 0e40cb1..0e40cb1 100644
--- a/uucky.me/Uucky的小站_files/style.css
+++ b/Back/uucky.me/Uucky的小站_files/style.css
diff --git a/Train/alphabet.js b/Train/alphabet.js
deleted file mode 100644
index d5bcd4d..0000000
--- a/Train/alphabet.js
+++ /dev/null
@@ -1 +0,0 @@
1document.alphabet={A79:{W:75,P:[[64,89,9,-102],[57,103,9,-102],[5,89,9,-79],[16,104,8,-35],[51,122,8,-35],[23,118,8,-35],[31,133,8,50],[46,136,8,50],[34,153,8,69],[28,168,7,112],[21,183,7,112]]},A78:{W:85,P:[[10,148,8,-103],[21,137,8,-92],[33,125,7,-79],[50,124,7,-35],[58,135,7,-35],[68,148,7,-35],[40,111,7,51],[33,103,7,51],[21,86,7,51],[56,106,7,51],[67,92,7,112]]},A77:{W:98,P:[[24,148,10,-102],[67,151,10,-102],[34,133,9,-36],[61,134,9,-36],[76,132,8,-36],[16,130,8,-36],[14,112,7,50],[40,118,7,50],[58,117,7,50],[82,117,7,83],[86,100,7,83],[51,101,7,83],[11,95,7,83]]},A76:{W:70,P:[[12,88,9,-84],[32,138,5,-84],[36,148,9,-84],[44,133,8,-84],[60,84,6,119],[57,96,6,102],[53,107,6,50],[50,120,7,-35],[26,115,7,51],[29,127,6,69],[20,101,8,11]]},A75:{W:75,P:[[58,148,9,-103],[60,128,8,-84],[38,150,8,-35],[21,147,7,-35],[61,109,7,-35],[17,128,7,42],[13,110,7,80],[62,92,7,80],[14,90,7,80]]},A74:{W:68,P:[[33,149,9,-103],[35,130,9,-79],[34,108,9,-36],[33,90,8,5],[48,89,8,50],[14,89,8,56],[34,68,8,112]]},A73:{W:70,P:[[10,143,8,-103],[23,150,8,-92],[44,149,8,-79],[57,135,8,-38],[44,122,8,-35],[25,114,8,39],[17,98,7,39],[33,91,7,56],[45,88,7,102],[57,91,7,102]]},A72:{W:69,P:[[58,105,7,-102],[56,88,8,-35],[42,91,7,51],[29,96,7,91],[16,90,7,91],[18,105,8,37],[17,120,7,-50],[17,134,6,-79],[17,149,8,-102]]},A71:{W:75,P:[[51,182,10,-103],[51,159,9,-79],[55,138,9,-79],[35,149,8,-35],[18,143,7,11],[58,123,7,11],[12,126,7,50],[57,103,7,69],[16,109,6,69],[26,95,6,69],[49,88,6,69],[37,88,6,119]]},A70:{W:77,P:[[15,88,10,-103],[18,108,9,-91],[31,97,9,-50],[18,126,8,-50],[45,96,7,-35],[57,103,7,5],[17,143,7,5],[60,117,7,56],[60,131,7,56],[20,158,7,50],[51,143,7,50],[31,148,6,102],[17,172,6,102],[16,186,5,119]]},A6d:{W:111,P:[[15,148,10,-102],[58,152,10,-102],[98,151,10,-50],[98,134,9,-50],[56,133,9,-50],[15,129,8,11],[94,116,8,11],[56,113,8,11],[14,111,7,51],[15,93,7,51],[25,105,7,51],[55,98,7,51],[89,99,7,83],[77,92,7,112],[36,94,7,112]]},A6e:{W:75,P:[[17,148,10,-92],[62,149,10,-92],[17,125,9,-50],[62,127,9,-35],[61,107,8,29],[23,104,8,69],[15,86,7,69],[36,94,7,69],[55,92,7,69]]},A6f:{W:76,P:[[24,147,10,-103],[46,149,9,-84],[14,129,9,-50],[58,134,8,-35],[18,107,8,29],[61,114,7,51],[56,98,7,51],[31,92,7,102],[45,91,7,102]]},A6a:{W:58,P:[[34,62,10,-92],[35,95,9,-92],[37,117,8,-35],[38,133,8,-35],[37,152,8,37],[36,168,8,56],[29,185,7,56],[14,181,6,112],[6,170,5,119]]},A6b:{W:78,P:[[19,148,8,-84],[20,131,7,-84],[68,149,10,-84],[58,134,8,-84],[50,123,6,-84],[65,83,6,-35],[21,44,7,51],[21,59,6,83],[21,72,5,112],[21,85,6,112],[21,99,6,69],[53,99,5,102],[59,90,6,50],[42,110,10,29],[20,115,7,-35],[31,122,5,5]]},A6c:{W:40,P:[[20,150,10,56],[22,52,10,56],[20,71,9,-35],[21,133,8,-50],[21,88,7,-84],[21,120,6,-103],[20,104,6,-103]]},A68:{W:83,P:[[18,149,10,-102],[69,147,10,-102],[18,131,9,-36],[64,126,8,-36],[65,109,8,-36],[19,109,8,51],[57,93,7,69],[39,94,8,37],[20,89,8,37],[18,69,8,91],[17,52,7,119]]},A69:{W:41,P:[[23,60,10,-92],[22,91,9,-36],[21,111,8,39],[19,130,7,56],[21,148,6,112]]},A64:{W:84,P:[[68,147,10,-103],[45,151,9,-92],[22,145,9,-50],[15,124,8,-50],[17,104,8,39],[29,91,8,39],[46,90,8,39],[59,96,8,-50],[67,129,8,-50],[68,110,8,69],[68,83,7,69],[70,68,7,102],[71,47,7,119]]},A65:{W:79,P:[[16,127,10,-103],[23,145,9,-50],[41,151,8,11],[54,148,7,102],[70,142,6,119],[61,96,7,51],[54,109,7,51],[44,90,8,51],[41,117,8,-50],[27,92,8,-50],[17,107,8,-50]]},A66:{W:73,P:[[29,156,10,-103],[31,136,9,-84],[31,116,9,-50],[30,95,8,-35],[45,93,7,-35],[58,92,7,39],[14,95,7,39],[33,79,7,69],[36,67,7,69],[47,55,7,69],[65,52,6,119]]},A67:{W:76,P:[[61,97,10,-102],[61,118,9,-102],[42,90,9,-79],[24,97,8,-35],[53,137,8,-35],[12,110,8,-35],[40,148,7,29],[26,151,7,42],[11,124,6,56],[13,139,6,83],[60,156,7,-50],[54,172,7,50],[42,185,7,69],[25,187,7,102],[7,183,7,119]]},A61:{W:74,P:[[58,94,8,42],[45,89,7,69],[31,91,7,119],[20,99,7,91],[12,111,7,51],[11,124,8,-35],[29,151,8,-35],[45,149,7,-35],[65,153,6,-35],[57,126,6,-35],[57,112,6,-102],[58,142,8,-102],[15,140,9,-102]]},A62:{W:85,P:[[17,143,8,-102],[31,148,8,-102],[44,152,7,-102],[60,147,6,-36],[67,133,6,-36],[73,116,6,39],[65,98,6,83],[56,90,6,119],[42,89,6,51],[30,93,7,11],[17,102,8,-35],[18,124,10,-72],[17,79,7,51],[17,60,7,51],[17,47,7,102]]},A63:{W:74,P:[[24,142,9,-103],[37,152,8,-38],[54,150,7,50],[66,143,6,56],[14,123,8,-79],[20,106,7,5],[32,92,6,29],[47,88,6,102],[59,94,6,102]]},A7e:{W:86,P:[[13,113,5,-103],[22,103,5,-103],[31,96,5,11],[40,98,5,11],[44,108,5,11],[52,115,7,11],[66,116,7,11],[72,99,9,11]]},A7d:{W:53,P:[[42,115,9,-103],[31,104,7,5],[30,86,7,5],[30,72,7,5],[25,57,7,5],[32,128,7,5],[30,144,7,5],[27,158,7,5],[24,170,7,5],[11,174,5,112],[12,51,5,112]]},A7c:{W:61,P:[[33,41,5,-161],[33,53,5,5],[31,65,5,5],[32,79,5,69],[32,92,5,69],[31,107,5,112],[30,122,5,50],[29,136,5,-50],[28,147,5,-50],[28,159,5,-91],[27,171,5,-91]]},A7b:{W:53,P:[[6,115,10,-50],[20,105,7,-50],[20,89,7,-50],[20,73,7,-50],[22,58,7,-50],[18,126,7,-50],[20,140,7,-50],[21,152,7,-50],[23,166,6,80],[31,172,6,80],[44,172,6,80],[33,49,6,80],[47,49,6,80]]},A7a:{W:77,P:[[19,152,10,-103],[37,150,9,-79],[53,150,8,-35],[31,132,8,-35],[42,121,7,50],[53,109,7,50],[61,92,7,50],[40,89,7,83],[23,89,7,112]]},A4f:{W:114,P:[[40,147,10,-102],[82,142,10,-102],[16,119,9,-72],[63,151,9,-72],[22,136,8,11],[91,122,8,11],[17,96,8,11],[97,108,7,11],[97,89,7,11],[24,78,7,69],[94,71,7,69],[40,66,6,69],[54,60,6,69],[87,60,6,112],[73,59,6,112]]},A4d:{W:126,P:[[38,60,10,-72],[92,59,10,-72],[112,150,8,-72],[83,75,5,-72],[81,87,6,-72],[78,100,6,-72],[74,113,6,-72],[69,128,7,-72],[54,129,7,-72],[50,113,6,-72],[46,100,5,-72],[43,86,6,-72],[31,78,7,-72],[43,74,6,112],[28,94,8,-72],[16,150,10,-72],[20,131,9,51],[23,113,8,69],[103,106,6,119],[100,93,6,56],[104,119,7,83],[108,134,8,39],[97,79,7,50],[61,146,9,112]]},A4e:{W:114,P:[[16,151,8,-91],[19,55,8,-91],[95,59,8,-91],[98,147,8,-91],[98,132,7,-91],[16,133,7,-91],[17,71,7,-91],[100,72,7,5],[101,119,7,5],[103,86,7,5],[17,119,7,5],[84,138,7,5],[74,126,7,5],[32,68,6,56],[37,80,6,56],[45,90,6,56],[63,112,6,56],[101,102,6,56],[17,108,6,112],[54,101,6,112],[18,93,6,112],[16,81,6,112]]},A4b:{W:88,P:[[24,155,9,-92],[78,150,9,-92],[23,135,8,-92],[61,136,8,-92],[46,126,8,-36],[22,117,8,-36],[36,110,8,5],[22,95,7,50],[43,92,7,50],[52,82,7,50],[21,78,7,83],[23,59,7,83],[67,71,7,83],[75,57,7,83]]},A4c:{W:79,P:[[16,152,9,-50],[15,135,8,-50],[16,118,8,-50],[17,86,7,-50],[19,71,6,-50],[18,55,7,-50],[68,145,10,-50],[56,148,9,69],[44,151,7,119],[32,153,7,50],[17,101,7,69]]},A4a:{W:95,P:[[32,55,10,-103],[84,57,9,-84],[49,59,9,-84],[65,58,8,-36],[60,71,8,-36],[60,90,8,11],[61,105,8,11],[55,126,8,50],[54,141,7,56],[46,153,7,56],[28,151,7,112],[14,136,7,112]]},A51:{W:125,P:[[113,176,10,-92],[97,161,9,-92],[82,147,9,-92],[64,133,7,-50],[97,136,7,-50],[62,154,7,-35],[106,120,7,-35],[41,151,6,11],[108,103,6,11],[24,142,6,11],[103,88,6,11],[15,124,6,50],[97,73,6,50],[12,107,6,50],[15,94,6,69],[84,61,6,69],[24,80,6,69],[35,71,5,112],[71,57,5,112],[55,58,5,112],[43,63,5,112]]},A50:{W:75,P:[[49,56,5,-161],[56,65,5,-102],[62,78,5,-102],[34,54,6,-102],[56,93,6,-72],[17,51,6,-72],[17,64,6,-72],[49,100,6,11],[34,104,6,11],[15,78,7,11],[19,96,7,11],[16,111,7,83],[13,125,7,83],[13,140,7,83]]},A53:{W:99,P:[[18,139,8,-84],[32,149,7,-84],[47,150,6,-84],[65,146,6,-84],[79,138,6,50],[86,126,6,50],[81,112,6,50],[69,103,6,102],[58,101,6,102],[44,98,6,102],[30,92,7,50],[29,76,6,5],[42,63,6,5],[56,62,6,-84],[70,60,6,-84],[81,64,6,-84]]},A52:{W:90,P:[[17,148,8,-161],[17,134,7,39],[17,120,8,-72],[18,71,8,-72],[19,57,10,-72],[51,63,8,-72],[64,72,8,-72],[30,114,8,-72],[42,124,5,-72],[54,127,6,-72],[64,134,7,-72],[75,145,8,-72],[73,85,8,51],[70,98,8,119],[59,108,8,83],[46,114,8,56],[18,86,8,102],[18,103,9,51],[35,59,9,11]]},A55:{W:105,P:[[34,145,9,-92],[51,151,8,-92],[20,128,7,-92],[67,145,7,-50],[19,107,7,-35],[80,137,7,37],[86,122,7,37],[18,88,7,37],[89,105,6,80],[19,68,6,80],[88,87,6,80],[91,70,6,119]]},A54:{W:97,P:[[14,57,9,-102],[92,59,9,-102],[54,144,9,-50],[55,125,8,-50],[75,60,7,29],[30,59,7,29],[58,59,6,29],[46,59,6,51],[51,72,6,69],[53,109,6,69],[53,97,6,102],[53,85,6,119]]},A57:{W:148,P:[[45,143,10,-72],[78,62,10,-72],[100,150,10,-72],[137,58,10,-72],[92,133,9,-72],[54,126,9,-72],[37,126,9,-72],[67,81,9,-72],[82,81,8,-72],[59,112,8,-72],[63,97,7,-72],[33,109,7,-72],[87,99,7,-72],[120,104,7,119],[113,120,8,112],[127,90,8,83],[132,76,9,39],[109,134,9,56],[88,118,7,69],[23,76,9,112],[30,91,8,51],[20,58,10,50]]},A56:{W:93,P:[[47,146,10,-72],[38,128,9,-72],[33,111,8,-72],[26,81,8,-72],[22,66,7,-72],[19,54,8,-72],[56,130,8,-72],[86,55,8,-72],[77,70,8,42],[72,85,8,56],[66,100,8,119],[61,115,8,56],[30,96,8,56]]},A59:{W:91,P:[[8,59,9,-102],[77,58,9,-102],[34,151,8,-50],[43,135,8,-50],[71,73,7,5],[18,71,7,5],[25,80,7,50],[63,89,7,50],[34,95,7,50],[48,121,6,102],[57,102,6,102],[39,109,6,102]]},A58:{W:103,P:[[11,149,8,-103],[23,140,8,-103],[87,148,8,-84],[76,134,7,-50],[69,121,7,-50],[34,126,7,-50],[45,114,6,5],[62,109,6,5],[53,99,6,29],[65,92,6,29],[41,86,6,69],[76,77,6,69],[32,78,6,69],[87,64,6,69],[25,64,6,69],[14,57,6,69],[94,55,6,69]]},A5a:{W:99,P:[[15,146,10,-92],[89,148,10,-92],[33,149,9,-92],[52,150,9,-92],[69,150,8,-36],[27,129,8,-36],[38,112,7,11],[47,97,7,11],[57,87,7,56],[67,74,7,56],[79,68,7,56],[91,61,7,119],[15,56,7,-35],[29,58,7,11],[45,60,7,50],[61,58,7,112],[75,55,7,56]]},A5c:{W:79,P:[[19,58,5,-35],[25,67,5,-35],[31,76,6,-35],[35,86,6,-35],[40,95,7,-35],[45,106,6,-35],[48,116,6,-35],[54,125,6,-35],[58,136,5,-35],[63,146,5,-35],[65,152,5,-35]]},A5b:{W:55,P:[[40,57,5,-35],[31,58,5,-35],[20,57,8,-35],[20,72,8,-35],[20,85,8,-35],[20,100,8,-35],[20,115,8,-35],[20,127,8,-35],[19,144,8,-35],[17,160,8,-35],[17,175,8,-35],[29,177,6,-35],[41,176,5,-35]]},A5e:{W:83,P:[[20,70,9,-79],[65,68,9,-79],[33,58,7,50],[52,58,7,50],[42,48,6,112]]},A5d:{W:55,P:[[20,58,5,-35],[30,58,5,-35],[40,58,8,-35],[41,74,8,-35],[41,92,8,-35],[41,109,8,-35],[41,127,8,-35],[41,144,8,-35],[40,159,8,-35],[40,172,8,-35],[27,174,6,-35],[15,175,6,-35]]},A5f:{W:90,P:[[0,172,5,-35],[11,171,5,-35],[21,169,5,-35],[33,172,5,-35],[45,172,5,-35],[55,170,5,-35],[66,172,5,-35],[74,170,5,-35],[85,170,5,-35]]},A46:{W:87,P:[[20,149,9,-103],[20,128,8,-84],[20,108,8,-84],[33,98,8,-36],[20,86,8,-36],[51,96,7,29],[68,98,7,29],[21,63,7,56],[35,54,7,56],[52,54,7,112],[68,53,7,112]]},A47:{W:97,P:[[25,148,8,-103],[61,145,8,-103],[16,109,8,-79],[43,151,8,-79],[15,132,7,-36],[77,132,7,-36],[23,83,7,37],[83,110,7,37],[36,66,6,37],[49,53,6,37],[67,106,6,56],[53,112,6,56],[63,57,6,112],[40,114,6,112],[76,59,6,112]]},A44:{W:103,P:[[19,148,8,-161],[34,154,8,-79],[60,149,8,-36],[80,141,7,-36],[86,123,7,29],[20,128,8,-92],[20,110,8,-92],[21,91,8,-50],[21,73,8,5],[23,57,8,42],[37,63,8,51],[52,70,7,69],[66,78,7,69],[86,109,7,112],[79,90,7,112]]},A45:{W:89,P:[[19,149,10,-102],[18,103,10,-102],[22,55,9,-72],[17,126,9,-72],[20,79,8,5],[36,155,8,5],[38,101,8,5],[40,52,7,50],[54,157,7,50],[53,100,7,50],[56,53,7,91],[71,155,7,91],[70,99,7,91],[73,51,7,91]]},A42:{W:90,P:[[26,56,9,-102],[22,68,5,-102],[23,79,5,-102],[21,92,5,-84],[22,103,6,-50],[20,114,6,-50],[22,125,6,91],[22,137,6,91],[32,104,7,-35],[24,151,7,-35],[48,148,7,-35],[68,115,7,-35],[35,152,6,51],[43,110,6,51],[61,144,6,51],[76,124,6,51],[72,137,9,119],[52,107,9,-79],[66,81,7,80],[66,92,9,11],[42,52,9,42],[64,64,9,-102],[55,54,6,-102]]},A43:{W:86,P:[[77,69,8,-103],[76,56,7,56],[64,60,7,119],[50,61,7,29],[30,78,7,-72],[23,88,7,-35],[17,100,8,-35],[15,116,8,50],[39,69,6,83],[17,131,9,-72],[29,145,9,-72],[46,147,8,29],[61,142,8,83],[72,134,8,-103]]},A40:{W:132,P:[[95,150,7,51],[81,154,8,11],[64,156,9,11],[46,151,9,-79],[29,140,9,-79],[20,123,9,-103],[17,104,9,-103],[19,85,9,50],[28,68,9,56],[41,55,9,80],[58,49,9,112],[75,51,8,119],[91,56,8,91],[104,66,8,51],[113,80,8,50],[113,97,8,5],[107,113,8,-36],[90,118,9,-36],[75,113,7,-36],[68,108,5,5],[60,115,7,-79],[47,114,7,-79],[42,102,7,-103],[47,91,7,-35],[55,81,6,-35],[67,77,8,-103],[76,97,8,-79]]},A41:{W:104,P:[[88,148,10,-102],[29,118,10,-102],[68,57,5,-102],[23,134,8,11],[16,148,8,119],[39,103,8,51],[47,90,7,51],[55,77,7,51],[62,67,6,83],[76,95,5,-35],[77,107,6,-35],[73,83,5,83],[71,71,5,83],[79,121,7,-35],[84,134,8,-50],[65,111,6,-50],[52,114,6,-50]]},A48:{W:110,P:[[16,152,10,-103],[92,148,9,-91],[92,129,9,-91],[18,130,8,-50],[90,109,8,-50],[19,109,8,-50],[33,110,8,11],[53,106,8,11],[70,104,8,11],[94,90,8,51],[95,68,8,51],[18,85,7,102],[22,66,7,102],[22,47,7,102],[95,49,7,102]]},A49:{W:78,P:[[13,152,9,-103],[36,146,9,-84],[53,146,8,11],[68,145,8,11],[35,125,8,-36],[38,105,7,-36],[37,88,7,56],[38,72,7,56],[52,61,7,91],[65,60,7,119],[40,58,7,50],[24,58,6,-72],[12,59,6,-102]]},A33:{W:87,P:[[22,65,10,-35],[16,136,10,-35],[32,100,10,-35],[38,56,8,-35],[54,57,7,-35],[63,67,6,-35],[66,80,6,-35],[57,91,7,-35],[47,99,7,-35],[56,106,7,-35],[64,117,6,-35],[65,129,6,-35],[59,138,7,-35],[49,144,7,-35],[31,144,7,-35]]},A32:{W:87,P:[[69,148,10,-35],[51,149,9,-35],[33,149,9,-35],[14,149,8,-35],[19,133,8,-35],[28,118,8,-35],[42,109,8,-35],[56,100,7,-35],[66,88,7,-35],[68,73,7,-35],[60,57,6,-35],[47,56,6,-35],[34,57,6,-35],[24,65,6,-35],[16,72,6,-35]]},A31:{W:65,P:[[19,149,9,-35],[51,148,9,-35],[39,53,9,-35],[36,147,6,-35],[35,135,6,-35],[34,120,5,-35],[34,109,5,-35],[34,98,6,-35],[35,84,6,-35],[37,69,6,-35],[27,62,6,-35],[19,68,6,-35]]},A30:{W:87,P:[[67,138,10,-102],[48,148,10,-102],[73,117,9,-50],[74,95,9,-50],[22,144,8,11],[69,76,8,11],[15,126,8,11],[12,104,7,56],[58,63,7,56],[13,87,6,56],[46,57,6,56],[20,75,6,112],[27,64,6,112]]},A37:{W:87,P:[[26,152,10,-102],[36,133,9,-102],[47,116,9,-50],[57,100,9,5],[66,86,9,5],[80,70,8,56],[62,65,8,56],[44,63,7,56],[26,64,6,56],[11,64,6,56]]},A36:{W:87,P:[[65,145,10,-79],[46,151,9,-79],[70,127,8,-79],[66,111,8,-79],[26,148,7,-79],[52,100,7,-79],[18,131,7,11],[15,114,7,11],[37,97,7,51],[20,102,7,51],[23,86,7,51],[34,72,7,80],[44,61,7,112],[55,49,7,112]]},A35:{W:87,P:[[21,55,9,-50],[38,56,9,-50],[53,57,9,-50],[69,55,9,-50],[20,71,8,-50],[18,87,8,-50],[18,104,8,-50],[32,95,8,-50],[46,89,7,-50],[57,91,7,50],[64,101,7,50],[71,113,7,83],[69,127,7,83],[61,140,7,83],[49,146,6,83],[34,146,6,83],[22,140,6,83]]},A34:{W:87,P:[[10,117,9,-35],[25,118,9,-35],[39,117,9,-35],[55,117,9,-35],[70,117,9,-35],[61,98,8,-35],[61,78,7,-35],[61,58,7,-35],[46,68,7,-35],[36,82,7,-35],[27,94,7,-35],[61,136,7,-35],[61,149,7,-35]]},A39:{W:87,P:[[69,103,10,-103],[60,122,9,-92],[47,134,8,-50],[33,144,8,-50],[17,155,8,-50],[70,82,8,-50],[48,106,7,51],[64,68,7,51],[53,58,7,51],[34,107,7,51],[21,97,7,51],[17,82,7,51],[38,59,7,51],[26,65,7,51]]},A38:{W:87,P:[[43,98,10,-103],[61,90,8,-103],[58,105,8,-79],[27,107,8,-79],[24,91,7,-36],[67,73,7,-36],[21,75,7,-36],[29,61,7,-36],[58,61,6,102],[46,55,6,102],[17,118,7,37],[67,118,7,37],[69,131,7,37],[16,133,6,56],[66,142,6,56],[23,146,6,56],[33,151,6,56],[57,151,5,119],[46,154,5,119]]},A2a:{W:76,P:[[35,69,9,-103],[44,83,7,-35],[27,83,7,-35],[20,67,7,-35],[36,54,7,-35],[51,67,7,-35],[53,92,5,83],[17,92,5,83],[7,63,5,83],[35,42,5,83],[63,67,5,83]]},A2b:{W:69,P:[[32,109,10,-102],[32,92,6,37],[47,109,6,37],[32,126,6,37],[14,109,6,37],[33,137,6,37],[60,110,6,37],[32,79,6,37],[4,109,6,37]]},A2c:{W:41,P:[[30,150,10,-79],[24,164,7,50],[17,177,6,102]]},A2d:{W:60,P:[[12,118,9,-84],[29,117,8,69],[46,117,6,5]]},A2e:{W:37,P:[[19,152,6,-35]]},A2f:{W:74,P:[[14,154,10,-102],[23,133,9,-72],[34,114,9,5],[42,96,9,5],[50,77,8,83],[59,62,8,83]]},A20:{W:40,P:[]},A21:{W:35,P:[[17,151,9,-35],[18,50,8,-35],[17,67,8,-35],[17,85,7,-35],[18,100,6,-35],[18,114,5,-35],[19,128,5,-35]]},A22:{W:61,P:[[15,51,5,-35],[16,61,5,-35],[14,73,5,-35],[14,85,5,-35],[44,53,5,-35],[43,66,5,-35],[42,77,5,-35],[40,87,5,-35]]},A23:{W:120,P:[[31,120,9,-102],[79,120,9,-102],[90,79,9,-102],[43,80,9,-102],[48,120,7,29],[62,121,7,29],[83,103,7,29],[86,92,7,29],[73,79,7,29],[59,79,7,29],[26,79,7,29],[11,79,7,29],[47,64,7,29],[51,49,7,29],[94,62,7,29],[98,46,7,29],[107,79,7,29],[118,79,7,29],[92,121,7,29],[107,120,7,29],[75,137,7,29],[70,150,7,29],[28,135,7,29],[23,147,7,29],[37,104,7,29],[39,93,7,29],[17,121,7,29],[3,120,7,29]]},A24:{W:99,P:[[21,144,9,-35],[36,150,8,-35],[54,150,8,-35],[71,145,7,-35],[78,133,7,-35],[81,118,6,-35],[73,108,6,-35],[60,102,6,-35],[46,101,7,-35],[31,95,7,-35],[24,80,8,-35],[37,67,8,-35],[52,58,9,-35],[71,61,9,-35],[51,39,6,-35],[52,76,6,-35],[52,88,6,-35],[51,115,6,-35],[51,127,6,-35],[51,138,6,-35],[51,165,6,-35],[51,177,6,-35]]},A26:{W:94,P:[[80,151,10,-103],[68,134,9,11],[58,117,9,11],[48,98,9,11],[39,80,9,11],[32,99,7,91],[20,108,7,91],[11,120,6,91],[10,133,6,91],[17,143,5,91],[27,148,6,56],[40,150,6,-72],[54,147,6,-72],[76,123,6,-72],[81,108,6,-72],[56,81,6,-72],[63,69,5,-92],[60,57,5,-92],[47,52,5,-92],[44,63,5,-92]]},A27:{W:56,P:[[27,72,5,-35],[25,62,5,-35],[27,51,5,-35]]},A28:{W:53,P:[[39,177,10,-35],[41,49,10,-35],[27,63,9,-35],[17,80,8,-35],[25,168,8,-35],[14,152,8,-35],[10,135,7,-35],[10,120,7,-35],[13,93,7,-35],[9,108,7,-35]]},A29:{W:53,P:[[15,179,10,-92],[15,51,10,-92],[29,165,9,-35],[27,63,9,-35],[34,79,9,-35],[37,151,8,56],[41,133,8,56],[41,96,8,56],[44,113,7,119]]},A3c:{W:55,P:[[36,88,5,-35],[28,94,5,-35],[20,100,5,-35],[14,106,5,-35],[10,113,5,-35],[16,116,5,-35],[22,120,5,-35],[30,126,5,-35],[36,133,5,-35]]},A3b:{W:44,P:[[21,91,10,-79],[21,144,8,42],[11,155,6,102]]},A3a:{W:44,P:[[21,134,10,-79],[23,86,10,51]]},A3f:{W:75,P:[[24,150,10,-103],[10,68,9,11],[26,61,8,11],[41,61,8,11],[26,125,8,11],[36,117,7,11],[48,108,7,11],[57,99,6,11],[52,70,6,11],[59,84,6,11]]},A3e:{W:55,P:[[15,83,5,-35],[24,90,5,-35],[31,97,5,-35],[39,105,5,-35],[34,114,5,-35],[26,120,5,-35],[19,125,5,-35],[10,132,5,-35]]},A3d:{W:73,P:[[11,91,9,-50],[27,90,9,-50],[44,90,9,-50],[59,90,9,-50],[11,127,6,69],[21,128,6,69],[33,129,6,69],[44,129,6,69],[53,129,6,69]]}}; \ No newline at end of file
diff --git a/Train/jquery-1.10.2.min.js b/Train/jquery-1.10.2.min.js
deleted file mode 100644
index 2f53572..0000000
--- a/Train/jquery-1.10.2.min.js
+++ /dev/null
@@ -1,6 +0,0 @@
1/*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license
2//@ sourceMappingURL=jquery-1.10.2.min.map
3*/
4(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.2",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=st(),k=st(),E=st(),S=!1,A=function(e,t){return e===t?(S=!0,0):0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=mt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+yt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,n,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function lt(e){return e[b]=!0,e}function ut(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ct(e,t){var n=e.split("|"),r=e.length;while(r--)o.attrHandle[n[r]]=t}function pt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function dt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return lt(function(t){return t=+t,lt(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w,i=n.defaultView;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),i&&i.attachEvent&&i!==i.top&&i.attachEvent("onbeforeunload",function(){p()}),r.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),r.getElementsByTagName=ut(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ut(function(e){return e.innerHTML="<div class='a'></div><div class='a i'></div>",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ut(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=K.test(n.querySelectorAll))&&(ut(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ut(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=K.test(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ut(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=K.test(d.contains)||d.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return pt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?pt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:lt,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=mt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?lt(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:lt(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?lt(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:lt(function(e){return function(t){return at(e,t).length>0}}),contains:lt(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:lt(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},o.pseudos.nth=o.pseudos.eq;for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=ft(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=dt(n);function gt(){}gt.prototype=o.filters=o.pseudos,o.setFilters=new gt;function mt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function yt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function vt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function bt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function wt(e,t,n,r,i,o){return r&&!r[b]&&(r=wt(r)),i&&!i[b]&&(i=wt(i,o)),lt(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||Nt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:xt(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=xt(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=xt(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function Tt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=vt(function(e){return e===t},s,!0),p=vt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[vt(bt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return wt(l>1&&bt(f),l>1&&yt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&Tt(e.slice(l,r)),i>r&&Tt(e=e.slice(r)),i>r&&yt(e))}f.push(n)}return bt(f)}function Ct(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=xt(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?lt(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=mt(e)),n=t.length;while(n--)o=Tt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Ct(i,r))}return o};function Nt(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function kt(e,t,n,i){var a,s,u,c,p,f=mt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&yt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}r.sortStable=b.split("").sort(A).join("")===b,r.detectDuplicates=S,p(),r.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(f.createElement("div"))}),ut(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||ct("type|href|height|width",function(e,n,r){return r?t:e.getAttribute(n,"type"===n.toLowerCase()?1:2)}),r.attributes&&ut(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||ct("value",function(e,n,r){return r||"input"!==e.nodeName.toLowerCase()?t:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||ct(B,function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&i.specified?i.value:e[n]===!0?n.toLowerCase():null}),x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!l||i&&!u||(t=t||[],t=[e,t.slice?t.slice():t],n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav></:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="<div></div>",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null)}),n=s=l=u=r=o=null,t
5}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,r=0,o=x(this),a=e.match(T)||[];while(t=a[r++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/<tbody/i,wt=/<|&#?\w+;/,Tt=/<(?:script|style|link)/i,Ct=/^(?:checkbox|radio)$/i,Nt=/checked\s*(?:[^=]|=\s*.checked.)/i,kt=/^$|\/(?:java|ecma)script/i,Et=/^true\/(.*)/,St=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,At={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:x.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1></$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1></$2>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?"<table>"!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle);
6u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){nn(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(Pt[0].contentWindow||Pt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=un(e,t),Pt.detach()),Gt[e]=n),n}function un(e,t){var n=x(t.createElement(e)).appendTo(t.body),r=x.css(n[0],"display");return n.remove(),r}x.each(["height","width"],function(e,n){x.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&Xt.test(x.css(e,"display"))?x.swap(e,Qt,function(){return sn(e,n,i)}):sn(e,n,i):t},set:function(e,t,r){var i=r&&Rt(e);return on(e,t,r?an(e,n,r,x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,i),i):0)}}}),x.support.opacity||(x.cssHooks.opacity={get:function(e,t){return It.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=x.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===x.trim(o.replace($t,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=$t.test(o)?o.replace($t,i):o+" "+i)}}),x(function(){x.support.reliableMarginRight||(x.cssHooks.marginRight={get:function(e,n){return n?x.swap(e,{display:"inline-block"},Wt,[e,"marginRight"]):t}}),!x.support.pixelPosition&&x.fn.position&&x.each(["top","left"],function(e,n){x.cssHooks[n]={get:function(e,r){return r?(r=Wt(e,n),Yt.test(r)?x(e).position()[n]+"px":r):t}}})}),x.expr&&x.expr.filters&&(x.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight||!x.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||x.css(e,"display"))},x.expr.filters.visible=function(e){return!x.expr.filters.hidden(e)}),x.each({margin:"",padding:"",border:"Width"},function(e,t){x.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+Zt[r]+t]=o[r]||o[r-2]||o[0];return i}},Ut.test(e)||(x.cssHooks[e+t].set=on)});var cn=/%20/g,pn=/\[\]$/,fn=/\r?\n/g,dn=/^(?:submit|button|image|reset|file)$/i,hn=/^(?:input|select|textarea|keygen)/i;x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=x.prop(this,"elements");return e?x.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!x(this).is(":disabled")&&hn.test(this.nodeName)&&!dn.test(e)&&(this.checked||!Ct.test(e))}).map(function(e,t){var n=x(this).val();return null==n?null:x.isArray(n)?x.map(n,function(e){return{name:t.name,value:e.replace(fn,"\r\n")}}):{name:t.name,value:n.replace(fn,"\r\n")}}).get()}}),x.param=function(e,n){var r,i=[],o=function(e,t){t=x.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=x.ajaxSettings&&x.ajaxSettings.traditional),x.isArray(e)||e.jquery&&!x.isPlainObject(e))x.each(e,function(){o(this.name,this.value)});else for(r in e)gn(r,e[r],n,o);return i.join("&").replace(cn,"+")};function gn(e,t,n,r){var i;if(x.isArray(t))x.each(t,function(t,i){n||pn.test(e)?r(e,i):gn(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==x.type(t))r(e,t);else for(i in t)gn(e+"["+i+"]",t[i],n,r)}x.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){x.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),x.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}});var mn,yn,vn=x.now(),bn=/\?/,xn=/#.*$/,wn=/([?&])_=[^&]*/,Tn=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Cn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Nn=/^(?:GET|HEAD)$/,kn=/^\/\//,En=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Sn=x.fn.load,An={},jn={},Dn="*/".concat("*");try{yn=o.href}catch(Ln){yn=a.createElement("a"),yn.href="",yn=yn.href}mn=En.exec(yn.toLowerCase())||[];function Hn(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(T)||[];if(x.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function qn(e,n,r,i){var o={},a=e===jn;function s(l){var u;return o[l]=!0,x.each(e[l]||[],function(e,l){var c=l(n,r,i);return"string"!=typeof c||a||o[c]?a?!(u=c):t:(n.dataTypes.unshift(c),s(c),!1)}),u}return s(n.dataTypes[0])||!o["*"]&&s("*")}function _n(e,n){var r,i,o=x.ajaxSettings.flatOptions||{};for(i in n)n[i]!==t&&((o[i]?e:r||(r={}))[i]=n[i]);return r&&x.extend(!0,e,r),e}x.fn.load=function(e,n,r){if("string"!=typeof e&&Sn)return Sn.apply(this,arguments);var i,o,a,s=this,l=e.indexOf(" ");return l>=0&&(i=e.slice(l,e.length),e=e.slice(0,l)),x.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(a="POST"),s.length>0&&x.ajax({url:e,type:a,dataType:"html",data:n}).done(function(e){o=arguments,s.html(i?x("<div>").append(x.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yn,type:"GET",isLocal:Cn.test(mn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":x.parseJSON,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?_n(_n(e,x.ajaxSettings),t):_n(x.ajaxSettings,e)},ajaxPrefilter:Hn(An),ajaxTransport:Hn(jn),ajax:function(e,n){"object"==typeof e&&(n=e,e=t),n=n||{};var r,i,o,a,s,l,u,c,p=x.ajaxSetup({},n),f=p.context||p,d=p.context&&(f.nodeType||f.jquery)?x(f):x.event,h=x.Deferred(),g=x.Callbacks("once memory"),m=p.statusCode||{},y={},v={},b=0,w="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!c){c={};while(t=Tn.exec(a))c[t[1].toLowerCase()]=t[2]}t=c[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return b||(e=v[n]=v[n]||e,y[e]=t),this},overrideMimeType:function(e){return b||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>b)for(t in e)m[t]=[m[t],e[t]];else C.always(e[C.status]);return this},abort:function(e){var t=e||w;return u&&u.abort(t),k(0,t),this}};if(h.promise(C).complete=g.add,C.success=C.done,C.error=C.fail,p.url=((e||p.url||yn)+"").replace(xn,"").replace(kn,mn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=x.trim(p.dataType||"*").toLowerCase().match(T)||[""],null==p.crossDomain&&(r=En.exec(p.url.toLowerCase()),p.crossDomain=!(!r||r[1]===mn[1]&&r[2]===mn[2]&&(r[3]||("http:"===r[1]?"80":"443"))===(mn[3]||("http:"===mn[1]?"80":"443")))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=x.param(p.data,p.traditional)),qn(An,p,n,C),2===b)return C;l=p.global,l&&0===x.active++&&x.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Nn.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(bn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=wn.test(o)?o.replace(wn,"$1_="+vn++):o+(bn.test(o)?"&":"?")+"_="+vn++)),p.ifModified&&(x.lastModified[o]&&C.setRequestHeader("If-Modified-Since",x.lastModified[o]),x.etag[o]&&C.setRequestHeader("If-None-Match",x.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&C.setRequestHeader("Content-Type",p.contentType),C.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Dn+"; q=0.01":""):p.accepts["*"]);for(i in p.headers)C.setRequestHeader(i,p.headers[i]);if(p.beforeSend&&(p.beforeSend.call(f,C,p)===!1||2===b))return C.abort();w="abort";for(i in{success:1,error:1,complete:1})C[i](p[i]);if(u=qn(jn,p,n,C)){C.readyState=1,l&&d.trigger("ajaxSend",[C,p]),p.async&&p.timeout>0&&(s=setTimeout(function(){C.abort("timeout")},p.timeout));try{b=1,u.send(y,k)}catch(N){if(!(2>b))throw N;k(-1,N)}}else k(-1,"No Transport");function k(e,n,r,i){var c,y,v,w,T,N=n;2!==b&&(b=2,s&&clearTimeout(s),u=t,a=i||"",C.readyState=e>0?4:0,c=e>=200&&300>e||304===e,r&&(w=Mn(p,C,r)),w=On(p,w,C,c),c?(p.ifModified&&(T=C.getResponseHeader("Last-Modified"),T&&(x.lastModified[o]=T),T=C.getResponseHeader("etag"),T&&(x.etag[o]=T)),204===e||"HEAD"===p.type?N="nocontent":304===e?N="notmodified":(N=w.state,y=w.data,v=w.error,c=!v)):(v=N,(e||!N)&&(N="error",0>e&&(e=0))),C.status=e,C.statusText=(n||N)+"",c?h.resolveWith(f,[y,N,C]):h.rejectWith(f,[C,N,v]),C.statusCode(m),m=t,l&&d.trigger(c?"ajaxSuccess":"ajaxError",[C,p,c?y:v]),g.fireWith(f,[C,N]),l&&(d.trigger("ajaxComplete",[C,p]),--x.active||x.event.trigger("ajaxStop")))}return C},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,n){return x.get(e,t,n,"script")}}),x.each(["get","post"],function(e,n){x[n]=function(e,r,i,o){return x.isFunction(r)&&(o=o||i,i=r,r=t),x.ajax({url:e,type:n,dataType:o,data:r,success:i})}});function Mn(e,n,r){var i,o,a,s,l=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),o===t&&(o=e.mimeType||n.getResponseHeader("Content-Type"));if(o)for(s in l)if(l[s]&&l[s].test(o)){u.unshift(s);break}if(u[0]in r)a=u[0];else{for(s in r){if(!u[0]||e.converters[s+" "+u[0]]){a=s;break}i||(i=s)}a=a||i}return a?(a!==u[0]&&u.unshift(a),r[a]):t}function On(e,t,n,r){var i,o,a,s,l,u={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)u[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=c.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(a=u[l+" "+o]||u["* "+o],!a)for(i in u)if(s=i.split(" "),s[1]===o&&(a=u[l+" "+s[0]]||u["* "+s[0]])){a===!0?a=u[i]:u[i]!==!0&&(o=s[0],c.unshift(s[1]));break}if(a!==!0)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(p){return{state:"parsererror",error:a?p:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),x.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=a.head||x("head")[0]||a.documentElement;return{send:function(t,i){n=a.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var Fn=[],Bn=/(=)\?(?=&|$)|\?\?/;x.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Fn.pop()||x.expando+"_"+vn++;return this[e]=!0,e}}),x.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,l=n.jsonp!==!1&&(Bn.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Bn.test(n.data)&&"data");return l||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=x.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,l?n[l]=n[l].replace(Bn,"$1"+o):n.jsonp!==!1&&(n.url+=(bn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||x.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,Fn.push(o)),s&&x.isFunction(a)&&a(s[0]),s=a=t}),"script"):t});var Pn,Rn,Wn=0,$n=e.ActiveXObject&&function(){var e;for(e in Pn)Pn[e](t,!0)};function In(){try{return new e.XMLHttpRequest}catch(t){}}function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}x.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&In()||zn()}:In,Rn=x.ajaxSettings.xhr(),x.support.cors=!!Rn&&"withCredentials"in Rn,Rn=x.support.ajax=!!Rn,Rn&&x.ajaxTransport(function(n){if(!n.crossDomain||x.support.cors){var r;return{send:function(i,o){var a,s,l=n.xhr();if(n.username?l.open(n.type,n.url,n.async,n.username,n.password):l.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)l[s]=n.xhrFields[s];n.mimeType&&l.overrideMimeType&&l.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)l.setRequestHeader(s,i[s])}catch(u){}l.send(n.hasContent&&n.data||null),r=function(e,i){var s,u,c,p;try{if(r&&(i||4===l.readyState))if(r=t,a&&(l.onreadystatechange=x.noop,$n&&delete Pn[a]),i)4!==l.readyState&&l.abort();else{p={},s=l.status,u=l.getAllResponseHeaders(),"string"==typeof l.responseText&&(p.text=l.responseText);try{c=l.statusText}catch(f){c=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=p.text?200:404}}catch(d){i||o(-1,d)}p&&o(s,c,p,u)},n.async?4===l.readyState?setTimeout(r):(a=++Wn,$n&&(Pn||(Pn={},x(e).unload($n)),Pn[a]=r),l.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Xn,Un,Vn=/^(?:toggle|show|hide)$/,Yn=RegExp("^(?:([+-])=|)("+w+")([a-z%]*)$","i"),Jn=/queueHooks$/,Gn=[nr],Qn={"*":[function(e,t){var n=this.createTween(e,t),r=n.cur(),i=Yn.exec(t),o=i&&i[3]||(x.cssNumber[e]?"":"px"),a=(x.cssNumber[e]||"px"!==o&&+r)&&Yn.exec(x.css(n.elem,e)),s=1,l=20;if(a&&a[3]!==o){o=o||a[3],i=i||[],a=+r||1;do s=s||".5",a/=s,x.style(n.elem,e,a+o);while(s!==(s=n.cur()/r)&&1!==s&&--l)}return i&&(a=n.start=+a||+r||0,n.unit=o,n.end=i[1]?a+(i[1]+1)*i[2]:+i[2]),n}]};function Kn(){return setTimeout(function(){Xn=t}),Xn=x.now()}function Zn(e,t,n){var r,i=(Qn[t]||[]).concat(Qn["*"]),o=0,a=i.length;for(;a>o;o++)if(r=i[o].call(n,t,e))return r}function er(e,t,n){var r,i,o=0,a=Gn.length,s=x.Deferred().always(function(){delete l.elem}),l=function(){if(i)return!1;var t=Xn||Kn(),n=Math.max(0,u.startTime+u.duration-t),r=n/u.duration||0,o=1-r,a=0,l=u.tweens.length;for(;l>a;a++)u.tweens[a].run(o);return s.notifyWith(e,[u,o,n]),1>o&&l?n:(s.resolveWith(e,[u]),!1)},u=s.promise({elem:e,props:x.extend({},t),opts:x.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Xn||Kn(),duration:n.duration,tweens:[],createTween:function(t,n){var r=x.Tween(e,u.opts,t,n,u.opts.specialEasing[t]||u.opts.easing);return u.tweens.push(r),r},stop:function(t){var n=0,r=t?u.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)u.tweens[n].run(1);return t?s.resolveWith(e,[u,t]):s.rejectWith(e,[u,t]),this}}),c=u.props;for(tr(c,u.opts.specialEasing);a>o;o++)if(r=Gn[o].call(u,e,c,u.opts))return r;return x.map(c,Zn,u),x.isFunction(u.opts.start)&&u.opts.start.call(e,u),x.fx.timer(x.extend(l,{elem:e,anim:u,queue:u.opts.queue})),u.progress(u.opts.progress).done(u.opts.done,u.opts.complete).fail(u.opts.fail).always(u.opts.always)}function tr(e,t){var n,r,i,o,a;for(n in e)if(r=x.camelCase(n),i=t[r],o=e[n],x.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),a=x.cssHooks[r],a&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}x.Animation=x.extend(er,{tweener:function(e,t){x.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Qn[n]=Qn[n]||[],Qn[n].unshift(t)},prefilter:function(e,t){t?Gn.unshift(e):Gn.push(e)}});function nr(e,t,n){var r,i,o,a,s,l,u=this,c={},p=e.style,f=e.nodeType&&nn(e),d=x._data(e,"fxshow");n.queue||(s=x._queueHooks(e,"fx"),null==s.unqueued&&(s.unqueued=0,l=s.empty.fire,s.empty.fire=function(){s.unqueued||l()}),s.unqueued++,u.always(function(){u.always(function(){s.unqueued--,x.queue(e,"fx").length||s.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],"inline"===x.css(e,"display")&&"none"===x.css(e,"float")&&(x.support.inlineBlockNeedsLayout&&"inline"!==ln(e.nodeName)?p.zoom=1:p.display="inline-block")),n.overflow&&(p.overflow="hidden",x.support.shrinkWrapBlocks||u.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],Vn.exec(i)){if(delete t[r],o=o||"toggle"===i,i===(f?"hide":"show"))continue;c[r]=d&&d[r]||x.style(e,r)}if(!x.isEmptyObject(c)){d?"hidden"in d&&(f=d.hidden):d=x._data(e,"fxshow",{}),o&&(d.hidden=!f),f?x(e).show():u.done(function(){x(e).hide()}),u.done(function(){var t;x._removeData(e,"fxshow");for(t in c)x.style(e,t,c[t])});for(r in c)a=Zn(f?d[r]:0,r,u),r in d||(d[r]=a.start,f&&(a.end=a.start,a.start="width"===r||"height"===r?1:0))}}function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}x.Tween=rr,rr.prototype={constructor:rr,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(x.cssNumber[n]?"":"px")},cur:function(){var e=rr.propHooks[this.prop];return e&&e.get?e.get(this):rr.propHooks._default.get(this)},run:function(e){var t,n=rr.propHooks[this.prop];return this.pos=t=this.options.duration?x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rr.propHooks._default.set(this),this}},rr.prototype.init.prototype=rr.prototype,rr.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=x.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[x.cssProps[e.prop]]||x.cssHooks[e.prop])?x.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},rr.propHooks.scrollTop=rr.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.each(["toggle","show","hide"],function(e,t){var n=x.fn[t];x.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ir(t,!0),e,r,i)}}),x.fn.extend({fadeTo:function(e,t,n,r){return this.filter(nn).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=x.isEmptyObject(e),o=x.speed(t,n,r),a=function(){var t=er(this,x.extend({},e),o);(i||x._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=x.timers,a=x._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&Jn.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&x.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=x._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=x.timers,a=r?r.length:0;for(n.finish=!0,x.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function ir(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=Zt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}x.each({slideDown:ir("show"),slideUp:ir("hide"),slideToggle:ir("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){x.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),x.speed=function(e,t,n){var r=e&&"object"==typeof e?x.extend({},e):{complete:n||!n&&t||x.isFunction(e)&&e,duration:e,easing:n&&t||t&&!x.isFunction(t)&&t};return r.duration=x.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in x.fx.speeds?x.fx.speeds[r.duration]:x.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){x.isFunction(r.old)&&r.old.call(this),r.queue&&x.dequeue(this,r.queue)},r},x.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},x.timers=[],x.fx=rr.prototype.init,x.fx.tick=function(){var e,n=x.timers,r=0;for(Xn=x.now();n.length>r;r++)e=n[r],e()||n[r]!==e||n.splice(r--,1);n.length||x.fx.stop(),Xn=t},x.fx.timer=function(e){e()&&x.timers.push(e)&&x.fx.start()},x.fx.interval=13,x.fx.start=function(){Un||(Un=setInterval(x.fx.tick,x.fx.interval))},x.fx.stop=function(){clearInterval(Un),Un=null},x.fx.speeds={slow:600,fast:200,_default:400},x.fx.step={},x.expr&&x.expr.filters&&(x.expr.filters.animated=function(e){return x.grep(x.timers,function(t){return e===t.elem}).length}),x.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){x.offset.setOffset(this,e,t)});var n,r,o={top:0,left:0},a=this[0],s=a&&a.ownerDocument;if(s)return n=s.documentElement,x.contains(n,a)?(typeof a.getBoundingClientRect!==i&&(o=a.getBoundingClientRect()),r=or(s),{top:o.top+(r.pageYOffset||n.scrollTop)-(n.clientTop||0),left:o.left+(r.pageXOffset||n.scrollLeft)-(n.clientLeft||0)}):o},x.offset={setOffset:function(e,t,n){var r=x.css(e,"position");"static"===r&&(e.style.position="relative");var i=x(e),o=i.offset(),a=x.css(e,"top"),s=x.css(e,"left"),l=("absolute"===r||"fixed"===r)&&x.inArray("auto",[a,s])>-1,u={},c={},p,f;l?(c=i.position(),p=c.top,f=c.left):(p=parseFloat(a)||0,f=parseFloat(s)||0),x.isFunction(t)&&(t=t.call(e,n,o)),null!=t.top&&(u.top=t.top-o.top+p),null!=t.left&&(u.left=t.left-o.left+f),"using"in t?t.using.call(e,u):i.css(u)}},x.fn.extend({position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===x.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),x.nodeName(e[0],"html")||(n=e.offset()),n.top+=x.css(e[0],"borderTopWidth",!0),n.left+=x.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-x.css(r,"marginTop",!0),left:t.left-n.left-x.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||s;while(e&&!x.nodeName(e,"html")&&"static"===x.css(e,"position"))e=e.offsetParent;return e||s})}}),x.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);x.fn[e]=function(i){return x.access(this,function(e,i,o){var a=or(e);return o===t?a?n in a?a[n]:a.document.documentElement[i]:e[i]:(a?a.scrollTo(r?x(a).scrollLeft():o,r?o:x(a).scrollTop()):e[i]=o,t)},e,i,arguments.length,null)}});function or(e){return x.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}x.each({Height:"height",Width:"width"},function(e,n){x.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){x.fn[i]=function(i,o){var a=arguments.length&&(r||"boolean"!=typeof i),s=r||(i===!0||o===!0?"margin":"border");return x.access(this,function(n,r,i){var o;return x.isWindow(n)?n.document.documentElement["client"+e]:9===n.nodeType?(o=n.documentElement,Math.max(n.body["scroll"+e],o["scroll"+e],n.body["offset"+e],o["offset"+e],o["client"+e])):i===t?x.css(n,r,s):x.style(n,r,i,s)},n,a?i:t,a,null)}})}),x.fn.size=function(){return this.length},x.fn.andSelf=x.fn.addBack,"object"==typeof module&&module&&"object"==typeof module.exports?module.exports=x:(e.jQuery=e.$=x,"function"==typeof define&&define.amd&&define("jquery",[],function(){return x}))})(window); \ No newline at end of file
diff --git a/Train/main.js b/Train/main.js
deleted file mode 100644
index af75cf7..0000000
--- a/Train/main.js
+++ /dev/null
@@ -1,21 +0,0 @@
1var myName = "@spearmint";
2
3var red = [0, 100, 63];
4var orange = [40, 100, 60];
5var green = [75, 100, 40];
6var blue = [196, 77, 55];
7var purple = [280, 50, 60];
8var letterColors = [red, orange, green, blue, purple];
9
10drawName(myName, letterColors);
11
12if(10 < 3)
13{
14 bubbleShape = 'square';
15}
16else
17{
18 bubbleShape = 'circle';
19}
20
21bounceBubbles(); \ No newline at end of file
Powered by cgit v1.2.3 (git 2.41.0)