From 991d6da530692f725ce33d46d3459856504f7610 Mon Sep 17 00:00:00 2001 From: martind2000 Date: Thu, 17 Mar 2016 08:20:54 +0000 Subject: [PATCH] init --- .gitignore | 8 + .idea/.name | 1 + .idea/compiler.xml | 22 + .idea/copyright/profiles_settings.xml | 3 + .idea/encodings.xml | 6 + .idea/gradle.xml | 18 + .idea/misc.xml | 46 ++ .idea/modules.xml | 9 + .idea/runConfigurations.xml | 12 + .idea/vcs.xml | 6 + app/.gitignore | 1 + app/build.gradle | 26 ++ app/proguard-rules.pro | 17 + .../silvrtree/traintimes/ApplicationTest.java | 13 + app/src/main/AndroidManifest.xml | 24 + .../main/assets/assets/active_departure.png | Bin 0 -> 364 bytes app/src/main/assets/assets/active_stop.png | Bin 0 -> 317 bytes .../main/assets/assets/active_terminate.png | Bin 0 -> 365 bytes app/src/main/assets/assets/fm-old.png | Bin 0 -> 10136 bytes app/src/main/assets/assets/fm.png | Bin 0 -> 2604 bytes .../main/assets/assets/previous_departure.png | Bin 0 -> 357 bytes app/src/main/assets/assets/previous_stop.png | Bin 0 -> 361 bytes .../main/assets/assets/previous_terminate.png | Bin 0 -> 353 bytes app/src/main/assets/assets/tf_small_pale.png | Bin 0 -> 2398 bytes app/src/main/assets/css/normalize-min.css | 76 ++++ app/src/main/assets/css/normalize.css | 427 ++++++++++++++++++ app/src/main/assets/css/skeleton-min.css | 181 ++++++++ app/src/main/assets/css/skeleton.css | 418 +++++++++++++++++ app/src/main/assets/ejs/propertrains.ejs | 17 + app/src/main/assets/ejs/routes.ejs | 22 + app/src/main/assets/ejs/trains.ejs | 18 + app/src/main/assets/feeds.html | 93 ++++ app/src/main/assets/js/app.prod.js | 116 +++++ app/src/main/assets/js/fx.js | 123 +++++ app/src/main/assets/js/fx_methods.js | 71 +++ app/src/main/assets/js/jquery.unveil.js | 70 +++ app/src/main/assets/js/output.min.js | 3 + app/src/main/assets/js/route.js | 58 +++ app/src/main/assets/js/zprogress.js | 74 +++ app/src/main/assets/stops.html | 55 +++ .../silvrtree/traintimes/MainActivity.java | 329 ++++++++++++++ .../silvrtree/traintimes/StopsFragment.java | 123 +++++ app/src/main/res/anim/frag_in.xml | 8 + app/src/main/res/anim/frag_out.xml | 8 + app/src/main/res/drawable/ic_menu_refresh.xml | 25 + .../res/drawable/perm_group_sync_settings.png | Bin 0 -> 1142 bytes app/src/main/res/layout/activity_main.xml | 55 +++ app/src/main/res/layout/fragment_stops.xml | 31 ++ app/src/main/res/menu/menu_main.xml | 28 ++ app/src/main/res/menu/menu_return.xml | 8 + app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 1792 bytes app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1228 bytes app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 2476 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 3766 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 5303 bytes app/src/main/res/values-w820dp/dimens.xml | 6 + app/src/main/res/values/colors.xml | 6 + app/src/main/res/values/dimens.xml | 5 + app/src/main/res/values/strings.xml | 8 + app/src/main/res/values/styles.xml | 11 + .../silvrtree/traintimes/ExampleUnitTest.java | 15 + build.gradle | 23 + gradle.properties | 18 + gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 53637 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 160 +++++++ gradlew.bat | 90 ++++ settings.gradle | 1 + 68 files changed, 2998 insertions(+) create mode 100644 .gitignore create mode 100644 .idea/.name create mode 100644 .idea/compiler.xml create mode 100644 .idea/copyright/profiles_settings.xml create mode 100644 .idea/encodings.xml create mode 100644 .idea/gradle.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/runConfigurations.xml create mode 100644 .idea/vcs.xml create mode 100644 app/.gitignore create mode 100644 app/build.gradle create mode 100644 app/proguard-rules.pro create mode 100644 app/src/androidTest/java/com/silvrtree/traintimes/ApplicationTest.java create mode 100644 app/src/main/AndroidManifest.xml create mode 100644 app/src/main/assets/assets/active_departure.png create mode 100644 app/src/main/assets/assets/active_stop.png create mode 100644 app/src/main/assets/assets/active_terminate.png create mode 100644 app/src/main/assets/assets/fm-old.png create mode 100644 app/src/main/assets/assets/fm.png create mode 100644 app/src/main/assets/assets/previous_departure.png create mode 100644 app/src/main/assets/assets/previous_stop.png create mode 100644 app/src/main/assets/assets/previous_terminate.png create mode 100644 app/src/main/assets/assets/tf_small_pale.png create mode 100644 app/src/main/assets/css/normalize-min.css create mode 100644 app/src/main/assets/css/normalize.css create mode 100644 app/src/main/assets/css/skeleton-min.css create mode 100644 app/src/main/assets/css/skeleton.css create mode 100644 app/src/main/assets/ejs/propertrains.ejs create mode 100644 app/src/main/assets/ejs/routes.ejs create mode 100644 app/src/main/assets/ejs/trains.ejs create mode 100644 app/src/main/assets/feeds.html create mode 100644 app/src/main/assets/js/app.prod.js create mode 100644 app/src/main/assets/js/fx.js create mode 100644 app/src/main/assets/js/fx_methods.js create mode 100644 app/src/main/assets/js/jquery.unveil.js create mode 100644 app/src/main/assets/js/output.min.js create mode 100644 app/src/main/assets/js/route.js create mode 100644 app/src/main/assets/js/zprogress.js create mode 100644 app/src/main/assets/stops.html create mode 100644 app/src/main/java/com/silvrtree/traintimes/MainActivity.java create mode 100644 app/src/main/java/com/silvrtree/traintimes/StopsFragment.java create mode 100644 app/src/main/res/anim/frag_in.xml create mode 100644 app/src/main/res/anim/frag_out.xml create mode 100644 app/src/main/res/drawable/ic_menu_refresh.xml create mode 100644 app/src/main/res/drawable/perm_group_sync_settings.png create mode 100644 app/src/main/res/layout/activity_main.xml create mode 100644 app/src/main/res/layout/fragment_stops.xml create mode 100644 app/src/main/res/menu/menu_main.xml create mode 100644 app/src/main/res/menu/menu_return.xml create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 app/src/main/res/values-w820dp/dimens.xml create mode 100644 app/src/main/res/values/colors.xml create mode 100644 app/src/main/res/values/dimens.xml create mode 100644 app/src/main/res/values/strings.xml create mode 100644 app/src/main/res/values/styles.xml create mode 100644 app/src/test/java/com/silvrtree/traintimes/ExampleUnitTest.java create mode 100644 build.gradle create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c6cbe56 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +*.iml +.gradle +/local.properties +/.idea/workspace.xml +/.idea/libraries +.DS_Store +/build +/captures diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..d9a4a1e --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +TrainTimes \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..96cc43e --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml new file mode 100644 index 0000000..e7bedf3 --- /dev/null +++ b/.idea/copyright/profiles_settings.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..97626ba --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..8d2df47 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..5d19981 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..808e001 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml new file mode 100644 index 0000000..7f68460 --- /dev/null +++ b/.idea/runConfigurations.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..6564d52 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..796b96d --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..fc42b4a --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,26 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion 23 + buildToolsVersion "23.0.1" + + defaultConfig { + applicationId "com.silvrtree.traintimes" + minSdkVersion 21 + targetSdkVersion 23 + versionCode 1 + versionName "1.0" + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } +} + +dependencies { + compile fileTree(dir: 'libs', include: ['*.jar']) + testCompile 'junit:junit:4.12' + compile 'com.android.support:appcompat-v7:23.1.1' +} diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..c23cf02 --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,17 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in C:\Users\marti\AppData\Local\Android\sdk/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} diff --git a/app/src/androidTest/java/com/silvrtree/traintimes/ApplicationTest.java b/app/src/androidTest/java/com/silvrtree/traintimes/ApplicationTest.java new file mode 100644 index 0000000..5c9a9c1 --- /dev/null +++ b/app/src/androidTest/java/com/silvrtree/traintimes/ApplicationTest.java @@ -0,0 +1,13 @@ +package com.silvrtree.traintimes; + +import android.app.Application; +import android.test.ApplicationTestCase; + +/** + * Testing Fundamentals + */ +public class ApplicationTest extends ApplicationTestCase { + public ApplicationTest() { + super(Application.class); + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..bd32127 --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + diff --git a/app/src/main/assets/assets/active_departure.png b/app/src/main/assets/assets/active_departure.png new file mode 100644 index 0000000000000000000000000000000000000000..90ef02dd264aa7a92b08459b87f7ded412e3e4bd GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eL!3-pSzIhV?q&N#aB8wRq_zr_GscuA07Farx451)XTo}QI$Lf)LY3l=Rp zdHU+}?|TpIU<4}Z^mK6yk+_`NcT=p%fXAgh^yZo%1qFpK|LZR;xyW_=x5;;txhz+0 z0}>Y;V6ZBf_HMeh%5(>&WjQ&wr%V!%mNhc$ev&E3%(bYpIB#|**PV{C<8MBtWR}jG zsdG9wHP!IAp=L!bcg73``9m#QdLuu^xmV4CeoWLLEZF9U`Kgl2ScV z(mi|j+}*eD-v9sq4MMlh1)3*N666=mz{18SAf{(!n>S~{qLZhex5@8v0LoQ*x;TbN zTrQpPny*2D!|midb5-Bd-|H_j+?C3n8-HK2OM&6Q9zkP{yNX+sYA62F?tT1bR#m3L zu1SeeZ}#~Jo$Wf5R_lM?tL=N@zcSQz@OW;ok{1Lzg2B_(&t;ucLK6V{S#S>k literal 0 HcmV?d00001 diff --git a/app/src/main/assets/assets/active_terminate.png b/app/src/main/assets/assets/active_terminate.png new file mode 100644 index 0000000000000000000000000000000000000000..1cce342904e111864ec4fe530686652dd03e811e GIT binary patch literal 365 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eL!3-pSzIhV?q&N#aB8wRq_zr_GP=}Ck zhpbPV|H{hV#(eYMTz-4P zj+5aQ`(>vS^PTj9R!#Xo>5Sd^&N{7iJ_{vF?Psl*LY^f;aE(yekx1 zS77n%gR*nJdQM7&nds>vYx{1lCBL?2mF}5x{^gk!&r_y5v~@BGzi`nxt*@W)uJIYS Y&<7F8r`G2~fi7b3boFyt=akR{0O;I*?f?J) literal 0 HcmV?d00001 diff --git a/app/src/main/assets/assets/fm-old.png b/app/src/main/assets/assets/fm-old.png new file mode 100644 index 0000000000000000000000000000000000000000..f77b34dd663653892223b42b6a36047d5ab97a4a GIT binary patch literal 10136 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 W*yO>yGcrIoF?hQAxvXbP0l+XkKh4q)q literal 0 HcmV?d00001 diff --git a/app/src/main/assets/assets/previous_terminate.png b/app/src/main/assets/assets/previous_terminate.png new file mode 100644 index 0000000000000000000000000000000000000000..25f9cbeb8c030b462c79a38a17f24b73b77a37a1 GIT binary patch literal 353 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eL!3-pSzIhV?q&N#aB8wRq_zr_GC=G%vuDo+lC`z9Kyv2HnLx6>z8*+I08j+Tg#b9aqobp< zv$LnC2Pks)?%jL$?*0G&KS^?nI?xV@k|4ie1{O9RJ^?X3JuBOUyg75{Em*YZDCB2!EccSfH`^eb_J8X(uCoa6p z-N(}%yiw=z-^d_^tGh41D$$&8JR|bFrrbm(Zdb7jy&>D;?_Jodd{>++NBHKWPJ`njxgN@xNA6Iqx0 literal 0 HcmV?d00001 diff --git a/app/src/main/assets/assets/tf_small_pale.png b/app/src/main/assets/assets/tf_small_pale.png new file mode 100644 index 0000000000000000000000000000000000000000..3233080e2be55f213b7d1da284953e3a50b858b1 GIT binary patch literal 2398 zcmV-k38D6hP)pF2XskIMF-yq4ig15y|5*500006VoOIv0RI600RN!9r;`8x2&{U@|lrB*E<)IqJL8jVz`-=^YA)qa_dhCwq>bw=%UrW(y4G@=kl zLy9S8(ix78e05~);F6oZ1xY0&HXdL|#-9lO=Q zt-5z-zPr<^)dXBl%*T^S7E8O>&auD)$?0@1FE7hL!#cn6I*~{ulgU&nmCj^2q(e71 z-Ta{I^a;hW!+qzgM*eqs{ML<$Uv7?EzdBHRuI>1-_VQBI-P@LF^{Tj%$>ow87e;W7 z<3a`)GHBs}pLmhlxYF5d(B+!E*VI~er2j&-uD3@pE`$VkWJOHG*^gV%u-E4{nT*3j zgLM}arH99EHsED8pJ%&-fh+g{T{3WBhT}_T=O9k~eD|4C9Tmq-qr+k_n9k&*k)X@0 zT$*WJP~I_2G%czhJ56Jeuz;hhE22#^(|NKSN5R8)2?K+$0#P#f0Syu*>(-g+wz86e zi{}CkdpesB`K-E;8!AP)QgK|VD3k7qmQo)1adz->Kv-lW6cHPkTo@XZh{7P}#<+~o z1AtQ;$F*R<`cQo>6tc#w?ZD7v$LR&-J)ct_TNN|e9H@zSG$SlGvneoRZ#>t2A zSOkmeNB0#ahd3hEBmj)dNG|}AsdUIK^qf82UsDZvvDGkCVBM&?zbg7tnSvuA&f7d= z2J494$``wTC6>y?B0w3qYa}U3(lXL&E`oTZ1wO{R>(%HTEBrH!&wx87Y)kP!zkRbF_ zogTh+Ns2S4-vEfm$pO+%-`~py%X|-qau`SRxoqdm;=gZn?XP`&b5JvBau|i6(H&Hq zT}{K`d`y7G6U1ChATT73arzXjIjLVAkC9cf0%E_Ft*DHqHSjPj- z-Zf+T+a<-}rap&1oGTPqIX*f%`eY~+46HqUYV!t9Js#P2QQoUv%A`{^{Q&Xs+O)9U zefCsuO?5JzCXr-({4Q5-%~?%bOEQ@zp7uLJbDqehQVCs87ks#vOgJHfDZ#uXFZr*1 zZWi{TUO(2D&aK^kqG6}SQ_Qh%_w3pE?z?~f=9{ba^*63u;Sr4AfBB{0bS}9Af4|y> zEBS01C)h5AT+}Hn&G&Ruvob2eq#UPA{5HGKG0zIOMJ)s)2OE0`VZ@!vo5^HSuP$~SK6vnVpMAD$ zS{z@nky=AKODyb~?yk1#dNaA~@Rd4L1f(LsjJ)~Dm3lE4Ue>k)kW9oi%fg?|Kbp7u z3_2aWS5{O!fBrnRDZUfEXa|{TI(8koJWqctEBu3IQk@ z)>+{FHy?fU^%q|h3Wan!y$L|d9y)Mf_vfEmmQ2((6g|;fS3^#9SCv)QpU!56F2ACP z8eURO5M-a#=64y2K{ijiLs1g6zDt$L=4#HKfh9s+RFnbh0uX09LFcLR zxvmZ=C3E)@HL)R5K94`~-PGFpvM^^gr9rIHD8HFmvE4ThxE(hX`|r_vn~IlEw1 zDdlC_fjYXR-)8Hrszk0)x|eeO5`f%r3uG>uN*_kd5mf4)enMgA(u^A^j^8(H?$MZ$ zYh-RMm!=o7fTL&!E=5IuG`uo?^Eyx5?&ps>qi((L85h8voszpOBzHO@@FE~&n6jt58gNTxin?1SM(fII7 zSPfUKX6mB6v-#X=B*1uq%2MhGBBTdBW;n?e^3bAfQ%GZueO4nGfe#W#n!RLb zqL&z?S16=uZINa-Wz#LYR>NR|f0XFPo#Q|x-qeG8-IWzBM}J0{#eiShD;=M>lAla< zG6qwLrLCi*G$WBw$~(UhG>~W@oRLAVzqXn<@hHK=jK{nLnQvI9e&L3>RA#kW-EOxu zo^G9drQw%`6A6cw)l)dcXocvaVi-l?p*!sJVwxr#e|2G6nztbb>ll|AjYbA+rc~xg zV7AWg()eD)!!0B@U&s^+{7vWc$xIe_UPU%8R!T!W+cC|F9S#ShHUAs@AL|c2C!%fK Qng9R*07*qoM6N<$f{28rlmGw# literal 0 HcmV?d00001 diff --git a/app/src/main/assets/css/normalize-min.css b/app/src/main/assets/css/normalize-min.css new file mode 100644 index 0000000..2b0030b --- /dev/null +++ b/app/src/main/assets/css/normalize-min.css @@ -0,0 +1,76 @@ +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, +menu, +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-color:transparent;} +a:active, +a:hover{outline:0;} +abbr[title]{border-bottom:1px dotted;} +b, +strong{font-weight:bold;} +dfn{font-style:italic;} +h1{font-size:2em;margin:0.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:-0.5em;} +sub{bottom:-0.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 #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em;} +legend{border:0;padding:0;} +textarea{overflow:auto;} +optgroup{font-weight:bold;} +table{border-collapse:collapse;border-spacing:0;} +td, +th{padding:0;} diff --git a/app/src/main/assets/css/normalize.css b/app/src/main/assets/css/normalize.css new file mode 100644 index 0000000..458eea1 --- /dev/null +++ b/app/src/main/assets/css/normalize.css @@ -0,0 +1,427 @@ +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ + +/** + * 1. Set default font family to sans-serif. + * 2. Prevent iOS text size adjust after orientation change, without disabling + * user zoom. + */ + +html { + font-family: sans-serif; /* 1 */ + -ms-text-size-adjust: 100%; /* 2 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/** + * Remove default margin. + */ + +body { + margin: 0; +} + +/* HTML5 display definitions + ========================================================================== */ + +/** + * Correct `block` display not defined for any HTML5 element in IE 8/9. + * Correct `block` display not defined for `details` or `summary` in IE 10/11 + * and Firefox. + * Correct `block` display not defined for `main` in IE 11. + */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} + +/** + * 1. Correct `inline-block` display not defined in IE 8/9. + * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. + */ + +audio, +canvas, +progress, +video { + display: inline-block; /* 1 */ + vertical-align: baseline; /* 2 */ +} + +/** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ + +audio:not([controls]) { + display: none; + height: 0; +} + +/** + * Address `[hidden]` styling not present in IE 8/9/10. + * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. + */ + +[hidden], +template { + display: none; +} + +/* Links + ========================================================================== */ + +/** + * Remove the gray background color from active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * Improve readability when focused and also mouse hovered in all browsers. + */ + +a:active, +a:hover { + outline: 0; +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Address styling not present in IE 8/9/10/11, Safari, and Chrome. + */ + +abbr[title] { + border-bottom: 1px dotted; +} + +/** + * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. + */ + +b, +strong { + font-weight: bold; +} + +/** + * Address styling not present in Safari and Chrome. + */ + +dfn { + font-style: italic; +} + +/** + * Address variable `h1` font-size and margin within `section` and `article` + * contexts in Firefox 4+, Safari, and Chrome. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/** + * Address styling not present in IE 8/9. + */ + +mark { + background: #ff0; + color: #000; +} + +/** + * Address inconsistent and variable font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Remove border when inside `a` element in IE 8/9/10. + */ + +img { + border: 0; +} + +/** + * Correct overflow not hidden in IE 9/10/11. + */ + +svg:not(:root) { + overflow: hidden; +} + +/* Grouping content + ========================================================================== */ + +/** + * Address margin not present in IE 8/9 and Safari. + */ + +figure { + margin: 1em 40px; +} + +/** + * Address differences between Firefox and other browsers. + */ + +hr { + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} + +/** + * Contain overflow in all browsers. + */ + +pre { + overflow: auto; +} + +/** + * Address odd `em`-unit font size rendering in all browsers. + */ + +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} + +/* Forms + ========================================================================== */ + +/** + * Known limitation: by default, Chrome and Safari on OS X allow very limited + * styling of `select`, unless a `border` property is set. + */ + +/** + * 1. Correct color not being inherited. + * Known issue: affects color of disabled elements. + * 2. Correct font properties not being inherited. + * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. + */ + +button, +input, +optgroup, +select, +textarea { + color: inherit; /* 1 */ + font: inherit; /* 2 */ + margin: 0; /* 3 */ +} + +/** + * Address `overflow` set to `hidden` in IE 8/9/10/11. + */ + +button { + overflow: visible; +} + +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. + * Correct `select` style inheritance in Firefox. + */ + +button, +select { + text-transform: none; +} + +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + */ + +button, +html input[type="button"], /* 1 */ +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; /* 2 */ + cursor: pointer; /* 3 */ +} + +/** + * Re-set default cursor for disabled elements. + */ + +button[disabled], +html input[disabled] { + cursor: default; +} + +/** + * Remove inner padding and border in Firefox 4+. + */ + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +/** + * Address Firefox 4+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ + +input { + line-height: normal; +} + +/** + * It's recommended that you don't attempt to style these elements. + * Firefox's implementation doesn't respect box-sizing, padding, or width. + * + * 1. Address box sizing set to `content-box` in IE 8/9/10. + * 2. Remove excess padding in IE 8/9/10. + */ + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Fix the cursor style for Chrome's increment/decrement buttons. For certain + * `font-size` values of the `input`, it causes the cursor style of the + * decrement button to change from `default` to `text`. + */ + +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Address `appearance` set to `searchfield` in Safari and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari and Chrome + * (include `-moz` to future-proof). + */ + +input[type="search"] { + -webkit-appearance: textfield; /* 1 */ + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; /* 2 */ + box-sizing: content-box; +} + +/** + * Remove inner padding and search cancel button in Safari and Chrome on OS X. + * Safari (but not Chrome) clips the cancel button when the search input has + * padding (and `textfield` appearance). + */ + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * Define consistent border, margin, and padding. + */ + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +/** + * 1. Correct `color` not being inherited in IE 8/9/10/11. + * 2. Remove padding so people aren't caught out if they zero out fieldsets. + */ + +legend { + border: 0; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Remove default vertical scrollbar in IE 8/9/10/11. + */ + +textarea { + overflow: auto; +} + +/** + * Don't inherit the `font-weight` (applied by a rule above). + * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. + */ + +optgroup { + font-weight: bold; +} + +/* Tables + ========================================================================== */ + +/** + * Remove most spacing between table cells. + */ + +table { + border-collapse: collapse; + border-spacing: 0; +} + +td, +th { + padding: 0; +} diff --git a/app/src/main/assets/css/skeleton-min.css b/app/src/main/assets/css/skeleton-min.css new file mode 100644 index 0000000..149307f --- /dev/null +++ b/app/src/main/assets/css/skeleton-min.css @@ -0,0 +1,181 @@ +.container{position:relative;width:100%;max-width:960px;margin:0 auto;padding:0 20px;box-sizing:border-box;} +.column, +.columns{width:100%;float:left;box-sizing:border-box;} +@media (min-width:400px){.container{width:85%;padding:0;} +} +@media (min-width:550px){.container{width:80%;} +.column, +.columns{margin-left:4%;} +.column:first-child, +.columns:first-child{margin-left:0;} +.one.column, +.one.columns{width:4.66666666667%;} +.two.columns{width:13.3333333333%;} +.three.columns{width:22%;} +.four.columns{width:30.6666666667%;} +.five.columns{width:39.3333333333%;} +.six.columns{width:48%;} +.seven.columns{width:56.6666666667%;} +.eight.columns{width:65.3333333333%;} +.nine.columns{width:74.0%;} +.ten.columns{width:82.6666666667%;} +.eleven.columns{width:91.3333333333%;} +.twelve.columns{width:100%;margin-left:0;} +.one-third.column{width:30.6666666667%;} +.two-thirds.column{width:65.3333333333%;} +.one-half.column{width:48%;} +.offset-by-one.column, +.offset-by-one.columns{margin-left:8.66666666667%;} +.offset-by-two.column, +.offset-by-two.columns{margin-left:17.3333333333%;} +.offset-by-three.column, +.offset-by-three.columns{margin-left:26%;} +.offset-by-four.column, +.offset-by-four.columns{margin-left:34.6666666667%;} +.offset-by-five.column, +.offset-by-five.columns{margin-left:43.3333333333%;} +.offset-by-six.column, +.offset-by-six.columns{margin-left:52%;} +.offset-by-seven.column, +.offset-by-seven.columns{margin-left:60.6666666667%;} +.offset-by-eight.column, +.offset-by-eight.columns{margin-left:69.3333333333%;} +.offset-by-nine.column, +.offset-by-nine.columns{margin-left:78.0%;} +.offset-by-ten.column, +.offset-by-ten.columns{margin-left:86.6666666667%;} +.offset-by-eleven.column, +.offset-by-eleven.columns{margin-left:95.3333333333%;} +.offset-by-one-third.column, +.offset-by-one-third.columns{margin-left:34.6666666667%;} +.offset-by-two-thirds.column, +.offset-by-two-thirds.columns{margin-left:69.3333333333%;} +.offset-by-one-half.column, +.offset-by-one-half.columns{margin-left:52%;} +} +html{font-size:62.5%;} +body{font-size:1.5em;line-height:1.6;font-weight:400;font-family:"Raleway", "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif;color:#222;} +h1, h2, h3, h4, h5, h6{margin-top:0;margin-bottom:2rem;font-weight:300;} +h1{font-size:4.0rem;line-height:1.2;letter-spacing:-.1rem;} +h2{font-size:3.6rem;line-height:1.25;letter-spacing:-.1rem;} +h3{font-size:3.0rem;line-height:1.3;letter-spacing:-.1rem;} +h4{font-size:2.4rem;line-height:1.35;letter-spacing:-.08rem;} +h5{font-size:1.8rem;line-height:1.5;letter-spacing:-.05rem;} +h6{font-size:1.5rem;line-height:1.6;letter-spacing:0;} +@media (min-width:550px){h1{font-size:5.0rem;} +h2{font-size:4.2rem;} +h3{font-size:3.6rem;} +h4{font-size:3.0rem;} +h5{font-size:2.4rem;} +h6{font-size:1.5rem;} +} +p{margin-top:0;} +a{color:#1EAEDB;} +a:hover{color:#0FA0CE;} +.button, +button, +input[type="submit"], +input[type="reset"], +input[type="button"]{display:inline-block;height:38px;padding:0 30px;color:#555;text-align:center;font-size:11px;font-weight:600;line-height:38px;letter-spacing:.1rem;text-transform:uppercase;text-decoration:none;white-space:nowrap;background-color:transparent;border-radius:4px;border:1px solid #bbb;cursor:pointer;box-sizing:border-box;} +.button:hover, +button:hover, +input[type="submit"]:hover, +input[type="reset"]:hover, +input[type="button"]:hover, +.button:focus, +button:focus, +input[type="submit"]:focus, +input[type="reset"]:focus, +input[type="button"]:focus{color:#333;border-color:#888;outline:0;} +.button.button-primary, +button.button-primary, +input[type="submit"].button-primary, +input[type="reset"].button-primary, +input[type="button"].button-primary{color:#FFF;background-color:#33C3F0;border-color:#33C3F0;} +.button.button-primary:hover, +button.button-primary:hover, +input[type="submit"].button-primary:hover, +input[type="reset"].button-primary:hover, +input[type="button"].button-primary:hover, +.button.button-primary:focus, +button.button-primary:focus, +input[type="submit"].button-primary:focus, +input[type="reset"].button-primary:focus, +input[type="button"].button-primary:focus{color:#FFF;background-color:#1EAEDB;border-color:#1EAEDB;} +input[type="email"], +input[type="number"], +input[type="search"], +input[type="text"], +input[type="tel"], +input[type="url"], +input[type="password"], +textarea, +select{height:38px;padding:6px 10px;background-color:#fff;border:1px solid #D1D1D1;border-radius:4px;box-shadow:none;box-sizing:border-box;} +input[type="email"], +input[type="number"], +input[type="search"], +input[type="text"], +input[type="tel"], +input[type="url"], +input[type="password"], +textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;} +textarea{min-height:65px;padding-top:6px;padding-bottom:6px;} +input[type="email"]:focus, +input[type="number"]:focus, +input[type="search"]:focus, +input[type="text"]:focus, +input[type="tel"]:focus, +input[type="url"]:focus, +input[type="password"]:focus, +textarea:focus, +select:focus{border:1px solid #33C3F0;outline:0;} +label, +legend{display:block;margin-bottom:.5rem;font-weight:600;} +fieldset{padding:0;border-width:0;} +input[type="checkbox"], +input[type="radio"]{display:inline;} +label > .label-body{display:inline-block;margin-left:.5rem;font-weight:normal;} +ul{list-style:circle inside;} +ol{list-style:decimal inside;} +ol, ul{padding-left:0;margin-top:0;} +ul ul, +ul ol, +ol ol, +ol ul{margin:1.5rem 0 1.7rem 3rem;font-size:90%;} +li{margin-bottom:1rem;} +code{padding:.2rem .5rem;margin:0 .2rem;font-size:90%;white-space:nowrap;background:#F1F1F1;border:1px solid #E1E1E1;border-radius:4px;} +pre > code{display:block;padding:1rem 1.5rem;white-space:pre;} +th, +td{padding:12px 15px;text-align:left;border-bottom:1px solid #E1E1E1;} +th:first-child, +td:first-child{padding-left:0;} +th:last-child, +td:last-child{padding-right:0;} +button, +.button{margin-bottom:1rem;} +input, +textarea, +select, +fieldset{margin-bottom:1.5rem;} +pre, +blockquote, +dl, +figure, +table, +p, +ul, +ol, +form{margin-bottom:2.5rem;} +.u-full-width{width:100%;box-sizing:border-box;} +.u-max-full-width{max-width:100%;box-sizing:border-box;} +.u-pull-right{float:right;} +.u-pull-left{float:left;} +hr{margin-top:3rem;margin-bottom:3.5rem;border-width:0;border-top:1px solid #E1E1E1;} +.container:after, +.row:after, +.u-cf{content:"";display:table;clear:both;} +@media (min-width:400px){} +@media (min-width:550px){} +@media (min-width:750px){} +@media (min-width:1000px){} +@media (min-width:1200px){} diff --git a/app/src/main/assets/css/skeleton.css b/app/src/main/assets/css/skeleton.css new file mode 100644 index 0000000..6e0819d --- /dev/null +++ b/app/src/main/assets/css/skeleton.css @@ -0,0 +1,418 @@ +/* +* Skeleton V2.0.4 +* Copyright 2014, Dave Gamache +* www.getskeleton.com +* Free to use under the MIT license. +* http://www.opensource.org/licenses/mit-license.php +* 12/29/2014 +*/ + + +/* Table of contents +–––––––––––––––––––––––––––––––––––––––––––––––––– +- Grid +- Base Styles +- Typography +- Links +- Buttons +- Forms +- Lists +- Code +- Tables +- Spacing +- Utilities +- Clearing +- Media Queries +*/ + + +/* Grid +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +.container { + position: relative; + width: 100%; + max-width: 960px; + margin: 0 auto; + padding: 0 20px; + box-sizing: border-box; } +.column, +.columns { + width: 100%; + float: left; + box-sizing: border-box; } + +/* For devices larger than 400px */ +@media (min-width: 400px) { + .container { + width: 85%; + padding: 0; } +} + +/* For devices larger than 550px */ +@media (min-width: 550px) { + .container { + width: 80%; } + .column, + .columns { + margin-left: 4%; } + .column:first-child, + .columns:first-child { + margin-left: 0; } + + .one.column, + .one.columns { width: 4.66666666667%; } + .two.columns { width: 13.3333333333%; } + .three.columns { width: 22%; } + .four.columns { width: 30.6666666667%; } + .five.columns { width: 39.3333333333%; } + .six.columns { width: 48%; } + .seven.columns { width: 56.6666666667%; } + .eight.columns { width: 65.3333333333%; } + .nine.columns { width: 74.0%; } + .ten.columns { width: 82.6666666667%; } + .eleven.columns { width: 91.3333333333%; } + .twelve.columns { width: 100%; margin-left: 0; } + + .one-third.column { width: 30.6666666667%; } + .two-thirds.column { width: 65.3333333333%; } + + .one-half.column { width: 48%; } + + /* Offsets */ + .offset-by-one.column, + .offset-by-one.columns { margin-left: 8.66666666667%; } + .offset-by-two.column, + .offset-by-two.columns { margin-left: 17.3333333333%; } + .offset-by-three.column, + .offset-by-three.columns { margin-left: 26%; } + .offset-by-four.column, + .offset-by-four.columns { margin-left: 34.6666666667%; } + .offset-by-five.column, + .offset-by-five.columns { margin-left: 43.3333333333%; } + .offset-by-six.column, + .offset-by-six.columns { margin-left: 52%; } + .offset-by-seven.column, + .offset-by-seven.columns { margin-left: 60.6666666667%; } + .offset-by-eight.column, + .offset-by-eight.columns { margin-left: 69.3333333333%; } + .offset-by-nine.column, + .offset-by-nine.columns { margin-left: 78.0%; } + .offset-by-ten.column, + .offset-by-ten.columns { margin-left: 86.6666666667%; } + .offset-by-eleven.column, + .offset-by-eleven.columns { margin-left: 95.3333333333%; } + + .offset-by-one-third.column, + .offset-by-one-third.columns { margin-left: 34.6666666667%; } + .offset-by-two-thirds.column, + .offset-by-two-thirds.columns { margin-left: 69.3333333333%; } + + .offset-by-one-half.column, + .offset-by-one-half.columns { margin-left: 52%; } + +} + + +/* Base Styles +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +/* NOTE +html is set to 62.5% so that all the REM measurements throughout Skeleton +are based on 10px sizing. So basically 1.5rem = 15px :) */ +html { + font-size: 62.5%; } +body { + font-size: 1.5em; /* currently ems cause chrome bug misinterpreting rems on body element */ + line-height: 1.6; + font-weight: 400; + font-family: 'Roboto Slab', "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif; + color: #222; } + + +/* Typography +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +h1, h2, h3, h4, h5, h6 { + margin-top: 0; + margin-bottom: 2rem; + font-weight: 300; } +h1 { font-size: 4.0rem; line-height: 1.2; letter-spacing: -.1rem;} +h2 { font-size: 3.6rem; line-height: 1.25; letter-spacing: -.1rem; } +h3 { font-size: 3.0rem; line-height: 1.3; letter-spacing: -.1rem; } +h4 { font-size: 2.4rem; line-height: 1.35; letter-spacing: -.08rem; } +h5 { font-size: 1.8rem; line-height: 1.5; letter-spacing: -.05rem; } +h6 { font-size: 1.5rem; line-height: 1.6; letter-spacing: 0; } + +/* Larger than phablet */ +@media (min-width: 550px) { + h1 { font-size: 5.0rem; } + h2 { font-size: 4.2rem; } + h3 { font-size: 3.6rem; } + h4 { font-size: 3.0rem; } + h5 { font-size: 2.4rem; } + h6 { font-size: 1.5rem; } +} + +p { + margin-top: 0; } + + +/* Links +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +a { + color: #1EAEDB; } +a:hover { + color: #0FA0CE; } + + +/* Buttons +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +.button, +button, +input[type="submit"], +input[type="reset"], +input[type="button"] { + display: inline-block; + height: 38px; + padding: 0 30px; + color: #555; + text-align: center; + font-size: 11px; + font-weight: 600; + line-height: 38px; + letter-spacing: .1rem; + text-transform: uppercase; + text-decoration: none; + white-space: nowrap; + background-color: transparent; + border-radius: 4px; + border: 1px solid #bbb; + cursor: pointer; + box-sizing: border-box; } +.button:hover, +button:hover, +input[type="submit"]:hover, +input[type="reset"]:hover, +input[type="button"]:hover, +.button:focus, +button:focus, +input[type="submit"]:focus, +input[type="reset"]:focus, +input[type="button"]:focus { + color: #333; + border-color: #888; + outline: 0; } +.button.button-primary, +button.button-primary, +input[type="submit"].button-primary, +input[type="reset"].button-primary, +input[type="button"].button-primary { + color: #FFF; + background-color: #33C3F0; + border-color: #33C3F0; } +.button.button-primary:hover, +button.button-primary:hover, +input[type="submit"].button-primary:hover, +input[type="reset"].button-primary:hover, +input[type="button"].button-primary:hover, +.button.button-primary:focus, +button.button-primary:focus, +input[type="submit"].button-primary:focus, +input[type="reset"].button-primary:focus, +input[type="button"].button-primary:focus { + color: #FFF; + background-color: #1EAEDB; + border-color: #1EAEDB; } + + +/* Forms +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +input[type="email"], +input[type="number"], +input[type="search"], +input[type="text"], +input[type="tel"], +input[type="url"], +input[type="password"], +textarea, +select { + height: 38px; + padding: 6px 10px; /* The 6px vertically centers text on FF, ignored by Webkit */ + background-color: #fff; + border: 1px solid #D1D1D1; + border-radius: 4px; + box-shadow: none; + box-sizing: border-box; } +/* Removes awkward default styles on some inputs for iOS */ +input[type="email"], +input[type="number"], +input[type="search"], +input[type="text"], +input[type="tel"], +input[type="url"], +input[type="password"], +textarea { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; } +textarea { + min-height: 65px; + padding-top: 6px; + padding-bottom: 6px; } +input[type="email"]:focus, +input[type="number"]:focus, +input[type="search"]:focus, +input[type="text"]:focus, +input[type="tel"]:focus, +input[type="url"]:focus, +input[type="password"]:focus, +textarea:focus, +select:focus { + border: 1px solid #33C3F0; + outline: 0; } +label, +legend { + display: block; + margin-bottom: .5rem; + font-weight: 600; } +fieldset { + padding: 0; + border-width: 0; } +input[type="checkbox"], +input[type="radio"] { + display: inline; } +label > .label-body { + display: inline-block; + margin-left: .5rem; + font-weight: normal; } + + +/* Lists +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +ul { + list-style: circle inside; } +ol { + list-style: decimal inside; } +ol, ul { + padding-left: 0; + margin-top: 0; } +ul ul, +ul ol, +ol ol, +ol ul { + margin: 1.5rem 0 1.5rem 3rem; + font-size: 90%; } +li { + margin-bottom: 1rem; } + + +/* Code +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +code { + padding: .2rem .5rem; + margin: 0 .2rem; + font-size: 90%; + white-space: nowrap; + background: #F1F1F1; + border: 1px solid #E1E1E1; + border-radius: 4px; } +pre > code { + display: block; + padding: 1rem 1.5rem; + white-space: pre; } + + +/* Tables +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +th, +td { + padding: 12px 15px; + text-align: left; + border-bottom: 1px solid #E1E1E1; } +th:first-child, +td:first-child { + padding-left: 0; } +th:last-child, +td:last-child { + padding-right: 0; } + + +/* Spacing +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +button, +.button { + margin-bottom: 1rem; } +input, +textarea, +select, +fieldset { + margin-bottom: 1.5rem; } +pre, +blockquote, +dl, +figure, +table, +p, +ul, +ol, +form { + margin-bottom: 2.5rem; } + + +/* Utilities +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +.u-full-width { + width: 100%; + box-sizing: border-box; } +.u-max-full-width { + max-width: 100%; + box-sizing: border-box; } +.u-pull-right { + float: right; } +.u-pull-left { + float: left; } + + +/* Misc +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +hr { + margin-top: 3rem; + margin-bottom: 3.5rem; + border-width: 0; + border-top: 1px solid #E1E1E1; } + + +/* Clearing +–––––––––––––––––––––––––––––––––––––––––––––––––– */ + +/* Self Clearing Goodness */ +.container:after, +.row:after, +.u-cf { + content: ""; + display: table; + clear: both; } + + +/* Media Queries +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +/* +Note: The best way to structure the use of media queries is to create the queries +near the relevant code. For example, if you wanted to change the styles for buttons +on small devices, paste the mobile query code up in the buttons section and style it +there. +*/ + + +/* Larger than mobile */ +@media (min-width: 400px) {} + +/* Larger than phablet (also point when grid becomes active) */ +@media (min-width: 550px) {} + +/* Larger than tablet */ +@media (min-width: 750px) {} + +/* Larger than desktop */ +@media (min-width: 1000px) {} + +/* Larger than Desktop HD */ +@media (min-width: 1200px) {} diff --git a/app/src/main/assets/ejs/propertrains.ejs b/app/src/main/assets/ejs/propertrains.ejs new file mode 100644 index 0000000..1c6b2c2 --- /dev/null +++ b/app/src/main/assets/ejs/propertrains.ejs @@ -0,0 +1,17 @@ +
<%=locationName%> TO <%=filterLocationName%>
+ + + + + + +<% trainServices.forEach(function (item) { %> + + + + + + + <% }) %> + +
DestinationTimeStatusPlatform
<%=item.destination[0].locationName%><%=item.sta%><%=item.eta%><%=item.platform%>
diff --git a/app/src/main/assets/ejs/routes.ejs b/app/src/main/assets/ejs/routes.ejs new file mode 100644 index 0000000..3313aad --- /dev/null +++ b/app/src/main/assets/ejs/routes.ejs @@ -0,0 +1,22 @@ +<%=locationName%> + + +<% if (previousCallingPoints !== null) { +previousCallingPoints[0].callingPoint.forEach(function (item) { %> + + + + + <% })}; %> + + + + +<% if (subsequentCallingPoints !== null) { +subsequentCallingPoints[0].callingPoint.forEach(function (item) { %> + + + + + <% })}; %> +
<%=item.locationName%>
<%=locationName%>
<%=item.locationName%>
\ No newline at end of file diff --git a/app/src/main/assets/ejs/trains.ejs b/app/src/main/assets/ejs/trains.ejs new file mode 100644 index 0000000..20dc790 --- /dev/null +++ b/app/src/main/assets/ejs/trains.ejs @@ -0,0 +1,18 @@ +
<%=locationName%> TO <%=filterLocationName%>
+ + + + + + +<% if (trainServices !== null) { +trainServices.forEach(function (item) { %> + + + + + + + <% })}; %> + +
DestinationTimeStatusPlatform
<%=item.destination[0].locationName%><%=item.sta%><%=item.eta%><%=item.platform%>
diff --git a/app/src/main/assets/feeds.html b/app/src/main/assets/feeds.html new file mode 100644 index 0000000..7eda06b --- /dev/null +++ b/app/src/main/assets/feeds.html @@ -0,0 +1,93 @@ + + + + + + Feedmaster + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
StationTime
Paisley GS to Glasgow Central-- : --
Glasgow Central to Partick-- : --
Partick to Dumbarton Central-- : --
Glasgow Queen St to Dumbarton Central-- : --
+
+
+ +
+
+ + + + + + + + + diff --git a/app/src/main/assets/js/app.prod.js b/app/src/main/assets/js/app.prod.js new file mode 100644 index 0000000..dcec31a --- /dev/null +++ b/app/src/main/assets/js/app.prod.js @@ -0,0 +1,116 @@ +var APP; +APP = { + refreshStep: 0, + preUrl: '/', + + _storage: { + lastupdated: null, + feeds: {} + }, + + lastUpdated: null, + preCache: function () { + this._trains = new EJS({ + url: 'ejs/trains.ejs' + }); + }, + elmCache: {}, + + init: function () { + // console.log('app starting...'); + this.preCache(); + this.getUpdatedTimes(); + }, + getUpdatedTimes: function () { + this.getNextTrainTime('pyg', 'glc'); + this.getNextTrainTime('glc', 'ptk'); + this.getNextTrainTime('ptk', 'dbc'); + this.getNextTrainTime('glq', 'dbc'); + }, + getNextTrainTime: function (from, to) { + var self, feedUrl, dest, jsonData; + self = this; + feedUrl = this.preUrl + 'getnexttraintimes?from=' + from + '&to=' + to; + dest = from + to; + + jsonData = Android.getJson(feedUrl); + + if (jsonData != '') { + self.updateTrain(dest, JSON.parse(jsonData)); + } + }, + updateTrain: function (n, obj) { + var output, status; + + if (this.elmCache[n] == null) { + this.elmCache[n] = $('#' + n); + } + + output = (obj.eta.toLowerCase() === "on time") ? obj.sta : obj.eta; + status = (obj.eta.toLowerCase() !== "on time") ? 'delayed' : 'ontime'; + + this.elmCache[n].html(output); + this.elmCache[n].prop('class', status); + }, + getTrains: function (from, to) { + var jsonData, self, url; + self = this; + url = '/gettrains?from=' + from + "&to=" + to; + jsonData = Android.getJson(url); + + if (jsonData != '') { + self.getTrainsCB(self.fixProblems(jsonData)); + } + }, + fixProblems: function(data) { + var work = JSON.parse(data); + console.log(); + for (var i = 0; i< work.trainServices.length;i++) + { + console.log(work.trainServices[i].sta); + if (work.trainServices[i].sta === null) + { + console.log('FIX'); + // this train starts from this station.. so swap in other values + work.trainServices[i].sta = work.trainServices[i].std; + work.trainServices[i].eta = work.trainServices[i].etd; + } + + if (work.trainServices[i].platform === null) { + work.trainServices[i].platform = 'NA'; + } + } + + return work; + }, + + getTrainsCB: function (results) { + if (this.elmCache.dest$ == null) { + this.elmCache.dest$ = $('#trainResults'); + } + + var html = this._trains.render(results); + + this.elmCache.dest$.empty(); + this.elmCache.dest$.append(html); + + }, + setRoute: function(route) { + Android.setRoute(route); + } +}; + +function setRoute(route) +{ + APP.setRoute(route); +} + +Zepto(function ($) { + // console.log('Start app'); + if (typeof(Storage) !== "undefined") { + APP.init(); + } else { + // Sorry! No Web Storage support.. + alert('No local storage'); + } +}); \ No newline at end of file diff --git a/app/src/main/assets/js/fx.js b/app/src/main/assets/js/fx.js new file mode 100644 index 0000000..2b21155 --- /dev/null +++ b/app/src/main/assets/js/fx.js @@ -0,0 +1,123 @@ +// Zepto.js +// (c) 2010-2015 Thomas Fuchs +// Zepto.js may be freely distributed under the MIT license. + +;(function($, undefined){ + var prefix = '', eventPrefix, + vendors = { Webkit: 'webkit', Moz: '', O: 'o' }, + testEl = document.createElement('div'), + supportedTransforms = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i, + transform, + transitionProperty, transitionDuration, transitionTiming, transitionDelay, + animationName, animationDuration, animationTiming, animationDelay, + cssReset = {} + + function dasherize(str) { return str.replace(/([a-z])([A-Z])/, '$1-$2').toLowerCase() } + function normalizeEvent(name) { return eventPrefix ? eventPrefix + name : name.toLowerCase() } + + $.each(vendors, function(vendor, event){ + if (testEl.style[vendor + 'TransitionProperty'] !== undefined) { + prefix = '-' + vendor.toLowerCase() + '-' + eventPrefix = event + return false + } + }) + + transform = prefix + 'transform' + cssReset[transitionProperty = prefix + 'transition-property'] = + cssReset[transitionDuration = prefix + 'transition-duration'] = + cssReset[transitionDelay = prefix + 'transition-delay'] = + cssReset[transitionTiming = prefix + 'transition-timing-function'] = + cssReset[animationName = prefix + 'animation-name'] = + cssReset[animationDuration = prefix + 'animation-duration'] = + cssReset[animationDelay = prefix + 'animation-delay'] = + cssReset[animationTiming = prefix + 'animation-timing-function'] = '' + + $.fx = { + off: (eventPrefix === undefined && testEl.style.transitionProperty === undefined), + speeds: { _default: 400, fast: 200, slow: 600 }, + cssPrefix: prefix, + transitionEnd: normalizeEvent('TransitionEnd'), + animationEnd: normalizeEvent('AnimationEnd') + } + + $.fn.animate = function(properties, duration, ease, callback, delay){ + if ($.isFunction(duration)) + callback = duration, ease = undefined, duration = undefined + if ($.isFunction(ease)) + callback = ease, ease = undefined + if ($.isPlainObject(duration)) + ease = duration.easing, callback = duration.complete, delay = duration.delay, duration = duration.duration + if (duration) duration = (typeof duration == 'number' ? duration : + ($.fx.speeds[duration] || $.fx.speeds._default)) / 1000 + if (delay) delay = parseFloat(delay) / 1000 + return this.anim(properties, duration, ease, callback, delay) + } + + $.fn.anim = function(properties, duration, ease, callback, delay){ + var key, cssValues = {}, cssProperties, transforms = '', + that = this, wrappedCallback, endEvent = $.fx.transitionEnd, + fired = false + + if (duration === undefined) duration = $.fx.speeds._default / 1000 + if (delay === undefined) delay = 0 + if ($.fx.off) duration = 0 + + if (typeof properties == 'string') { + // keyframe animation + cssValues[animationName] = properties + cssValues[animationDuration] = duration + 's' + cssValues[animationDelay] = delay + 's' + cssValues[animationTiming] = (ease || 'linear') + endEvent = $.fx.animationEnd + } else { + cssProperties = [] + // CSS transitions + for (key in properties) + if (supportedTransforms.test(key)) transforms += key + '(' + properties[key] + ') ' + else cssValues[key] = properties[key], cssProperties.push(dasherize(key)) + + if (transforms) cssValues[transform] = transforms, cssProperties.push(transform) + if (duration > 0 && typeof properties === 'object') { + cssValues[transitionProperty] = cssProperties.join(', ') + cssValues[transitionDuration] = duration + 's' + cssValues[transitionDelay] = delay + 's' + cssValues[transitionTiming] = (ease || 'linear') + } + } + + wrappedCallback = function(event){ + if (typeof event !== 'undefined') { + if (event.target !== event.currentTarget) return // makes sure the event didn't bubble from "below" + $(event.target).unbind(endEvent, wrappedCallback) + } else + $(this).unbind(endEvent, wrappedCallback) // triggered by setTimeout + + fired = true + $(this).css(cssReset) + callback && callback.call(this) + } + if (duration > 0){ + this.bind(endEvent, wrappedCallback) + // transitionEnd is not always firing on older Android phones + // so make sure it gets fired + setTimeout(function(){ + if (fired) return + wrappedCallback.call(that) + }, ((duration + delay) * 1000) + 25) + } + + // trigger page reflow so new elements can animate + this.size() && this.get(0).clientLeft + + this.css(cssValues) + + if (duration <= 0) setTimeout(function() { + that.each(function(){ wrappedCallback.call(this) }) + }, 0) + + return this + } + + testEl = null +})(Zepto) diff --git a/app/src/main/assets/js/fx_methods.js b/app/src/main/assets/js/fx_methods.js new file mode 100644 index 0000000..7503f3d --- /dev/null +++ b/app/src/main/assets/js/fx_methods.js @@ -0,0 +1,71 @@ +// Zepto.js +// (c) 2010-2015 Thomas Fuchs +// Zepto.js may be freely distributed under the MIT license. + +;(function($, undefined){ + var document = window.document, docElem = document.documentElement, + origShow = $.fn.show, origHide = $.fn.hide, origToggle = $.fn.toggle + + function anim(el, speed, opacity, scale, callback) { + if (typeof speed == 'function' && !callback) callback = speed, speed = undefined + var props = { opacity: opacity } + if (scale) { + props.scale = scale + el.css($.fx.cssPrefix + 'transform-origin', '0 0') + } + return el.animate(props, speed, null, callback) + } + + function hide(el, speed, scale, callback) { + return anim(el, speed, 0, scale, function(){ + origHide.call($(this)) + callback && callback.call(this) + }) + } + + $.fn.show = function(speed, callback) { + origShow.call(this) + if (speed === undefined) speed = 0 + else this.css('opacity', 0) + return anim(this, speed, 1, '1,1', callback) + } + + $.fn.hide = function(speed, callback) { + if (speed === undefined) return origHide.call(this) + else return hide(this, speed, '0,0', callback) + } + + $.fn.toggle = function(speed, callback) { + if (speed === undefined || typeof speed == 'boolean') + return origToggle.call(this, speed) + else return this.each(function(){ + var el = $(this) + el[el.css('display') == 'none' ? 'show' : 'hide'](speed, callback) + }) + } + + $.fn.fadeTo = function(speed, opacity, callback) { + return anim(this, speed, opacity, null, callback) + } + + $.fn.fadeIn = function(speed, callback) { + var target = this.css('opacity') + if (target > 0) this.css('opacity', 0) + else target = 1 + return origShow.call(this).fadeTo(speed, target, callback) + } + + $.fn.fadeOut = function(speed, callback) { + return hide(this, speed, null, callback) + } + + $.fn.fadeToggle = function(speed, callback) { + return this.each(function(){ + var el = $(this) + el[ + (el.css('opacity') == 0 || el.css('display') == 'none') ? 'fadeIn' : 'fadeOut' + ](speed, callback) + }) + } + +})(Zepto) diff --git a/app/src/main/assets/js/jquery.unveil.js b/app/src/main/assets/js/jquery.unveil.js new file mode 100644 index 0000000..38feb61 --- /dev/null +++ b/app/src/main/assets/js/jquery.unveil.js @@ -0,0 +1,70 @@ +/** + * jQuery Unveil + * A very lightweight jQuery plugin to lazy load images + * http://luis-almeida.github.com/unveil + * + * Licensed under the MIT license. + * Copyright 2013 Luís Almeida + * https://github.com/luis-almeida + */ + +; +(function($) { + + var blackList = ['feeds.feedburner.com', '.feedsportal.co']; + $.fn.unveil = function(threshold, callback) { + + var $w = $(window), + th = threshold || 0, + retina = window.devicePixelRatio > 1, + attrib = retina ? "data-src-retina" : "data-src", + images = this, + loaded; + + this.one("unveil", function() { + var source = this.getAttribute(attrib); + source = source || this.getAttribute("data-src"); + + var flag = false; + for (var item in blackList) { + var u = blackList[item]; + if (source.indexOf(u) !== -1) { + flag = true; + } + } + if (source && !flag) { + this.setAttribute("src", source); + if (typeof callback === "function") callback.call(this); + } + + if (flag) { + this.setAttribute("style", 'display:none !important;'); + } + }); + + function unveil() { + var inview = images.filter(function() { + var $e = $(this); + // if ($e.is(":hidden")) return; + + var wt = $w.scrollTop(), + wb = wt + $w.height(), + et = $e.offset().top, + eb = et + $e.height(); + + return eb >= wt - th && et <= wb + th; + }); + + loaded = inview.trigger("unveil"); + images = images.not(loaded); + } + + $w.on("scroll.unveil resize.unveil lookup.unveil", unveil); + + unveil(); + + return this; + + }; + + })(window.jQuery || window.Zepto); diff --git a/app/src/main/assets/js/output.min.js b/app/src/main/assets/js/output.min.js new file mode 100644 index 0000000..c315a3d --- /dev/null +++ b/app/src/main/assets/js/output.min.js @@ -0,0 +1,3 @@ +var Zepto=function(){function t(t){return null==t?String(t):q[R.call(t)]||"object"}function e(e){return"function"==t(e)}function n(t){return null!=t&&t==t.window}function r(t){return null!=t&&t.nodeType==t.DOCUMENT_NODE}function i(e){return"object"==t(e)}function o(t){return i(t)&&!n(t)&&Object.getPrototypeOf(t)==Object.prototype}function s(t){return"number"==typeof t.length}function a(t){return k.call(t,function(t){return null!=t})}function u(t){return t.length>0?D.fn.concat.apply([],t):t}function c(t){return t.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()}function l(t){return t in J?J[t]:J[t]=new RegExp("(^|\\s)"+t+"(\\s|$)")}function f(t,e){return"number"!=typeof e||P[c(t)]?e:e+"px"}function h(t){var e,n;return C[t]||(e=O.createElement(t),O.body.appendChild(e),n=getComputedStyle(e,"").getPropertyValue("display"),e.parentNode.removeChild(e),"none"==n&&(n="block"),C[t]=n),C[t]}function d(t){return"children"in t?Y.call(t.children):D.map(t.childNodes,function(t){return 1==t.nodeType?t:void 0})}function p(t,e,n){for(b in e)n&&(o(e[b])||X(e[b]))?(o(e[b])&&!o(t[b])&&(t[b]={}),X(e[b])&&!X(t[b])&&(t[b]=[]),p(t[b],e[b],n)):e[b]!==S&&(t[b]=e[b])}function m(t,e){return null==e?D(t):D(t).filter(e)}function _(t,n,r,i){return e(n)?n.call(t,r,i):n}function g(t,e,n){null==n?t.removeAttribute(e):t.setAttribute(e,n)}function y(t,e){var n=t.className||"",r=n&&n.baseVal!==S;return e===S?r?n.baseVal:n:void(r?n.baseVal=e:t.className=e)}function v(t){try{return t?"true"==t||("false"==t?!1:"null"==t?null:+t+""==t?+t:/^[\[\{]/.test(t)?D.parseJSON(t):t):t}catch(e){return t}}function w(t,e){e(t);for(var n=0,r=t.childNodes.length;r>n;n++)w(t.childNodes[n],e)}var S,b,D,M,x,E,T=[],Y=T.slice,k=T.filter,O=window.document,C={},J={},P={"column-count":1,columns:1,"font-weight":1,"line-height":1,opacity:1,"z-index":1,zoom:1},H=/^\s*<(\w+|!)[^>]*>/,j=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,L=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,F=/^(?:body|html)$/i,N=/([A-Z])/g,A=["val","css","html","text","data","width","height","offset"],U=["after","prepend","before","append"],W=O.createElement("table"),G=O.createElement("tr"),I={tr:O.createElement("tbody"),tbody:W,thead:W,tfoot:W,td:G,th:G,"*":O.createElement("div")},z=/complete|loaded|interactive/,Z=/^[\w-]*$/,q={},R=q.toString,V={},$=O.createElement("div"),B={tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},X=Array.isArray||function(t){return t instanceof Array};return V.matches=function(t,e){if(!e||!t||1!==t.nodeType)return!1;var n=t.webkitMatchesSelector||t.mozMatchesSelector||t.oMatchesSelector||t.matchesSelector;if(n)return n.call(t,e);var r,i=t.parentNode,o=!i;return o&&(i=$).appendChild(t),r=~V.qsa(i,e).indexOf(t),o&&$.removeChild(t),r},x=function(t){return t.replace(/-+(.)?/g,function(t,e){return e?e.toUpperCase():""})},E=function(t){return k.call(t,function(e,n){return t.indexOf(e)==n})},V.fragment=function(t,e,n){var r,i,s;return j.test(t)&&(r=D(O.createElement(RegExp.$1))),r||(t.replace&&(t=t.replace(L,"<$1>")),e===S&&(e=H.test(t)&&RegExp.$1),e in I||(e="*"),s=I[e],s.innerHTML=""+t,r=D.each(Y.call(s.childNodes),function(){s.removeChild(this)})),o(n)&&(i=D(r),D.each(n,function(t,e){A.indexOf(t)>-1?i[t](e):i.attr(t,e)})),r},V.Z=function(t,e){return t=t||[],t.__proto__=D.fn,t.selector=e||"",t},V.isZ=function(t){return t instanceof V.Z},V.init=function(t,n){var r;if(!t)return V.Z();if("string"==typeof t)if(t=t.trim(),"<"==t[0]&&H.test(t))r=V.fragment(t,RegExp.$1,n),t=null;else{if(n!==S)return D(n).find(t);r=V.qsa(O,t)}else{if(e(t))return D(O).ready(t);if(V.isZ(t))return t;if(X(t))r=a(t);else if(i(t))r=[t],t=null;else if(H.test(t))r=V.fragment(t.trim(),RegExp.$1,n),t=null;else{if(n!==S)return D(n).find(t);r=V.qsa(O,t)}}return V.Z(r,t)},D=function(t,e){return V.init(t,e)},D.extend=function(t){var e,n=Y.call(arguments,1);return"boolean"==typeof t&&(e=t,t=n.shift()),n.forEach(function(n){p(t,n,e)}),t},V.qsa=function(t,e){var n,i="#"==e[0],o=!i&&"."==e[0],s=i||o?e.slice(1):e,a=Z.test(s);return r(t)&&a&&i?(n=t.getElementById(s))?[n]:[]:1!==t.nodeType&&9!==t.nodeType?[]:Y.call(a&&!i?o?t.getElementsByClassName(s):t.getElementsByTagName(e):t.querySelectorAll(e))},D.contains=O.documentElement.contains?function(t,e){return t!==e&&t.contains(e)}:function(t,e){for(;e&&(e=e.parentNode);)if(e===t)return!0;return!1},D.type=t,D.isFunction=e,D.isWindow=n,D.isArray=X,D.isPlainObject=o,D.isEmptyObject=function(t){var e;for(e in t)return!1;return!0},D.inArray=function(t,e,n){return T.indexOf.call(e,t,n)},D.camelCase=x,D.trim=function(t){return null==t?"":String.prototype.trim.call(t)},D.uuid=0,D.support={},D.expr={},D.map=function(t,e){var n,r,i,o=[];if(s(t))for(r=0;r=0?t:t+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each(function(){null!=this.parentNode&&this.parentNode.removeChild(this)})},each:function(t){return T.every.call(this,function(e,n){return t.call(e,n,e)!==!1}),this},filter:function(t){return e(t)?this.not(this.not(t)):D(k.call(this,function(e){return V.matches(e,t)}))},add:function(t,e){return D(E(this.concat(D(t,e))))},is:function(t){return this.length>0&&V.matches(this[0],t)},not:function(t){var n=[];if(e(t)&&t.call!==S)this.each(function(e){t.call(this,e)||n.push(this)});else{var r="string"==typeof t?this.filter(t):s(t)&&e(t.item)?Y.call(t):D(t);this.forEach(function(t){r.indexOf(t)<0&&n.push(t)})}return D(n)},has:function(t){return this.filter(function(){return i(t)?D.contains(this,t):D(this).find(t).size()})},eq:function(t){return-1===t?this.slice(t):this.slice(t,+t+1)},first:function(){var t=this[0];return t&&!i(t)?t:D(t)},last:function(){var t=this[this.length-1];return t&&!i(t)?t:D(t)},find:function(t){var e,n=this;return e=t?"object"==typeof t?D(t).filter(function(){var t=this;return T.some.call(n,function(e){return D.contains(e,t)})}):1==this.length?D(V.qsa(this[0],t)):this.map(function(){return V.qsa(this,t)}):D()},closest:function(t,e){var n=this[0],i=!1;for("object"==typeof t&&(i=D(t));n&&!(i?i.indexOf(n)>=0:V.matches(n,t));)n=n!==e&&!r(n)&&n.parentNode;return D(n)},parents:function(t){for(var e=[],n=this;n.length>0;)n=D.map(n,function(t){return(t=t.parentNode)&&!r(t)&&e.indexOf(t)<0?(e.push(t),t):void 0});return m(e,t)},parent:function(t){return m(E(this.pluck("parentNode")),t)},children:function(t){return m(this.map(function(){return d(this)}),t)},contents:function(){return this.map(function(){return Y.call(this.childNodes)})},siblings:function(t){return m(this.map(function(t,e){return k.call(d(e.parentNode),function(t){return t!==e})}),t)},empty:function(){return this.each(function(){this.innerHTML=""})},pluck:function(t){return D.map(this,function(e){return e[t]})},show:function(){return this.each(function(){"none"==this.style.display&&(this.style.display=""),"none"==getComputedStyle(this,"").getPropertyValue("display")&&(this.style.display=h(this.nodeName))})},replaceWith:function(t){return this.before(t).remove()},wrap:function(t){var n=e(t);if(this[0]&&!n)var r=D(t).get(0),i=r.parentNode||this.length>1;return this.each(function(e){D(this).wrapAll(n?t.call(this,e):i?r.cloneNode(!0):r)})},wrapAll:function(t){if(this[0]){D(this[0]).before(t=D(t));for(var e;(e=t.children()).length;)t=e.first();D(t).append(this)}return this},wrapInner:function(t){var n=e(t);return this.each(function(e){var r=D(this),i=r.contents(),o=n?t.call(this,e):t;i.length?i.wrapAll(o):r.append(o)})},unwrap:function(){return this.parent().each(function(){D(this).replaceWith(D(this).children())}),this},clone:function(){return this.map(function(){return this.cloneNode(!0)})},hide:function(){return this.css("display","none")},toggle:function(t){return this.each(function(){var e=D(this);(t===S?"none"==e.css("display"):t)?e.show():e.hide()})},prev:function(t){return D(this.pluck("previousElementSibling")).filter(t||"*")},next:function(t){return D(this.pluck("nextElementSibling")).filter(t||"*")},html:function(t){return 0 in arguments?this.each(function(e){var n=this.innerHTML;D(this).empty().append(_(this,t,e,n))}):0 in this?this[0].innerHTML:null},text:function(t){return 0 in arguments?this.each(function(e){var n=_(this,t,e,this.textContent);this.textContent=null==n?"":""+n}):0 in this?this[0].textContent:null},attr:function(t,e){var n;return"string"!=typeof t||1 in arguments?this.each(function(n){if(1===this.nodeType)if(i(t))for(b in t)g(this,b,t[b]);else g(this,t,_(this,e,n,this.getAttribute(t)))}):this.length&&1===this[0].nodeType?!(n=this[0].getAttribute(t))&&t in this[0]?this[0][t]:n:S},removeAttr:function(t){return this.each(function(){1===this.nodeType&&t.split(" ").forEach(function(t){g(this,t)},this)})},prop:function(t,e){return t=B[t]||t,1 in arguments?this.each(function(n){this[t]=_(this,e,n,this[t])}):this[0]&&this[0][t]},data:function(t,e){var n="data-"+t.replace(N,"-$1").toLowerCase(),r=1 in arguments?this.attr(n,e):this.attr(n);return null!==r?v(r):S},val:function(t){return 0 in arguments?this.each(function(e){this.value=_(this,t,e,this.value)}):this[0]&&(this[0].multiple?D(this[0]).find("option").filter(function(){return this.selected}).pluck("value"):this[0].value)},offset:function(t){if(t)return this.each(function(e){var n=D(this),r=_(this,t,e,n.offset()),i=n.offsetParent().offset(),o={top:r.top-i.top,left:r.left-i.left};"static"==n.css("position")&&(o.position="relative"),n.css(o)});if(!this.length)return null;var e=this[0].getBoundingClientRect();return{left:e.left+window.pageXOffset,top:e.top+window.pageYOffset,width:Math.round(e.width),height:Math.round(e.height)}},css:function(e,n){if(arguments.length<2){var r,i=this[0];if(!i)return;if(r=getComputedStyle(i,""),"string"==typeof e)return i.style[x(e)]||r.getPropertyValue(e);if(X(e)){var o={};return D.each(e,function(t,e){o[e]=i.style[x(e)]||r.getPropertyValue(e)}),o}}var s="";if("string"==t(e))n||0===n?s=c(e)+":"+f(e,n):this.each(function(){this.style.removeProperty(c(e))});else for(b in e)e[b]||0===e[b]?s+=c(b)+":"+f(b,e[b])+";":this.each(function(){this.style.removeProperty(c(b))});return this.each(function(){this.style.cssText+=";"+s})},index:function(t){return t?this.indexOf(D(t)[0]):this.parent().children().indexOf(this[0])},hasClass:function(t){return t?T.some.call(this,function(t){return this.test(y(t))},l(t)):!1},addClass:function(t){return t?this.each(function(e){if("className"in this){M=[];var n=y(this),r=_(this,t,e,n);r.split(/\s+/g).forEach(function(t){D(this).hasClass(t)||M.push(t)},this),M.length&&y(this,n+(n?" ":"")+M.join(" "))}}):this},removeClass:function(t){return this.each(function(e){if("className"in this){if(t===S)return y(this,"");M=y(this),_(this,t,e,M).split(/\s+/g).forEach(function(t){M=M.replace(l(t)," ")}),y(this,M.trim())}})},toggleClass:function(t,e){return t?this.each(function(n){var r=D(this),i=_(this,t,n,y(this));i.split(/\s+/g).forEach(function(t){(e===S?!r.hasClass(t):e)?r.addClass(t):r.removeClass(t)})}):this},scrollTop:function(t){if(this.length){var e="scrollTop"in this[0];return t===S?e?this[0].scrollTop:this[0].pageYOffset:this.each(e?function(){this.scrollTop=t}:function(){this.scrollTo(this.scrollX,t)})}},scrollLeft:function(t){if(this.length){var e="scrollLeft"in this[0];return t===S?e?this[0].scrollLeft:this[0].pageXOffset:this.each(e?function(){this.scrollLeft=t}:function(){this.scrollTo(t,this.scrollY)})}},position:function(){if(this.length){var t=this[0],e=this.offsetParent(),n=this.offset(),r=F.test(e[0].nodeName)?{top:0,left:0}:e.offset();return n.top-=parseFloat(D(t).css("margin-top"))||0,n.left-=parseFloat(D(t).css("margin-left"))||0,r.top+=parseFloat(D(e[0]).css("border-top-width"))||0,r.left+=parseFloat(D(e[0]).css("border-left-width"))||0,{top:n.top-r.top,left:n.left-r.left}}},offsetParent:function(){return this.map(function(){for(var t=this.offsetParent||O.body;t&&!F.test(t.nodeName)&&"static"==D(t).css("position");)t=t.offsetParent;return t})}},D.fn.detach=D.fn.remove,["width","height"].forEach(function(t){var e=t.replace(/./,function(t){return t[0].toUpperCase()});D.fn[t]=function(i){var o,s=this[0];return i===S?n(s)?s["inner"+e]:r(s)?s.documentElement["scroll"+e]:(o=this.offset())&&o[t]:this.each(function(e){s=D(this),s.css(t,_(this,i,e,s[t]()))})}}),U.forEach(function(e,n){var r=n%2;D.fn[e]=function(){var e,i,o=D.map(arguments,function(n){return e=t(n),"object"==e||"array"==e||null==n?n:V.fragment(n)}),s=this.length>1;return o.length<1?this:this.each(function(t,e){i=r?e:e.parentNode,e=0==n?e.nextSibling:1==n?e.firstChild:2==n?e:null;var a=D.contains(O.documentElement,i);o.forEach(function(t){if(s)t=t.cloneNode(!0);else if(!i)return D(t).remove();i.insertBefore(t,e),a&&w(t,function(t){null==t.nodeName||"SCRIPT"!==t.nodeName.toUpperCase()||t.type&&"text/javascript"!==t.type||t.src||window.eval.call(window,t.innerHTML)})})})},D.fn[r?e+"To":"insert"+(n?"Before":"After")]=function(t){return D(t)[e](this),this}}),V.Z.prototype=D.fn,V.uniq=E,V.deserializeValue=v,D.zepto=V,D}();window.Zepto=Zepto,void 0===window.$&&(window.$=Zepto),function(t){function e(t){return t._zid||(t._zid=h++)}function n(t,n,o,s){if(n=r(n),n.ns)var a=i(n.ns);return(_[e(t)]||[]).filter(function(t){return!(!t||n.e&&t.e!=n.e||n.ns&&!a.test(t.ns)||o&&e(t.fn)!==e(o)||s&&t.sel!=s)})}function r(t){var e=(""+t).split(".");return{e:e[0],ns:e.slice(1).sort().join(" ")}}function i(t){return new RegExp("(?:^| )"+t.replace(" "," .* ?")+"(?: |$)")}function o(t,e){return t.del&&!y&&t.e in v||!!e}function s(t){return w[t]||y&&v[t]||t}function a(n,i,a,u,l,h,d){var p=e(n),m=_[p]||(_[p]=[]);i.split(/\s/).forEach(function(e){if("ready"==e)return t(document).ready(a);var i=r(e);i.fn=a,i.sel=l,i.e in w&&(a=function(e){var n=e.relatedTarget;return!n||n!==this&&!t.contains(this,n)?i.fn.apply(this,arguments):void 0}),i.del=h;var p=h||a;i.proxy=function(t){if(t=c(t),!t.isImmediatePropagationStopped()){t.data=u;var e=p.apply(n,t._args==f?[t]:[t].concat(t._args));return e===!1&&(t.preventDefault(),t.stopPropagation()),e}},i.i=m.length,m.push(i),"addEventListener"in n&&n.addEventListener(s(i.e),i.proxy,o(i,d))})}function u(t,r,i,a,u){var c=e(t);(r||"").split(/\s/).forEach(function(e){n(t,e,i,a).forEach(function(e){delete _[c][e.i],"removeEventListener"in t&&t.removeEventListener(s(e.e),e.proxy,o(e,u))})})}function c(e,n){return(n||!e.isDefaultPrevented)&&(n||(n=e),t.each(M,function(t,r){var i=n[t];e[t]=function(){return this[r]=S,i&&i.apply(n,arguments)},e[r]=b}),(n.defaultPrevented!==f?n.defaultPrevented:"returnValue"in n?n.returnValue===!1:n.getPreventDefault&&n.getPreventDefault())&&(e.isDefaultPrevented=S)),e}function l(t){var e,n={originalEvent:t};for(e in t)D.test(e)||t[e]===f||(n[e]=t[e]);return c(n,t)}var f,h=1,d=Array.prototype.slice,p=t.isFunction,m=function(t){return"string"==typeof t},_={},g={},y="onfocusin"in window,v={focus:"focusin",blur:"focusout"},w={mouseenter:"mouseover",mouseleave:"mouseout"};g.click=g.mousedown=g.mouseup=g.mousemove="MouseEvents",t.event={add:a,remove:u},t.proxy=function(n,r){var i=2 in arguments&&d.call(arguments,2);if(p(n)){var o=function(){return n.apply(r,i?i.concat(d.call(arguments)):arguments)};return o._zid=e(n),o}if(m(r))return i?(i.unshift(n[r],n),t.proxy.apply(null,i)):t.proxy(n[r],n);throw new TypeError("expected function")},t.fn.bind=function(t,e,n){return this.on(t,e,n)},t.fn.unbind=function(t,e){return this.off(t,e)},t.fn.one=function(t,e,n,r){return this.on(t,e,n,r,1)};var S=function(){return!0},b=function(){return!1},D=/^([A-Z]|returnValue$|layer[XY]$)/,M={preventDefault:"isDefaultPrevented",stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"};t.fn.delegate=function(t,e,n){return this.on(e,t,n)},t.fn.undelegate=function(t,e,n){return this.off(e,t,n)},t.fn.live=function(e,n){return t(document.body).delegate(this.selector,e,n),this},t.fn.die=function(e,n){return t(document.body).undelegate(this.selector,e,n),this},t.fn.on=function(e,n,r,i,o){var s,c,h=this;return e&&!m(e)?(t.each(e,function(t,e){h.on(t,n,r,e,o)}),h):(m(n)||p(i)||i===!1||(i=r,r=n,n=f),(p(r)||r===!1)&&(i=r,r=f),i===!1&&(i=b),h.each(function(f,h){o&&(s=function(t){return u(h,t.type,i),i.apply(this,arguments)}),n&&(c=function(e){var r,o=t(e.target).closest(n,h).get(0);return o&&o!==h?(r=t.extend(l(e),{currentTarget:o,liveFired:h}),(s||i).apply(o,[r].concat(d.call(arguments,1)))):void 0}),a(h,e,i,r,n,c||s)}))},t.fn.off=function(e,n,r){var i=this;return e&&!m(e)?(t.each(e,function(t,e){i.off(t,n,e)}),i):(m(n)||p(r)||r===!1||(r=n,n=f),r===!1&&(r=b),i.each(function(){u(this,e,r,n)}))},t.fn.trigger=function(e,n){return e=m(e)||t.isPlainObject(e)?t.Event(e):c(e),e._args=n,this.each(function(){e.type in v&&"function"==typeof this[e.type]?this[e.type]():"dispatchEvent"in this?this.dispatchEvent(e):t(this).triggerHandler(e,n)})},t.fn.triggerHandler=function(e,r){var i,o;return this.each(function(s,a){i=l(m(e)?t.Event(e):e),i._args=r,i.target=a,t.each(n(a,e.type||e),function(t,e){return o=e.proxy(i),i.isImmediatePropagationStopped()?!1:void 0})}),o},"focusin focusout focus blur load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error".split(" ").forEach(function(e){t.fn[e]=function(t){return 0 in arguments?this.bind(e,t):this.trigger(e)}}),t.Event=function(t,e){m(t)||(e=t,t=e.type);var n=document.createEvent(g[t]||"Events"),r=!0;if(e)for(var i in e)"bubbles"==i?r=!!e[i]:n[i]=e[i];return n.initEvent(t,r,!0),c(n)}}(Zepto),function(t){function e(e,n,r){var i=t.Event(n);return t(e).trigger(i,r),!i.isDefaultPrevented()}function n(t,n,r,i){return t.global?e(n||y,r,i):void 0}function r(e){e.global&&0===t.active++&&n(e,null,"ajaxStart")}function i(e){e.global&&!--t.active&&n(e,null,"ajaxStop")}function o(t,e){var r=e.context;return e.beforeSend.call(r,t,e)===!1||n(e,r,"ajaxBeforeSend",[t,e])===!1?!1:void n(e,r,"ajaxSend",[t,e])}function s(t,e,r,i){var o=r.context,s="success";r.success.call(o,t,s,e),i&&i.resolveWith(o,[t,s,e]),n(r,o,"ajaxSuccess",[e,r,t]),u(s,e,r)}function a(t,e,r,i,o){var s=i.context;i.error.call(s,r,e,t),o&&o.rejectWith(s,[r,e,t]),n(i,s,"ajaxError",[r,i,t||e]),u(e,r,i)}function u(t,e,r){var o=r.context;r.complete.call(o,e,t),n(r,o,"ajaxComplete",[e,r]),i(r)}function c(){}function l(t){return t&&(t=t.split(";",2)[0]),t&&(t==D?"html":t==b?"json":w.test(t)?"script":S.test(t)&&"xml")||"text"}function f(t,e){return""==e?t:(t+"&"+e).replace(/[&?]{1,2}/,"?")}function h(e){e.processData&&e.data&&"string"!=t.type(e.data)&&(e.data=t.param(e.data,e.traditional)),!e.data||e.type&&"GET"!=e.type.toUpperCase()||(e.url=f(e.url,e.data),e.data=void 0)}function d(e,n,r,i){return t.isFunction(n)&&(i=r,r=n,n=void 0),t.isFunction(r)||(i=r,r=void 0),{url:e,data:n,success:r,dataType:i}}function p(e,n,r,i){var o,s=t.isArray(n),a=t.isPlainObject(n);t.each(n,function(n,u){o=t.type(u),i&&(n=r?i:i+"["+(a||"object"==o||"array"==o?n:"")+"]"),!i&&s?e.add(u.name,u.value):"array"==o||!r&&"object"==o?p(e,u,r,n):e.add(n,u)})}var m,_,g=0,y=window.document,v=/)<[^<]*)*<\/script>/gi,w=/^(?:text|application)\/javascript/i,S=/^(?:text|application)\/xml/i,b="application/json",D="text/html",M=/^\s*$/,x=y.createElement("a");x.href=window.location.href,t.active=0,t.ajaxJSONP=function(e,n){if(!("type"in e))return t.ajax(e);var r,i,u=e.jsonpCallback,c=(t.isFunction(u)?u():u)||"jsonp"+ ++g,l=y.createElement("script"),f=window[c],h=function(e){t(l).triggerHandler("error",e||"abort")},d={abort:h};return n&&n.promise(d),t(l).on("load error",function(o,u){clearTimeout(i),t(l).off().remove(),"error"!=o.type&&r?s(r[0],d,e,n):a(null,u||"error",d,e,n),window[c]=f,r&&t.isFunction(f)&&f(r[0]),f=r=void 0}),o(d,e)===!1?(h("abort"),d):(window[c]=function(){r=arguments},l.src=e.url.replace(/\?(.+)=\?/,"?$1="+c),y.head.appendChild(l),e.timeout>0&&(i=setTimeout(function(){h("timeout")},e.timeout)),d)},t.ajaxSettings={type:"GET",beforeSend:c,success:c,error:c,complete:c,context:null,global:!0,xhr:function(){return new window.XMLHttpRequest},accepts:{script:"text/javascript, application/javascript, application/x-javascript",json:b,xml:"application/xml, text/xml",html:D,text:"text/plain"},crossDomain:!1,timeout:0,processData:!0,cache:!0},t.ajax=function(e){var n,i=t.extend({},e||{}),u=t.Deferred&&t.Deferred();for(m in t.ajaxSettings)void 0===i[m]&&(i[m]=t.ajaxSettings[m]);r(i),i.crossDomain||(n=y.createElement("a"),n.href=i.url,n.href=n.href,i.crossDomain=x.protocol+"//"+x.host!=n.protocol+"//"+n.host),i.url||(i.url=window.location.toString()),h(i);var d=i.dataType,p=/\?.+=\?/.test(i.url);if(p&&(d="jsonp"),i.cache!==!1&&(e&&e.cache===!0||"script"!=d&&"jsonp"!=d)||(i.url=f(i.url,"_="+Date.now())),"jsonp"==d)return p||(i.url=f(i.url,i.jsonp?i.jsonp+"=?":i.jsonp===!1?"":"callback=?")),t.ajaxJSONP(i,u);var g,v=i.accepts[d],w={},S=function(t,e){w[t.toLowerCase()]=[t,e]},b=/^([\w-]+:)\/\//.test(i.url)?RegExp.$1:window.location.protocol,D=i.xhr(),E=D.setRequestHeader;if(u&&u.promise(D),i.crossDomain||S("X-Requested-With","XMLHttpRequest"),S("Accept",v||"*/*"),(v=i.mimeType||v)&&(v.indexOf(",")>-1&&(v=v.split(",",2)[0]),D.overrideMimeType&&D.overrideMimeType(v)),(i.contentType||i.contentType!==!1&&i.data&&"GET"!=i.type.toUpperCase())&&S("Content-Type",i.contentType||"application/x-www-form-urlencoded"),i.headers)for(_ in i.headers)S(_,i.headers[_]);if(D.setRequestHeader=S,D.onreadystatechange=function(){if(4==D.readyState){D.onreadystatechange=c,clearTimeout(g);var e,n=!1;if(D.status>=200&&D.status<300||304==D.status||0==D.status&&"file:"==b){d=d||l(i.mimeType||D.getResponseHeader("content-type")),e=D.responseText;try{"script"==d?(1,eval)(e):"xml"==d?e=D.responseXML:"json"==d&&(e=M.test(e)?null:t.parseJSON(e))}catch(r){n=r}n?a(n,"parsererror",D,i,u):s(e,D,i,u)}else a(D.statusText||null,D.status?"error":"abort",D,i,u)}},o(D,i)===!1)return D.abort(),a(null,"abort",D,i,u),D;if(i.xhrFields)for(_ in i.xhrFields)D[_]=i.xhrFields[_];var T="async"in i?i.async:!0;D.open(i.type,i.url,T,i.username,i.password);for(_ in w)E.apply(D,w[_]);return i.timeout>0&&(g=setTimeout(function(){D.onreadystatechange=c,D.abort(),a(null,"timeout",D,i,u)},i.timeout)),D.send(i.data?i.data:null),D},t.get=function(){return t.ajax(d.apply(null,arguments))},t.post=function(){var e=d.apply(null,arguments);return e.type="POST",t.ajax(e)},t.getJSON=function(){var e=d.apply(null,arguments);return e.dataType="json",t.ajax(e)},t.fn.load=function(e,n,r){if(!this.length)return this;var i,o=this,s=e.split(/\s/),a=d(e,n,r),u=a.success;return s.length>1&&(a.url=s[0],i=s[1]),a.success=function(e){o.html(i?t("
").html(e.replace(v,"")).find(i):e),u&&u.apply(o,arguments)},t.ajax(a),this};var E=encodeURIComponent;t.param=function(e,n){var r=[];return r.add=function(e,n){t.isFunction(n)&&(n=n()),null==n&&(n=""),this.push(E(e)+"="+E(n))},p(r,e,n),r.join("&").replace(/%20/g,"+")}}(Zepto),function(t){t.fn.serializeArray=function(){var e,n,r=[],i=function(t){return t.forEach?t.forEach(i):void r.push({name:e,value:t})};return this[0]&&t.each(this[0].elements,function(r,o){n=o.type,e=o.name,e&&"fieldset"!=o.nodeName.toLowerCase()&&!o.disabled&&"submit"!=n&&"reset"!=n&&"button"!=n&&"file"!=n&&("radio"!=n&&"checkbox"!=n||o.checked)&&i(t(o).val())}),r},t.fn.serialize=function(){var t=[];return this.serializeArray().forEach(function(e){t.push(encodeURIComponent(e.name)+"="+encodeURIComponent(e.value))}),t.join("&")},t.fn.submit=function(e){if(0 in arguments)this.bind("submit",e);else if(this.length){var n=t.Event("submit");this.eq(0).trigger(n),n.isDefaultPrevented()||this.get(0).submit()}return this}}(Zepto),function(t){"__proto__"in{}||t.extend(t.zepto,{Z:function(e,n){return e=e||[],t.extend(e,t.fn),e.selector=n||"",e.__Z=!0,e},isZ:function(e){return"array"===t.type(e)&&"__Z"in e}});try{getComputedStyle(void 0)}catch(e){var n=getComputedStyle;window.getComputedStyle=function(t){try{return n(t)}catch(e){return null}}}}(Zepto),!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.moment=e()}(this,function(){"use strict";function t(){return Hr.apply(null,arguments)}function e(t){Hr=t}function n(t){return"[object Array]"===Object.prototype.toString.call(t)}function r(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function i(t,e){var n,r=[];for(n=0;n0)for(n in Lr)r=Lr[n],i=e[r],"undefined"!=typeof i&&(t[r]=i);return t}function d(e){h(this,e),this._d=new Date(e._d.getTime()),Fr===!1&&(Fr=!0,t.updateOffset(this),Fr=!1)}function p(t){return t instanceof d||null!=t&&null!=t._isAMomentObject}function m(t){return 0>t?Math.ceil(t):Math.floor(t)}function _(t){var e=+t,n=0;return 0!==e&&isFinite(e)&&(n=m(e)),n}function g(t,e,n){var r,i=Math.min(t.length,e.length),o=Math.abs(t.length-e.length),s=0;for(r=0;i>r;r++)(n&&t[r]!==e[r]||!n&&_(t[r])!==_(e[r]))&&s++;return s+o}function y(){}function v(t){return t?t.toLowerCase().replace("_","-"):t}function w(t){for(var e,n,r,i,o=0;o0;){if(r=S(i.slice(0,e).join("-")))return r;if(n&&n.length>=e&&g(i,n,!0)>=e-1)break;e--}o++}return null}function S(t){var e=null;if(!Nr[t]&&"undefined"!=typeof module&&module&&module.exports)try{e=jr._abbr,require("./locale/"+t),b(e)}catch(n){}return Nr[t]}function b(t,e){var n;return t&&(n="undefined"==typeof e?M(t):D(t,e),n&&(jr=n)),jr._abbr}function D(t,e){return null!==e?(e.abbr=t,Nr[t]=Nr[t]||new y,Nr[t].set(e),b(t),Nr[t]):(delete Nr[t],null)}function M(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return jr;if(!n(t)){if(e=S(t))return e;t=[t]}return w(t)}function x(t,e){var n=t.toLowerCase();Ar[n]=Ar[n+"s"]=Ar[e]=t}function E(t){return"string"==typeof t?Ar[t]||Ar[t.toLowerCase()]:void 0}function T(t){var e,n,r={};for(n in t)o(t,n)&&(e=E(n),e&&(r[e]=t[n]));return r}function Y(e,n){return function(r){return null!=r?(O(this,e,r),t.updateOffset(this,n),this):k(this,e)}}function k(t,e){return t._d["get"+(t._isUTC?"UTC":"")+e]()}function O(t,e,n){return t._d["set"+(t._isUTC?"UTC":"")+e](n)}function C(t,e){var n;if("object"==typeof t)for(n in t)this.set(n,t[n]);else if(t=E(t),"function"==typeof this[t])return this[t](e);return this}function J(t,e,n){var r=""+Math.abs(t),i=e-r.length,o=t>=0;return(o?n?"+":"":"-")+Math.pow(10,Math.max(0,i)).toString().substr(1)+r}function P(t,e,n,r){var i=r;"string"==typeof r&&(i=function(){return this[r]()}),t&&(Ir[t]=i),e&&(Ir[e[0]]=function(){return J(i.apply(this,arguments),e[1],e[2])}),n&&(Ir[n]=function(){return this.localeData().ordinal(i.apply(this,arguments),t)})}function H(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function j(t){var e,n,r=t.match(Ur);for(e=0,n=r.length;n>e;e++)r[e]=Ir[r[e]]?Ir[r[e]]:H(r[e]);return function(i){var o="";for(e=0;n>e;e++)o+=r[e]instanceof Function?r[e].call(i,t):r[e];return o}}function L(t,e){return t.isValid()?(e=F(e,t.localeData()),Gr[e]=Gr[e]||j(e),Gr[e](t)):t.localeData().invalidDate()}function F(t,e){function n(t){return e.longDateFormat(t)||t}var r=5;for(Wr.lastIndex=0;r>=0&&Wr.test(t);)t=t.replace(Wr,n),Wr.lastIndex=0,r-=1;return t}function N(t){return"function"==typeof t&&"[object Function]"===Object.prototype.toString.call(t)}function A(t,e,n){ii[t]=N(e)?e:function(t){return t&&n?n:e}}function U(t,e){return o(ii,t)?ii[t](e._strict,e._locale):new RegExp(W(t))}function W(t){return t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,n,r,i){return e||n||r||i}).replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function G(t,e){var n,r=e;for("string"==typeof t&&(t=[t]),"number"==typeof e&&(r=function(t,n){n[e]=_(t)}),n=0;nr;r++){if(i=a([2e3,r]),n&&!this._longMonthsParse[r]&&(this._longMonthsParse[r]=new RegExp("^"+this.months(i,"").replace(".","")+"$","i"),this._shortMonthsParse[r]=new RegExp("^"+this.monthsShort(i,"").replace(".","")+"$","i")),n||this._monthsParse[r]||(o="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[r]=new RegExp(o.replace(".",""),"i")),n&&"MMMM"===e&&this._longMonthsParse[r].test(t))return r;if(n&&"MMM"===e&&this._shortMonthsParse[r].test(t))return r;if(!n&&this._monthsParse[r].test(t))return r}}function $(t,e){var n;return"string"==typeof e&&(e=t.localeData().monthsParse(e),"number"!=typeof e)?t:(n=Math.min(t.date(),Z(t.year(),e)),t._d["set"+(t._isUTC?"UTC":"")+"Month"](e,n),t)}function B(e){return null!=e?($(this,e),t.updateOffset(this,!0),this):k(this,"Month")}function X(){return Z(this.year(),this.month())}function Q(t){var e,n=t._a;return n&&-2===c(t).overflow&&(e=n[ai]<0||n[ai]>11?ai:n[ui]<1||n[ui]>Z(n[si],n[ai])?ui:n[ci]<0||n[ci]>24||24===n[ci]&&(0!==n[li]||0!==n[fi]||0!==n[hi])?ci:n[li]<0||n[li]>59?li:n[fi]<0||n[fi]>59?fi:n[hi]<0||n[hi]>999?hi:-1,c(t)._overflowDayOfYear&&(si>e||e>ui)&&(e=ui),c(t).overflow=e),t}function K(e){t.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+e)}function te(t,e){var n=!0; +return s(function(){return n&&(K(t+"\n"+(new Error).stack),n=!1),e.apply(this,arguments)},e)}function ee(t,e){mi[t]||(K(e),mi[t]=!0)}function ne(t){var e,n,r=t._i,i=_i.exec(r);if(i){for(c(t).iso=!0,e=0,n=gi.length;n>e;e++)if(gi[e][1].exec(r)){t._f=gi[e][0];break}for(e=0,n=yi.length;n>e;e++)if(yi[e][1].exec(r)){t._f+=(i[6]||" ")+yi[e][0];break}r.match(ei)&&(t._f+="Z"),Se(t)}else t._isValid=!1}function re(e){var n=vi.exec(e._i);return null!==n?void(e._d=new Date(+n[1])):(ne(e),void(e._isValid===!1&&(delete e._isValid,t.createFromInputFallback(e))))}function ie(t,e,n,r,i,o,s){var a=new Date(t,e,n,r,i,o,s);return 1970>t&&a.setFullYear(t),a}function oe(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function se(t){return ae(t)?366:365}function ae(t){return t%4===0&&t%100!==0||t%400===0}function ue(){return ae(this.year())}function ce(t,e,n){var r,i=n-e,o=n-t.day();return o>i&&(o-=7),i-7>o&&(o+=7),r=ke(t).add(o,"d"),{week:Math.ceil(r.dayOfYear()/7),year:r.year()}}function le(t){return ce(t,this._week.dow,this._week.doy).week}function fe(){return this._week.dow}function he(){return this._week.doy}function de(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")}function pe(t){var e=ce(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")}function me(t,e,n,r,i){var o,s=6+i-r,a=oe(t,0,1+s),u=a.getUTCDay();return i>u&&(u+=7),n=null!=n?1*n:i,o=1+s+7*(e-1)-u+n,{year:o>0?t:t-1,dayOfYear:o>0?o:se(t-1)+o}}function _e(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")}function ge(t,e,n){return null!=t?t:null!=e?e:n}function ye(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function ve(t){var e,n,r,i,o=[];if(!t._d){for(r=ye(t),t._w&&null==t._a[ui]&&null==t._a[ai]&&we(t),t._dayOfYear&&(i=ge(t._a[si],r[si]),t._dayOfYear>se(i)&&(c(t)._overflowDayOfYear=!0),n=oe(i,0,t._dayOfYear),t._a[ai]=n.getUTCMonth(),t._a[ui]=n.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=o[e]=r[e];for(;7>e;e++)t._a[e]=o[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[ci]&&0===t._a[li]&&0===t._a[fi]&&0===t._a[hi]&&(t._nextDay=!0,t._a[ci]=0),t._d=(t._useUTC?oe:ie).apply(null,o),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[ci]=24)}}function we(t){var e,n,r,i,o,s,a;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(o=1,s=4,n=ge(e.GG,t._a[si],ce(ke(),1,4).year),r=ge(e.W,1),i=ge(e.E,1)):(o=t._locale._week.dow,s=t._locale._week.doy,n=ge(e.gg,t._a[si],ce(ke(),o,s).year),r=ge(e.w,1),null!=e.d?(i=e.d,o>i&&++r):i=null!=e.e?e.e+o:o),a=me(n,r,i,s,o),t._a[si]=a.year,t._dayOfYear=a.dayOfYear}function Se(e){if(e._f===t.ISO_8601)return void ne(e);e._a=[],c(e).empty=!0;var n,r,i,o,s,a=""+e._i,u=a.length,l=0;for(i=F(e._f,e._locale).match(Ur)||[],n=0;n0&&c(e).unusedInput.push(s),a=a.slice(a.indexOf(r)+r.length),l+=r.length),Ir[o]?(r?c(e).empty=!1:c(e).unusedTokens.push(o),z(o,r,e)):e._strict&&!r&&c(e).unusedTokens.push(o);c(e).charsLeftOver=u-l,a.length>0&&c(e).unusedInput.push(a),c(e).bigHour===!0&&e._a[ci]<=12&&e._a[ci]>0&&(c(e).bigHour=void 0),e._a[ci]=be(e._locale,e._a[ci],e._meridiem),ve(e),Q(e)}function be(t,e,n){var r;return null==n?e:null!=t.meridiemHour?t.meridiemHour(e,n):null!=t.isPM?(r=t.isPM(n),r&&12>e&&(e+=12),r||12!==e||(e=0),e):e}function De(t){var e,n,r,i,o;if(0===t._f.length)return c(t).invalidFormat=!0,void(t._d=new Date(0/0));for(i=0;io)&&(r=o,n=e));s(t,n||e)}function Me(t){if(!t._d){var e=T(t._i);t._a=[e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],ve(t)}}function xe(t){var e=new d(Q(Ee(t)));return e._nextDay&&(e.add(1,"d"),e._nextDay=void 0),e}function Ee(t){var e=t._i,i=t._f;return t._locale=t._locale||M(t._l),null===e||void 0===i&&""===e?f({nullInput:!0}):("string"==typeof e&&(t._i=e=t._locale.preparse(e)),p(e)?new d(Q(e)):(n(i)?De(t):i?Se(t):r(e)?t._d=e:Te(t),t))}function Te(e){var o=e._i;void 0===o?e._d=new Date:r(o)?e._d=new Date(+o):"string"==typeof o?re(e):n(o)?(e._a=i(o.slice(0),function(t){return parseInt(t,10)}),ve(e)):"object"==typeof o?Me(e):"number"==typeof o?e._d=new Date(o):t.createFromInputFallback(e)}function Ye(t,e,n,r,i){var o={};return"boolean"==typeof n&&(r=n,n=void 0),o._isAMomentObject=!0,o._useUTC=o._isUTC=i,o._l=n,o._i=t,o._f=e,o._strict=r,xe(o)}function ke(t,e,n,r){return Ye(t,e,n,r,!1)}function Oe(t,e){var r,i;if(1===e.length&&n(e[0])&&(e=e[0]),!e.length)return ke();for(r=e[0],i=1;it&&(t=-t,n="-"),n+J(~~(t/60),2)+e+J(~~t%60,2)})}function Le(t){var e=(t||"").match(ei)||[],n=e[e.length-1]||[],r=(n+"").match(Mi)||["-",0,0],i=+(60*r[1])+_(r[2]);return"+"===r[0]?i:-i}function Fe(e,n){var i,o;return n._isUTC?(i=n.clone(),o=(p(e)||r(e)?+e:+ke(e))-+i,i._d.setTime(+i._d+o),t.updateOffset(i,!1),i):ke(e).local()}function Ne(t){return 15*-Math.round(t._d.getTimezoneOffset()/15)}function Ae(e,n){var r,i=this._offset||0;return null!=e?("string"==typeof e&&(e=Le(e)),Math.abs(e)<16&&(e=60*e),!this._isUTC&&n&&(r=Ne(this)),this._offset=e,this._isUTC=!0,null!=r&&this.add(r,"m"),i!==e&&(!n||this._changeInProgress?en(this,Be(e-i,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,t.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?i:Ne(this)}function Ue(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}function We(t){return this.utcOffset(0,t)}function Ge(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(Ne(this),"m")),this}function Ie(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Le(this._i)),this}function ze(t){return t=t?ke(t).utcOffset():0,(this.utcOffset()-t)%60===0}function Ze(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function qe(){if("undefined"!=typeof this._isDSTShifted)return this._isDSTShifted;var t={};if(h(t,this),t=Ee(t),t._a){var e=t._isUTC?a(t._a):ke(t._a);this._isDSTShifted=this.isValid()&&g(t._a,e.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function Re(){return!this._isUTC}function Ve(){return this._isUTC}function $e(){return this._isUTC&&0===this._offset}function Be(t,e){var n,r,i,s=t,a=null;return He(t)?s={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(s={},e?s[e]=t:s.milliseconds=t):(a=xi.exec(t))?(n="-"===a[1]?-1:1,s={y:0,d:_(a[ui])*n,h:_(a[ci])*n,m:_(a[li])*n,s:_(a[fi])*n,ms:_(a[hi])*n}):(a=Ei.exec(t))?(n="-"===a[1]?-1:1,s={y:Xe(a[2],n),M:Xe(a[3],n),d:Xe(a[4],n),h:Xe(a[5],n),m:Xe(a[6],n),s:Xe(a[7],n),w:Xe(a[8],n)}):null==s?s={}:"object"==typeof s&&("from"in s||"to"in s)&&(i=Ke(ke(s.from),ke(s.to)),s={},s.ms=i.milliseconds,s.M=i.months),r=new Pe(s),He(t)&&o(t,"_locale")&&(r._locale=t._locale),r}function Xe(t,e){var n=t&&parseFloat(t.replace(",","."));return(isNaN(n)?0:n)*e}function Qe(t,e){var n={milliseconds:0,months:0};return n.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(n.months,"M").isAfter(e)&&--n.months,n.milliseconds=+e-+t.clone().add(n.months,"M"),n}function Ke(t,e){var n;return e=Fe(e,t),t.isBefore(e)?n=Qe(t,e):(n=Qe(e,t),n.milliseconds=-n.milliseconds,n.months=-n.months),n}function tn(t,e){return function(n,r){var i,o;return null===r||isNaN(+r)||(ee(e,"moment()."+e+"(period, number) is deprecated. Please use moment()."+e+"(number, period)."),o=n,n=r,r=o),n="string"==typeof n?+n:n,i=Be(n,r),en(this,i,t),this}}function en(e,n,r,i){var o=n._milliseconds,s=n._days,a=n._months;i=null==i?!0:i,o&&e._d.setTime(+e._d+o*r),s&&O(e,"Date",k(e,"Date")+s*r),a&&$(e,k(e,"Month")+a*r),i&&t.updateOffset(e,s||a)}function nn(t,e){var n=t||ke(),r=Fe(n,this).startOf("day"),i=this.diff(r,"days",!0),o=-6>i?"sameElse":-1>i?"lastWeek":0>i?"lastDay":1>i?"sameDay":2>i?"nextDay":7>i?"nextWeek":"sameElse";return this.format(e&&e[o]||this.localeData().calendar(o,this,ke(n)))}function rn(){return new d(this)}function on(t,e){var n;return e=E("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=p(t)?t:ke(t),+this>+t):(n=p(t)?+t:+ke(t),n<+this.clone().startOf(e))}function sn(t,e){var n;return e=E("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=p(t)?t:ke(t),+t>+this):(n=p(t)?+t:+ke(t),+this.clone().endOf(e)e-o?(n=t.clone().add(i-1,"months"),r=(e-o)/(o-n)):(n=t.clone().add(i+1,"months"),r=(e-o)/(n-o)),-(i+r)}function fn(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function hn(){var t=this.clone().utc();return 0e;e++)if(this._weekdaysParse[e]||(n=ke([2e3,1]).day(e),r="^"+this.weekdays(n,"")+"|^"+this.weekdaysShort(n,"")+"|^"+this.weekdaysMin(n,""),this._weekdaysParse[e]=new RegExp(r.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e}function Gn(t){var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=Fn(t,this.localeData()),this.add(t-e,"d")):e}function In(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")}function zn(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)}function Zn(t,e){P(t,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)})}function qn(t,e){return e._meridiemParse}function Rn(t){return"p"===(t+"").toLowerCase().charAt(0)}function Vn(t,e,n){return t>11?n?"pm":"PM":n?"am":"AM"}function $n(t,e){e[hi]=_(1e3*("0."+t))}function Bn(){return this._isUTC?"UTC":""}function Xn(){return this._isUTC?"Coordinated Universal Time":""}function Qn(t){return ke(1e3*t)}function Kn(){return ke.apply(null,arguments).parseZone()}function tr(t,e,n){var r=this._calendar[t];return"function"==typeof r?r.call(e,n):r}function er(t){var e=this._longDateFormat[t],n=this._longDateFormat[t.toUpperCase()];return e||!n?e:(this._longDateFormat[t]=n.replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t])}function nr(){return this._invalidDate}function rr(t){return this._ordinal.replace("%d",t)}function ir(t){return t}function or(t,e,n,r){var i=this._relativeTime[n];return"function"==typeof i?i(t,e,n,r):i.replace(/%d/i,t)}function sr(t,e){var n=this._relativeTime[t>0?"future":"past"];return"function"==typeof n?n(e):n.replace(/%s/i,e)}function ar(t){var e,n;for(n in t)e=t[n],"function"==typeof e?this[n]=e:this["_"+n]=e;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)}function ur(t,e,n,r){var i=M(),o=a().set(r,e);return i[n](o,t)}function cr(t,e,n,r,i){if("number"==typeof t&&(e=t,t=void 0),t=t||"",null!=e)return ur(t,e,n,i);var o,s=[];for(o=0;r>o;o++)s[o]=ur(t,o,n,i);return s}function lr(t,e){return cr(t,e,"months",12,"month")}function fr(t,e){return cr(t,e,"monthsShort",12,"month")}function hr(t,e){return cr(t,e,"weekdays",7,"day")}function dr(t,e){return cr(t,e,"weekdaysShort",7,"day")}function pr(t,e){return cr(t,e,"weekdaysMin",7,"day")}function mr(){var t=this._data;return this._milliseconds=$i(this._milliseconds),this._days=$i(this._days),this._months=$i(this._months),t.milliseconds=$i(t.milliseconds),t.seconds=$i(t.seconds),t.minutes=$i(t.minutes),t.hours=$i(t.hours),t.months=$i(t.months),t.years=$i(t.years),this}function _r(t,e,n,r){var i=Be(e,n);return t._milliseconds+=r*i._milliseconds,t._days+=r*i._days,t._months+=r*i._months,t._bubble()}function gr(t,e){return _r(this,t,e,1)}function yr(t,e){return _r(this,t,e,-1)}function vr(t){return 0>t?Math.floor(t):Math.ceil(t)}function wr(){var t,e,n,r,i,o=this._milliseconds,s=this._days,a=this._months,u=this._data;return o>=0&&s>=0&&a>=0||0>=o&&0>=s&&0>=a||(o+=864e5*vr(br(a)+s),s=0,a=0),u.milliseconds=o%1e3,t=m(o/1e3),u.seconds=t%60,e=m(t/60),u.minutes=e%60,n=m(e/60),u.hours=n%24,s+=m(n/24),i=m(Sr(s)),a+=i,s-=vr(br(i)),r=m(a/12),a%=12,u.days=s,u.months=a,u.years=r,this}function Sr(t){return 4800*t/146097}function br(t){return 146097*t/4800}function Dr(t){var e,n,r=this._milliseconds;if(t=E(t),"month"===t||"year"===t)return e=this._days+r/864e5,n=this._months+Sr(e),"month"===t?n:n/12;switch(e=this._days+Math.round(br(this._months)),t){case"week":return e/7+r/6048e5;case"day":return e+r/864e5;case"hour":return 24*e+r/36e5;case"minute":return 1440*e+r/6e4;case"second":return 86400*e+r/1e3;case"millisecond":return Math.floor(864e5*e)+r;default:throw new Error("Unknown unit "+t)}}function Mr(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*_(this._months/12)}function xr(t){return function(){return this.as(t)}}function Er(t){return t=E(t),this[t+"s"]()}function Tr(t){return function(){return this._data[t]}}function Yr(){return m(this.days()/7)}function kr(t,e,n,r,i){return i.relativeTime(e||1,!!n,t,r)}function Or(t,e,n){var r=Be(t).abs(),i=fo(r.as("s")),o=fo(r.as("m")),s=fo(r.as("h")),a=fo(r.as("d")),u=fo(r.as("M")),c=fo(r.as("y")),l=i0,l[4]=n,kr.apply(null,l)}function Cr(t,e){return void 0===ho[t]?!1:void 0===e?ho[t]:(ho[t]=e,!0)}function Jr(t){var e=this.localeData(),n=Or(this,!t,e);return t&&(n=e.pastFuture(+this,n)),e.postformat(n)}function Pr(){var t,e,n,r=po(this._milliseconds)/1e3,i=po(this._days),o=po(this._months);t=m(r/60),e=m(t/60),r%=60,t%=60,n=m(o/12),o%=12;var s=n,a=o,u=i,c=e,l=t,f=r,h=this.asSeconds();return h?(0>h?"-":"")+"P"+(s?s+"Y":"")+(a?a+"M":"")+(u?u+"D":"")+(c||l||f?"T":"")+(c?c+"H":"")+(l?l+"M":"")+(f?f+"S":""):"P0D"}var Hr,jr,Lr=t.momentProperties=[],Fr=!1,Nr={},Ar={},Ur=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,Wr=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Gr={},Ir={},zr=/\d/,Zr=/\d\d/,qr=/\d{3}/,Rr=/\d{4}/,Vr=/[+-]?\d{6}/,$r=/\d\d?/,Br=/\d{1,3}/,Xr=/\d{1,4}/,Qr=/[+-]?\d{1,6}/,Kr=/\d+/,ti=/[+-]?\d+/,ei=/Z|[+-]\d\d:?\d\d/gi,ni=/[+-]?\d+(\.\d{1,3})?/,ri=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,ii={},oi={},si=0,ai=1,ui=2,ci=3,li=4,fi=5,hi=6;P("M",["MM",2],"Mo",function(){return this.month()+1}),P("MMM",0,0,function(t){return this.localeData().monthsShort(this,t)}),P("MMMM",0,0,function(t){return this.localeData().months(this,t)}),x("month","M"),A("M",$r),A("MM",$r,Zr),A("MMM",ri),A("MMMM",ri),G(["M","MM"],function(t,e){e[ai]=_(t)-1}),G(["MMM","MMMM"],function(t,e,n,r){var i=n._locale.monthsParse(t,r,n._strict);null!=i?e[ai]=i:c(n).invalidMonth=t});var di="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),pi="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),mi={};t.suppressDeprecationWarnings=!1;var _i=/^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,gi=[["YYYYYY-MM-DD",/[+-]\d{6}-\d{2}-\d{2}/],["YYYY-MM-DD",/\d{4}-\d{2}-\d{2}/],["GGGG-[W]WW-E",/\d{4}-W\d{2}-\d/],["GGGG-[W]WW",/\d{4}-W\d{2}/],["YYYY-DDD",/\d{4}-\d{3}/]],yi=[["HH:mm:ss.SSSS",/(T| )\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss",/(T| )\d\d:\d\d:\d\d/],["HH:mm",/(T| )\d\d:\d\d/],["HH",/(T| )\d\d/]],vi=/^\/?Date\((\-?\d+)/i;t.createFromInputFallback=te("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),P(0,["YY",2],0,function(){return this.year()%100}),P(0,["YYYY",4],0,"year"),P(0,["YYYYY",5],0,"year"),P(0,["YYYYYY",6,!0],0,"year"),x("year","y"),A("Y",ti),A("YY",$r,Zr),A("YYYY",Xr,Rr),A("YYYYY",Qr,Vr),A("YYYYYY",Qr,Vr),G(["YYYYY","YYYYYY"],si),G("YYYY",function(e,n){n[si]=2===e.length?t.parseTwoDigitYear(e):_(e)}),G("YY",function(e,n){n[si]=t.parseTwoDigitYear(e)}),t.parseTwoDigitYear=function(t){return _(t)+(_(t)>68?1900:2e3)};var wi=Y("FullYear",!1);P("w",["ww",2],"wo","week"),P("W",["WW",2],"Wo","isoWeek"),x("week","w"),x("isoWeek","W"),A("w",$r),A("ww",$r,Zr),A("W",$r),A("WW",$r,Zr),I(["w","ww","W","WW"],function(t,e,n,r){e[r.substr(0,1)]=_(t)});var Si={dow:0,doy:6};P("DDD",["DDDD",3],"DDDo","dayOfYear"),x("dayOfYear","DDD"),A("DDD",Br),A("DDDD",qr),G(["DDD","DDDD"],function(t,e,n){n._dayOfYear=_(t)}),t.ISO_8601=function(){};var bi=te("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(){var t=ke.apply(null,arguments);return this>t?this:t}),Di=te("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(){var t=ke.apply(null,arguments);return t>this?this:t});je("Z",":"),je("ZZ",""),A("Z",ei),A("ZZ",ei),G(["Z","ZZ"],function(t,e,n){n._useUTC=!0,n._tzm=Le(t)});var Mi=/([\+\-]|\d\d)/gi;t.updateOffset=function(){};var xi=/(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,Ei=/^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/;Be.fn=Pe.prototype;var Ti=tn(1,"add"),Yi=tn(-1,"subtract");t.defaultFormat="YYYY-MM-DDTHH:mm:ssZ";var ki=te("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return void 0===t?this.localeData():this.locale(t)});P(0,["gg",2],0,function(){return this.weekYear()%100}),P(0,["GG",2],0,function(){return this.isoWeekYear()%100}),On("gggg","weekYear"),On("ggggg","weekYear"),On("GGGG","isoWeekYear"),On("GGGGG","isoWeekYear"),x("weekYear","gg"),x("isoWeekYear","GG"),A("G",ti),A("g",ti),A("GG",$r,Zr),A("gg",$r,Zr),A("GGGG",Xr,Rr),A("gggg",Xr,Rr),A("GGGGG",Qr,Vr),A("ggggg",Qr,Vr),I(["gggg","ggggg","GGGG","GGGGG"],function(t,e,n,r){e[r.substr(0,2)]=_(t)}),I(["gg","GG"],function(e,n,r,i){n[i]=t.parseTwoDigitYear(e)}),P("Q",0,0,"quarter"),x("quarter","Q"),A("Q",zr),G("Q",function(t,e){e[ai]=3*(_(t)-1)}),P("D",["DD",2],"Do","date"),x("date","D"),A("D",$r),A("DD",$r,Zr),A("Do",function(t,e){return t?e._ordinalParse:e._ordinalParseLenient}),G(["D","DD"],ui),G("Do",function(t,e){e[ui]=_(t.match($r)[0],10)});var Oi=Y("Date",!0);P("d",0,"do","day"),P("dd",0,0,function(t){return this.localeData().weekdaysMin(this,t)}),P("ddd",0,0,function(t){return this.localeData().weekdaysShort(this,t)}),P("dddd",0,0,function(t){return this.localeData().weekdays(this,t)}),P("e",0,0,"weekday"),P("E",0,0,"isoWeekday"),x("day","d"),x("weekday","e"),x("isoWeekday","E"),A("d",$r),A("e",$r),A("E",$r),A("dd",ri),A("ddd",ri),A("dddd",ri),I(["dd","ddd","dddd"],function(t,e,n){var r=n._locale.weekdaysParse(t);null!=r?e.d=r:c(n).invalidWeekday=t}),I(["d","e","E"],function(t,e,n,r){e[r]=_(t)});var Ci="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Ji="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Pi="Su_Mo_Tu_We_Th_Fr_Sa".split("_");P("H",["HH",2],0,"hour"),P("h",["hh",2],0,function(){return this.hours()%12||12}),Zn("a",!0),Zn("A",!1),x("hour","h"),A("a",qn),A("A",qn),A("H",$r),A("h",$r),A("HH",$r,Zr),A("hh",$r,Zr),G(["H","HH"],ci),G(["a","A"],function(t,e,n){n._isPm=n._locale.isPM(t),n._meridiem=t}),G(["h","hh"],function(t,e,n){e[ci]=_(t),c(n).bigHour=!0});var Hi=/[ap]\.?m?\.?/i,ji=Y("Hours",!0);P("m",["mm",2],0,"minute"),x("minute","m"),A("m",$r),A("mm",$r,Zr),G(["m","mm"],li);var Li=Y("Minutes",!1);P("s",["ss",2],0,"second"),x("second","s"),A("s",$r),A("ss",$r,Zr),G(["s","ss"],fi);var Fi=Y("Seconds",!1);P("S",0,0,function(){return~~(this.millisecond()/100)}),P(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),P(0,["SSS",3],0,"millisecond"),P(0,["SSSS",4],0,function(){return 10*this.millisecond()}),P(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),P(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),P(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),P(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),P(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),x("millisecond","ms"),A("S",Br,zr),A("SS",Br,Zr),A("SSS",Br,qr);var Ni;for(Ni="SSSS";Ni.length<=9;Ni+="S")A(Ni,Kr);for(Ni="S";Ni.length<=9;Ni+="S")G(Ni,$n);var Ai=Y("Milliseconds",!1);P("z",0,0,"zoneAbbr"),P("zz",0,0,"zoneName");var Ui=d.prototype;Ui.add=Ti,Ui.calendar=nn,Ui.clone=rn,Ui.diff=cn,Ui.endOf=Sn,Ui.format=dn,Ui.from=pn,Ui.fromNow=mn,Ui.to=_n,Ui.toNow=gn,Ui.get=C,Ui.invalidAt=kn,Ui.isAfter=on,Ui.isBefore=sn,Ui.isBetween=an,Ui.isSame=un,Ui.isValid=Tn,Ui.lang=ki,Ui.locale=yn,Ui.localeData=vn,Ui.max=Di,Ui.min=bi,Ui.parsingFlags=Yn,Ui.set=C,Ui.startOf=wn,Ui.subtract=Yi,Ui.toArray=xn,Ui.toObject=En,Ui.toDate=Mn,Ui.toISOString=hn,Ui.toJSON=hn,Ui.toString=fn,Ui.unix=Dn,Ui.valueOf=bn,Ui.year=wi,Ui.isLeapYear=ue,Ui.weekYear=Jn,Ui.isoWeekYear=Pn,Ui.quarter=Ui.quarters=Ln,Ui.month=B,Ui.daysInMonth=X,Ui.week=Ui.weeks=de,Ui.isoWeek=Ui.isoWeeks=pe,Ui.weeksInYear=jn,Ui.isoWeeksInYear=Hn,Ui.date=Oi,Ui.day=Ui.days=Gn,Ui.weekday=In,Ui.isoWeekday=zn,Ui.dayOfYear=_e,Ui.hour=Ui.hours=ji,Ui.minute=Ui.minutes=Li,Ui.second=Ui.seconds=Fi,Ui.millisecond=Ui.milliseconds=Ai,Ui.utcOffset=Ae,Ui.utc=We,Ui.local=Ge,Ui.parseZone=Ie,Ui.hasAlignedHourOffset=ze,Ui.isDST=Ze,Ui.isDSTShifted=qe,Ui.isLocal=Re,Ui.isUtcOffset=Ve,Ui.isUtc=$e,Ui.isUTC=$e,Ui.zoneAbbr=Bn,Ui.zoneName=Xn,Ui.dates=te("dates accessor is deprecated. Use date instead.",Oi),Ui.months=te("months accessor is deprecated. Use month instead",B),Ui.years=te("years accessor is deprecated. Use year instead",wi),Ui.zone=te("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",Ue);var Wi=Ui,Gi={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},Ii={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},zi="Invalid date",Zi="%d",qi=/\d{1,2}/,Ri={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},Vi=y.prototype;Vi._calendar=Gi,Vi.calendar=tr,Vi._longDateFormat=Ii,Vi.longDateFormat=er,Vi._invalidDate=zi,Vi.invalidDate=nr,Vi._ordinal=Zi,Vi.ordinal=rr,Vi._ordinalParse=qi,Vi.preparse=ir,Vi.postformat=ir,Vi._relativeTime=Ri,Vi.relativeTime=or,Vi.pastFuture=sr,Vi.set=ar,Vi.months=q,Vi._months=di,Vi.monthsShort=R,Vi._monthsShort=pi,Vi.monthsParse=V,Vi.week=le,Vi._week=Si,Vi.firstDayOfYear=he,Vi.firstDayOfWeek=fe,Vi.weekdays=Nn,Vi._weekdays=Ci,Vi.weekdaysMin=Un,Vi._weekdaysMin=Pi,Vi.weekdaysShort=An,Vi._weekdaysShort=Ji,Vi.weekdaysParse=Wn,Vi.isPM=Rn,Vi._meridiemParse=Hi,Vi.meridiem=Vn,b("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,n=1===_(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+n}}),t.lang=te("moment.lang is deprecated. Use moment.locale instead.",b),t.langData=te("moment.langData is deprecated. Use moment.localeData instead.",M);var $i=Math.abs,Bi=xr("ms"),Xi=xr("s"),Qi=xr("m"),Ki=xr("h"),to=xr("d"),eo=xr("w"),no=xr("M"),ro=xr("y"),io=Tr("milliseconds"),oo=Tr("seconds"),so=Tr("minutes"),ao=Tr("hours"),uo=Tr("days"),co=Tr("months"),lo=Tr("years"),fo=Math.round,ho={s:45,m:45,h:22,d:26,M:11},po=Math.abs,mo=Pe.prototype;mo.abs=mr,mo.add=gr,mo.subtract=yr,mo.as=Dr,mo.asMilliseconds=Bi,mo.asSeconds=Xi,mo.asMinutes=Qi,mo.asHours=Ki,mo.asDays=to,mo.asWeeks=eo,mo.asMonths=no,mo.asYears=ro,mo.valueOf=Mr,mo._bubble=wr,mo.get=Er,mo.milliseconds=io,mo.seconds=oo,mo.minutes=so,mo.hours=ao,mo.days=uo,mo.weeks=Yr,mo.months=co,mo.years=lo,mo.humanize=Jr,mo.toISOString=Pr,mo.toString=Pr,mo.toJSON=Pr,mo.locale=yn,mo.localeData=vn,mo.toIsoString=te("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Pr),mo.lang=ki,P("X",0,0,"unix"),P("x",0,0,"valueOf"),A("x",ti),A("X",ni),G("X",function(t,e,n){n._d=new Date(1e3*parseFloat(t,10))}),G("x",function(t,e,n){n._d=new Date(_(t))}),t.version="2.10.5",e(ke),t.fn=Wi,t.min=Ce,t.max=Je,t.utc=a,t.unix=Qn,t.months=lr,t.isDate=r,t.locale=b,t.invalid=f,t.duration=Be,t.isMoment=p,t.weekdays=hr,t.parseZone=Kn,t.localeData=M,t.isDuration=He,t.monthsShort=fr,t.weekdaysMin=pr,t.defineLocale=D,t.weekdaysShort=dr,t.normalizeUnits=E,t.relativeTimeThreshold=Cr;var _o=t;return _o}),function(){var rsplit=function(t,e){for(var n,r,i,o=e.exec(t),s=new Array;null!=o;)n=o.index,r=e.lastIndex,0!=n&&(i=t.substring(0,n),s.push(t.substring(0,n)),t=t.slice(n)),s.push(o[0]),t=t.slice(o[0].length),o=e.exec(t);return""==!t&&s.push(t),s},chop=function(t){return t.substr(0,t.length-1)},extend=function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};EJS=function(t){if(t="string"==typeof t?{view:t}:t,this.set_options(t),t.precompiled)return this.template={},this.template.process=t.precompiled,void EJS.update(this.name,this);if(t.element){if("string"==typeof t.element){var e=t.element;if(t.element=document.getElementById(t.element),null==t.element)throw e+"does not exist!"}this.text=t.element.value?t.element.value:t.element.innerHTML,this.name=t.element.id,this.type="["}else if(t.url){t.url=EJS.endExt(t.url,this.extMatch),this.name=this.name?this.name:t.url;var n=t.url,r=EJS.get(this.name,this.cache);if(r)return r;if(r==EJS.INVALID_PATH)return null;try{this.text=EJS.request(n+(this.cache?"":"?"+Math.random()))}catch(i){}if(null==this.text)throw{type:"EJS",message:"There is no template at "+n}}var r=new EJS.Compiler(this.text,this.type);r.compile(t,this.name),EJS.update(this.name,this),this.template=r},EJS.prototype={render:function(t,e){t=t||{},this._extra_helpers=e;var n=new EJS.Helpers(t,e||{});return this.template.process.call(t,t,n)},update:function(element,options){return"string"==typeof element&&(element=document.getElementById(element)),null==options?(_template=this,function(t){EJS.prototype.update.call(_template,element,t)}):void("string"==typeof options?(params={},params.url=options,_template=this,params.onComplete=function(request){var object=eval(request.responseText);EJS.prototype.update.call(_template,element,object)},EJS.ajax_request(params)):element.innerHTML=this.render(options))},out:function(){return this.template.out},set_options:function(t){this.type=t.type||EJS.type,this.cache=null!=t.cache?t.cache:EJS.cache,this.text=t.text||null,this.name=t.name||null,this.ext=t.ext||EJS.ext,this.extMatch=new RegExp(this.ext.replace(/\./,"."))}},EJS.endExt=function(t,e){return t?(e.lastIndex=0,t+(e.test(t)?"":this.ext)):null},EJS.Scanner=function(t,e,n){extend(this,{left_delimiter:e+"%",right_delimiter:"%"+n,double_left:e+"%%",double_right:"%%"+n,left_equal:e+"%=",left_comment:e+"%#"}),this.SplitRegexp="["==e?/(\[%%)|(%%\])|(\[%=)|(\[%#)|(\[%)|(%\]\n)|(%\])|(\n)/:new RegExp("("+this.double_left+")|(%%"+this.double_right+")|("+this.left_equal+")|("+this.left_comment+")|("+this.left_delimiter+")|("+this.right_delimiter+"\n)|("+this.right_delimiter+")|(\n)"),this.source=t,this.stag=null,this.lines=0},EJS.Scanner.to_text=function(t){return null==t||void 0===t?"":t instanceof Date?t.toDateString():t.toString?t.toString():""},EJS.Scanner.prototype={scan:function(t){if(scanline=this.scanline,regex=this.SplitRegexp,""==!this.source)for(var e=rsplit(this.source,/\n/),n=0;n0){for(var t=0;t0&&buff.push(put_cmd+'"'+clean(content)+'")'),content="";break;case e.double_left:content+=e.left_delimiter;break;default:content+=t}else switch(t){case e.right_delimiter:switch(e.stag){case e.left_delimiter:"\n"==content[content.length-1]?(content=chop(content),buff.push(content),buff.cr()):buff.push(content);break;case e.left_equal:buff.push(insert_cmd+"(EJS.Scanner.to_text("+content+")))")}e.stag=null,content="";break;case e.double_right:content+=e.right_delimiter;break;default:content+=t}}),content.length>0&&buff.push(put_cmd+'"'+clean(content)+'")'),buff.close(),this.out=buff.script+";";var to_be_evaled="/*"+name+"*/this.process = function(_CONTEXT,_VIEW) { try { with(_VIEW) { with (_CONTEXT) {"+this.out+" return ___ViewO.join('');}}}catch(e){e.lineNumber=null;throw e;}};";try{eval(to_be_evaled)}catch(e){if("undefined"==typeof JSLINT)throw e;JSLINT(this.out);for(var i=0;i").replace(/''/g,"'"):""}},EJS.newRequest=function(){for(var t=[function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new XMLHttpRequest},function(){return new ActiveXObject("Microsoft.XMLHTTP")}],e=0;ec;c++)r.push({value:c,text:c});for(var l=0;12>l;l++)i.push({value:l,text:n[l]});for(var f=0;31>f;f++)o.push({value:f+1,text:f+1});var h=this.select_tag(t+"[year]",s,r,{id:t+"[year]"}),d=this.select_tag(t+"[month]",a,i,{id:t+"[month]"}),p=this.select_tag(t+"[day]",u,o,{id:t+"[day]"});return h+d+p},EJS.Helpers.prototype.form_tag=function(t,e){return e=e||{},e.action=t,1==e.multipart&&(e.method="post",e.enctype="multipart/form-data"),this.start_tag_for("form",e)},EJS.Helpers.prototype.form_tag_end=function(){return this.tag_end("form")},EJS.Helpers.prototype.hidden_field_tag=function(t,e,n){return this.input_field_tag(t,e,"hidden",n)},EJS.Helpers.prototype.input_field_tag=function(t,e,n,r){return r=r||{},r.id=r.id||t,r.value=e||"",r.type=n||"text",r.name=t,this.single_tag_for("input",r)},EJS.Helpers.prototype.is_current_page=function(t){return window.location.href==t||window.location.pathname==t?!0:!1},EJS.Helpers.prototype.link_to=function(t,e,n){if(!t)var t="null";if(!n)var n={};return n.confirm&&(n.onclick=' var ret_confirm = confirm("'+n.confirm+'"); if(!ret_confirm){ return false;} ',n.confirm=null),n.href=e,this.start_tag_for("a",n)+t+this.tag_end("a")},EJS.Helpers.prototype.submit_link_to=function(t,e,n){if(!t)var t="null";if(!n)var n={};return n.onclick=n.onclick||"",n.confirm&&(n.onclick=' var ret_confirm = confirm("'+n.confirm+'"); if(!ret_confirm){ return false;} ',n.confirm=null),n.value=t,n.type="submit",n.onclick=n.onclick+(e?this.url_for(e):"")+"return false;",this.start_tag_for("input",n)},EJS.Helpers.prototype.link_to_if=function(t,e,n,r,i,o){return this.link_to_unless(0==t,e,n,r,i,o)},EJS.Helpers.prototype.link_to_unless=function(t,e,n,r,i){return r=r||{},t?i&&"function"==typeof i?i(e,n,r,i):e:this.link_to(e,n,r)},EJS.Helpers.prototype.link_to_unless_current=function(t,e,n,r){return n=n||{},this.link_to_unless(this.is_current_page(e),t,e,n,r)},EJS.Helpers.prototype.password_field_tag=function(t,e,n){return this.input_field_tag(t,e,"password",n)},EJS.Helpers.prototype.select_tag=function(t,e,n,r){r=r||{},r.id=r.id||t,r.value=e,r.name=t;var i="";i+=this.start_tag_for("select",r);for(var o=0;o")},EJS.Helpers.prototype.start_tag_for=function(t,e){return this.tag(t,e)},EJS.Helpers.prototype.submit_tag=function(t,e){return e=e||{},e.type=e.type||"submit",e.value=t||"Submit",this.single_tag_for("input",e)},EJS.Helpers.prototype.tag=function(t,e,n){if(!n)var n=">";var r=" ";for(var i in e){if(null!=e[i])var o=e[i].toString();else var o="";"Class"==i&&(i="class"),r+=-1!=o.indexOf("'")?i+'="'+o+'" ':i+"='"+o+"' "}return"<"+t+r+n},EJS.Helpers.prototype.tag_end=function(t){return""},EJS.Helpers.prototype.text_area_tag=function(t,e,n){return n=n||{},n.id=n.id||t,n.name=n.name||t,e=e||"",n.size&&(n.cols=n.size.split("x")[0],n.rows=n.size.split("x")[1],delete n.size),n.cols=n.cols||50,n.rows=n.rows||4,this.start_tag_for("textarea",n)+e+this.tag_end("textarea")},EJS.Helpers.prototype.text_tag=EJS.Helpers.prototype.text_area_tag,EJS.Helpers.prototype.text_field_tag=function(t,e,n){return this.input_field_tag(t,e,"text",n)},EJS.Helpers.prototype.url_for=function(t){return'window.location="'+t+'";'},EJS.Helpers.prototype.img_tag=function(t,e,n){return n=n||{},n.src=t,n.alt=e,this.single_tag_for("img",n)}; diff --git a/app/src/main/assets/js/route.js b/app/src/main/assets/js/route.js new file mode 100644 index 0000000..d98c2bc --- /dev/null +++ b/app/src/main/assets/js/route.js @@ -0,0 +1,58 @@ +var ROUTE; +ROUTE = { + + preUrl: '/', + + lastUpdated: null, + preCache: function () { + this._routes = new EJS({ + url: 'ejs/routes.ejs' + }); + }, + elmCache: {}, + routeID:null, + + init: function () { + console.log('INIT'); + this.preCache(); + // this.getUpdatedTimes(); + }, + getRoute: function (id) { + var self, feedUrl, dest, jsonData; + self = this; + feedUrl = this.preUrl + 'getroute?route=' + id; + + console.log(feedUrl); + + jsonData = Android.getJson(feedUrl); + + if (jsonData != '') { + self.displayRoute(JSON.parse(jsonData)); + } + }, + displayRoute(data) { + console.log(data); + if (this.elmCache.dest$ == null) { + this.elmCache.dest$ = $('#trainResults'); + } + + var html = this._routes.render(data); + + this.elmCache.dest$.empty(); + this.elmCache.dest$.append(html); + + }, + getRouteId: function() { + console.log('getRouteId'); + routeID = Android.getRoute(); + console.log(routeID); + this.displayRoute(JSON.parse(routeID)); + } + +}; + + +Zepto(function ($) { + ROUTE.init(); + ROUTE.getRouteId(); +}); \ No newline at end of file diff --git a/app/src/main/assets/js/zprogress.js b/app/src/main/assets/js/zprogress.js new file mode 100644 index 0000000..ee3ed93 --- /dev/null +++ b/app/src/main/assets/js/zprogress.js @@ -0,0 +1,74 @@ +// zprogress (c) 2013 Thomas Fuchs +// MIT-licensed - https://github.com/madrobby/zprogress + +;(function($){ + var html = + ''+ + '
', + $wrapper, $indicator, value, timeout, + MARGIN = 12.5, + LMARGIN = MARGIN/100, + RMARGIN = 1 - LMARGIN + + function init(){ + if($wrapper) return + + $('body').append(html) + $wrapper = $('#zprogress') + $indicator = $('#zprogress_indicator') + } + + function anim(){ + $indicator.animate({ translateX: value*100+'%' }, 200) + } + + function clear(){ + if(timeout) clearTimeout(timeout) + timeout = undefined + } + + function trickle(){ + timeout = setTimeout(function(){ + $.zprogress.inc((RMARGIN-value)*.035*Math.random()) + trickle() + }, 350+(400*Math.random())) + } + + $.zprogress = { + start: function(){ + init() + clear() + value = LMARGIN + $wrapper.animate({ opacity: 1 }) + $indicator.animate({ translateX: '0%' }, 0) + setTimeout(function(){ + anim() + trickle() + },0) + }, + inc: function(delta){ + if(value + + + + + Feedmaster + + + + + + + + + + + + + + + + + +

Details

+ +
+
+ + + + diff --git a/app/src/main/java/com/silvrtree/traintimes/MainActivity.java b/app/src/main/java/com/silvrtree/traintimes/MainActivity.java new file mode 100644 index 0000000..47a46c8 --- /dev/null +++ b/app/src/main/java/com/silvrtree/traintimes/MainActivity.java @@ -0,0 +1,329 @@ +package com.silvrtree.traintimes; + +import android.content.Context; +import android.net.ConnectivityManager; +import android.net.NetworkInfo; +import android.os.Bundle; +import android.support.v4.app.FragmentTransaction; +import android.support.v7.app.AppCompatActivity; +import android.util.Log; +import android.view.Menu; +import android.view.MenuItem; +import android.view.View; +import android.webkit.JavascriptInterface; +import android.webkit.WebSettings; +import android.webkit.WebView; +import android.widget.FrameLayout; +import android.widget.ProgressBar; +import android.widget.Toast; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.URL; +import java.net.URLConnection; + +public class MainActivity extends AppCompatActivity { + + private static final String TAG = MainActivity.class.getSimpleName(); + private WebView mWebView; + private StopsFragment stopsFragment; + private Menu storedMenu; + + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + + mWebView = (WebView) findViewById(R.id.activity_main_webview); + + WebSettings webSettings = mWebView.getSettings(); + webSettings.setJavaScriptEnabled(true); + webSettings.setDomStorageEnabled(true); + webSettings.setAllowFileAccessFromFileURLs(true); //Maybe you don't need this rule + webSettings.setAllowUniversalAccessFromFileURLs(true); + + + mWebView.addJavascriptInterface(new JsObject(), "Android"); + mWebView.loadUrl("file:///android_asset/feeds.html"); + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + // Inflate the menu; this adds items to the action bar if it is present. + getMenuInflater().inflate(R.menu.menu_main, menu); + storedMenu = menu; + return true; + } + + public void showStopsMenu() { + MainActivity.this.runOnUiThread(new Runnable() { + public void run() { + + storedMenu.findItem(R.id.action_pygglc).setVisible(false); + storedMenu.findItem(R.id.action_glcptk).setVisible(false); + storedMenu.findItem(R.id.action_ptkdbc).setVisible(false); + storedMenu.findItem(R.id.action_glqdbc).setVisible(false); + storedMenu.findItem(R.id.action_refresh).setVisible(false); + storedMenu.findItem(R.id.action_refresh).setVisible(false); + storedMenu.findItem(R.id.action_return).setVisible(true); + } + }); + + + } + + public void showProperMenu() { + MainActivity.this.runOnUiThread(new Runnable() { + public void run() { + + storedMenu.findItem(R.id.action_pygglc).setVisible(true); + storedMenu.findItem(R.id.action_glcptk).setVisible(true); + storedMenu.findItem(R.id.action_ptkdbc).setVisible(true); + storedMenu.findItem(R.id.action_glqdbc).setVisible(true); + storedMenu.findItem(R.id.action_refresh).setVisible(true); + storedMenu.findItem(R.id.action_refresh).setVisible(true); + storedMenu.findItem(R.id.action_return).setVisible(false); + } + }); + + + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + // Handle action bar item clicks here. The action bar will + // automatically handle clicks on the Home/Up button, so long + // as you specify a parent activity in AndroidManifest.xml. + int id = item.getItemId(); + + //noinspection SimplifiableIfStatement + if (id == R.id.action_refresh) { + removeFragment(); + doRefresh(); + return true; + } + + if (id == R.id.action_pygglc) { + //doGetPYGGLC(); + removeFragment(); + doGetTrains("pyg", "glc"); + return true; + } + + if (id == R.id.action_glcptk) { + removeFragment(); + doGetTrains("glc","ptk"); + return true; + } + + if (id == R.id.action_ptkdbc) { + removeFragment(); + doGetTrains("ptk","dbc"); + return true; + } + + if (id == R.id.action_glqdbc) { + removeFragment(); + doGetTrains("glq","dbc"); + return true; + } + + if (id == R.id.action_test) { + FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); + ft.setCustomAnimations(R.anim.frag_in, R.anim.frag_out); + if (stopsFragment == null) { + stopsFragment = StopsFragment.newInstance("bobbbbbb"); + ft.replace(R.id.fragment_placeholder, stopsFragment); + } + else + { + + stopsFragment.showStops(); + ft.show(stopsFragment); + } + + + ft.commit(); + showStopsMenu(); + //showStops + + } + + if (id == R.id.action_return) { + removeFragment(); + showProperMenu(); + + } + // getTrains + return super.onOptionsItemSelected(item); + } + + public void removeFragment() { + if (stopsFragment != null && stopsFragment.isAdded()) { + Log.d(TAG, "Fragment exists"); + FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); + ft.setCustomAnimations(R.anim.frag_in, R.anim.frag_out); + ft.hide(stopsFragment); + ft.commit(); + } + } + public void doRefresh() { + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) { + // showProgress(); + mWebView.evaluateJavascript("APP.getUpdatedTimes();", null); + } else { + mWebView.loadUrl("javascript:APP.getUpdatedTimes();"); + } + } + + public void doGetPYGGLC() { + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) { + // showProgress(); + mWebView.evaluateJavascript("APP.getTrains('pyg','glc');", null); + } else { + mWebView.loadUrl("javascript:APP.getTrains('pyg','glc');"); + } + } + + public void doGetTrains(String From, String To) { + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) { + // showProgress(); + mWebView.evaluateJavascript("APP.getTrains('" + From + "','" + To + "');", null); + } else { + mWebView.loadUrl("javascript:APP.getTrains('" + From + "','" + To + "');"); + } + } + + public void doShowRoute(String route) { + FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); + ft.setCustomAnimations(R.anim.frag_in, R.anim.frag_out); + if (stopsFragment == null) { + stopsFragment = StopsFragment.newInstance(route); + ft.replace(R.id.fragment_placeholder, stopsFragment); + } + else + { + + stopsFragment.showStops(); + ft.show(stopsFragment); + } + + showStopsMenu(); + ft.commit(); + + } + + class JsObject { + Context mContext; + + @JavascriptInterface + public String toString() { + return "injectedObject"; + } + + @JavascriptInterface + public void showToast(String toast) { + Toast.makeText(getApplicationContext(), toast, Toast.LENGTH_SHORT).show(); + } + + @JavascriptInterface + public void showProgress() { + MainActivity.this.runOnUiThread(new Runnable() { + public void run() { + FrameLayout fl = (FrameLayout) findViewById(R.id.ProgressLayout); + fl.setVisibility(View.VISIBLE); + } + }); + + } + + + @JavascriptInterface + public void hideProgress() { + MainActivity.this.runOnUiThread(new Runnable() { + public void run() { + FrameLayout fl = (FrameLayout) findViewById(R.id.ProgressLayout); + fl.setVisibility(View.INVISIBLE); + } + }); + } + + @JavascriptInterface + public String getJson(String feedName) { + + String parsedString = ""; + + try { + + URL url = new URL("https://www.silvrtree.co.uk" + feedName); + Log.d(TAG, url.getPath()); + + URLConnection conn = url.openConnection(); + + HttpURLConnection httpConn = (HttpURLConnection) conn; + httpConn.setAllowUserInteraction(false); + httpConn.setInstanceFollowRedirects(true); + httpConn.setRequestMethod("GET"); + httpConn.connect(); + + InputStream is = httpConn.getInputStream(); + parsedString = convertinputStreamToString(is); + + + } catch (Exception e) { + e.printStackTrace(); + } + return parsedString; + } + + @JavascriptInterface + public boolean isNetworkAvailable() { + ConnectivityManager connectivityManager + = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); + NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); + return activeNetworkInfo != null && activeNetworkInfo.isConnected(); + } + + @JavascriptInterface + public void setRoute(String route) { + Log.d(TAG, "Setting route: " + route); + String feedUrl = "/getroute?route=" + route; + String routeData = getJson(feedUrl); + + doShowRoute(routeData); + } + } + + private void threadShowProgress() { + ProgressBar pb = (ProgressBar) findViewById(R.id.pbLoading); + pb.setVisibility(ProgressBar.VISIBLE); + + } + + + public static String convertinputStreamToString(InputStream ists) + throws IOException { + if (ists != null) { + StringBuilder sb = new StringBuilder(); + String line; + + try { + BufferedReader r1 = new BufferedReader(new InputStreamReader( + ists, "UTF-8")); + while ((line = r1.readLine()) != null) { + sb.append(line).append("\n"); + } + } finally { + ists.close(); + } + return sb.toString(); + } else { + return ""; + } + } + +} diff --git a/app/src/main/java/com/silvrtree/traintimes/StopsFragment.java b/app/src/main/java/com/silvrtree/traintimes/StopsFragment.java new file mode 100644 index 0000000..6f17bba --- /dev/null +++ b/app/src/main/java/com/silvrtree/traintimes/StopsFragment.java @@ -0,0 +1,123 @@ +package com.silvrtree.traintimes; + +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.webkit.WebView; +import android.widget.TextView; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; + + +/** + * Created by marti on 13/01/2016. + */ + +public class StopsFragment extends Fragment { + private static final String TAG = StopsFragment.class.getSimpleName(); + private View stopsView; + private String serviceID; + private String routeDataSource; + private JSONObject routeData; + + public static StopsFragment newInstance(String data) { + Log.d(TAG, "newInstance"); + StopsFragment stopsFragment = new StopsFragment(); + Bundle args = new Bundle(); + args.putString("routeDataSource", data); + stopsFragment.setArguments(args); + return stopsFragment; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + // Get back arguments + Log.d(TAG, "onCreate"); + routeDataSource = getArguments().getString("routeData", ""); + Log.d(TAG, serviceID); + try { + routeData = new JSONObject(routeDataSource); + } catch (JSONException e) { + e.printStackTrace(); + } + // routeData = getJson(serviceID); + showStops(); + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Defines the xml file for the fragment + View view = inflater.inflate(R.layout.fragment_stops, container, false); + + stopsView = view; + return view; + } + + @Override + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + + Log.d(TAG, "onActivityCreated"); + + } + + @Override + public void onStart() { + super.onStart(); + Log.d(TAG, "onStart"); + showStops(serviceID); + } + + @Override + public void onResume() { + super.onResume(); + Log.d(TAG, "onResume"); + + } + + public void showStops() { + // do something in fragment + Log.d(TAG, "showstops: " ); + + TextView stationName = stopsView.findItem(R.id.action_pygglc); + + + } + + + + + public static String convertinputStreamToString(InputStream ists) + throws IOException { + if (ists != null) { + StringBuilder sb = new StringBuilder(); + String line; + + try { + BufferedReader r1 = new BufferedReader(new InputStreamReader( + ists, "UTF-8")); + while ((line = r1.readLine()) != null) { + sb.append(line).append("\n"); + } + } finally { + ists.close(); + } + return sb.toString(); + } else { + return ""; + } + } + + +} diff --git a/app/src/main/res/anim/frag_in.xml b/app/src/main/res/anim/frag_in.xml new file mode 100644 index 0000000..72d1e4e --- /dev/null +++ b/app/src/main/res/anim/frag_in.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/frag_out.xml b/app/src/main/res/anim/frag_out.xml new file mode 100644 index 0000000..25783b1 --- /dev/null +++ b/app/src/main/res/anim/frag_out.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_menu_refresh.xml b/app/src/main/res/drawable/ic_menu_refresh.xml new file mode 100644 index 0000000..46817c9 --- /dev/null +++ b/app/src/main/res/drawable/ic_menu_refresh.xml @@ -0,0 +1,25 @@ + + + + diff --git a/app/src/main/res/drawable/perm_group_sync_settings.png b/app/src/main/res/drawable/perm_group_sync_settings.png new file mode 100644 index 0000000000000000000000000000000000000000..252a2a01d7e46f60edac92567e23809cdfe6fb40 GIT binary patch literal 1142 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTCmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CDO3=9p;3=BX218JamDbSQx2@DKYGZ+}e^C!h0bpxtpOY(Mi zVfYV%3-&Ib3>4uk@Q5sCVBi)8VMc~ob0ioTn6o`y978hhy`5>95$Y(?X5af;jKz^f zIm=Wl>41}KfXUQMn^vLe_o7&HuRM`_+%&g!>JkCb-m98h40bGB@PIAPVCwI-s3WQ! zj=e|cvYQ|Fez)iQvwbUm9M(Q}X0GM`;tX?7M@pUe1w)VW^}lUd3753mu8`|4`YMb za~SxTc<+hiH>9rml@!6?<@kePk`8!R-t#D9YTYy z>N{{39C;nZv!(SH7n8umod?cdxVp6YM9hhmS@s)vEnb)AmRmk%V6gT)mAZTNZ$*LJ zmcPP(RaC!*uBz18pseEm%veDwxMBN&mXOayp?d{6;`98lMvH%+<0zTBUuK|OAd zf_p=2+#emb1GV~jToS=6|LlB!lwrr4qtbULS*&tNF**52Z|#{$vP=biDg4n_)(CYb zWoVvETfXA_fuE}wL$>Z<^nX1eS~+!9&(Zs(3rw$;0K+PjH^7AF%hE?|3xZvo%v@ws zbq;^G?8raxaDt)Z_f1>39hWffYplNa(_!!J<9t@vB!U^jB$MkRve&ae*_GDwGAwj< zsqU2WHJAAAe7v=dY5Co62Hvu%cl@?H`?4~x$dcc{SMj!VD?`6aO0YvIR~tv@&Dm9g zGucawHzbLCWqP5cS^vF}-(ls_?|Gqj?R6OVlBOB&+R}Ar?Yo6*y+rp;ShID0kD+=) z`~jha64uLWjE?=;bS-W*+k!`%14G{iUuE(%wK{fSdh7}VK{7g7-a zY&!9G)zA3 + + + + +--> + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_stops.xml b/app/src/main/res/layout/fragment_stops.xml new file mode 100644 index 0000000..4d2aa9e --- /dev/null +++ b/app/src/main/res/layout/fragment_stops.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/menu_main.xml b/app/src/main/res/menu/menu_main.xml new file mode 100644 index 0000000..7fb2a22 --- /dev/null +++ b/app/src/main/res/menu/menu_main.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/menu/menu_return.xml b/app/src/main/res/menu/menu_return.xml new file mode 100644 index 0000000..d15f66d --- /dev/null +++ b/app/src/main/res/menu/menu_return.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..a92d9ffa267b519bb7e502b8f9a536b94b0bbd9b GIT binary patch literal 1792 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 qGxWV6Dp83_RH7150z( literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..7434f17f265b6ecbbcf91f9636708a54c8b41417 GIT binary patch literal 3766 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..e2292904027570d8785a9dc7bd6b7c25f98a0797 GIT binary patch literal 5303 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 + + 64dp + diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..3ab3e9c --- /dev/null +++ b/app/src/main/res/values/colors.xml @@ -0,0 +1,6 @@ + + + #3F51B5 + #303F9F + #FF4081 + diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml new file mode 100644 index 0000000..47c8224 --- /dev/null +++ b/app/src/main/res/values/dimens.xml @@ -0,0 +1,5 @@ + + + 16dp + 16dp + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..dbd10a1 --- /dev/null +++ b/app/src/main/res/values/strings.xml @@ -0,0 +1,8 @@ + + TrainTimes + Paisley to Glasgow Central + Glasgow Central to Partick + Partick to Dumbarton Central + Glasgow Queen Street to Dumbarton Central + Refresh Times + diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..5885930 --- /dev/null +++ b/app/src/main/res/values/styles.xml @@ -0,0 +1,11 @@ + + + + + + diff --git a/app/src/test/java/com/silvrtree/traintimes/ExampleUnitTest.java b/app/src/test/java/com/silvrtree/traintimes/ExampleUnitTest.java new file mode 100644 index 0000000..9cef1d8 --- /dev/null +++ b/app/src/test/java/com/silvrtree/traintimes/ExampleUnitTest.java @@ -0,0 +1,15 @@ +package com.silvrtree.traintimes; + +import org.junit.Test; + +import static org.junit.Assert.*; + +/** + * To work on unit tests, switch the Test Artifact in the Build Variants view. + */ +public class ExampleUnitTest { + @Test + public void addition_isCorrect() throws Exception { + assertEquals(4, 2 + 2); + } +} \ No newline at end of file diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..e0b366a --- /dev/null +++ b/build.gradle @@ -0,0 +1,23 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. + +buildscript { + repositories { + jcenter() + } + dependencies { + classpath 'com.android.tools.build:gradle:1.5.0' + + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + } +} + +allprojects { + repositories { + jcenter() + } +} + +task clean(type: Delete) { + delete rootProject.buildDir +} diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..1d3591c --- /dev/null +++ b/gradle.properties @@ -0,0 +1,18 @@ +# Project-wide Gradle settings. + +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. + +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html + +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +# Default value: -Xmx10248m -XX:MaxPermSize=256m +# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 + +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..05ef575b0cd0173fc735f2857ce4bd594ce4f6bd GIT binary patch literal 53637 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 t9m@SZ!E*7&jsr?!t7TL-WYI4eM@gAug8 zmYdImd_$moc|Wl+D8f)Ox9p>-vTa~|_%Q2qvp&29w$cF()B3LM?Pv3^!oHR}TtG&o zlDfH&A>Hrv!B+ag{dZsZo@@&OnX}MMFiHk?89N78gbcsa7aL?|msUy{d_N{Ox!Re1 zKKoG>8>U7KK+}Q|CGiSY zBiLkThmxruWxvQ{suzTd3|nw8GJ9ZoBT}&LCY)3IMut4gSTls>>5(;F)E$*=m|5LW z9hA=x`sj{ieY{t(w-(l3#W26Ra}DNucjF9^RN8zF3{0t{K?4oLLukz2gBi}^A-CJ+ zO+;EE@_fEFi4dhp6PLYM-k;rs&h?<1DX-T61zfk=00LrkTyxQfh`_8yAq0&sIH}F} za~%n`$^MWPI}#nMx>^Xav8i-1EV*d1d9uo4SWl=U=*Ceu6P1AimL2p`;pre)TSuA6 z*JQn}3n}ct{t9*^ID2$9(GF`SjDYO4BLj?uV6c?Xl!dhl13wj*Q_4z(Dt(bHavklA5pHE6LQy9-M8P1-t6t+zNWix z-izoiiQtEaytHn%$}IlG`9V>Y*JYH})3G5Y%+ohLkx56L6n+7%5^(P5>A5+maMQpS3iQ_c;ME3ZbVpQg z*qu=77cF|QikGY}GJPAzaFuvP65=>fS8i|(u9O;DL^t{u^yGpCRh#&i$sO#HvQ*Ic z$2AF582U^eo28jk$A*vA7Z+7#rd5ctLnV~hsm(bDGf_KKEGD<)HJ$@& z;y7pIsm1#6;)yRUN#ZEt&lz;fUBG-OTR@fXLt;J)D7I2>*7T=@i9&~D6Y3BL-=-ee zWQ`B?C}k}e8gU5W&Tp4_4y`!eV3kgsIG-I|Iut)2)6`(=~RnoW0iNLI)Qt&-%E z1j~+p`TVP0EKwqCQoI3osA_hd6=A&oDDz?mtZbt`kk+BjDpxd-+J>h&uCJH&j%Ny2AShK8|D zBUN7KwtGD1Fe$0W`QSk)Mc~NAtg)hFGBgLd8s!ry zE|e!24Wlf{14}K;>lmj%8v-u;U^Lp3{BJC zf3O)Gh@9xd!@5uiDN)|5qY78F2vK~&EfA^m0C8J+RJQuqd5+QGS8zaZ{^>ckBkva5 zg*?CfT-E0Odx1PH&i4r-GgtC*@~U30#!`aL_~G4Cy+@8$W9)f?Zm(TD@+?QMv1I*M zCIk)f*2%x7cR+G8pCW8sP2`ZNayG0%tc0$u<8dA!gahP}p087KGuQMSTwRVbBOE^a zXeaz??`o6oIIF6tg;gJs!T_RVd*?Z<5B@(&8MoRVXW+>o!!FI<}`8~a5I z4(U<78*wHBDa$f|KPz;HssLwWm6+9`TxLnmo;QQ3&C`22abTkIaOK%#}$OCR8st88PA$X{6?t>3x|i;{Q(coN#bAl;%FEh_L$tYwgwcd}$UC24(})!{3>9?E4W zsjx+EDJ-7|?DK?O{v_@^faffTc`AKdYmPWW_4#@77xnw<>VoEk5m2{jV5J0>XP^fz zd(8nMD6N-cHi_98BY}G_K3FSLm`(z9B3-gmw)pWkv!+1%4?~s9i3NqVQS@)>(5nUy zO`E-Fcvu8UupgJ?tA0W7`pCm8@7i4kV?y-et%DyKyp$})OZR=bwzBdy_7WeI59MmJ ztrE^5SK8xHGjH3EK3yER+XYMR8WIs~W*WtDhdO9Mg5@re?2%SaguL{To$56GdF}O(gN$moKGQ$q`- zESPgF*T*p}r+qTNwfKB_LMKvSNj@@k$U{-61c9bGvDGOEXk=q-k>q26WQq7C_!1d{ z^9Rspm$rUmcMu6Hgnm2%qi#~sjyD>&cr#;H4dKgcn&&T8BzQNK zcYD8b-uub=NFpu6W$Un0z7?JUN+i{@CA?#Bfo^6IYfEbtv?PAHl5Y&uM9y%><#%~C z88S6`LD8`!$)YD12VMya>VYNu+SnRqbQY}sk*6iJf@SqX56OpEWA9~v{2j!NhDVZz z5U&W*^^NK+B(v3+Su6PbvWUguA?R&^1e16&hmkqAXZ-lt4v?byG#$OcnG^U5gBDlu8`Di%jjGDx$l5$~GG=bM#7QSIyu3xAk+0hq&o~a% za&~|#ze1$ffVJno9#=Z|CL^*X$w3<}dxrN2m+6epca}i``Uw4Q!P1DsJ+rw2WFF*| z#Xa>s_T{!H@3UKWD$j8H9G8>MT440SUEX$L@J0VmX?vMvyPm$&0k`l#m7;rfkWuD= z`g$|u0|(E^HWy;f z7OHk4UyIR9j0vuFLMDr`4tuZx-Sv2=Et2FK(%Dagqg>}~T;+r)P&K{NI_5)qwhRq} zLpQ|?yuv$Xbjw6=FPJRr>21!FJ-BO0LG&QwO7BP;W&_Q{J;Kf~EBtBWgSfz*Q5=To z6hn$H41&=oe$O%=2lPX?TptHEI6p+H(j|7-{M^iYA*gv-lFWOwYh@cE@|8fTn-hRe zj6Xo*7R`Y-UC~fEKP?pR7GFE4`%$vZQRQ&p#dsR}<3~B0kH$#Rr2mXG1I+|b=U{HVAvEvpP+sCpyRT#gBax8Ao_)n?Sh*b98GbjN?9C*Pl>NJ z-3WsvvV-y4;q_nE6}_*F_F<5A`NVOxxWcisY`c)r)_M>0swV^tbpoq0agSVFnW2a< z+!>Y(O(9N^hH-P>qpF{~Xx)jm)2SOBwu-QRYu;eVeu!M7+RW5`#n7M7cJMTHm9=xz zuJTUm9bwD9ItZOu=dDAPL1=#Sc8q@g`b>lRR!6jpo)oycOemq}j{e)wUQ6KKtDMGd z=UNqe=OX=B6TC2-P)ssHvh@SX1D)8mvN`N$===+P^o*L$-77W|TUwoq5PlmhN(QW$ zuQizUY&2tGp0}b4eyH!DpNwCSGiJ=hVs(vj?UHzr9ZGw(68YuR&2r<(eF52(GMJ<5 zR6GtHo_Mz+7=1DBT4HSfRyk^18t4rblN63Vq;Kt-WoYAldvpoI{1y{k=n!#WvzzAN zd;H`O(ts_YTc(qmowhTV)a6-idBz@lRJJcFJ<{dWmb!P}UxPfn6CxPv0{@&9=9ot+$Tv`W!)NW*nJrUNpaIfGwrMcw%6#HX$smzH#9=O`er{lr; z4K>^k(duxHDbohK3l_FX+U=%+wL39YI!zAs1N7>L+%qYZ<_shzT7vX?GiJ)gCv^^f zkMSq$0uEpH7w6VnX*Vd6ARLdp_*Y)Ra_LjJZ8dh3alC{8IZ`uCU#U*!v1IQkIX zQ=>g*)eB`?g!g;H9!~x&DG%b!EdRn<#*B05Z5W#5y z;e-#fqA?mK6#7R7m{S)`5dN&jYQE2Er!o6?P|}tzcOII})mx*zu2e&kK@r**oHiKI z+tCp;FgjWVMos`_C~6qwrQD2@1sTC>&h)p6y|7XYKsS6dKdBx!eGQrUI zfnxA&>X#ch802~|3fWrif!J`J%?WcMbDj?vDhzGJ(UN%DtI&BK0t-AM5&^z(hSfNP z_o%UttN|ltZd_~31f~_*-GV2R;ZF27DB0;~B{p=%c>E_|kr}|`TyF(KhDBFlV?;Z$ zlC~OjyWkpElYLUsh{>5o>2ZhoI>VB^&n>dN>Z3c%7x%P9)*F+I4HKn{#uJeOisPTC5M`VoSXwcG77#2;V>|~+1O-Ry=CbdctWt3Awn_a1l z$}AL+G}7WO*?1O|Tgi>D%aRNAIii4DX3vdmyX*oBm`Q~yVDZ9cVS4rv!?AIF70eBj z@Ka-VM;!1|JNHl58m3EvpKT+rU1X%U|fD{8)Mk z+c(z`y`l{5K(vk~H?W`JY@5sV{%C96Q?o-$na;V;3g@y)WSHiIBTIURkte#l_d*On z+Xh2KcK+Szi#+|Iw`yIwm?wgW(Ft;Vay>L}=D}?&_G)Z7^DRDky#FM6qZ0iJSxDm=xV$_pzJf zb0kEMC3nrqD2)vFlJxav_GW?_i;P}|P|T!1GH7;+Lc4k(cfOL(2(@X0g<&PY)eh3WA4k*+$S4=^WrCqw zYoL^Z@LmHGL38I{`GgTVW_J#ut7XR9O)}if|K_%sh@McN$Xc&6gC(Mb z+yPtqpAKK-qKLaCrE%P)ow%)VFtt6pJwAJjNKL8t>Xn=np^pIkEqzAzRzOIKI89EJ zS9%XE4VksN$H|9!>b9%R%AEDq5O63Y*C8`&W&XU%!OO(uFMb8eeh0MFy9H34I$DEk zPzH@22|iW*G=gO=5#?c9jJYHd9Y|WL{LF7=6%f>G4&oM-5z#!yOw4R|P#0J!V@hUO z3@jK$`)o17oVk4BHmPfMcLO^2$!1LRM&B^@Ze1ugjlEUUd~MFmt*x%`!r01E9_tl- zB3){N5S|QzP%5{#U2-ZndULy4^3(x!#F&ZIpgesXZ)8kFY%y&AgQToYU_+LU$rv_h zLE(~($=8M`T#TmneILDXdOvN@=lLeeIDto!{aClrQ&zZDP-HSir72`=iK-Wgy)(u@JyUQVqRi(h&z{#F>;SFJA2tds&(i# zzFd-Fi8~eQl&3VheC%-!(ARZMnE4QxFcJ}P97Meg+M=HSE`VCJVwvNX;GLbQ@moz_ zsK@@+q7F?{<`#FU@s$2i-)!&x7vqjzGKerlGOi{ZB?*+TMdBRz@|+-Yox=L23A5iI z-W|R#8>Lzyq#zdIAg%@|O_%CS?%;RUL=|D$(4w{xdU!4ClGIl26UOj{zCqv;fX8&l z50EEc+eI8l{OWUAplO}R>|;`(@IK?Zw?F_78FwmSeyW!e@3iQ^F6MDP<|2+}4LqMK zW<%R%GzzDii~&{6Nd(bYIhN#1bT@p}-jRAcij0G}^%Xw$m;NPY12;@NL&2Wc6x7(~ zt1&*$KUBc$ebr6qxq%CxtNqA<|L*b0^j+ItZkq^r3JL+IS^pK^#b1vBzoWK|{$Bww zKk;3ZC<4~1atPdYfUs+a3e+r*Rd5}|MieNPzI-So1`^ohN#>89bw_IGbxqsH(~+X5 zkY6|8rG>&tc)Z~CQ`O_u#*>BDGe$;+l5F!Fw~rsbUfhFwITw>hb-}`NR(>%Sc%PAi zMaGaz2rk%N4TcKXJz*iC&)3lsjwV#KO_4sHl#JJ93`@`$qhJOpTQJBnQ1|cEa58W| zgEx3bxXoMFe5iqMhhC~lLEZ_@1U_0MBrRJcXz+r!Ns$j zr{tiXZD67L#fg!7SG6FM*uOfWN@bKGh>6oeSD`yQf|RC6Wvn8ECBXmHR=8m+Wi8Fx z&6X027!%ADv}6qz3={dr%a{0AiOWY4aPu|Y@*`1%k939w>v+#G$U2p|xK^~5>bG!V z9cavEFu|N#9#+HYoctGP&*%mf_Hy^-@{`WghR>T1J8(1?gON3a8*=C#2H$b-&6!<& zNJ}?;iIX2ThW$F<(GaB5rrX<2?FF}R_A8^v0HeyCK59fF308Bd6JN|jY9bL2{4rU6 z+7IzxXyC(#3Azm!1S(**J_H;JXWo;r5Oq02zJGQGb%TV;l-I_0GrAVaU#eIUNb;U{! zA_jvAh}tv!=8X7#;QuMY>q(GaxSX_PCm(`4AO?G~tdRT@5i^uXnKY%C911WL7D%iBdVHF5)k%x?_RiG-c02b7t{rYFQYwi&bSZ4s3Ut2N z$FFgeYi$^%bL?CEkgmA0&N{$lP>7t7gMOY^Nd*nQOg`A+S&98D$X)b68tT(|Q6?gcp=ib%I|T z?Y6s;pMzPqnY=7cdmXpMxhBh4bBj*eFy;cOu~MqyH+VFXQs#H;3EeU5u~Ws_*XP`0{RA)Hu@sQHnw*1_B!9||F5^-ZY6VhWM#l9`ARG6DkCx2ceS%(zI<8` z{6%~S(1=k;!RB$Svvtxc6H|IKb7qB}S-e?~9V6Ag@dcOahPSzo?|HK)Y#ntW$jU!j z=e;=|YycdZZ}^n%diij1Vo3*-WBsN_bto;{KuZL}76%g(2~D47RSih8e&jSbk;b+d zVip#YQHf(3tbD{;z6Xrw9Yc_GL~0m9E&CUoI?UUnlM5HS0BssWwRZ~LuN{lj3N@zW zRjZWb!woh=m3WZ=opG+T{_>0vTrZ3Y8aTL@DC(6VRd3^&zek1B-@M9 zD)u7{B!(^HvKSF2>p4K4fcfbAbtnPPNIzwR3zSNNNGEBna3`8Il6}phx*tjEVaE$94$ir@_&3|3bvffg+)Roa9a7j8~A z!Gwd?@K??Q;Zx-oCj0TXVkn;k!Kn05hYjjyWhRE>lwB93!C|&ReNVM84y~fny#@Cl zW~JZNy>gj1wJS>odt)eon)6KaAh4AeKfd7=+K8;ujKMY!TT zpY4j5x@!=;4;xmg7*@eTGRw(m=DQrq5%{2=pc2{|04arJ&XAlP4gc(rAOHl{J#JH6 z2kSKgiE5*B{mT-uNn24`hfJk5t4_2udIt1ys7?mSeI`S@{xQk07aO`et{T>E8r^}D zWl;`>dmL`*G;;gBq^BBMe5qR9l>3M{UQRCz3Gq6i>xJv-FEYe=+@$Z>V!q=4I)=mo zaV33=to{lZqd9&bqvf4#?exw6jZYyhW>BJ&4<+E!Y>|0Q?X=01@FI%ldK4P^ zYr0o^9?5tU(Im)Z69UT;%0AHe?SV+-#s~%cU8<=}XP+L2QyZE+n_Hi?KQl`pfDb1! zL&;M08wNH*%@ii^9C%6g2~uzVHj1xyuvaW|-VkqDY6&sKmD48f^@(jLry!LIvrJcU zYPnatTn6+)H7G8Zks2HmxHiF93-Y2UAtspSapNSmXsAO2n>%k*uVC& z6f9_Fz7X+7nT%<(EeGegSd|+D4j#!~uf$5CLVjm^N5==)ae$Pd+SaXr(?_MY^&OyQ zXoZ>rIVQ2nYdx>_Vr|PxqO+p~9j3|VDlh`vUu3I674n!Ksy%}I+N89oMn2$x=4=8u zix_`z(x0Z??}637Eid26uUL-1LV1v(M1i(#UsPa5X2YRp-FIWckS0k^j53EbfOl=; z>uiiuw_TvU<-J)CCF8jUzXrT>mA+bG#3@qrtBdBD_QYwOfhQLR@hJRvQD5fAl~8-mU(#t@K|O8wal^ULicls6*sD zlK}1F($UYPtp-IbccN5$@tQ(Kc#gL%UZ=)?atRBG(1kkHw)- zBvU%*H!`YR9j@FA9jlr++8*5Q;0OYQ5r>1A$B|ISe1gO(`RM|zB-_iq7BrZs1lkk5 zxPW_vovda3g6@FvAjIe=Q!FP12nI&e#=|v84Eu_lNn?hKqH|g+2u+J973II4i6l1KOZ+1tel?TSo>>19YKLcYgzZc)c@+pD2^K-#`VSM5tHu6Gc7EX9UjLzpxcY&>A z4PnL5cGhgp*eccBR}f($1rmWKMqxZnOm$K$_(`#BH~^6C-N}q`>0yO&FmKs%KIJU{KDw>Tk5;q z?QT3gqd~Tv-8J+NpHKKz;G**g`y9sVtH7<3 z7LGnP;XuWT?XM`a9^url?|2<@sLerFSLuVyQV*tOx{rBtL28JyHGFKq?rNaer2wvn ztc!eqj;1LkZ}c_iZTAqIZs|_ooB(9K70`>!$koJd(2@@v=mN6?CT;!K6|-kv61fC*%7P;nUYmYO(fU2bcLJqaiXfDiHaHzCICue?pJ0k%1t+DP8V&|t8cMer-3jvlE03V`XEII)4@CS?Hf0yB}m&~Vl zAO$W<8i2gY0aDZcg7+5SEB*tXsExLsnZ6=`eqPMdTwlu4($wDS&(JvQnhV_kkXt}6 z{k9?e_f_o;4iMw|12lm1*Ua7)aIQ?m*i4^aS6AQGR$ALa+wgCtg{OHRg4GiF#-M!z z@aO%ScU*v`=^qRz|E0_UaCI0M8`=ZtvjJ4{f6lv{JFf8-ph_?Sd8hw7GKuDgZ#G`Wq5(ul7z7{3GgL55;%v zZ<+pcMLd<<{TsU4J67h8xZkVwzYRZ6B@Tb!*(&}K@0X_kZ-R$UYvZYW-VZD8%73)- z&m+!L)tn!2Q*Zun^87vk|8WBSIe*_ax1Orr`~Wm~``N zkC|%!Qp#@>Hct~j6_NQnd9`=)?}`5o6ZmPl{>1tE6#l6&$Pai@z2EZo6YTewONQTj zI; zFTC?l;h$2b|A2pI_D}HNTjHMx)SsGq%Dwu-RGr=# zgZ4Yc(NoN)gbF_}J3@ZP{P*+ z^KkVvruGNsN!I_y{6mE8(@Z}NVEkcVBj;Zj_<5B2a|xb?kNq&vlmDB6zh{YmPPuuXtC}87KZ=LtMW<`6z~@KO \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..8a0b282 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..e7b4def --- /dev/null +++ b/settings.gradle @@ -0,0 +1 @@ +include ':app'